diff options
author | Richard Fitzgerald <rf@opensource.wolfsonmicro.com> | 2016-09-13 10:05:44 +0100 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2016-10-04 15:48:05 +0100 |
commit | f4c052622567f9ff4f226f0f33d792c5ed01ec7f (patch) | |
tree | 56ca9048b29257248ca34d9eb8eeaa968c6c79b1 /drivers/mfd | |
parent | 0133d323463ec20131f7fd5a70051bd89db4f7a1 (diff) | |
download | linux-f4c052622567f9ff4f226f0f33d792c5ed01ec7f.tar.gz linux-f4c052622567f9ff4f226f0f33d792c5ed01ec7f.tar.bz2 linux-f4c052622567f9ff4f226f0f33d792c5ed01ec7f.zip |
mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
This patch adds DT settings for the max_channels_clocked, spk_fmt and
spk_mute pdata.
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/arizona-core.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 4c18c8ef05d9..672924d5ec9d 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -828,6 +828,7 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) struct property *prop; const __be32 *cur; u32 val; + u32 pdm_val[ARIZONA_MAX_PDM_SPK]; int ret, i; int count = 0; @@ -884,6 +885,35 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) count++; } + count = 0; + of_property_for_each_u32(arizona->dev->of_node, + "wlf,max-channels-clocked", + prop, cur, val) { + if (count == ARRAY_SIZE(pdata->max_channels_clocked)) + break; + + pdata->max_channels_clocked[count] = val; + count++; + } + + ret = of_property_read_u32_array(arizona->dev->of_node, + "wlf,spk-fmt", + pdm_val, + ARRAY_SIZE(pdm_val)); + + if (ret >= 0) + for (count = 0; count < ARRAY_SIZE(pdata->spk_fmt); ++count) + pdata->spk_fmt[count] = pdm_val[count]; + + ret = of_property_read_u32_array(arizona->dev->of_node, + "wlf,spk-mute", + pdm_val, + ARRAY_SIZE(pdm_val)); + + if (ret >= 0) + for (count = 0; count < ARRAY_SIZE(pdata->spk_mute); ++count) + pdata->spk_mute[count] = pdm_val[count]; + return 0; } |