root/sound/ppc/snd_ps3.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Audio support for PS3
   4  * Copyright (C) 2007 Sony Computer Entertainment Inc.
   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]; /* 0 for L, 1 for R */
  73                 dma_addr_t dma_start_bus_addr[2];
  74                 size_t dma_buffer_size;
  75                 void * dma_last_transfer_vaddr[2];
  76                 void * dma_next_transfer_vaddr[2];
  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 (2ch) */
  99 #define PS3_AUDIO_FIFO_SIZE \
 100         (PS3_AUDIO_FIFO_STAGE_SIZE * PS3_AUDIO_FIFO_STAGE_COUNT)
 101 
 102 /* PS3 audio DMAC max block count in one dma shot = 128 (0x80) blocks*/
 103 #define PS3_AUDIO_DMAC_MAX_BLOCKS  (PS3_AUDIO_DMASIZE_BLOCKS_MASK + 1)
 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_AUDIO_NORMAL_DMA_COUNT)
 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_DMAC_MAX_BLOCKS * 4)
 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_ */

/* [<][>][^][v][top][bottom][index][help] */