Lines Matching +full:wcd9340 +full:- +full:gpio

1 // SPDX-License-Identifier: GPL-2.0
5 #include <linux/gpio.h>
37 .name = "wcd934x-codec",
39 .name = "wcd934x-gpio",
40 .of_compatible = "qcom,wcd9340-gpio",
42 .name = "wcd934x-soundwire",
43 .of_compatible = "qcom,soundwire-v1.3.0",
121 struct regmap *regmap = ddata->regmap; in wcd934x_bring_up()
135 dev_info(ddata->dev, "WCD934x chip id major 0x%x, minor 0x%x\n", in wcd934x_bring_up()
154 struct device *dev = &sdev->dev; in wcd934x_slim_status_up()
160 ddata->regmap = regmap_init_slimbus(sdev, &wcd934x_regmap_config); in wcd934x_slim_status_up()
161 if (IS_ERR(ddata->regmap)) { in wcd934x_slim_status_up()
163 return PTR_ERR(ddata->regmap); in wcd934x_slim_status_up()
172 ret = devm_regmap_add_irq_chip(dev, ddata->regmap, ddata->irq, in wcd934x_slim_status_up()
175 &ddata->irq_data); in wcd934x_slim_status_up()
199 mfd_remove_devices(&sdev->dev); in wcd934x_slim_status()
202 return -EINVAL; in wcd934x_slim_status()
210 struct device *dev = &sdev->dev; in wcd934x_slim_probe()
211 struct device_node *np = dev->of_node; in wcd934x_slim_probe()
217 return -ENOMEM; in wcd934x_slim_probe()
219 ddata->irq = of_irq_get(np, 0); in wcd934x_slim_probe()
220 if (ddata->irq < 0) in wcd934x_slim_probe()
221 return dev_err_probe(ddata->dev, ddata->irq, in wcd934x_slim_probe()
224 reset_gpio = of_get_named_gpio(np, "reset-gpios", 0); in wcd934x_slim_probe()
226 dev_err(dev, "Failed to get reset gpio: err = %d\n", in wcd934x_slim_probe()
231 ddata->extclk = devm_clk_get(dev, "extclk"); in wcd934x_slim_probe()
232 if (IS_ERR(ddata->extclk)) { in wcd934x_slim_probe()
234 return PTR_ERR(ddata->extclk); in wcd934x_slim_probe()
237 ddata->supplies[0].supply = "vdd-buck"; in wcd934x_slim_probe()
238 ddata->supplies[1].supply = "vdd-buck-sido"; in wcd934x_slim_probe()
239 ddata->supplies[2].supply = "vdd-tx"; in wcd934x_slim_probe()
240 ddata->supplies[3].supply = "vdd-rx"; in wcd934x_slim_probe()
241 ddata->supplies[4].supply = "vdd-io"; in wcd934x_slim_probe()
243 ret = regulator_bulk_get(dev, WCD934X_MAX_SUPPLY, ddata->supplies); in wcd934x_slim_probe()
249 ret = regulator_bulk_enable(WCD934X_MAX_SUPPLY, ddata->supplies); in wcd934x_slim_probe()
266 ddata->dev = dev; in wcd934x_slim_probe()
274 struct wcd934x_ddata *ddata = dev_get_drvdata(&sdev->dev); in wcd934x_slim_remove()
276 regulator_bulk_disable(WCD934X_MAX_SUPPLY, ddata->supplies); in wcd934x_slim_remove()
277 mfd_remove_devices(&sdev->dev); in wcd934x_slim_remove()
288 .name = "wcd934x-slim",