Lines Matching refs:chip

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()
81 oxygen_write_i2c(chip, I2C_DEVICE_CS4398, 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()
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()
98 oxygen_write_i2c(chip, I2C_DEVICE_CS4362A, 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()
108 cs4362a_write(chip, reg, value); in cs4362a_write_cached()
111 static void cs43xx_registers_init(struct oxygen *chip) in cs43xx_registers_init() argument
113 struct xonar_cs43xx *data = chip->model_data; in cs43xx_registers_init()
117 cs4398_write(chip, 8, CS4398_CPEN | CS4398_PDN); in cs43xx_registers_init()
118 cs4362a_write(chip, 0x01, CS4362A_PDN | CS4362A_CPEN); in cs43xx_registers_init()
120 cs4398_write(chip, 2, data->cs4398_regs[2]); in cs43xx_registers_init()
121 cs4398_write(chip, 3, CS4398_ATAPI_B_R | CS4398_ATAPI_A_L); 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()
126 cs4362a_write(chip, 0x02, CS4362A_DIF_LJUST); in cs43xx_registers_init()
127 cs4362a_write(chip, 0x03, CS4362A_MUTEC_6 | CS4362A_AMUTE | in cs43xx_registers_init()
129 cs4362a_write(chip, 0x04, data->cs4362a_regs[0x04]); in cs43xx_registers_init()
130 cs4362a_write(chip, 0x05, 0); in cs43xx_registers_init()
132 cs4362a_write(chip, i, data->cs4362a_regs[i]); in cs43xx_registers_init()
134 cs4398_write(chip, 8, CS4398_CPEN); in cs43xx_registers_init()
135 cs4362a_write(chip, 0x01, CS4362A_CPEN); in cs43xx_registers_init()
138 static void xonar_d1_init(struct oxygen *chip) in xonar_d1_init() argument
140 struct xonar_cs43xx *data = chip->model_data; in xonar_d1_init()
164 oxygen_write16(chip, OXYGEN_2WIRE_BUS_STATUS, in xonar_d1_init()
169 cs43xx_registers_init(chip); in xonar_d1_init()
171 oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL, in xonar_d1_init()
175 oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, in xonar_d1_init()
178 xonar_init_cs53x1(chip); in xonar_d1_init()
179 xonar_enable_output(chip); 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()
186 static void xonar_dx_init(struct oxygen *chip) in xonar_dx_init() argument
188 struct xonar_cs43xx *data = chip->model_data; in xonar_dx_init()
193 xonar_init_ext_power(chip); in xonar_dx_init()
194 xonar_d1_init(chip); in xonar_dx_init()
197 static void xonar_d1_cleanup(struct oxygen *chip) in xonar_d1_cleanup() argument
199 xonar_disable_output(chip); in xonar_d1_cleanup()
200 cs4362a_write(chip, 0x01, CS4362A_PDN | CS4362A_CPEN); in xonar_d1_cleanup()
201 oxygen_clear_bits8(chip, OXYGEN_FUNCTION, OXYGEN_FUNCTION_RESET_CODEC); in xonar_d1_cleanup()
204 static void xonar_d1_suspend(struct oxygen *chip) in xonar_d1_suspend() argument
206 xonar_d1_cleanup(chip); in xonar_d1_suspend()
209 static void xonar_d1_resume(struct oxygen *chip) in xonar_d1_resume() argument
211 oxygen_set_bits8(chip, OXYGEN_FUNCTION, OXYGEN_FUNCTION_RESET_CODEC); in xonar_d1_resume()
213 cs43xx_registers_init(chip); in xonar_d1_resume()
214 xonar_enable_output(chip); in xonar_d1_resume()
217 static void set_cs43xx_params(struct oxygen *chip, in set_cs43xx_params() argument
220 struct xonar_cs43xx *data = chip->model_data; in set_cs43xx_params()
234 cs4398_write_cached(chip, 2, cs4398_fm); in set_cs43xx_params()
236 cs4362a_write_cached(chip, 6, cs4362a_fm); in set_cs43xx_params()
237 cs4362a_write_cached(chip, 12, cs4362a_fm); in set_cs43xx_params()
240 cs4362a_write_cached(chip, 9, cs4362a_fm); in set_cs43xx_params()
243 static void update_cs4362a_volumes(struct oxygen *chip) in update_cs4362a_volumes() argument
248 mute = chip->dac_mute ? CS4362A_MUTE : 0; in update_cs4362a_volumes()
250 cs4362a_write_cached(chip, 7 + i + i / 2, in update_cs4362a_volumes()
251 (127 - chip->dac_volume[2 + i]) | mute); in update_cs4362a_volumes()
254 static void update_cs43xx_volume(struct oxygen *chip) in update_cs43xx_volume() argument
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()
258 update_cs4362a_volumes(chip); in update_cs43xx_volume()
261 static void update_cs43xx_mute(struct oxygen *chip) in update_cs43xx_mute() argument
266 if (chip->dac_mute) in update_cs43xx_mute()
268 cs4398_write_cached(chip, 4, reg); in update_cs43xx_mute()
269 update_cs4362a_volumes(chip); in update_cs43xx_mute()
272 static void update_cs43xx_center_lfe_mix(struct oxygen *chip, bool mixed) in update_cs43xx_center_lfe_mix() argument
274 struct xonar_cs43xx *data = chip->model_data; in update_cs43xx_center_lfe_mix()
282 cs4362a_write_cached(chip, 9, reg); in update_cs43xx_center_lfe_mix()
307 struct oxygen *chip = ctl->private_data; in rolloff_get() local
308 struct xonar_cs43xx *data = chip->model_data; in rolloff_get()
318 struct oxygen *chip = ctl->private_data; in rolloff_put() local
319 struct xonar_cs43xx *data = chip->model_data; in rolloff_put()
323 mutex_lock(&chip->mutex); in rolloff_put()
331 cs4398_write(chip, 7, reg); in rolloff_put()
336 cs4362a_write(chip, 0x04, reg); in rolloff_put()
338 mutex_unlock(&chip->mutex); in rolloff_put()
350 static void xonar_d1_line_mic_ac97_switch(struct oxygen *chip, in xonar_d1_line_mic_ac97_switch() argument
354 spin_lock_irq(&chip->reg_lock); in xonar_d1_line_mic_ac97_switch()
355 oxygen_write16_masked(chip, OXYGEN_GPIO_DATA, in xonar_d1_line_mic_ac97_switch()
358 spin_unlock_irq(&chip->reg_lock); in xonar_d1_line_mic_ac97_switch()
364 static int xonar_d1_mixer_init(struct oxygen *chip) in xonar_d1_mixer_init() argument
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()
388 static void dump_d1_registers(struct oxygen *chip, in dump_d1_registers() argument
391 struct xonar_cs43xx *data = chip->model_data; in dump_d1_registers()
403 .chip = "AV200",
434 int get_xonar_cs43xx_model(struct oxygen *chip, in get_xonar_cs43xx_model() argument
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()