1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 2 /* 3 * Audio support for PS3 4 * Copyright (C) 2007 Sony Computer Entertainm 5 * All rights reserved. 6 * Copyright 2006, 2007 Sony Corporation 7 */ 8 9 #if !defined(_SND_PS3_H_) 10 #define _SND_PS3_H_ 11 12 #include <linux/irqreturn.h> 13 14 #define SND_PS3_DRIVER_NAME "snd_ps3" 15 16 enum snd_ps3_out_channel { 17 SND_PS3_OUT_SPDIF_0, 18 SND_PS3_OUT_SPDIF_1, 19 SND_PS3_OUT_SERIAL_0, 20 SND_PS3_OUT_DEVS 21 }; 22 23 enum snd_ps3_dma_filltype { 24 SND_PS3_DMA_FILLTYPE_FIRSTFILL, 25 SND_PS3_DMA_FILLTYPE_RUNNING, 26 SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL, 27 SND_PS3_DMA_FILLTYPE_SILENT_RUNNING 28 }; 29 30 enum snd_ps3_ch { 31 SND_PS3_CH_L = 0, 32 SND_PS3_CH_R = 1, 33 SND_PS3_CH_MAX = 2 34 }; 35 36 struct snd_ps3_avsetting_info { 37 uint32_t avs_audio_ch; /* fixed */ 38 uint32_t avs_audio_rate; 39 uint32_t avs_audio_width; 40 uint32_t avs_audio_format; /* fixed */ 41 uint32_t avs_audio_source; /* fixed */ 42 unsigned char avs_cs_info[8]; 43 }; 44 /* 45 * PS3 audio 'card' instance 46 * there should be only ONE hardware. 47 */ 48 struct snd_ps3_card_info { 49 struct ps3_system_bus_device *ps3_dev; 50 struct snd_card *card; 51 52 struct snd_pcm *pcm; 53 struct snd_pcm_substream *substream; 54 55 /* hvc info */ 56 u64 audio_lpar_addr; 57 u64 audio_lpar_size; 58 59 /* registers */ 60 void __iomem *mapped_mmio_vaddr; 61 62 /* irq */ 63 u64 audio_irq_outlet; 64 unsigned int irq_no; 65 66 /* remember avsetting */ 67 struct snd_ps3_avsetting_info avs; 68 69 /* dma buffer management */ 70 spinlock_t dma_lock; 71 /* dma_lock start */ 72 void * dma_start_vaddr[2]; /* 73 dma_addr_t dma_start_bus_addr[ 74 size_t dma_buffer_size; 75 void * dma_last_transfer_vaddr 76 void * dma_next_transfer_vaddr 77 int silent; 78 /* dma_lock end */ 79 80 int running; 81 82 /* null buffer */ 83 void *null_buffer_start_vaddr; 84 dma_addr_t null_buffer_start_dma_addr; 85 86 /* start delay */ 87 unsigned int start_delay; 88 89 }; 90 91 92 /* PS3 audio DMAC block size in bytes */ 93 #define PS3_AUDIO_DMAC_BLOCK_SIZE (128) 94 /* one stage (stereo) of audio FIFO in bytes 95 #define PS3_AUDIO_FIFO_STAGE_SIZE (256) 96 /* how many stages the fifo have */ 97 #define PS3_AUDIO_FIFO_STAGE_COUNT (8) 98 /* fifo size 128 bytes * 8 stages * stereo (2c 99 #define PS3_AUDIO_FIFO_SIZE \ 100 (PS3_AUDIO_FIFO_STAGE_SIZE * PS3_AUDIO 101 102 /* PS3 audio DMAC max block count in one dma s 103 #define PS3_AUDIO_DMAC_MAX_BLOCKS (PS3_AUDIO_ 104 105 #define PS3_AUDIO_NORMAL_DMA_START_CH (0) 106 #define PS3_AUDIO_NORMAL_DMA_COUNT (8) 107 #define PS3_AUDIO_NULL_DMA_START_CH \ 108 (PS3_AUDIO_NORMAL_DMA_START_CH + PS3_A 109 #define PS3_AUDIO_NULL_DMA_COUNT (2) 110 111 #define SND_PS3_MAX_VOL (0x0F) 112 #define SND_PS3_MIN_VOL (0x00) 113 #define SND_PS3_MIN_ATT SND_PS3_MIN_VOL 114 #define SND_PS3_MAX_ATT SND_PS3_MAX_VOL 115 116 #define SND_PS3_PCM_PREALLOC_SIZE \ 117 (PS3_AUDIO_DMAC_BLOCK_SIZE * PS3_AUDIO 118 119 #define SND_PS3_DMA_REGION_SIZE \ 120 (SND_PS3_PCM_PREALLOC_SIZE + PAGE_SIZE 121 122 #define PS3_AUDIO_IOID (1UL) 123 124 #endif /* _SND_PS3_H_ */ 125
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.