cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

snd_ps3.h (2976B)


      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
     16enum 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
     23enum 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
     30enum snd_ps3_ch {
     31	SND_PS3_CH_L = 0,
     32	SND_PS3_CH_R = 1,
     33	SND_PS3_CH_MAX = 2
     34};
     35
     36struct 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 */
     48struct 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_ */