0001
0002 #ifndef __SOUND_CS8427_H
0003 #define __SOUND_CS8427_H
0004
0005
0006
0007
0008
0009
0010 #include <sound/i2c.h>
0011
0012 #define CS8427_BASE_ADDR 0x10
0013
0014 #define CS8427_REG_AUTOINC 0x80
0015 #define CS8427_REG_CONTROL1 0x01
0016 #define CS8427_REG_CONTROL2 0x02
0017 #define CS8427_REG_DATAFLOW 0x03
0018 #define CS8427_REG_CLOCKSOURCE 0x04
0019 #define CS8427_REG_SERIALINPUT 0x05
0020 #define CS8427_REG_SERIALOUTPUT 0x06
0021 #define CS8427_REG_INT1STATUS 0x07
0022 #define CS8427_REG_INT2STATUS 0x08
0023 #define CS8427_REG_INT1MASK 0x09
0024 #define CS8427_REG_INT1MODEMSB 0x0a
0025 #define CS8427_REG_INT1MODELSB 0x0b
0026 #define CS8427_REG_INT2MASK 0x0c
0027 #define CS8427_REG_INT2MODEMSB 0x0d
0028 #define CS8427_REG_INT2MODELSB 0x0e
0029 #define CS8427_REG_RECVCSDATA 0x0f
0030 #define CS8427_REG_RECVERRORS 0x10
0031 #define CS8427_REG_RECVERRMASK 0x11
0032 #define CS8427_REG_CSDATABUF 0x12
0033 #define CS8427_REG_UDATABUF 0x13
0034 #define CS8427_REG_QSUBCODE 0x14
0035 #define CS8427_REG_OMCKRMCKRATIO 0x1e
0036 #define CS8427_REG_CORU_DATABUF 0x20
0037 #define CS8427_REG_ID_AND_VER 0x7f
0038
0039
0040 #define CS8427_SWCLK (1<<7)
0041 #define CS8427_VSET (1<<6)
0042 #define CS8427_MUTESAO (1<<5)
0043 #define CS8427_MUTEAES (1<<4)
0044 #define CS8427_INTMASK (3<<1)
0045 #define CS8427_INTACTHIGH (0<<1)
0046 #define CS8427_INTACTLOW (1<<1)
0047 #define CS8427_INTOPENDRAIN (2<<1)
0048 #define CS8427_TCBLDIR (1<<0)
0049
0050
0051 #define CS8427_HOLDMASK (3<<5)
0052 #define CS8427_HOLDLASTSAMPLE (0<<5)
0053 #define CS8427_HOLDZERO (1<<5)
0054 #define CS8427_HOLDNOCHANGE (2<<5)
0055 #define CS8427_RMCKF (1<<4)
0056 #define CS8427_MMR (1<<3)
0057 #define CS8427_MMT (1<<2)
0058 #define CS8427_MMTCS (1<<1)
0059 #define CS8427_MMTLR (1<<0)
0060
0061
0062 #define CS8427_TXOFF (1<<6)
0063 #define CS8427_AESBP (1<<5)
0064 #define CS8427_TXDMASK (3<<3)
0065 #define CS8427_TXDSERIAL (1<<3)
0066 #define CS8427_TXAES3DRECEIVER (2<<3)
0067 #define CS8427_SPDMASK (3<<1)
0068 #define CS8427_SPDSERIAL (1<<1)
0069 #define CS8427_SPDAES3RECEIVER (2<<1)
0070
0071
0072 #define CS8427_RUN (1<<6)
0073 #define CS8427_CLKMASK (3<<4)
0074 #define CS8427_CLK256 (0<<4)
0075 #define CS8427_CLK384 (1<<4)
0076 #define CS8427_CLK512 (2<<4)
0077 #define CS8427_OUTC (1<<3)
0078 #define CS8427_INC (1<<2)
0079 #define CS8427_RXDMASK (3<<0)
0080 #define CS8427_RXDILRCK (0<<0)
0081 #define CS8427_RXDAES3INPUT (1<<0)
0082 #define CS8427_EXTCLOCKRESET (2<<0)
0083 #define CS8427_EXTCLOCK (3<<0)
0084
0085
0086 #define CS8427_SIMS (1<<7)
0087 #define CS8427_SISF (1<<6)
0088 #define CS8427_SIRESMASK (3<<4)
0089 #define CS8427_SIRES24 (0<<4)
0090 #define CS8427_SIRES20 (1<<4)
0091 #define CS8427_SIRES16 (2<<4)
0092 #define CS8427_SIJUST (1<<3)
0093 #define CS8427_SIDEL (1<<2)
0094 #define CS8427_SISPOL (1<<1)
0095 #define CS8427_SILRPOL (1<<0)
0096
0097
0098 #define CS8427_SOMS (1<<7)
0099 #define CS8427_SOSF (1<<6)
0100 #define CS8427_SORESMASK (3<<4)
0101 #define CS8427_SORES24 (0<<4)
0102 #define CS8427_SORES20 (1<<4)
0103 #define CS8427_SORES16 (2<<4)
0104 #define CS8427_SORESDIRECT (2<<4)
0105 #define CS8427_SOJUST (1<<3)
0106 #define CS8427_SODEL (1<<2)
0107 #define CS8427_SOSPOL (1<<1)
0108 #define CS8427_SOLRPOL (1<<0)
0109
0110
0111 #define CS8427_TSLIP (1<<7)
0112 #define CS8427_OSLIP (1<<6)
0113 #define CS8427_DETC (1<<2)
0114 #define CS8427_EFTC (1<<1)
0115 #define CS8427_RERR (1<<0)
0116
0117
0118 #define CS8427_DETU (1<<3)
0119 #define CS8427_EFTU (1<<2)
0120 #define CS8427_QCH (1<<1)
0121
0122
0123
0124
0125
0126 #define CS8427_INTMODERISINGMSB 0
0127 #define CS8427_INTMODERESINGLSB 0
0128 #define CS8427_INTMODEFALLINGMSB 0
0129 #define CS8427_INTMODEFALLINGLSB 1
0130 #define CS8427_INTMODELEVELMSB 1
0131 #define CS8427_INTMODELEVELLSB 0
0132
0133
0134 #define CS8427_AUXMASK (15<<4)
0135 #define CS8427_AUXSHIFT 4
0136 #define CS8427_PRO (1<<3)
0137 #define CS8427_AUDIO (1<<2)
0138 #define CS8427_COPY (1<<1)
0139 #define CS8427_ORIG (1<<0)
0140
0141
0142
0143 #define CS8427_QCRC (1<<6)
0144 #define CS8427_CCRC (1<<5)
0145 #define CS8427_UNLOCK (1<<4)
0146 #define CS8427_V (1<<3)
0147 #define CS8427_CONF (1<<2)
0148 #define CS8427_BIP (1<<1)
0149 #define CS8427_PAR (1<<0)
0150
0151
0152 #define CS8427_BSEL (1<<5)
0153 #define CS8427_CBMR (1<<4)
0154 #define CS8427_DETCI (1<<3)
0155 #define CS8427_EFTCI (1<<2)
0156 #define CS8427_CAM (1<<1)
0157 #define CS8427_CHS (1<<0)
0158
0159
0160 #define CS8427_UD (1<<4)
0161 #define CS8427_UBMMASK (3<<2)
0162 #define CS8427_UBMZEROS (0<<2)
0163 #define CS8427_UBMBLOCK (1<<2)
0164 #define CS8427_DETUI (1<<1)
0165 #define CS8427_EFTUI (1<<1)
0166
0167
0168 #define CS8427_IDMASK (15<<4)
0169 #define CS8427_IDSHIFT 4
0170 #define CS8427_VERMASK (15<<0)
0171 #define CS8427_VERSHIFT 0
0172 #define CS8427_VER8427A 0x71
0173
0174 struct snd_pcm_substream;
0175
0176 int snd_cs8427_init(struct snd_i2c_bus *bus, struct snd_i2c_device *device);
0177 int snd_cs8427_create(struct snd_i2c_bus *bus, unsigned char addr,
0178 unsigned int reset_timeout, struct snd_i2c_device **r_cs8427);
0179 int snd_cs8427_reg_write(struct snd_i2c_device *device, unsigned char reg,
0180 unsigned char val);
0181 int snd_cs8427_iec958_build(struct snd_i2c_device *cs8427,
0182 struct snd_pcm_substream *playback_substream,
0183 struct snd_pcm_substream *capture_substream);
0184 int snd_cs8427_iec958_active(struct snd_i2c_device *cs8427, int active);
0185 int snd_cs8427_iec958_pcm(struct snd_i2c_device *cs8427, unsigned int rate);
0186
0187 #endif