aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sound/soc/codecs/uda134x.c
diff options
context:
space:
mode:
authorSylwester Nawrocki <s.nawrocki@samsung.com>2016-08-04 15:38:43 +0200
committerMark Brown <broonie@kernel.org>2016-08-08 11:55:20 +0100
commit15a1bf0a7d3d7e6b351cac472ca4b6bc3746eb2e (patch)
tree5c9cae9cae3cb1d8ea23387896803d5a2e81385f /sound/soc/codecs/uda134x.c
parentARM: S3C24XX: Specify audio codec platform_data for mini2440 board (diff)
downloadwireguard-linux-15a1bf0a7d3d7e6b351cac472ca4b6bc3746eb2e.tar.xz
wireguard-linux-15a1bf0a7d3d7e6b351cac472ca4b6bc3746eb2e.zip
ASoC: uda134x: Optionally initialize L3 ops to default GPIO ops
The GPIO ops can be selected by platform_data which allows the codec platform device to probe without the sound card's driver intervention. The downside is that it will request GPIOs on behalf of the codec device and thus allow only one user on the bus, but it desn't seem to be a limitation with current code and usage of the GPIO ops is optional anyway. The proper approach would presumably be to create a proper Linux bus driver for L3, should this rather ancient bus specification suddenly gain more interest. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/uda134x.c')
-rw-r--r--sound/soc/codecs/uda134x.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
index e4c694c758b8..b72c92557871 100644
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -544,6 +544,7 @@ static int uda134x_codec_probe(struct platform_device *pdev)
{
struct uda134x_platform_data *pd = pdev->dev.platform_data;
struct uda134x_priv *uda134x;
+ int ret;
if (!pd) {
dev_err(&pdev->dev, "Missing L3 bitbang function\n");
@@ -557,6 +558,12 @@ static int uda134x_codec_probe(struct platform_device *pdev)
uda134x->pd = pd;
platform_set_drvdata(pdev, uda134x);
+ if (pd->l3.use_gpios) {
+ ret = l3_set_gpio_ops(&pdev->dev, &uda134x->pd->l3);
+ if (ret < 0)
+ return ret;
+ }
+
uda134x->regmap = devm_regmap_init(&pdev->dev, NULL, pd,
&uda134x_regmap_config);
if (IS_ERR(uda134x->regmap))