• Home
  • Raw
  • Download

Lines Matching +full:mix +full:-

1 // SPDX-License-Identifier: GPL-2.0-or-later
42 /* SR: no swap, 1bit delay, 32-48kHz */ in daca_init_client()
44 if (i2c_smbus_write_byte_data(i2c->client, DACA_REG_SR, 0x08) < 0 || in daca_init_client()
45 i2c_smbus_write_byte_data(i2c->client, DACA_REG_GCFG, 0x05) < 0) in daca_init_client()
46 return -EINVAL; in daca_init_client()
47 return i2c_smbus_write_block_data(i2c->client, DACA_REG_AVOL, in daca_init_client()
54 static int daca_set_volume(struct pmac_daca *mix) in daca_set_volume() argument
58 if (! mix->i2c.client) in daca_set_volume()
59 return -ENODEV; in daca_set_volume()
61 if (mix->left_vol > DACA_VOL_MAX) in daca_set_volume()
64 data[0] = mix->left_vol; in daca_set_volume()
65 if (mix->right_vol > DACA_VOL_MAX) in daca_set_volume()
68 data[1] = mix->right_vol; in daca_set_volume()
69 data[1] |= mix->deemphasis ? 0x40 : 0; in daca_set_volume()
70 if (i2c_smbus_write_block_data(mix->i2c.client, DACA_REG_AVOL, in daca_set_volume()
73 return -EINVAL; in daca_set_volume()
86 struct pmac_daca *mix; in daca_get_deemphasis() local
87 if (! (mix = chip->mixer_data)) in daca_get_deemphasis()
88 return -ENODEV; in daca_get_deemphasis()
89 ucontrol->value.integer.value[0] = mix->deemphasis ? 1 : 0; in daca_get_deemphasis()
97 struct pmac_daca *mix; in daca_put_deemphasis() local
100 if (! (mix = chip->mixer_data)) in daca_put_deemphasis()
101 return -ENODEV; in daca_put_deemphasis()
102 change = mix->deemphasis != ucontrol->value.integer.value[0]; in daca_put_deemphasis()
104 mix->deemphasis = !!ucontrol->value.integer.value[0]; in daca_put_deemphasis()
105 daca_set_volume(mix); in daca_put_deemphasis()
114 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; in daca_info_volume()
115 uinfo->count = 2; in daca_info_volume()
116 uinfo->value.integer.min = 0; in daca_info_volume()
117 uinfo->value.integer.max = DACA_VOL_MAX; in daca_info_volume()
125 struct pmac_daca *mix; in daca_get_volume() local
126 if (! (mix = chip->mixer_data)) in daca_get_volume()
127 return -ENODEV; in daca_get_volume()
128 ucontrol->value.integer.value[0] = mix->left_vol; in daca_get_volume()
129 ucontrol->value.integer.value[1] = mix->right_vol; in daca_get_volume()
137 struct pmac_daca *mix; in daca_put_volume() local
141 if (! (mix = chip->mixer_data)) in daca_put_volume()
142 return -ENODEV; in daca_put_volume()
143 vol[0] = ucontrol->value.integer.value[0]; in daca_put_volume()
144 vol[1] = ucontrol->value.integer.value[1]; in daca_put_volume()
146 return -EINVAL; in daca_put_volume()
147 change = mix->left_vol != vol[0] || in daca_put_volume()
148 mix->right_vol != vol[1]; in daca_put_volume()
150 mix->left_vol = vol[0]; in daca_put_volume()
151 mix->right_vol = vol[1]; in daca_put_volume()
152 daca_set_volume(mix); in daca_put_volume()
164 struct pmac_daca *mix; in daca_get_amp() local
165 if (! (mix = chip->mixer_data)) in daca_get_amp()
166 return -ENODEV; in daca_get_amp()
167 ucontrol->value.integer.value[0] = mix->amp_on ? 1 : 0; in daca_get_amp()
175 struct pmac_daca *mix; in daca_put_amp() local
178 if (! (mix = chip->mixer_data)) in daca_put_amp()
179 return -ENODEV; in daca_put_amp()
180 change = mix->amp_on != ucontrol->value.integer.value[0]; in daca_put_amp()
182 mix->amp_on = !!ucontrol->value.integer.value[0]; in daca_put_amp()
183 i2c_smbus_write_byte_data(mix->i2c.client, DACA_REG_GCFG, in daca_put_amp()
184 mix->amp_on ? 0x05 : 0x04); in daca_put_amp()
214 struct pmac_daca *mix = chip->mixer_data; in daca_resume() local
215 i2c_smbus_write_byte_data(mix->i2c.client, DACA_REG_SR, 0x08); in daca_resume()
216 i2c_smbus_write_byte_data(mix->i2c.client, DACA_REG_GCFG, in daca_resume()
217 mix->amp_on ? 0x05 : 0x04); in daca_resume()
218 daca_set_volume(mix); in daca_resume()
225 struct pmac_daca *mix = chip->mixer_data; in daca_cleanup() local
226 if (! mix) in daca_cleanup()
228 snd_pmac_keywest_cleanup(&mix->i2c); in daca_cleanup()
229 kfree(mix); in daca_cleanup()
230 chip->mixer_data = NULL; in daca_cleanup()
237 struct pmac_daca *mix; in snd_pmac_daca_init() local
239 request_module("i2c-powermac"); in snd_pmac_daca_init()
241 mix = kzalloc(sizeof(*mix), GFP_KERNEL); in snd_pmac_daca_init()
242 if (! mix) in snd_pmac_daca_init()
243 return -ENOMEM; in snd_pmac_daca_init()
244 chip->mixer_data = mix; in snd_pmac_daca_init()
245 chip->mixer_free = daca_cleanup; in snd_pmac_daca_init()
246 mix->amp_on = 1; /* default on */ in snd_pmac_daca_init()
248 mix->i2c.addr = DACA_I2C_ADDR; in snd_pmac_daca_init()
249 mix->i2c.init_client = daca_init_client; in snd_pmac_daca_init()
250 mix->i2c.name = "DACA"; in snd_pmac_daca_init()
251 if ((err = snd_pmac_keywest_init(&mix->i2c)) < 0) in snd_pmac_daca_init()
257 strcpy(chip->card->mixername, "PowerMac DACA"); in snd_pmac_daca_init()
260 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&daca_mixers[i], chip))) < 0) in snd_pmac_daca_init()
265 chip->resume = daca_resume; in snd_pmac_daca_init()