mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-30 23:54:04 +08:00
07d7fe7bd6
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of version 2 of the gnu general public license as published by the free software foundation this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 24 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190529141334.606756275@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
69 lines
1.7 KiB
C
69 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* aica.h
|
|
* Header file for ALSA driver for
|
|
* Sega Dreamcast Yamaha AICA sound
|
|
* Copyright Adrian McMenamin
|
|
* <adrian@mcmen.demon.co.uk>
|
|
* 2006
|
|
*/
|
|
|
|
/* SPU memory and register constants etc */
|
|
#define G2_FIFO 0xa05f688c
|
|
#define SPU_MEMORY_BASE 0xA0800000
|
|
#define ARM_RESET_REGISTER 0xA0702C00
|
|
#define SPU_REGISTER_BASE 0xA0700000
|
|
|
|
/* AICA channels stuff */
|
|
#define AICA_CONTROL_POINT 0xA0810000
|
|
#define AICA_CONTROL_CHANNEL_SAMPLE_NUMBER 0xA0810008
|
|
#define AICA_CHANNEL0_CONTROL_OFFSET 0x10004
|
|
|
|
/* Command values */
|
|
#define AICA_CMD_KICK 0x80000000
|
|
#define AICA_CMD_NONE 0
|
|
#define AICA_CMD_START 1
|
|
#define AICA_CMD_STOP 2
|
|
#define AICA_CMD_VOL 3
|
|
|
|
/* Sound modes */
|
|
#define SM_8BIT 1
|
|
#define SM_16BIT 0
|
|
#define SM_ADPCM 2
|
|
|
|
/* Buffer and period size */
|
|
#define AICA_BUFFER_SIZE 0x8000
|
|
#define AICA_PERIOD_SIZE 0x800
|
|
#define AICA_PERIOD_NUMBER 16
|
|
|
|
#define AICA_CHANNEL0_OFFSET 0x11000
|
|
#define AICA_CHANNEL1_OFFSET 0x21000
|
|
#define CHANNEL_OFFSET 0x10000
|
|
|
|
#define AICA_DMA_CHANNEL 5
|
|
#define AICA_DMA_MODE 5
|
|
|
|
#define SND_AICA_DRIVER "AICA"
|
|
|
|
struct aica_channel {
|
|
uint32_t cmd; /* Command ID */
|
|
uint32_t pos; /* Sample position */
|
|
uint32_t length; /* Sample length */
|
|
uint32_t freq; /* Frequency */
|
|
uint32_t vol; /* Volume 0-255 */
|
|
uint32_t pan; /* Pan 0-255 */
|
|
uint32_t sfmt; /* Sound format */
|
|
uint32_t flags; /* Bit flags */
|
|
};
|
|
|
|
struct snd_card_aica {
|
|
struct work_struct spu_dma_work;
|
|
struct snd_card *card;
|
|
struct aica_channel *channel;
|
|
struct snd_pcm_substream *substream;
|
|
int clicks;
|
|
int current_period;
|
|
struct timer_list timer;
|
|
int master_volume;
|
|
int dma_check;
|
|
};
|