/linux-4.4.14/sound/aoa/codecs/ |
H A D | Makefile | 2 snd-aoa-codec-tas-objs := tas.o 6 obj-$(CONFIG_SND_AOA_TAS) += snd-aoa-codec-tas.o
|
H A D | tas.c | 2 * Apple Onboard Audio driver for tas codec 27 * audacity, or recording the tas output via cable 73 MODULE_DESCRIPTION("tas codec driver for snd-aoa"); 75 #include "tas.h" 76 #include "tas-gain-table.h" 77 #include "tas-basstreble.h" 81 #define PFX "snd-aoa-codec-tas: " 84 struct tas { struct 102 static int tas_reset_init(struct tas *tas); 104 static struct tas *codec_to_tas(struct aoa_codec *codec) codec_to_tas() 106 return container_of(codec, struct tas, codec); codec_to_tas() 109 static inline int tas_write_reg(struct tas *tas, u8 reg, u8 len, u8 *data) tas_write_reg() argument 112 return i2c_smbus_write_byte_data(tas->i2c, reg, *data); tas_write_reg() 114 return i2c_smbus_write_i2c_block_data(tas->i2c, reg, len, data); tas_write_reg() 117 static void tas3004_set_drc(struct tas *tas) tas3004_set_drc() argument 121 if (tas->drc_enabled) tas3004_set_drc() 126 if (tas->drc_range > 0xef) tas3004_set_drc() 128 else if (tas->drc_range < 0) tas3004_set_drc() 131 val[2] = tas->drc_range; tas3004_set_drc() 136 tas_write_reg(tas, TAS_REG_DRC, 6, val); tas3004_set_drc() 139 static void tas_set_treble(struct tas *tas) tas_set_treble() argument 143 tmp = tas3004_treble(tas->treble); tas_set_treble() 144 tas_write_reg(tas, TAS_REG_TREBLE, 1, &tmp); tas_set_treble() 147 static void tas_set_bass(struct tas *tas) tas_set_bass() argument 151 tmp = tas3004_bass(tas->bass); tas_set_bass() 152 tas_write_reg(tas, TAS_REG_BASS, 1, &tmp); tas_set_bass() 155 static void tas_set_volume(struct tas *tas) tas_set_volume() argument 161 left = tas->cached_volume_l; tas_set_volume() 162 right = tas->cached_volume_r; tas_set_volume() 167 if (tas->mute_l) left = 0; tas_set_volume() 168 if (tas->mute_r) right = 0; tas_set_volume() 184 tas_write_reg(tas, TAS_REG_VOL, 6, block); tas_set_volume() 187 static void tas_set_mixer(struct tas *tas) tas_set_mixer() argument 194 val = tas->mixer_l[i]; tas_set_mixer() 201 tas_write_reg(tas, TAS_REG_LMIX, 9, block); tas_set_mixer() 204 val = tas->mixer_r[i]; tas_set_mixer() 211 tas_write_reg(tas, TAS_REG_RMIX, 9, block); tas_set_mixer() 238 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_vol_get() local 240 mutex_lock(&tas->mtx); tas_snd_vol_get() 241 ucontrol->value.integer.value[0] = tas->cached_volume_l; tas_snd_vol_get() 242 ucontrol->value.integer.value[1] = tas->cached_volume_r; tas_snd_vol_get() 243 mutex_unlock(&tas->mtx); tas_snd_vol_get() 250 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_vol_put() local 259 mutex_lock(&tas->mtx); tas_snd_vol_put() 260 if (tas->cached_volume_l == ucontrol->value.integer.value[0] tas_snd_vol_put() 261 && tas->cached_volume_r == ucontrol->value.integer.value[1]) { tas_snd_vol_put() 262 mutex_unlock(&tas->mtx); tas_snd_vol_put() 266 tas->cached_volume_l = ucontrol->value.integer.value[0]; tas_snd_vol_put() 267 tas->cached_volume_r = ucontrol->value.integer.value[1]; tas_snd_vol_put() 268 if (tas->hw_enabled) tas_snd_vol_put() 269 tas_set_volume(tas); tas_snd_vol_put() 270 mutex_unlock(&tas->mtx); tas_snd_vol_put() 288 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_mute_get() local 290 mutex_lock(&tas->mtx); tas_snd_mute_get() 291 ucontrol->value.integer.value[0] = !tas->mute_l; tas_snd_mute_get() 292 ucontrol->value.integer.value[1] = !tas->mute_r; tas_snd_mute_get() 293 mutex_unlock(&tas->mtx); tas_snd_mute_get() 300 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_mute_put() local 302 mutex_lock(&tas->mtx); tas_snd_mute_put() 303 if (tas->mute_l == !ucontrol->value.integer.value[0] tas_snd_mute_put() 304 && tas->mute_r == !ucontrol->value.integer.value[1]) { tas_snd_mute_put() 305 mutex_unlock(&tas->mtx); tas_snd_mute_put() 309 tas->mute_l = !ucontrol->value.integer.value[0]; tas_snd_mute_put() 310 tas->mute_r = !ucontrol->value.integer.value[1]; tas_snd_mute_put() 311 if (tas->hw_enabled) tas_snd_mute_put() 312 tas_set_volume(tas); tas_snd_mute_put() 313 mutex_unlock(&tas->mtx); tas_snd_mute_put() 339 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_mixer_get() local 342 mutex_lock(&tas->mtx); tas_snd_mixer_get() 343 ucontrol->value.integer.value[0] = tas->mixer_l[idx]; tas_snd_mixer_get() 344 ucontrol->value.integer.value[1] = tas->mixer_r[idx]; tas_snd_mixer_get() 345 mutex_unlock(&tas->mtx); tas_snd_mixer_get() 353 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_mixer_put() local 356 mutex_lock(&tas->mtx); tas_snd_mixer_put() 357 if (tas->mixer_l[idx] == ucontrol->value.integer.value[0] tas_snd_mixer_put() 358 && tas->mixer_r[idx] == ucontrol->value.integer.value[1]) { tas_snd_mixer_put() 359 mutex_unlock(&tas->mtx); tas_snd_mixer_put() 363 tas->mixer_l[idx] = ucontrol->value.integer.value[0]; tas_snd_mixer_put() 364 tas->mixer_r[idx] = ucontrol->value.integer.value[1]; tas_snd_mixer_put() 366 if (tas->hw_enabled) tas_snd_mixer_put() 367 tas_set_mixer(tas); tas_snd_mixer_put() 368 mutex_unlock(&tas->mtx); tas_snd_mixer_put() 399 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_drc_range_get() local 401 mutex_lock(&tas->mtx); tas_snd_drc_range_get() 402 ucontrol->value.integer.value[0] = tas->drc_range; tas_snd_drc_range_get() 403 mutex_unlock(&tas->mtx); tas_snd_drc_range_get() 410 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_drc_range_put() local 416 mutex_lock(&tas->mtx); tas_snd_drc_range_put() 417 if (tas->drc_range == ucontrol->value.integer.value[0]) { tas_snd_drc_range_put() 418 mutex_unlock(&tas->mtx); tas_snd_drc_range_put() 422 tas->drc_range = ucontrol->value.integer.value[0]; tas_snd_drc_range_put() 423 if (tas->hw_enabled) tas_snd_drc_range_put() 424 tas3004_set_drc(tas); tas_snd_drc_range_put() 425 mutex_unlock(&tas->mtx); tas_snd_drc_range_put() 443 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_drc_switch_get() local 445 mutex_lock(&tas->mtx); tas_snd_drc_switch_get() 446 ucontrol->value.integer.value[0] = tas->drc_enabled; tas_snd_drc_switch_get() 447 mutex_unlock(&tas->mtx); tas_snd_drc_switch_get() 454 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_drc_switch_put() local 456 mutex_lock(&tas->mtx); tas_snd_drc_switch_put() 457 if (tas->drc_enabled == ucontrol->value.integer.value[0]) { tas_snd_drc_switch_put() 458 mutex_unlock(&tas->mtx); tas_snd_drc_switch_put() 462 tas->drc_enabled = !!ucontrol->value.integer.value[0]; tas_snd_drc_switch_put() 463 if (tas->hw_enabled) tas_snd_drc_switch_put() 464 tas3004_set_drc(tas); tas_snd_drc_switch_put() 465 mutex_unlock(&tas->mtx); tas_snd_drc_switch_put() 489 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_capture_source_get() local 491 mutex_lock(&tas->mtx); tas_snd_capture_source_get() 492 ucontrol->value.enumerated.item[0] = !!(tas->acr & TAS_ACR_INPUT_B); tas_snd_capture_source_get() 493 mutex_unlock(&tas->mtx); tas_snd_capture_source_get() 500 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_capture_source_put() local 505 mutex_lock(&tas->mtx); tas_snd_capture_source_put() 506 oldacr = tas->acr; tas_snd_capture_source_put() 513 tas->acr &= ~(TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL); tas_snd_capture_source_put() 515 tas->acr |= TAS_ACR_INPUT_B | TAS_ACR_B_MONAUREAL | tas_snd_capture_source_put() 517 if (oldacr == tas->acr) { tas_snd_capture_source_put() 518 mutex_unlock(&tas->mtx); tas_snd_capture_source_put() 521 if (tas->hw_enabled) tas_snd_capture_source_put() 522 tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr); tas_snd_capture_source_put() 523 mutex_unlock(&tas->mtx); tas_snd_capture_source_put() 560 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_treble_get() local 562 mutex_lock(&tas->mtx); tas_snd_treble_get() 563 ucontrol->value.integer.value[0] = tas->treble; tas_snd_treble_get() 564 mutex_unlock(&tas->mtx); tas_snd_treble_get() 571 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_treble_put() local 576 mutex_lock(&tas->mtx); tas_snd_treble_put() 577 if (tas->treble == ucontrol->value.integer.value[0]) { tas_snd_treble_put() 578 mutex_unlock(&tas->mtx); tas_snd_treble_put() 582 tas->treble = ucontrol->value.integer.value[0]; tas_snd_treble_put() 583 if (tas->hw_enabled) tas_snd_treble_put() 584 tas_set_treble(tas); tas_snd_treble_put() 585 mutex_unlock(&tas->mtx); tas_snd_treble_put() 611 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_bass_get() local 613 mutex_lock(&tas->mtx); tas_snd_bass_get() 614 ucontrol->value.integer.value[0] = tas->bass; tas_snd_bass_get() 615 mutex_unlock(&tas->mtx); tas_snd_bass_get() 622 struct tas *tas = snd_kcontrol_chip(kcontrol); tas_snd_bass_put() local 627 mutex_lock(&tas->mtx); tas_snd_bass_put() 628 if (tas->bass == ucontrol->value.integer.value[0]) { tas_snd_bass_put() 629 mutex_unlock(&tas->mtx); tas_snd_bass_put() 633 tas->bass = ucontrol->value.integer.value[0]; tas_snd_bass_put() 634 if (tas->hw_enabled) tas_snd_bass_put() 635 tas_set_bass(tas); tas_snd_bass_put() 636 mutex_unlock(&tas->mtx); tas_snd_bass_put() 672 static int tas_reset_init(struct tas *tas) tas_reset_init() argument 676 tas->codec.gpio->methods->all_amps_off(tas->codec.gpio); tas_reset_init() 678 tas->codec.gpio->methods->set_hw_reset(tas->codec.gpio, 0); tas_reset_init() 680 tas->codec.gpio->methods->set_hw_reset(tas->codec.gpio, 1); tas_reset_init() 682 tas->codec.gpio->methods->set_hw_reset(tas->codec.gpio, 0); tas_reset_init() 684 tas->codec.gpio->methods->all_amps_restore(tas->codec.gpio); tas_reset_init() 687 if (tas_write_reg(tas, TAS_REG_MCS, 1, &tmp)) tas_reset_init() 690 tas->acr |= TAS_ACR_ANALOG_PDOWN; tas_reset_init() 691 if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr)) tas_reset_init() 695 if (tas_write_reg(tas, TAS_REG_MCS2, 1, &tmp)) tas_reset_init() 698 tas3004_set_drc(tas); tas_reset_init() 701 tas->treble = TAS3004_TREBLE_ZERO; tas_reset_init() 702 tas->bass = TAS3004_BASS_ZERO; tas_reset_init() 703 tas_set_treble(tas); tas_reset_init() 704 tas_set_bass(tas); tas_reset_init() 706 tas->acr &= ~TAS_ACR_ANALOG_PDOWN; tas_reset_init() 707 if (tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr)) tas_reset_init() 717 struct tas *tas = cii->codec_data; tas_switch_clock() local 722 tas->codec.gpio->methods->all_amps_off(tas->codec.gpio); tas_switch_clock() 723 tas->hw_enabled = 0; tas_switch_clock() 727 mutex_lock(&tas->mtx); tas_switch_clock() 728 tas_reset_init(tas); tas_switch_clock() 729 tas_set_volume(tas); tas_switch_clock() 730 tas_set_mixer(tas); tas_switch_clock() 731 tas->hw_enabled = 1; tas_switch_clock() 732 tas->codec.gpio->methods->all_amps_restore(tas->codec.gpio); tas_switch_clock() 733 mutex_unlock(&tas->mtx); tas_switch_clock() 746 static int tas_suspend(struct tas *tas) tas_suspend() argument 748 mutex_lock(&tas->mtx); tas_suspend() 749 tas->hw_enabled = 0; tas_suspend() 750 tas->acr |= TAS_ACR_ANALOG_PDOWN; tas_suspend() 751 tas_write_reg(tas, TAS_REG_ACR, 1, &tas->acr); tas_suspend() 752 mutex_unlock(&tas->mtx); tas_suspend() 756 static int tas_resume(struct tas *tas) tas_resume() argument 759 mutex_lock(&tas->mtx); tas_resume() 760 tas_reset_init(tas); tas_resume() 761 tas_set_volume(tas); tas_resume() 762 tas_set_mixer(tas); tas_resume() 763 tas->hw_enabled = 1; tas_resume() 764 mutex_unlock(&tas->mtx); tas_resume() 799 struct tas *tas = codec_to_tas(codec); tas_init_codec() local 802 if (!tas->codec.gpio || !tas->codec.gpio->methods) { tas_init_codec() 807 mutex_lock(&tas->mtx); tas_init_codec() 808 if (tas_reset_init(tas)) { tas_init_codec() 809 printk(KERN_ERR PFX "tas failed to initialise\n"); tas_init_codec() 810 mutex_unlock(&tas->mtx); tas_init_codec() 813 tas->hw_enabled = 1; tas_init_codec() 814 mutex_unlock(&tas->mtx); tas_init_codec() 816 if (tas->codec.soundbus_dev->attach_codec(tas->codec.soundbus_dev, tas_init_codec() 818 &tas_codec_info, tas)) { tas_init_codec() 819 printk(KERN_ERR PFX "error attaching tas to soundbus\n"); tas_init_codec() 823 if (aoa_snd_device_new(SNDRV_DEV_CODEC, tas, &ops)) { tas_init_codec() 824 printk(KERN_ERR PFX "failed to create tas snd device!\n"); tas_init_codec() 827 err = aoa_snd_ctl_add(snd_ctl_new1(&volume_control, tas)); tas_init_codec() 831 err = aoa_snd_ctl_add(snd_ctl_new1(&mute_control, tas)); tas_init_codec() 835 err = aoa_snd_ctl_add(snd_ctl_new1(&pcm1_control, tas)); tas_init_codec() 839 err = aoa_snd_ctl_add(snd_ctl_new1(&monitor_control, tas)); tas_init_codec() 843 err = aoa_snd_ctl_add(snd_ctl_new1(&capture_source_control, tas)); tas_init_codec() 847 err = aoa_snd_ctl_add(snd_ctl_new1(&drc_range_control, tas)); tas_init_codec() 851 err = aoa_snd_ctl_add(snd_ctl_new1(&drc_switch_control, tas)); tas_init_codec() 855 err = aoa_snd_ctl_add(snd_ctl_new1(&treble_control, tas)); tas_init_codec() 859 err = aoa_snd_ctl_add(snd_ctl_new1(&bass_control, tas)); tas_init_codec() 865 tas->codec.soundbus_dev->detach_codec(tas->codec.soundbus_dev, tas); tas_init_codec() 866 snd_device_free(aoa_get_card(), tas); tas_init_codec() local 872 struct tas *tas = codec_to_tas(codec); tas_exit_codec() local 874 if (!tas->codec.soundbus_dev) tas_exit_codec() 876 tas->codec.soundbus_dev->detach_codec(tas->codec.soundbus_dev, tas); tas_exit_codec() 884 struct tas *tas; tas_i2c_probe() local 886 tas = kzalloc(sizeof(struct tas), GFP_KERNEL); tas_i2c_probe() 888 if (!tas) tas_i2c_probe() 891 mutex_init(&tas->mtx); tas_i2c_probe() 892 tas->i2c = client; tas_i2c_probe() 893 i2c_set_clientdata(client, tas); tas_i2c_probe() 896 tas->drc_range = TAS3004_DRC_MAX / 2; tas_i2c_probe() 898 strlcpy(tas->codec.name, "tas", MAX_CODEC_NAME_LEN); tas_i2c_probe() 899 tas->codec.owner = THIS_MODULE; tas_i2c_probe() 900 tas->codec.init = tas_init_codec; tas_i2c_probe() 901 tas->codec.exit = tas_exit_codec; tas_i2c_probe() 902 tas->codec.node = of_node_get(node); tas_i2c_probe() 904 if (aoa_codec_register(&tas->codec)) { tas_i2c_probe() 908 "snd-aoa-codec-tas: tas found, addr 0x%02x on %s\n", tas_i2c_probe() 912 mutex_destroy(&tas->mtx); tas_i2c_probe() 913 kfree(tas); tas_i2c_probe() 919 struct tas *tas = i2c_get_clientdata(client); tas_i2c_remove() local 922 aoa_codec_unregister(&tas->codec); tas_i2c_remove() 923 of_node_put(tas->codec.node); tas_i2c_remove() 926 tas_write_reg(tas, TAS_REG_ACR, 1, &tmp); tas_i2c_remove() 928 mutex_destroy(&tas->mtx); tas_i2c_remove() 929 kfree(tas); tas_i2c_remove()
|
H A D | tas.h | 2 * Apple Onboard Audio driver for tas codec (header)
|
/linux-4.4.14/drivers/target/ |
H A D | target_core_tmr.c | 78 static void core_tmr_handle_tas_abort(struct se_cmd *cmd, int tas) core_tmr_handle_tas_abort() argument 113 struct se_session *tmr_sess, int tas) __target_check_io_state() 144 if ((tmr_sess != se_cmd->se_sess) && tas) __target_check_io_state() 298 int tas, core_tmr_drain_state_list() 349 rc = __target_check_io_state(cmd, tmr_sess, tas); core_tmr_drain_state_list() 388 core_tmr_handle_tas_abort(cmd, tas); core_tmr_drain_state_list() 402 int tas; core_tmr_lun_reset() local 414 tas = dev->dev_attrib.emulate_tas; core_tmr_lun_reset() 430 pr_debug("LUN_RESET: %s starting for [%s], tas: %d\n", core_tmr_lun_reset() 432 dev->transport->name, tas); core_tmr_lun_reset() 435 core_tmr_drain_state_list(dev, prout_cmd, tmr_sess, tas, core_tmr_lun_reset() 112 __target_check_io_state(struct se_cmd *se_cmd, struct se_session *tmr_sess, int tas) __target_check_io_state() argument 294 core_tmr_drain_state_list( struct se_device *dev, struct se_cmd *prout_cmd, struct se_session *tmr_sess, int tas, struct list_head *preempt_and_abort_list) core_tmr_drain_state_list() argument
|
H A D | target_core_transport.c | 2431 static void target_wait_free_cmd(struct se_cmd *cmd, bool *aborted, bool *tas) target_wait_free_cmd() argument 2436 __transport_wait_for_tasks(cmd, true, aborted, tas, &flags); target_wait_free_cmd() 2443 bool aborted = false, tas = false; transport_generic_free_cmd() local 2447 target_wait_free_cmd(cmd, &aborted, &tas); transport_generic_free_cmd() 2449 if (!aborted || tas) transport_generic_free_cmd() 2453 target_wait_free_cmd(cmd, &aborted, &tas); transport_generic_free_cmd() 2465 if (!aborted || tas) transport_generic_free_cmd() 2617 bool tas; target_wait_for_sess_cmds() local 2626 tas = (se_cmd->transport_state & CMD_T_TAS); target_wait_for_sess_cmds() 2630 if (tas) target_wait_for_sess_cmds() 2657 bool *aborted, bool *tas, unsigned long *flags) 2672 *tas = true; 2717 bool ret, aborted = false, tas = false; transport_wait_for_tasks() local 2720 ret = __transport_wait_for_tasks(cmd, false, &aborted, &tas, &flags); transport_wait_for_tasks()
|
/linux-4.4.14/sound/aoa/fabrics/ |
H A D | layout.c | 176 /* tas on machines without line out */ 193 /* tas on machines with neither line out nor line in */ 206 /* tas on machines without microphone */ 219 /* tas on machines with everything connected */ 354 .name = "tas", 361 .name = "tas", 368 .name = "tas", 375 .name = "tas", 382 .name = "tas", 400 .name = "tas", 421 .name = "tas", 427 .name = "tas", 495 .name = "tas", 505 .name = "tas", 535 .name = "tas", 542 .name = "tas", 549 .name = "tas",
|
/linux-4.4.14/arch/c6x/include/asm/ |
H A D | cmpxchg.h | 50 #define tas(ptr) xchg((ptr), 1) macro
|
/linux-4.4.14/arch/tile/include/asm/ |
H A D | cmpxchg.h | 130 #define tas(ptr) xchg((ptr), 1) macro
|
/linux-4.4.14/arch/frv/include/asm/ |
H A D | cmpxchg.h | 72 #define tas(ptr) (xchg((ptr), 1)) macro
|
/linux-4.4.14/arch/blackfin/include/asm/ |
H A D | cmpxchg.h | 131 #define tas(ptr) ((void)xchg((ptr), 1)) macro
|
/linux-4.4.14/arch/sh/kernel/ |
H A D | disassemble.c | 219 {"tas.b",{A_IND_N},{HEX_4,REG_N,HEX_1,HEX_B}},
|
/linux-4.4.14/arch/m68k/kernel/ |
H A D | head.S | 2958 tas %a1@
|
/linux-4.4.14/drivers/media/usb/gspca/ |
H A D | topro.c | 1138 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */ probe_6810()
|