Lines Matching +full:mute +full:- +full:enable
1 // SPDX-License-Identifier: GPL-2.0-only
17 #include <sound/tpa6130a2-plat.h>
40 static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) in tpa6130a2_power() argument
44 if (enable) { in tpa6130a2_power()
45 ret = regulator_enable(data->supply); in tpa6130a2_power()
47 dev_err(data->dev, in tpa6130a2_power()
48 "Failed to enable supply: %d\n", ret); in tpa6130a2_power()
52 if (data->power_gpio >= 0) in tpa6130a2_power()
53 gpio_set_value(data->power_gpio, 1); in tpa6130a2_power()
56 regcache_cache_only(data->regmap, false); in tpa6130a2_power()
57 ret = regcache_sync(data->regmap); in tpa6130a2_power()
59 dev_err(data->dev, in tpa6130a2_power()
61 regcache_cache_only(data->regmap, true); in tpa6130a2_power()
62 if (data->power_gpio >= 0) in tpa6130a2_power()
63 gpio_set_value(data->power_gpio, 0); in tpa6130a2_power()
64 ret2 = regulator_disable(data->supply); in tpa6130a2_power()
66 dev_err(data->dev, in tpa6130a2_power()
75 regcache_mark_dirty(data->regmap); in tpa6130a2_power()
76 regcache_cache_only(data->regmap, true); in tpa6130a2_power()
79 if (data->power_gpio >= 0) in tpa6130a2_power()
80 gpio_set_value(data->power_gpio, 0); in tpa6130a2_power()
82 ret = regulator_disable(data->supply); in tpa6130a2_power()
84 dev_err(data->dev, in tpa6130a2_power()
96 struct snd_soc_component *c = snd_soc_dapm_to_component(w->dapm); in tpa6130a2_power_event()
109 * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going
113 0, 1, TLV_DB_SCALE_ITEM(-5950, 600, 0),
114 2, 3, TLV_DB_SCALE_ITEM(-5000, 250, 0),
115 4, 5, TLV_DB_SCALE_ITEM(-4550, 160, 0),
116 6, 7, TLV_DB_SCALE_ITEM(-4140, 190, 0),
117 8, 9, TLV_DB_SCALE_ITEM(-3650, 120, 0),
118 10, 11, TLV_DB_SCALE_ITEM(-3330, 160, 0),
119 12, 13, TLV_DB_SCALE_ITEM(-3040, 180, 0),
120 14, 20, TLV_DB_SCALE_ITEM(-2710, 110, 0),
121 21, 37, TLV_DB_SCALE_ITEM(-1960, 74, 0),
122 38, 63, TLV_DB_SCALE_ITEM(-720, 45, 0)
132 0, 8, TLV_DB_SCALE_ITEM(-5900, 400, 0),
133 9, 16, TLV_DB_SCALE_ITEM(-2500, 200, 0),
134 17, 31, TLV_DB_SCALE_ITEM(-1000, 100, 0)
147 if (data->id == TPA6140A2) in tpa6130a2_component_probe()
161 SND_SOC_DAPM_PGA("Left Mute", TPA6130A2_REG_VOL_MUTE,
163 SND_SOC_DAPM_PGA("Right Mute", TPA6130A2_REG_VOL_MUTE,
179 { "Left Mute", NULL, "Left PGA" },
180 { "Right Mute", NULL, "Right PGA" },
182 { "HPLEFT", NULL, "Left Mute" },
183 { "HPRIGHT", NULL, "Right Mute" },
223 struct tpa6130a2_platform_data *pdata = client->dev.platform_data; in tpa6130a2_probe()
224 struct device_node *np = client->dev.of_node; in tpa6130a2_probe()
229 dev = &client->dev; in tpa6130a2_probe()
231 data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL); in tpa6130a2_probe()
233 return -ENOMEM; in tpa6130a2_probe()
235 data->dev = dev; in tpa6130a2_probe()
237 data->regmap = devm_regmap_init_i2c(client, &tpa6130a2_regmap_config); in tpa6130a2_probe()
238 if (IS_ERR(data->regmap)) in tpa6130a2_probe()
239 return PTR_ERR(data->regmap); in tpa6130a2_probe()
242 data->power_gpio = pdata->power_gpio; in tpa6130a2_probe()
244 data->power_gpio = of_get_named_gpio(np, "power-gpio", 0); in tpa6130a2_probe()
248 return -ENODEV; in tpa6130a2_probe()
253 data->id = (uintptr_t)i2c_get_match_data(client); in tpa6130a2_probe()
255 if (data->power_gpio >= 0) { in tpa6130a2_probe()
256 ret = devm_gpio_request(dev, data->power_gpio, in tpa6130a2_probe()
257 "tpa6130a2 enable"); in tpa6130a2_probe()
260 data->power_gpio); in tpa6130a2_probe()
263 gpio_direction_output(data->power_gpio, 0); in tpa6130a2_probe()
266 switch (data->id) { in tpa6130a2_probe()
269 data->id); in tpa6130a2_probe()
279 data->supply = devm_regulator_get(dev, regulator); in tpa6130a2_probe()
280 if (IS_ERR(data->supply)) { in tpa6130a2_probe()
281 ret = PTR_ERR(data->supply); in tpa6130a2_probe()
292 regmap_read(data->regmap, TPA6130A2_REG_VERSION, &version); in tpa6130a2_probe()
302 return devm_snd_soc_register_component(&client->dev, in tpa6130a2_probe()