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

aica.h (1709B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/* aica.h
      3 * Header file for ALSA driver for
      4 * Sega Dreamcast Yamaha AICA sound
      5 * Copyright Adrian McMenamin
      6 * <adrian@mcmen.demon.co.uk>
      7 * 2006
      8 */
      9
     10/* SPU memory and register constants etc */
     11#define G2_FIFO 0xa05f688c
     12#define SPU_MEMORY_BASE 0xA0800000
     13#define ARM_RESET_REGISTER 0xA0702C00
     14#define SPU_REGISTER_BASE 0xA0700000
     15
     16/* AICA channels stuff */
     17#define AICA_CONTROL_POINT 0xA0810000
     18#define AICA_CONTROL_CHANNEL_SAMPLE_NUMBER 0xA0810008
     19#define AICA_CHANNEL0_CONTROL_OFFSET 0x10004
     20
     21/* Command values */
     22#define AICA_CMD_KICK 0x80000000
     23#define AICA_CMD_NONE 0
     24#define AICA_CMD_START 1
     25#define AICA_CMD_STOP 2
     26#define AICA_CMD_VOL 3
     27
     28/* Sound modes */
     29#define SM_8BIT		1
     30#define SM_16BIT	0
     31#define SM_ADPCM	2
     32
     33/* Buffer and period size */
     34#define AICA_BUFFER_SIZE 0x8000
     35#define AICA_PERIOD_SIZE 0x800
     36#define AICA_PERIOD_NUMBER 16
     37
     38#define AICA_CHANNEL0_OFFSET 0x11000
     39#define AICA_CHANNEL1_OFFSET 0x21000
     40#define CHANNEL_OFFSET 0x10000
     41
     42#define AICA_DMA_CHANNEL 5
     43#define AICA_DMA_MODE 5
     44
     45#define SND_AICA_DRIVER "AICA"
     46
     47struct aica_channel {
     48	uint32_t cmd;		/* Command ID           */
     49	uint32_t pos;		/* Sample position      */
     50	uint32_t length;	/* Sample length        */
     51	uint32_t freq;		/* Frequency            */
     52	uint32_t vol;		/* Volume 0-255         */
     53	uint32_t pan;		/* Pan 0-255            */
     54	uint32_t sfmt;		/* Sound format         */
     55	uint32_t flags;		/* Bit flags            */
     56};
     57
     58struct snd_card_aica {
     59	struct work_struct spu_dma_work;
     60	struct snd_card *card;
     61	struct aica_channel *channel;
     62	struct snd_pcm_substream *substream;
     63	int clicks;
     64	int current_period;
     65	struct timer_list timer;
     66	int master_volume;
     67	int dma_check;
     68};