Lines Matching refs:mix

212 static int tumbler_set_master_volume(struct pmac_tumbler *mix)  in tumbler_set_master_volume()  argument
217 if (! mix->i2c.client) in tumbler_set_master_volume()
220 if (! mix->master_switch[0]) in tumbler_set_master_volume()
223 left_vol = mix->master_vol[0]; in tumbler_set_master_volume()
228 if (! mix->master_switch[1]) in tumbler_set_master_volume()
231 right_vol = mix->master_vol[1]; in tumbler_set_master_volume()
245 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_VOL, 6, in tumbler_set_master_volume()
270 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_get_master_volume() local
272 ucontrol->value.integer.value[0] = mix->master_vol[0]; in tumbler_get_master_volume()
273 ucontrol->value.integer.value[1] = mix->master_vol[1]; in tumbler_get_master_volume()
281 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_put_master_volume() local
290 change = mix->master_vol[0] != vol[0] || in tumbler_put_master_volume()
291 mix->master_vol[1] != vol[1]; in tumbler_put_master_volume()
293 mix->master_vol[0] = vol[0]; in tumbler_put_master_volume()
294 mix->master_vol[1] = vol[1]; in tumbler_put_master_volume()
295 tumbler_set_master_volume(mix); in tumbler_put_master_volume()
305 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_get_master_switch() local
307 ucontrol->value.integer.value[0] = mix->master_switch[0]; in tumbler_get_master_switch()
308 ucontrol->value.integer.value[1] = mix->master_switch[1]; in tumbler_get_master_switch()
316 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_put_master_switch() local
319 change = mix->master_switch[0] != ucontrol->value.integer.value[0] || in tumbler_put_master_switch()
320 mix->master_switch[1] != ucontrol->value.integer.value[1]; in tumbler_put_master_switch()
322 mix->master_switch[0] = !!ucontrol->value.integer.value[0]; in tumbler_put_master_switch()
323 mix->master_switch[1] = !!ucontrol->value.integer.value[1]; in tumbler_put_master_switch()
324 tumbler_set_master_volume(mix); in tumbler_put_master_switch()
336 static int tumbler_set_drc(struct pmac_tumbler *mix) in tumbler_set_drc() argument
340 if (! mix->i2c.client) in tumbler_set_drc()
343 if (mix->drc_enable) { in tumbler_set_drc()
345 if (mix->drc_range > TAS3001_DRC_MAX) in tumbler_set_drc()
347 else if (mix->drc_range < 0) in tumbler_set_drc()
350 val[1] = mix->drc_range + 0x91; in tumbler_set_drc()
356 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_DRC, in tumbler_set_drc()
371 static int snapper_set_drc(struct pmac_tumbler *mix) in snapper_set_drc() argument
375 if (! mix->i2c.client) in snapper_set_drc()
378 if (mix->drc_enable) in snapper_set_drc()
383 if (mix->drc_range > 0xef) in snapper_set_drc()
385 else if (mix->drc_range < 0) in snapper_set_drc()
388 val[2] = mix->drc_range; in snapper_set_drc()
393 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_DRC, in snapper_set_drc()
418 struct pmac_tumbler *mix; in tumbler_get_drc_value() local
419 if (! (mix = chip->mixer_data)) in tumbler_get_drc_value()
421 ucontrol->value.integer.value[0] = mix->drc_range; in tumbler_get_drc_value()
429 struct pmac_tumbler *mix; in tumbler_put_drc_value() local
433 if (! (mix = chip->mixer_data)) in tumbler_put_drc_value()
443 change = mix->drc_range != val; in tumbler_put_drc_value()
445 mix->drc_range = val; in tumbler_put_drc_value()
447 tumbler_set_drc(mix); in tumbler_put_drc_value()
449 snapper_set_drc(mix); in tumbler_put_drc_value()
458 struct pmac_tumbler *mix; in tumbler_get_drc_switch() local
459 if (! (mix = chip->mixer_data)) in tumbler_get_drc_switch()
461 ucontrol->value.integer.value[0] = mix->drc_enable; in tumbler_get_drc_switch()
469 struct pmac_tumbler *mix; in tumbler_put_drc_switch() local
472 if (! (mix = chip->mixer_data)) in tumbler_put_drc_switch()
474 change = mix->drc_enable != ucontrol->value.integer.value[0]; in tumbler_put_drc_switch()
476 mix->drc_enable = !!ucontrol->value.integer.value[0]; in tumbler_put_drc_switch()
478 tumbler_set_drc(mix); in tumbler_put_drc_switch()
480 snapper_set_drc(mix); in tumbler_put_drc_switch()
498 static int tumbler_set_mono_volume(struct pmac_tumbler *mix, in tumbler_set_mono_volume() argument
505 if (! mix->i2c.client) in tumbler_set_mono_volume()
508 vol = mix->mono_vol[info->index]; in tumbler_set_mono_volume()
514 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, info->reg, in tumbler_set_mono_volume()
540 struct pmac_tumbler *mix; in tumbler_get_mono() local
541 if (! (mix = chip->mixer_data)) in tumbler_get_mono()
543 ucontrol->value.integer.value[0] = mix->mono_vol[info->index]; in tumbler_get_mono()
552 struct pmac_tumbler *mix; in tumbler_put_mono() local
556 if (! (mix = chip->mixer_data)) in tumbler_put_mono()
561 change = mix->mono_vol[info->index] != vol; in tumbler_put_mono()
563 mix->mono_vol[info->index] = vol; in tumbler_put_mono()
564 tumbler_set_mono_volume(mix, info); in tumbler_put_mono()
635 static int snapper_set_mix_vol1(struct pmac_tumbler *mix, int idx, int ch, int reg) in snapper_set_mix_vol1() argument
640 vol = mix->mix_vol[idx][ch]; in snapper_set_mix_vol1()
643 mix->mix_vol[idx][ch] = vol; in snapper_set_mix_vol1()
647 vol = mix->mix_vol[i][ch]; in snapper_set_mix_vol1()
652 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, reg, in snapper_set_mix_vol1()
660 static int snapper_set_mix_vol(struct pmac_tumbler *mix, int idx) in snapper_set_mix_vol() argument
662 if (! mix->i2c.client) in snapper_set_mix_vol()
664 if (snapper_set_mix_vol1(mix, idx, 0, TAS_REG_LMIX) < 0 || in snapper_set_mix_vol()
665 snapper_set_mix_vol1(mix, idx, 1, TAS_REG_RMIX) < 0) in snapper_set_mix_vol()
685 struct pmac_tumbler *mix; in snapper_get_mix() local
686 if (! (mix = chip->mixer_data)) in snapper_get_mix()
688 ucontrol->value.integer.value[0] = mix->mix_vol[idx][0]; in snapper_get_mix()
689 ucontrol->value.integer.value[1] = mix->mix_vol[idx][1]; in snapper_get_mix()
698 struct pmac_tumbler *mix; in snapper_put_mix() local
702 if (! (mix = chip->mixer_data)) in snapper_put_mix()
709 change = mix->mix_vol[idx][0] != vol[0] || in snapper_put_mix()
710 mix->mix_vol[idx][1] != vol[1]; in snapper_put_mix()
712 mix->mix_vol[idx][0] = vol[0]; in snapper_put_mix()
713 mix->mix_vol[idx][1] = vol[1]; in snapper_put_mix()
714 snapper_set_mix_vol(mix, idx); in snapper_put_mix()
731 struct pmac_tumbler *mix; in tumbler_get_mute_switch() local
733 if (! (mix = chip->mixer_data)) in tumbler_get_mute_switch()
737 gp = &mix->hp_mute; break; in tumbler_get_mute_switch()
739 gp = &mix->amp_mute; break; in tumbler_get_mute_switch()
741 gp = &mix->line_mute; break; in tumbler_get_mute_switch()
755 struct pmac_tumbler *mix; in tumbler_put_mute_switch() local
762 if (! (mix = chip->mixer_data)) in tumbler_put_mute_switch()
766 gp = &mix->hp_mute; break; in tumbler_put_mute_switch()
768 gp = &mix->amp_mute; break; in tumbler_put_mute_switch()
770 gp = &mix->line_mute; break; in tumbler_put_mute_switch()
784 static int snapper_set_capture_source(struct pmac_tumbler *mix) in snapper_set_capture_source() argument
786 if (! mix->i2c.client) in snapper_set_capture_source()
788 if (mix->capture_source) in snapper_set_capture_source()
789 mix->acs |= 2; in snapper_set_capture_source()
791 mix->acs &= ~2; in snapper_set_capture_source()
792 return i2c_smbus_write_byte_data(mix->i2c.client, TAS_REG_ACS, mix->acs); in snapper_set_capture_source()
809 struct pmac_tumbler *mix = chip->mixer_data; in snapper_get_capture_source() local
811 ucontrol->value.enumerated.item[0] = mix->capture_source; in snapper_get_capture_source()
819 struct pmac_tumbler *mix = chip->mixer_data; in snapper_put_capture_source() local
822 change = ucontrol->value.enumerated.item[0] != mix->capture_source; in snapper_put_capture_source()
824 mix->capture_source = !!ucontrol->value.enumerated.item[0]; in snapper_put_capture_source()
825 snapper_set_capture_source(mix); in snapper_put_capture_source()
939 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_detect_headphone() local
942 if (mix->hp_detect.addr) in tumbler_detect_headphone()
943 detect |= read_audio_gpio(&mix->hp_detect); in tumbler_detect_headphone()
949 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_detect_lineout() local
952 if (mix->line_detect.addr) in tumbler_detect_lineout()
953 detect |= read_audio_gpio(&mix->line_detect); in tumbler_detect_lineout()
974 struct pmac_tumbler *mix; in device_change_handler() local
980 mix = chip->mixer_data; in device_change_handler()
981 if (snd_BUG_ON(!mix)) in device_change_handler()
992 check_mute(chip, &mix->hp_mute, 0, mix->auto_mute_notify, in device_change_handler()
994 if (lineout && mix->line_mute.addr != 0) in device_change_handler()
995 check_mute(chip, &mix->line_mute, 0, mix->auto_mute_notify, in device_change_handler()
997 if (mix->anded_reset) in device_change_handler()
999 check_mute(chip, &mix->amp_mute, !IS_G4DA, mix->auto_mute_notify, in device_change_handler()
1003 check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify, in device_change_handler()
1005 if (mix->anded_reset) in device_change_handler()
1007 check_mute(chip, &mix->hp_mute, 1, mix->auto_mute_notify, in device_change_handler()
1009 if (mix->line_mute.addr != 0) in device_change_handler()
1010 check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify, in device_change_handler()
1013 if (mix->auto_mute_notify) in device_change_handler()
1018 mix->drc_enable = ! (headphone || lineout); in device_change_handler()
1019 if (mix->auto_mute_notify) in device_change_handler()
1023 tumbler_set_drc(mix); in device_change_handler()
1025 snapper_set_drc(mix); in device_change_handler()
1029 tumbler_set_master_volume(mix); in device_change_handler()
1035 struct pmac_tumbler *mix; in tumbler_update_automute() local
1036 mix = chip->mixer_data; in tumbler_update_automute()
1037 if (snd_BUG_ON(!mix)) in tumbler_update_automute()
1039 mix->auto_mute_notify = do_notify; in tumbler_update_automute()
1172 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_reset_audio() local
1174 if (mix->anded_reset) { in tumbler_reset_audio()
1176 write_audio_gpio(&mix->hp_mute, 0); in tumbler_reset_audio()
1177 write_audio_gpio(&mix->amp_mute, 0); in tumbler_reset_audio()
1179 write_audio_gpio(&mix->hp_mute, 1); in tumbler_reset_audio()
1180 write_audio_gpio(&mix->amp_mute, 1); in tumbler_reset_audio()
1182 write_audio_gpio(&mix->hp_mute, 0); in tumbler_reset_audio()
1183 write_audio_gpio(&mix->amp_mute, 0); in tumbler_reset_audio()
1188 write_audio_gpio(&mix->audio_reset, 0); in tumbler_reset_audio()
1190 write_audio_gpio(&mix->audio_reset, 1); in tumbler_reset_audio()
1192 write_audio_gpio(&mix->audio_reset, 0); in tumbler_reset_audio()
1201 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_suspend() local
1203 if (mix->headphone_irq >= 0) in tumbler_suspend()
1204 disable_irq(mix->headphone_irq); in tumbler_suspend()
1205 if (mix->lineout_irq >= 0) in tumbler_suspend()
1206 disable_irq(mix->lineout_irq); in tumbler_suspend()
1207 mix->save_master_switch[0] = mix->master_switch[0]; in tumbler_suspend()
1208 mix->save_master_switch[1] = mix->master_switch[1]; in tumbler_suspend()
1209 mix->save_master_vol[0] = mix->master_vol[0]; in tumbler_suspend()
1210 mix->save_master_vol[1] = mix->master_vol[1]; in tumbler_suspend()
1211 mix->master_switch[0] = mix->master_switch[1] = 0; in tumbler_suspend()
1212 tumbler_set_master_volume(mix); in tumbler_suspend()
1213 if (!mix->anded_reset) { in tumbler_suspend()
1214 write_audio_gpio(&mix->amp_mute, 1); in tumbler_suspend()
1215 write_audio_gpio(&mix->hp_mute, 1); in tumbler_suspend()
1218 mix->acs |= 1; in tumbler_suspend()
1219 i2c_smbus_write_byte_data(mix->i2c.client, TAS_REG_ACS, mix->acs); in tumbler_suspend()
1221 if (mix->anded_reset) { in tumbler_suspend()
1222 write_audio_gpio(&mix->amp_mute, 1); in tumbler_suspend()
1223 write_audio_gpio(&mix->hp_mute, 1); in tumbler_suspend()
1225 write_audio_gpio(&mix->audio_reset, 1); in tumbler_suspend()
1231 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_resume() local
1233 mix->acs &= ~1; in tumbler_resume()
1234 mix->master_switch[0] = mix->save_master_switch[0]; in tumbler_resume()
1235 mix->master_switch[1] = mix->save_master_switch[1]; in tumbler_resume()
1236 mix->master_vol[0] = mix->save_master_vol[0]; in tumbler_resume()
1237 mix->master_vol[1] = mix->save_master_vol[1]; in tumbler_resume()
1239 if (mix->i2c.client && mix->i2c.init_client) { in tumbler_resume()
1240 if (mix->i2c.init_client(&mix->i2c) < 0) in tumbler_resume()
1245 tumbler_set_mono_volume(mix, &tumbler_pcm_vol_info); in tumbler_resume()
1246 tumbler_set_mono_volume(mix, &tumbler_bass_vol_info); in tumbler_resume()
1247 tumbler_set_mono_volume(mix, &tumbler_treble_vol_info); in tumbler_resume()
1248 tumbler_set_drc(mix); in tumbler_resume()
1250 snapper_set_mix_vol(mix, VOL_IDX_PCM); in tumbler_resume()
1251 snapper_set_mix_vol(mix, VOL_IDX_PCM2); in tumbler_resume()
1252 snapper_set_mix_vol(mix, VOL_IDX_ADC); in tumbler_resume()
1253 tumbler_set_mono_volume(mix, &snapper_bass_vol_info); in tumbler_resume()
1254 tumbler_set_mono_volume(mix, &snapper_treble_vol_info); in tumbler_resume()
1255 snapper_set_drc(mix); in tumbler_resume()
1256 snapper_set_capture_source(mix); in tumbler_resume()
1258 tumbler_set_master_volume(mix); in tumbler_resume()
1261 if (mix->headphone_irq >= 0) { in tumbler_resume()
1264 enable_irq(mix->headphone_irq); in tumbler_resume()
1266 val = do_gpio_read(&mix->hp_detect); in tumbler_resume()
1267 do_gpio_write(&mix->hp_detect, val | 0x80); in tumbler_resume()
1269 if (mix->lineout_irq >= 0) in tumbler_resume()
1270 enable_irq(mix->lineout_irq); in tumbler_resume()
1278 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_init() local
1282 &mix->audio_reset, 0) < 0) in tumbler_init()
1285 &mix->audio_reset, 1); in tumbler_init()
1288 &mix->amp_mute, 0) < 0) in tumbler_init()
1291 &mix->amp_mute, 1); in tumbler_init()
1294 &mix->hp_mute, 0) < 0) in tumbler_init()
1297 &mix->hp_mute, 1); in tumbler_init()
1300 &mix->line_mute, 0) < 0) in tumbler_init()
1303 &mix->line_mute, 1); in tumbler_init()
1305 NULL, &mix->hp_detect, 0); in tumbler_init()
1308 NULL, &mix->hp_detect, 1); in tumbler_init()
1311 NULL, &mix->hp_detect, 1); in tumbler_init()
1312 mix->headphone_irq = irq; in tumbler_init()
1314 NULL, &mix->line_detect, 0); in tumbler_init()
1317 NULL, &mix->line_detect, 1); in tumbler_init()
1320 NULL, &mix->line_detect, 1); in tumbler_init()
1321 mix->lineout_irq = irq; in tumbler_init()
1330 struct pmac_tumbler *mix = chip->mixer_data; in tumbler_cleanup() local
1331 if (! mix) in tumbler_cleanup()
1334 if (mix->headphone_irq >= 0) in tumbler_cleanup()
1335 free_irq(mix->headphone_irq, chip); in tumbler_cleanup()
1336 if (mix->lineout_irq >= 0) in tumbler_cleanup()
1337 free_irq(mix->lineout_irq, chip); in tumbler_cleanup()
1338 tumbler_gpio_free(&mix->audio_reset); in tumbler_cleanup()
1339 tumbler_gpio_free(&mix->amp_mute); in tumbler_cleanup()
1340 tumbler_gpio_free(&mix->hp_mute); in tumbler_cleanup()
1341 tumbler_gpio_free(&mix->hp_detect); in tumbler_cleanup()
1342 snd_pmac_keywest_cleanup(&mix->i2c); in tumbler_cleanup()
1343 kfree(mix); in tumbler_cleanup()
1351 struct pmac_tumbler *mix; in snd_pmac_tumbler_init() local
1358 mix = kzalloc(sizeof(*mix), GFP_KERNEL); in snd_pmac_tumbler_init()
1359 if (! mix) in snd_pmac_tumbler_init()
1361 mix->headphone_irq = -1; in snd_pmac_tumbler_init()
1363 chip->mixer_data = mix; in snd_pmac_tumbler_init()
1365 mix->anded_reset = 0; in snd_pmac_tumbler_init()
1366 mix->reset_on_sleep = 1; in snd_pmac_tumbler_init()
1371 mix->anded_reset = 1; in snd_pmac_tumbler_init()
1373 mix->reset_on_sleep = 0; in snd_pmac_tumbler_init()
1391 mix->i2c.addr = (*paddr) >> 1; in snd_pmac_tumbler_init()
1393 mix->i2c.addr = TAS_I2C_ADDR; in snd_pmac_tumbler_init()
1396 DBG("(I) TAS i2c address is: %x\n", mix->i2c.addr); in snd_pmac_tumbler_init()
1399 mix->i2c.init_client = tumbler_init_client; in snd_pmac_tumbler_init()
1400 mix->i2c.name = "TAS3001c"; in snd_pmac_tumbler_init()
1403 mix->i2c.init_client = snapper_init_client; in snd_pmac_tumbler_init()
1404 mix->i2c.name = "TAS3004"; in snd_pmac_tumbler_init()
1408 if ((err = snd_pmac_keywest_init(&mix->i2c)) < 0) in snd_pmac_tumbler_init()
1433 if (mix->line_mute.addr != 0) { in snd_pmac_tumbler_init()
1444 mix->drc_range = (TAS3001_DRC_MAX * 6) / 10; in snd_pmac_tumbler_init()
1446 mix->drc_range = (TAS3004_DRC_MAX * 6) / 10; in snd_pmac_tumbler_init()
1447 mix->drc_enable = 1; /* will be changed later if AUTO_DRC is set */ in snd_pmac_tumbler_init()
1449 tumbler_set_drc(mix); in snd_pmac_tumbler_init()
1451 snapper_set_drc(mix); in snd_pmac_tumbler_init()
1462 if ((mix->headphone_irq >=0 || mix->lineout_irq >= 0) in snd_pmac_tumbler_init()
1470 if (mix->headphone_irq >= 0) { in snd_pmac_tumbler_init()
1472 if ((err = request_irq(mix->headphone_irq, headphone_intr, 0, in snd_pmac_tumbler_init()
1476 val = do_gpio_read(&mix->hp_detect); in snd_pmac_tumbler_init()
1477 do_gpio_write(&mix->hp_detect, val | 0x80); in snd_pmac_tumbler_init()
1479 if (mix->lineout_irq >= 0) { in snd_pmac_tumbler_init()
1481 if ((err = request_irq(mix->lineout_irq, headphone_intr, 0, in snd_pmac_tumbler_init()
1485 val = do_gpio_read(&mix->line_detect); in snd_pmac_tumbler_init()
1486 do_gpio_write(&mix->line_detect, val | 0x80); in snd_pmac_tumbler_init()