Lines Matching defs:chip
232 static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec,
239 oxygen_write_spi(chip, OXYGEN_SPI_TRIGGER |
247 static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec,
250 oxygen_write_i2c(chip, I2C_DEVICE_PCM1796(codec), reg, value);
253 static void pcm1796_write(struct oxygen *chip, unsigned int codec,
256 struct xonar_pcm179x *data = chip->model_data;
258 if ((chip->model.function_flags & OXYGEN_FUNCTION_2WIRE_SPI_MASK) ==
260 pcm1796_write_spi(chip, codec, reg, value);
262 pcm1796_write_i2c(chip, codec, reg, value);
268 static void pcm1796_write_cached(struct oxygen *chip, unsigned int codec,
271 struct xonar_pcm179x *data = chip->model_data;
274 pcm1796_write(chip, codec, reg, value);
277 static void cs2000_write(struct oxygen *chip, u8 reg, u8 value)
279 struct xonar_pcm179x *data = chip->model_data;
281 oxygen_write_i2c(chip, I2C_DEVICE_CS2000, reg, value);
285 static void cs2000_write_cached(struct oxygen *chip, u8 reg, u8 value)
287 struct xonar_pcm179x *data = chip->model_data;
290 cs2000_write(chip, reg, value);
293 static void pcm1796_registers_init(struct oxygen *chip)
295 struct xonar_pcm179x *data = chip->model_data;
303 pcm1796_write(chip, i, 18,
305 pcm1796_write(chip, i, 16, chip->dac_volume[i * 2]
307 pcm1796_write(chip, i, 17, chip->dac_volume[i * 2 + 1]
309 pcm1796_write(chip, i, 19,
311 pcm1796_write(chip, i, 20,
313 pcm1796_write(chip, i, 21, 0);
318 static void pcm1796_init(struct oxygen *chip)
320 struct xonar_pcm179x *data = chip->model_data;
330 pcm1796_registers_init(chip);
334 static void xonar_d2_init(struct oxygen *chip)
336 struct xonar_pcm179x *data = chip->model_data;
342 pcm1796_init(chip);
344 oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_D2_ALT);
345 oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, GPIO_D2_ALT);
347 oxygen_ac97_set_bits(chip, 0, CM9780_JACK, CM9780_FMIC2MIC);
349 xonar_init_cs53x1(chip);
350 xonar_enable_output(chip);
352 snd_component_add(chip->card, "PCM1796");
353 snd_component_add(chip->card, "CS5381");
356 static void xonar_d2x_init(struct oxygen *chip)
358 struct xonar_pcm179x *data = chip->model_data;
363 oxygen_clear_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_D2X_EXT_POWER);
364 xonar_init_ext_power(chip);
365 xonar_d2_init(chip);
368 static void xonar_hdav_init(struct oxygen *chip)
370 struct xonar_hdav *data = chip->model_data;
372 oxygen_write16(chip, OXYGEN_2WIRE_BUS_STATUS,
382 data->pcm179x.dacs = chip->model.dac_channels_mixer / 2;
383 data->pcm179x.h6 = chip->model.dac_channels_mixer > 2;
385 pcm1796_init(chip);
387 oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
389 oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA, GPIO_INPUT_ROUTE);
391 xonar_init_cs53x1(chip);
392 xonar_init_ext_power(chip);
393 xonar_hdmi_init(chip, &data->hdmi);
394 xonar_enable_output(chip);
396 snd_component_add(chip->card, "PCM1796");
397 snd_component_add(chip->card, "CS5381");
400 static void xonar_st_init_i2c(struct oxygen *chip)
402 oxygen_write16(chip, OXYGEN_2WIRE_BUS_STATUS,
408 static void xonar_st_init_common(struct oxygen *chip)
410 struct xonar_pcm179x *data = chip->model_data;
413 data->dacs = chip->model.dac_channels_mixer / 2;
414 data->h6 = chip->model.dac_channels_mixer > 2;
417 pcm1796_init(chip);
419 oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
422 oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
425 xonar_init_cs53x1(chip);
426 xonar_enable_output(chip);
428 snd_component_add(chip->card, "PCM1792A");
429 snd_component_add(chip->card, "CS5381");
432 static void cs2000_registers_init(struct oxygen *chip)
434 struct xonar_pcm179x *data = chip->model_data;
436 cs2000_write(chip, CS2000_GLOBAL_CFG, CS2000_FREEZE);
437 cs2000_write(chip, CS2000_DEV_CTRL, 0);
438 cs2000_write(chip, CS2000_DEV_CFG_1,
443 cs2000_write(chip, CS2000_DEV_CFG_2,
446 cs2000_write(chip, CS2000_RATIO_0 + 0, 0x00); /* 1.0 */
447 cs2000_write(chip, CS2000_RATIO_0 + 1, 0x10);
448 cs2000_write(chip, CS2000_RATIO_0 + 2, 0x00);
449 cs2000_write(chip, CS2000_RATIO_0 + 3, 0x00);
450 cs2000_write(chip, CS2000_FUN_CFG_1,
452 cs2000_write(chip, CS2000_FUN_CFG_2, 0);
453 cs2000_write(chip, CS2000_GLOBAL_CFG, CS2000_EN_DEV_CFG_2);
457 static void xonar_st_init(struct oxygen *chip)
459 struct xonar_pcm179x *data = chip->model_data;
462 data->h6 = chip->model.dac_channels_mixer > 2;
467 oxygen_write16(chip, OXYGEN_I2S_A_FORMAT,
475 xonar_st_init_i2c(chip);
476 cs2000_registers_init(chip);
477 xonar_st_init_common(chip);
479 snd_component_add(chip->card, "CS2000");
482 static void xonar_stx_init(struct oxygen *chip)
484 struct xonar_pcm179x *data = chip->model_data;
486 xonar_st_init_i2c(chip);
491 xonar_init_ext_power(chip);
492 xonar_st_init_common(chip);
495 static void xonar_xense_init(struct oxygen *chip)
497 struct xonar_pcm179x *data = chip->model_data;
502 xonar_init_ext_power(chip);
508 oxygen_write16(chip, OXYGEN_I2S_A_FORMAT,
516 xonar_st_init_i2c(chip);
517 cs2000_registers_init(chip);
523 pcm1796_init(chip);
525 oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
528 oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
532 xonar_init_cs53x1(chip);
533 xonar_enable_output(chip);
535 snd_component_add(chip->card, "PCM1796");
536 snd_component_add(chip->card, "CS5381");
537 snd_component_add(chip->card, "CS2000");
540 static void xonar_d2_cleanup(struct oxygen *chip)
542 xonar_disable_output(chip);
545 static void xonar_hdav_cleanup(struct oxygen *chip)
547 xonar_hdmi_cleanup(chip);
548 xonar_disable_output(chip);
552 static void xonar_st_cleanup(struct oxygen *chip)
554 xonar_disable_output(chip);
557 static void xonar_d2_suspend(struct oxygen *chip)
559 xonar_d2_cleanup(chip);
562 static void xonar_hdav_suspend(struct oxygen *chip)
564 xonar_hdav_cleanup(chip);
567 static void xonar_st_suspend(struct oxygen *chip)
569 xonar_st_cleanup(chip);
572 static void xonar_d2_resume(struct oxygen *chip)
574 pcm1796_registers_init(chip);
575 xonar_enable_output(chip);
578 static void xonar_hdav_resume(struct oxygen *chip)
580 struct xonar_hdav *data = chip->model_data;
582 pcm1796_registers_init(chip);
583 xonar_hdmi_resume(chip, &data->hdmi);
584 xonar_enable_output(chip);
587 static void xonar_stx_resume(struct oxygen *chip)
589 pcm1796_registers_init(chip);
590 xonar_enable_output(chip);
593 static void xonar_st_resume(struct oxygen *chip)
595 cs2000_registers_init(chip);
596 xonar_stx_resume(chip);
599 static void update_pcm1796_oversampling(struct oxygen *chip)
601 struct xonar_pcm179x *data = chip->model_data;
610 pcm1796_write_cached(chip, i, 20, reg);
613 static void update_pcm1796_deemph(struct oxygen *chip)
615 struct xonar_pcm179x *data = chip->model_data;
627 pcm1796_write_cached(chip, i, 18, reg);
630 static void set_pcm1796_params(struct oxygen *chip,
633 struct xonar_pcm179x *data = chip->model_data;
637 update_pcm1796_oversampling(chip);
638 update_pcm1796_deemph(chip);
641 static void update_pcm1796_volume(struct oxygen *chip)
643 struct xonar_pcm179x *data = chip->model_data;
649 pcm1796_write_cached(chip, i, 16, chip->dac_volume[i * 2]
651 pcm1796_write_cached(chip, i, 17, chip->dac_volume[i * 2 + 1]
657 static void update_pcm1796_mute(struct oxygen *chip)
659 struct xonar_pcm179x *data = chip->model_data;
664 if (chip->dac_mute)
669 pcm1796_write_cached(chip, i, 18, value);
672 static void update_cs2000_rate(struct oxygen *chip, unsigned int rate)
674 struct xonar_pcm179x *data = chip->model_data;
703 oxygen_write16_masked(chip, OXYGEN_I2S_A_FORMAT, rate_mclk,
705 cs2000_write_cached(chip, CS2000_FUN_CFG_1, reg);
709 static void set_st_params(struct oxygen *chip,
712 update_cs2000_rate(chip, params_rate(params));
713 set_pcm1796_params(chip, params);
716 static void set_hdav_params(struct oxygen *chip,
719 struct xonar_hdav *data = chip->model_data;
721 set_pcm1796_params(chip, params);
722 xonar_set_hdmi_params(chip, &data->hdmi, params);
747 struct oxygen *chip = ctl->private_data;
748 struct xonar_pcm179x *data = chip->model_data;
759 struct oxygen *chip = ctl->private_data;
760 struct xonar_pcm179x *data = chip->model_data;
765 mutex_lock(&chip->mutex);
775 pcm1796_write(chip, i, 19, reg);
777 mutex_unlock(&chip->mutex);
792 struct oxygen *chip = ctl->private_data;
793 struct xonar_pcm179x *data = chip->model_data;
803 struct oxygen *chip = ctl->private_data;
804 struct xonar_pcm179x *data = chip->model_data;
809 mutex_lock(&chip->mutex);
818 pcm1796_write(chip, i, 18, reg);
820 mutex_unlock(&chip->mutex);
854 struct oxygen *chip = ctl->private_data;
857 gpio = oxygen_read16(chip, OXYGEN_GPIO_DATA);
871 struct oxygen *chip = ctl->private_data;
872 struct xonar_pcm179x *data = chip->model_data;
875 mutex_lock(&chip->mutex);
876 gpio_old = oxygen_read16(chip, OXYGEN_GPIO_DATA);
889 oxygen_write16(chip, OXYGEN_GPIO_DATA, gpio);
891 update_pcm1796_volume(chip);
892 mutex_unlock(&chip->mutex);
909 struct oxygen *chip = ctl->private_data;
910 struct xonar_pcm179x *data = chip->model_data;
912 mutex_lock(&chip->mutex);
921 mutex_unlock(&chip->mutex);
930 struct oxygen *chip = ctl->private_data;
931 struct xonar_pcm179x *data = chip->model_data;
938 mutex_lock(&chip->mutex);
942 update_pcm1796_volume(chip);
944 mutex_unlock(&chip->mutex);
968 struct oxygen *chip = ctl->private_data;
971 gpio = oxygen_read16(chip, OXYGEN_GPIO_DATA);
984 struct oxygen *chip = ctl->private_data;
985 struct xonar_pcm179x *data = chip->model_data;
988 mutex_lock(&chip->mutex);
989 gpio_old = oxygen_read16(chip, OXYGEN_GPIO_DATA);
1002 oxygen_write16(chip, OXYGEN_GPIO_DATA, gpio);
1004 update_pcm1796_volume(chip);
1005 mutex_unlock(&chip->mutex);
1026 static void xonar_line_mic_ac97_switch(struct oxygen *chip,
1030 spin_lock_irq(&chip->reg_lock);
1031 oxygen_write16_masked(chip, OXYGEN_GPIO_DATA,
1034 spin_unlock_irq(&chip->reg_lock);
1056 static int add_pcm1796_controls(struct oxygen *chip)
1058 struct xonar_pcm179x *data = chip->model_data;
1062 err = snd_ctl_add(chip->card,
1063 snd_ctl_new1(&rolloff_control, chip));
1066 err = snd_ctl_add(chip->card,
1067 snd_ctl_new1(&deemph_control, chip));
1074 static int xonar_d2_mixer_init(struct oxygen *chip)
1078 err = snd_ctl_add(chip->card, snd_ctl_new1(&alt_switch, chip));
1081 err = add_pcm1796_controls(chip);
1087 static int xonar_hdav_mixer_init(struct oxygen *chip)
1091 err = snd_ctl_add(chip->card, snd_ctl_new1(&hdav_hdmi_control, chip));
1094 err = add_pcm1796_controls(chip);
1100 static int xonar_st_mixer_init(struct oxygen *chip)
1106 err = snd_ctl_add(chip->card,
1107 snd_ctl_new1(&st_controls[i], chip));
1111 err = add_pcm1796_controls(chip);
1117 static int xonar_xense_mixer_init(struct oxygen *chip)
1123 err = snd_ctl_add(chip->card,
1124 snd_ctl_new1(&xense_controls[i], chip));
1128 err = add_pcm1796_controls(chip);
1134 static void dump_pcm1796_registers(struct oxygen *chip,
1137 struct xonar_pcm179x *data = chip->model_data;
1149 static void dump_cs2000_registers(struct oxygen *chip,
1152 struct xonar_pcm179x *data = chip->model_data;
1166 static void dump_st_registers(struct oxygen *chip,
1169 dump_pcm1796_registers(chip, buffer);
1170 dump_cs2000_registers(chip, buffer);
1175 .chip = "AV200",
1211 .chip = "AV200",
1245 .chip = "AV200",
1275 int get_xonar_pcm179x_model(struct oxygen *chip,
1280 chip->model = model_xonar_d2;
1281 chip->model.shortname = "Xonar D2";
1284 chip->model = model_xonar_d2;
1285 chip->model.shortname = "Xonar D2X";
1286 chip->model.init = xonar_d2x_init;
1289 chip->model = model_xonar_hdav;
1290 oxygen_clear_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_DB_MASK);
1291 switch (oxygen_read16(chip, OXYGEN_GPIO_DATA) & GPIO_DB_MASK) {
1293 chip->model.shortname = "Xonar HDAV1.3";
1296 chip->model.shortname = "Xonar HDAV1.3+H6";
1297 chip->model.dac_channels_mixer = 8;
1298 chip->model.dac_mclks = OXYGEN_MCLKS(256, 128, 128);
1303 chip->model = model_xonar_st;
1304 oxygen_clear_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_DB_MASK);
1305 switch (oxygen_read16(chip, OXYGEN_GPIO_DATA) & GPIO_DB_MASK) {
1307 chip->model.shortname = "Xonar ST";
1310 chip->model.shortname = "Xonar ST+H6";
1311 chip->model.control_filter = xonar_st_h6_control_filter;
1312 chip->model.dac_channels_pcm = 8;
1313 chip->model.dac_channels_mixer = 8;
1314 chip->model.dac_volume_min = 255;
1315 chip->model.dac_mclks = OXYGEN_MCLKS(256, 128, 128);
1320 chip->model = model_xonar_st;
1321 chip->model.shortname = "Xonar STX";
1322 chip->model.init = xonar_stx_init;
1323 chip->model.resume = xonar_stx_resume;
1324 chip->model.set_dac_params = set_pcm1796_params;
1327 chip->model = model_xonar_st;
1328 oxygen_clear_bits16(chip, OXYGEN_GPIO_CONTROL, GPIO_DB_MASK);
1329 switch (oxygen_read16(chip, OXYGEN_GPIO_DATA) & GPIO_DB_MASK) {
1331 chip->model.shortname = "Xonar STX II";
1334 chip->model.shortname = "Xonar STX II+H6";
1335 chip->model.dac_channels_pcm = 8;
1336 chip->model.dac_channels_mixer = 8;
1337 chip->model.dac_mclks = OXYGEN_MCLKS(256, 128, 128);
1340 chip->model.init = xonar_stx_init;
1341 chip->model.resume = xonar_stx_resume;
1342 chip->model.set_dac_params = set_pcm1796_params;
1345 chip->model = model_xonar_st;
1346 chip->model.shortname = "Xonar Xense";
1347 chip->model.chip = "AV100";
1348 chip->model.init = xonar_xense_init;
1349 chip->model.mixer_init = xonar_xense_mixer_init;