Lines Matching refs:mix
198 static int tumbler_set_master_volume(struct pmac_tumbler *mix)
203 if (! mix->i2c.client)
206 if (! mix->master_switch[0])
209 left_vol = mix->master_vol[0];
214 if (! mix->master_switch[1])
217 right_vol = mix->master_vol[1];
231 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_VOL, 6,
256 struct pmac_tumbler *mix = chip->mixer_data;
258 ucontrol->value.integer.value[0] = mix->master_vol[0];
259 ucontrol->value.integer.value[1] = mix->master_vol[1];
267 struct pmac_tumbler *mix = chip->mixer_data;
276 change = mix->master_vol[0] != vol[0] ||
277 mix->master_vol[1] != vol[1];
279 mix->master_vol[0] = vol[0];
280 mix->master_vol[1] = vol[1];
281 tumbler_set_master_volume(mix);
291 struct pmac_tumbler *mix = chip->mixer_data;
293 ucontrol->value.integer.value[0] = mix->master_switch[0];
294 ucontrol->value.integer.value[1] = mix->master_switch[1];
302 struct pmac_tumbler *mix = chip->mixer_data;
305 change = mix->master_switch[0] != ucontrol->value.integer.value[0] ||
306 mix->master_switch[1] != ucontrol->value.integer.value[1];
308 mix->master_switch[0] = !!ucontrol->value.integer.value[0];
309 mix->master_switch[1] = !!ucontrol->value.integer.value[1];
310 tumbler_set_master_volume(mix);
322 static int tumbler_set_drc(struct pmac_tumbler *mix)
326 if (! mix->i2c.client)
329 if (mix->drc_enable) {
331 if (mix->drc_range > TAS3001_DRC_MAX)
333 else if (mix->drc_range < 0)
336 val[1] = mix->drc_range + 0x91;
342 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_DRC,
357 static int snapper_set_drc(struct pmac_tumbler *mix)
361 if (! mix->i2c.client)
364 if (mix->drc_enable)
369 if (mix->drc_range > 0xef)
371 else if (mix->drc_range < 0)
374 val[2] = mix->drc_range;
379 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, TAS_REG_DRC,
404 struct pmac_tumbler *mix;
405 if (! (mix = chip->mixer_data))
407 ucontrol->value.integer.value[0] = mix->drc_range;
415 struct pmac_tumbler *mix;
419 if (! (mix = chip->mixer_data))
429 change = mix->drc_range != val;
431 mix->drc_range = val;
433 tumbler_set_drc(mix);
435 snapper_set_drc(mix);
444 struct pmac_tumbler *mix;
445 if (! (mix = chip->mixer_data))
447 ucontrol->value.integer.value[0] = mix->drc_enable;
455 struct pmac_tumbler *mix;
458 if (! (mix = chip->mixer_data))
460 change = mix->drc_enable != ucontrol->value.integer.value[0];
462 mix->drc_enable = !!ucontrol->value.integer.value[0];
464 tumbler_set_drc(mix);
466 snapper_set_drc(mix);
484 static int tumbler_set_mono_volume(struct pmac_tumbler *mix,
491 if (! mix->i2c.client)
494 vol = mix->mono_vol[info->index];
500 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, info->reg,
526 struct pmac_tumbler *mix;
527 if (! (mix = chip->mixer_data))
529 ucontrol->value.integer.value[0] = mix->mono_vol[info->index];
538 struct pmac_tumbler *mix;
542 if (! (mix = chip->mixer_data))
547 change = mix->mono_vol[info->index] != vol;
549 mix->mono_vol[info->index] = vol;
550 tumbler_set_mono_volume(mix, info);
621 static int snapper_set_mix_vol1(struct pmac_tumbler *mix, int idx, int ch, int reg)
626 vol = mix->mix_vol[idx][ch];
629 mix->mix_vol[idx][ch] = vol;
633 vol = mix->mix_vol[i][ch];
638 if (i2c_smbus_write_i2c_block_data(mix->i2c.client, reg,
646 static int snapper_set_mix_vol(struct pmac_tumbler *mix, int idx)
648 if (! mix->i2c.client)
650 if (snapper_set_mix_vol1(mix, idx, 0, TAS_REG_LMIX) < 0 ||
651 snapper_set_mix_vol1(mix, idx, 1, TAS_REG_RMIX) < 0)
671 struct pmac_tumbler *mix;
672 if (! (mix = chip->mixer_data))
674 ucontrol->value.integer.value[0] = mix->mix_vol[idx][0];
675 ucontrol->value.integer.value[1] = mix->mix_vol[idx][1];
684 struct pmac_tumbler *mix;
688 if (! (mix = chip->mixer_data))
695 change = mix->mix_vol[idx][0] != vol[0] ||
696 mix->mix_vol[idx][1] != vol[1];
698 mix->mix_vol[idx][0] = vol[0];
699 mix->mix_vol[idx][1] = vol[1];
700 snapper_set_mix_vol(mix, idx);
717 struct pmac_tumbler *mix;
719 if (! (mix = chip->mixer_data))
723 gp = &mix->hp_mute; break;
725 gp = &mix->amp_mute; break;
727 gp = &mix->line_mute; break;
741 struct pmac_tumbler *mix;
748 if (! (mix = chip->mixer_data))
752 gp = &mix->hp_mute; break;
754 gp = &mix->amp_mute; break;
756 gp = &mix->line_mute; break;
770 static int snapper_set_capture_source(struct pmac_tumbler *mix)
772 if (! mix->i2c.client)
774 if (mix->capture_source)
775 mix->acs |= 2;
777 mix->acs &= ~2;
778 return i2c_smbus_write_byte_data(mix->i2c.client, TAS_REG_ACS, mix->acs);
795 struct pmac_tumbler *mix = chip->mixer_data;
797 ucontrol->value.enumerated.item[0] = mix->capture_source;
805 struct pmac_tumbler *mix = chip->mixer_data;
808 change = ucontrol->value.enumerated.item[0] != mix->capture_source;
810 mix->capture_source = !!ucontrol->value.enumerated.item[0];
811 snapper_set_capture_source(mix);
925 struct pmac_tumbler *mix = chip->mixer_data;
928 if (mix->hp_detect.addr)
929 detect |= read_audio_gpio(&mix->hp_detect);
935 struct pmac_tumbler *mix = chip->mixer_data;
938 if (mix->line_detect.addr)
939 detect |= read_audio_gpio(&mix->line_detect);
960 struct pmac_tumbler *mix;
966 mix = chip->mixer_data;
967 if (snd_BUG_ON(!mix))
978 check_mute(chip, &mix->hp_mute, 0, mix->auto_mute_notify,
980 if (lineout && mix->line_mute.addr != 0)
981 check_mute(chip, &mix->line_mute, 0, mix->auto_mute_notify,
983 if (mix->anded_reset)
985 check_mute(chip, &mix->amp_mute, !IS_G4DA, mix->auto_mute_notify,
989 check_mute(chip, &mix->amp_mute, 0, mix->auto_mute_notify,
991 if (mix->anded_reset)
993 check_mute(chip, &mix->hp_mute, 1, mix->auto_mute_notify,
995 if (mix->line_mute.addr != 0)
996 check_mute(chip, &mix->line_mute, 1, mix->auto_mute_notify,
999 if (mix->auto_mute_notify)
1004 mix->drc_enable = ! (headphone || lineout);
1005 if (mix->auto_mute_notify)
1009 tumbler_set_drc(mix);
1011 snapper_set_drc(mix);
1015 tumbler_set_master_volume(mix);
1021 struct pmac_tumbler *mix;
1022 mix = chip->mixer_data;
1023 if (snd_BUG_ON(!mix))
1025 mix->auto_mute_notify = do_notify;
1158 struct pmac_tumbler *mix = chip->mixer_data;
1160 if (mix->anded_reset) {
1162 write_audio_gpio(&mix->hp_mute, 0);
1163 write_audio_gpio(&mix->amp_mute, 0);
1165 write_audio_gpio(&mix->hp_mute, 1);
1166 write_audio_gpio(&mix->amp_mute, 1);
1168 write_audio_gpio(&mix->hp_mute, 0);
1169 write_audio_gpio(&mix->amp_mute, 0);
1174 write_audio_gpio(&mix->audio_reset, 0);
1176 write_audio_gpio(&mix->audio_reset, 1);
1178 write_audio_gpio(&mix->audio_reset, 0);
1187 struct pmac_tumbler *mix = chip->mixer_data;
1189 if (mix->headphone_irq >= 0)
1190 disable_irq(mix->headphone_irq);
1191 if (mix->lineout_irq >= 0)
1192 disable_irq(mix->lineout_irq);
1193 mix->save_master_switch[0] = mix->master_switch[0];
1194 mix->save_master_switch[1] = mix->master_switch[1];
1195 mix->save_master_vol[0] = mix->master_vol[0];
1196 mix->save_master_vol[1] = mix->master_vol[1];
1197 mix->master_switch[0] = mix->master_switch[1] = 0;
1198 tumbler_set_master_volume(mix);
1199 if (!mix->anded_reset) {
1200 write_audio_gpio(&mix->amp_mute, 1);
1201 write_audio_gpio(&mix->hp_mute, 1);
1204 mix->acs |= 1;
1205 i2c_smbus_write_byte_data(mix->i2c.client, TAS_REG_ACS, mix->acs);
1207 if (mix->anded_reset) {
1208 write_audio_gpio(&mix->amp_mute, 1);
1209 write_audio_gpio(&mix->hp_mute, 1);
1211 write_audio_gpio(&mix->audio_reset, 1);
1217 struct pmac_tumbler *mix = chip->mixer_data;
1219 mix->acs &= ~1;
1220 mix->master_switch[0] = mix->save_master_switch[0];
1221 mix->master_switch[1] = mix->save_master_switch[1];
1222 mix->master_vol[0] = mix->save_master_vol[0];
1223 mix->master_vol[1] = mix->save_master_vol[1];
1225 if (mix->i2c.client && mix->i2c.init_client) {
1226 if (mix->i2c.init_client(&mix->i2c) < 0)
1231 tumbler_set_mono_volume(mix, &tumbler_pcm_vol_info);
1232 tumbler_set_mono_volume(mix, &tumbler_bass_vol_info);
1233 tumbler_set_mono_volume(mix, &tumbler_treble_vol_info);
1234 tumbler_set_drc(mix);
1236 snapper_set_mix_vol(mix, VOL_IDX_PCM);
1237 snapper_set_mix_vol(mix, VOL_IDX_PCM2);
1238 snapper_set_mix_vol(mix, VOL_IDX_ADC);
1239 tumbler_set_mono_volume(mix, &snapper_bass_vol_info);
1240 tumbler_set_mono_volume(mix, &snapper_treble_vol_info);
1241 snapper_set_drc(mix);
1242 snapper_set_capture_source(mix);
1244 tumbler_set_master_volume(mix);
1247 if (mix->headphone_irq >= 0) {
1250 enable_irq(mix->headphone_irq);
1252 val = do_gpio_read(&mix->hp_detect);
1253 do_gpio_write(&mix->hp_detect, val | 0x80);
1255 if (mix->lineout_irq >= 0)
1256 enable_irq(mix->lineout_irq);
1264 struct pmac_tumbler *mix = chip->mixer_data;
1268 &mix->audio_reset, 0) < 0)
1271 &mix->audio_reset, 1);
1274 &mix->amp_mute, 0) < 0)
1277 &mix->amp_mute, 1);
1280 &mix->hp_mute, 0) < 0)
1283 &mix->hp_mute, 1);
1286 &mix->line_mute, 0) < 0)
1289 &mix->line_mute, 1);
1291 NULL, &mix->hp_detect, 0);
1294 NULL, &mix->hp_detect, 1);
1297 NULL, &mix->hp_detect, 1);
1298 mix->headphone_irq = irq;
1300 NULL, &mix->line_detect, 0);
1303 NULL, &mix->line_detect, 1);
1306 NULL, &mix->line_detect, 1);
1307 mix->lineout_irq = irq;
1316 struct pmac_tumbler *mix = chip->mixer_data;
1317 if (! mix)
1320 if (mix->headphone_irq >= 0)
1321 free_irq(mix->headphone_irq, chip);
1322 if (mix->lineout_irq >= 0)
1323 free_irq(mix->lineout_irq, chip);
1324 tumbler_gpio_free(&mix->audio_reset);
1325 tumbler_gpio_free(&mix->amp_mute);
1326 tumbler_gpio_free(&mix->hp_mute);
1327 tumbler_gpio_free(&mix->hp_detect);
1328 snd_pmac_keywest_cleanup(&mix->i2c);
1329 kfree(mix);
1337 struct pmac_tumbler *mix;
1344 mix = kzalloc(sizeof(*mix), GFP_KERNEL);
1345 if (! mix)
1347 mix->headphone_irq = -1;
1349 chip->mixer_data = mix;
1351 mix->anded_reset = 0;
1352 mix->reset_on_sleep = 1;
1357 mix->anded_reset = 1;
1359 mix->reset_on_sleep = 0;
1378 mix->i2c.addr = (*paddr) >> 1;
1380 mix->i2c.addr = TAS_I2C_ADDR;
1383 DBG("(I) TAS i2c address is: %x\n", mix->i2c.addr);
1386 mix->i2c.init_client = tumbler_init_client;
1387 mix->i2c.name = "TAS3001c";
1390 mix->i2c.init_client = snapper_init_client;
1391 mix->i2c.name = "TAS3004";
1395 if ((err = snd_pmac_keywest_init(&mix->i2c)) < 0)
1420 if (mix->line_mute.addr != 0) {
1431 mix->drc_range = (TAS3001_DRC_MAX * 6) / 10;
1433 mix->drc_range = (TAS3004_DRC_MAX * 6) / 10;
1434 mix->drc_enable = 1; /* will be changed later if AUTO_DRC is set */
1436 tumbler_set_drc(mix);
1438 snapper_set_drc(mix);
1449 if ((mix->headphone_irq >=0 || mix->lineout_irq >= 0)
1457 if (mix->headphone_irq >= 0) {
1459 if ((err = request_irq(mix->headphone_irq, headphone_intr, 0,
1463 val = do_gpio_read(&mix->hp_detect);
1464 do_gpio_write(&mix->hp_detect, val | 0x80);
1466 if (mix->lineout_irq >= 0) {
1468 if ((err = request_irq(mix->lineout_irq, headphone_intr, 0,
1472 val = do_gpio_read(&mix->line_detect);
1473 do_gpio_write(&mix->line_detect, val | 0x80);