0001
0002
0003
0004
0005
0006
0007
0008
0009 #if !defined(_SND_PS3_H_)
0010 #define _SND_PS3_H_
0011
0012 #include <linux/irqreturn.h>
0013
0014 #define SND_PS3_DRIVER_NAME "snd_ps3"
0015
0016 enum snd_ps3_out_channel {
0017 SND_PS3_OUT_SPDIF_0,
0018 SND_PS3_OUT_SPDIF_1,
0019 SND_PS3_OUT_SERIAL_0,
0020 SND_PS3_OUT_DEVS
0021 };
0022
0023 enum snd_ps3_dma_filltype {
0024 SND_PS3_DMA_FILLTYPE_FIRSTFILL,
0025 SND_PS3_DMA_FILLTYPE_RUNNING,
0026 SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL,
0027 SND_PS3_DMA_FILLTYPE_SILENT_RUNNING
0028 };
0029
0030 enum snd_ps3_ch {
0031 SND_PS3_CH_L = 0,
0032 SND_PS3_CH_R = 1,
0033 SND_PS3_CH_MAX = 2
0034 };
0035
0036 struct snd_ps3_avsetting_info {
0037 uint32_t avs_audio_ch;
0038 uint32_t avs_audio_rate;
0039 uint32_t avs_audio_width;
0040 uint32_t avs_audio_format;
0041 uint32_t avs_audio_source;
0042 unsigned char avs_cs_info[8];
0043 };
0044
0045
0046
0047
0048 struct snd_ps3_card_info {
0049 struct ps3_system_bus_device *ps3_dev;
0050 struct snd_card *card;
0051
0052 struct snd_pcm *pcm;
0053 struct snd_pcm_substream *substream;
0054
0055
0056 u64 audio_lpar_addr;
0057 u64 audio_lpar_size;
0058
0059
0060 void __iomem *mapped_mmio_vaddr;
0061
0062
0063 u64 audio_irq_outlet;
0064 unsigned int irq_no;
0065
0066
0067 struct snd_ps3_avsetting_info avs;
0068
0069
0070 spinlock_t dma_lock;
0071
0072 void * dma_start_vaddr[2];
0073 dma_addr_t dma_start_bus_addr[2];
0074 size_t dma_buffer_size;
0075 void * dma_last_transfer_vaddr[2];
0076 void * dma_next_transfer_vaddr[2];
0077 int silent;
0078
0079
0080 int running;
0081
0082
0083 void *null_buffer_start_vaddr;
0084 dma_addr_t null_buffer_start_dma_addr;
0085
0086
0087 unsigned int start_delay;
0088
0089 };
0090
0091
0092
0093 #define PS3_AUDIO_DMAC_BLOCK_SIZE (128)
0094
0095 #define PS3_AUDIO_FIFO_STAGE_SIZE (256)
0096
0097 #define PS3_AUDIO_FIFO_STAGE_COUNT (8)
0098
0099 #define PS3_AUDIO_FIFO_SIZE \
0100 (PS3_AUDIO_FIFO_STAGE_SIZE * PS3_AUDIO_FIFO_STAGE_COUNT)
0101
0102
0103 #define PS3_AUDIO_DMAC_MAX_BLOCKS (PS3_AUDIO_DMASIZE_BLOCKS_MASK + 1)
0104
0105 #define PS3_AUDIO_NORMAL_DMA_START_CH (0)
0106 #define PS3_AUDIO_NORMAL_DMA_COUNT (8)
0107 #define PS3_AUDIO_NULL_DMA_START_CH \
0108 (PS3_AUDIO_NORMAL_DMA_START_CH + PS3_AUDIO_NORMAL_DMA_COUNT)
0109 #define PS3_AUDIO_NULL_DMA_COUNT (2)
0110
0111 #define SND_PS3_MAX_VOL (0x0F)
0112 #define SND_PS3_MIN_VOL (0x00)
0113 #define SND_PS3_MIN_ATT SND_PS3_MIN_VOL
0114 #define SND_PS3_MAX_ATT SND_PS3_MAX_VOL
0115
0116 #define SND_PS3_PCM_PREALLOC_SIZE \
0117 (PS3_AUDIO_DMAC_BLOCK_SIZE * PS3_AUDIO_DMAC_MAX_BLOCKS * 4)
0118
0119 #define SND_PS3_DMA_REGION_SIZE \
0120 (SND_PS3_PCM_PREALLOC_SIZE + PAGE_SIZE)
0121
0122 #define PS3_AUDIO_IOID (1UL)
0123
0124 #endif