/* SPDX-License-Identifier: GPL-2.0-or-later */1#ifndef __SOUND_DELTA_H2#define __SOUND_DELTA_H34/*5* ALSA driver for ICEnsemble ICE1712 (Envy24)6*7* Lowlevel functions for M-Audio Delta 1010, 44, 66, Dio2496, Audiophile8* Digigram VX4429*10* Copyright (c) 2000 Jaroslav Kysela <[email protected]>11*/1213#define DELTA_DEVICE_DESC \14"{MidiMan M Audio,Delta 1010},"\15"{MidiMan M Audio,Delta 1010LT},"\16"{MidiMan M Audio,Delta DiO 2496},"\17"{MidiMan M Audio,Delta 66},"\18"{MidiMan M Audio,Delta 44},"\19"{MidiMan M Audio,Delta 410},"\20"{MidiMan M Audio,Audiophile 24/96},"\21"{Digigram,VX442},"\22"{Lionstracs,Mediastation},"\23"{Edirol,DA2496},"2425#define ICE1712_SUBDEVICE_DELTA1010 0x121430d626#define ICE1712_SUBDEVICE_DELTA1010E 0xff1430d627#define ICE1712_SUBDEVICE_DELTADIO2496 0x121431d628#define ICE1712_SUBDEVICE_DELTA66 0x121432d629#define ICE1712_SUBDEVICE_DELTA66E 0xff1432d630#define ICE1712_SUBDEVICE_DELTA44 0x121433d631#define ICE1712_SUBDEVICE_AUDIOPHILE 0x121434d632#define ICE1712_SUBDEVICE_DELTA410 0x121438d633#define ICE1712_SUBDEVICE_DELTA1010LT 0x12143bd634#define ICE1712_SUBDEVICE_VX442 0x12143cd635#define ICE1712_SUBDEVICE_MEDIASTATION 0x694c010036#define ICE1712_SUBDEVICE_EDIROLDA2496 0xce1640103738/* entry point */39extern struct snd_ice1712_card_info snd_ice1712_delta_cards[];404142/*43* MidiMan M-Audio Delta GPIO definitions44*/4546/* MidiMan M-Audio Delta shared pins */47#define ICE1712_DELTA_DFS 0x01 /* fast/slow sample rate mode */48/* (>48kHz must be 1) */49#define ICE1712_DELTA_SPDIF_IN_STAT 0x0250/* S/PDIF input status */51/* 0 = valid signal is present */52/* all except Delta44 */53/* look to CS8414 datasheet */54#define ICE1712_DELTA_SPDIF_OUT_STAT_CLOCK 0x0455/* S/PDIF output status clock */56/* (writing on rising edge - 0->1) */57/* all except Delta44 */58/* look to CS8404A datasheet */59#define ICE1712_DELTA_SPDIF_OUT_STAT_DATA 0x0860/* S/PDIF output status data */61/* all except Delta44 */62/* look to CS8404A datasheet */63/* MidiMan M-Audio DeltaDiO */64/* 0x01 = DFS */65/* 0x02 = SPDIF_IN_STAT */66/* 0x04 = SPDIF_OUT_STAT_CLOCK */67/* 0x08 = SPDIF_OUT_STAT_DATA */68#define ICE1712_DELTA_SPDIF_INPUT_SELECT 0x1069/* coaxial (0), optical (1) */70/* S/PDIF input select*/7172/* MidiMan M-Audio Delta1010 */73/* 0x01 = DFS */74/* 0x02 = SPDIF_IN_STAT */75/* 0x04 = SPDIF_OUT_STAT_CLOCK */76/* 0x08 = SPDIF_OUT_STAT_DATA */77#define ICE1712_DELTA_WORD_CLOCK_SELECT 0x1078/* 1 - clock are taken from S/PDIF input */79/* 0 - clock are taken from Word Clock input */80/* affected SPMCLKIN pin of Envy24 */81#define ICE1712_DELTA_WORD_CLOCK_STATUS 0x2082/* 0 = valid word clock signal is present */8384/* MidiMan M-Audio Delta66 */85/* 0x01 = DFS */86/* 0x02 = SPDIF_IN_STAT */87/* 0x04 = SPDIF_OUT_STAT_CLOCK */88/* 0x08 = SPDIF_OUT_STAT_DATA */89#define ICE1712_DELTA_CODEC_SERIAL_DATA 0x1090/* AKM4524 serial data */91#define ICE1712_DELTA_CODEC_SERIAL_CLOCK 0x2092/* AKM4524 serial clock */93/* (writing on rising edge - 0->1 */94#define ICE1712_DELTA_CODEC_CHIP_A 0x4095#define ICE1712_DELTA_CODEC_CHIP_B 0x8096/* 1 - select chip A or B */9798/* MidiMan M-Audio Delta44 */99/* 0x01 = DFS */100/* 0x10 = CODEC_SERIAL_DATA */101/* 0x20 = CODEC_SERIAL_CLOCK */102/* 0x40 = CODEC_CHIP_A */103/* 0x80 = CODEC_CHIP_B */104105/* MidiMan M-Audio Audiophile/Delta410 definitions */106/* thanks to Kristof Pelckmans <[email protected]> for Delta410 info */107/* 0x01 = DFS */108#define ICE1712_DELTA_AP_CCLK 0x02 /* SPI clock */109/* (clocking on rising edge - 0->1) */110#define ICE1712_DELTA_AP_DIN 0x04 /* data input */111#define ICE1712_DELTA_AP_DOUT 0x08 /* data output */112#define ICE1712_DELTA_AP_CS_DIGITAL 0x10 /* CS8427 chip select */113/* low signal = select */114#define ICE1712_DELTA_AP_CS_CODEC 0x20 /* AK4528 (audiophile), AK4529 (Delta410) chip select */115/* low signal = select */116117/* MidiMan M-Audio Delta1010LT definitions */118/* thanks to Anders Johansson <[email protected]> */119/* 0x01 = DFS */120#define ICE1712_DELTA_1010LT_CCLK 0x02 /* SPI clock (AK4524 + CS8427) */121#define ICE1712_DELTA_1010LT_DIN 0x04 /* data input (CS8427) */122#define ICE1712_DELTA_1010LT_DOUT 0x08 /* data output (AK4524 + CS8427) */123#define ICE1712_DELTA_1010LT_CS 0x70 /* mask for CS address */124#define ICE1712_DELTA_1010LT_CS_CHIP_A 0x00 /* AK4524 #0 */125#define ICE1712_DELTA_1010LT_CS_CHIP_B 0x10 /* AK4524 #1 */126#define ICE1712_DELTA_1010LT_CS_CHIP_C 0x20 /* AK4524 #2 */127#define ICE1712_DELTA_1010LT_CS_CHIP_D 0x30 /* AK4524 #3 */128#define ICE1712_DELTA_1010LT_CS_CS8427 0x40 /* CS8427 */129#define ICE1712_DELTA_1010LT_CS_NONE 0x50 /* nothing */130#define ICE1712_DELTA_1010LT_WORDCLOCK 0x80 /* sample clock source: 0 = Word Clock Input, 1 = S/PDIF Input ??? */131132/* M-Audio Delta 66 rev. E definitions.133* Newer revisions of Delta 66 have CS8427 over SPI for134* S/PDIF transceiver instead of CS8404/CS8414. */135/* 0x01 = DFS */136#define ICE1712_DELTA_66E_CCLK 0x02 /* SPI clock */137#define ICE1712_DELTA_66E_DIN 0x04 /* data input */138#define ICE1712_DELTA_66E_DOUT 0x08 /* data output */139#define ICE1712_DELTA_66E_CS_CS8427 0x10 /* chip select, low = CS8427 */140#define ICE1712_DELTA_66E_CS_CHIP_A 0x20 /* AK4524 #0 */141#define ICE1712_DELTA_66E_CS_CHIP_B 0x40 /* AK4524 #1 */142143/* Digigram VX442 definitions */144#define ICE1712_VX442_CCLK 0x02 /* SPI clock */145#define ICE1712_VX442_DIN 0x04 /* data input */146#define ICE1712_VX442_DOUT 0x08 /* data output */147#define ICE1712_VX442_CS_DIGITAL 0x10 /* chip select, low = CS8427 */148#define ICE1712_VX442_CODEC_CHIP_A 0x20 /* select chip A */149#define ICE1712_VX442_CODEC_CHIP_B 0x40 /* select chip B */150151#endif /* __SOUND_DELTA_H */152153154