• Home
  • Raw
  • Download

Lines Matching +full:reg +full:- +full:data

21  * -----------
25 * I²C <-> CS4398 (addr 1001111) (front)
26 * <-> CS4362A (addr 0011000) (surround, center/LFE, back)
28 * GPI 0 <- external power present (DX only)
30 * GPIO 0 -> enable output to speakers
31 * GPIO 1 -> route output to front panel
32 * GPIO 2 -> M0 of CS5361
33 * GPIO 3 -> M1 of CS5361
34 * GPIO 6 -> ?
35 * GPIO 7 -> ?
36 * GPIO 8 -> route input jack to line-in (0) or mic-in (1)
40 * LINE_OUT -> input of ADC
42 * AUX_IN <- aux
43 * MIC_IN <- mic
44 * FMIC_IN <- front mic
46 * GPO 0 -> route line-in (0) or AC97 output (1) to CS5361 input
77 static void cs4398_write(struct oxygen *chip, u8 reg, u8 value) in cs4398_write() argument
79 struct xonar_cs43xx *data = chip->model_data; in cs4398_write() local
81 oxygen_write_i2c(chip, I2C_DEVICE_CS4398, reg, value); in cs4398_write()
82 if (reg < ARRAY_SIZE(data->cs4398_regs)) in cs4398_write()
83 data->cs4398_regs[reg] = value; in cs4398_write()
86 static void cs4398_write_cached(struct oxygen *chip, u8 reg, u8 value) in cs4398_write_cached() argument
88 struct xonar_cs43xx *data = chip->model_data; in cs4398_write_cached() local
90 if (value != data->cs4398_regs[reg]) in cs4398_write_cached()
91 cs4398_write(chip, reg, value); in cs4398_write_cached()
94 static void cs4362a_write(struct oxygen *chip, u8 reg, u8 value) in cs4362a_write() argument
96 struct xonar_cs43xx *data = chip->model_data; in cs4362a_write() local
98 oxygen_write_i2c(chip, I2C_DEVICE_CS4362A, reg, value); in cs4362a_write()
99 if (reg < ARRAY_SIZE(data->cs4362a_regs)) in cs4362a_write()
100 data->cs4362a_regs[reg] = value; in cs4362a_write()
103 static void cs4362a_write_cached(struct oxygen *chip, u8 reg, u8 value) in cs4362a_write_cached() argument
105 struct xonar_cs43xx *data = chip->model_data; in cs4362a_write_cached() local
107 if (value != data->cs4362a_regs[reg]) in cs4362a_write_cached()
108 cs4362a_write(chip, reg, value); in cs4362a_write_cached()
113 struct xonar_cs43xx *data = chip->model_data; in cs43xx_registers_init() local
120 cs4398_write(chip, 2, data->cs4398_regs[2]); in cs43xx_registers_init()
122 cs4398_write(chip, 4, data->cs4398_regs[4]); in cs43xx_registers_init()
123 cs4398_write(chip, 5, data->cs4398_regs[5]); in cs43xx_registers_init()
124 cs4398_write(chip, 6, data->cs4398_regs[6]); in cs43xx_registers_init()
125 cs4398_write(chip, 7, data->cs4398_regs[7]); in cs43xx_registers_init()
129 cs4362a_write(chip, 0x04, data->cs4362a_regs[0x04]); in cs43xx_registers_init()
132 cs4362a_write(chip, i, data->cs4362a_regs[i]); in cs43xx_registers_init()
140 struct xonar_cs43xx *data = chip->model_data; in xonar_d1_init() local
142 data->generic.anti_pop_delay = 800; in xonar_d1_init()
143 data->generic.output_enable_bit = GPIO_D1_OUTPUT_ENABLE; in xonar_d1_init()
144 data->cs4398_regs[2] = in xonar_d1_init()
146 data->cs4398_regs[4] = CS4398_MUTEP_LOW | in xonar_d1_init()
148 data->cs4398_regs[5] = 60 * 2; in xonar_d1_init()
149 data->cs4398_regs[6] = 60 * 2; in xonar_d1_init()
150 data->cs4398_regs[7] = CS4398_RMP_DN | CS4398_RMP_UP | in xonar_d1_init()
152 data->cs4362a_regs[4] = CS4362A_RMP_DN | CS4362A_DEM_NONE; in xonar_d1_init()
153 data->cs4362a_regs[6] = CS4362A_FM_SINGLE | in xonar_d1_init()
155 data->cs4362a_regs[7] = 60 | CS4362A_MUTE; in xonar_d1_init()
156 data->cs4362a_regs[8] = 60 | CS4362A_MUTE; in xonar_d1_init()
157 data->cs4362a_regs[9] = data->cs4362a_regs[6]; in xonar_d1_init()
158 data->cs4362a_regs[10] = 60 | CS4362A_MUTE; in xonar_d1_init()
159 data->cs4362a_regs[11] = 60 | CS4362A_MUTE; in xonar_d1_init()
160 data->cs4362a_regs[12] = data->cs4362a_regs[6]; in xonar_d1_init()
161 data->cs4362a_regs[13] = 60 | CS4362A_MUTE; in xonar_d1_init()
162 data->cs4362a_regs[14] = 60 | CS4362A_MUTE; in xonar_d1_init()
181 snd_component_add(chip->card, "CS4398"); in xonar_d1_init()
182 snd_component_add(chip->card, "CS4362A"); in xonar_d1_init()
183 snd_component_add(chip->card, "CS5361"); in xonar_d1_init()
188 struct xonar_cs43xx *data = chip->model_data; in xonar_dx_init() local
190 data->generic.ext_power_reg = OXYGEN_GPI_DATA; in xonar_dx_init()
191 data->generic.ext_power_int_reg = OXYGEN_GPI_INTERRUPT_MASK; in xonar_dx_init()
192 data->generic.ext_power_bit = GPI_EXT_POWER; in xonar_dx_init()
220 struct xonar_cs43xx *data = chip->model_data; in set_cs43xx_params() local
235 cs4362a_fm |= data->cs4362a_regs[6] & ~CS4362A_FM_MASK; in set_cs43xx_params()
239 cs4362a_fm |= data->cs4362a_regs[9] & ~CS4362A_FM_MASK; in set_cs43xx_params()
248 mute = chip->dac_mute ? CS4362A_MUTE : 0; in update_cs4362a_volumes()
251 (127 - chip->dac_volume[2 + i]) | mute); in update_cs4362a_volumes()
256 cs4398_write_cached(chip, 5, (127 - chip->dac_volume[0]) * 2); in update_cs43xx_volume()
257 cs4398_write_cached(chip, 6, (127 - chip->dac_volume[1]) * 2); in update_cs43xx_volume()
263 u8 reg; in update_cs43xx_mute() local
265 reg = CS4398_MUTEP_LOW | CS4398_PAMUTE; in update_cs43xx_mute()
266 if (chip->dac_mute) in update_cs43xx_mute()
267 reg |= CS4398_MUTE_B | CS4398_MUTE_A; in update_cs43xx_mute()
268 cs4398_write_cached(chip, 4, reg); in update_cs43xx_mute()
274 struct xonar_cs43xx *data = chip->model_data; in update_cs43xx_center_lfe_mix() local
275 u8 reg; in update_cs43xx_center_lfe_mix() local
277 reg = data->cs4362a_regs[9] & ~CS4362A_ATAPI_MASK; in update_cs43xx_center_lfe_mix()
279 reg |= CS4362A_ATAPI_B_LR | CS4362A_ATAPI_A_LR; in update_cs43xx_center_lfe_mix()
281 reg |= CS4362A_ATAPI_B_R | CS4362A_ATAPI_A_L; in update_cs43xx_center_lfe_mix()
282 cs4362a_write_cached(chip, 9, reg); in update_cs43xx_center_lfe_mix()
298 "Fast Roll-off", "Slow Roll-off" in rolloff_info()
307 struct oxygen *chip = ctl->private_data; in rolloff_get()
308 struct xonar_cs43xx *data = chip->model_data; in rolloff_get() local
310 value->value.enumerated.item[0] = in rolloff_get()
311 (data->cs4398_regs[7] & CS4398_FILT_SEL) != 0; in rolloff_get()
318 struct oxygen *chip = ctl->private_data; in rolloff_put()
319 struct xonar_cs43xx *data = chip->model_data; in rolloff_put() local
321 u8 reg; in rolloff_put() local
323 mutex_lock(&chip->mutex); in rolloff_put()
324 reg = data->cs4398_regs[7]; in rolloff_put()
325 if (value->value.enumerated.item[0]) in rolloff_put()
326 reg |= CS4398_FILT_SEL; in rolloff_put()
328 reg &= ~CS4398_FILT_SEL; in rolloff_put()
329 changed = reg != data->cs4398_regs[7]; in rolloff_put()
331 cs4398_write(chip, 7, reg); in rolloff_put()
332 if (reg & CS4398_FILT_SEL) in rolloff_put()
333 reg = data->cs4362a_regs[0x04] | CS4362A_FILT_SEL; in rolloff_put()
335 reg = data->cs4362a_regs[0x04] & ~CS4362A_FILT_SEL; in rolloff_put()
336 cs4362a_write(chip, 0x04, reg); in rolloff_put()
338 mutex_unlock(&chip->mutex); in rolloff_put()
351 unsigned int reg, unsigned int mute) in xonar_d1_line_mic_ac97_switch() argument
353 if (reg == AC97_LINE) { in xonar_d1_line_mic_ac97_switch()
354 spin_lock_irq(&chip->reg_lock); in xonar_d1_line_mic_ac97_switch()
358 spin_unlock_irq(&chip->reg_lock); in xonar_d1_line_mic_ac97_switch()
362 static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -6000, 100, 0);
368 err = snd_ctl_add(chip->card, snd_ctl_new1(&front_panel_switch, chip)); in xonar_d1_mixer_init()
371 err = snd_ctl_add(chip->card, snd_ctl_new1(&rolloff_control, chip)); in xonar_d1_mixer_init()
377 static void dump_cs4362a_registers(struct xonar_cs43xx *data, in dump_cs4362a_registers() argument
384 snd_iprintf(buffer, " %02x", data->cs4362a_regs[i]); in dump_cs4362a_registers()
391 struct xonar_cs43xx *data = chip->model_data; in dump_d1_registers() local
396 snd_iprintf(buffer, " %02x", data->cs4398_regs[i]); in dump_d1_registers()
398 dump_cs4362a_registers(data, buffer); in dump_d1_registers()
425 .dac_volume_min = 127 - 60,
437 switch (id->subdevice) { in get_xonar_cs43xx_model()
439 chip->model = model_xonar_d1; in get_xonar_cs43xx_model()
440 chip->model.shortname = "Xonar D1"; in get_xonar_cs43xx_model()
444 chip->model = model_xonar_d1; in get_xonar_cs43xx_model()
445 chip->model.shortname = "Xonar DX"; in get_xonar_cs43xx_model()
446 chip->model.init = xonar_dx_init; in get_xonar_cs43xx_model()
449 return -EINVAL; in get_xonar_cs43xx_model()