mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
PATCH v3 1/1 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.
--- Documentation/devicetree/bindings/mfd/arizona.txt | 18 ++++++++++++++ drivers/mfd/arizona-core.c | 30 +++++++++++++++++++++++ 2 files changed, 48 insertions(+)
Documentation/devicetree/bindings/mfd/arizona.txt +18 -0
@@ -85,6 +85,24 @@ Optional properties: present, the number of values should be less than or equal to the number of inputs, unspecified inputs will use the chip default. + - wlf,max-channels-clocked : The maximum number of channels to be clocked on + each AIF, useful for I2S systems with multiple data lines being mastered. + Specify one cell for each AIF to be configured, specify zero for AIFs that + should be handled normally. + If present, number of cells must be less than or equal to the number of + AIFs. If less than the number of AIFs, for cells that have not been + specified the corresponding AIFs will be treated as default setting. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if they are being externally supplied. As covered in Documentation/devicetree/bindings/regulator/regulator.txt
drivers/mfd/arizona-core.c +30 -0
@@ -813,6 +813,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 ;
@@ -869,6 +870,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_fmt); ++count) + pdata->spk_mute[count] = pdm_val[count]; +return 0 ; }
Signature · 6 lines
1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Rob Herring
maintainerQuoted 59 lines · Richard Fitzgerald
This patch adds DT settings for the
max_channels_clocked,spk_fmtandspk_mutepdata.Signed-off-by Richard Fitzgerald <rf-yzvPICuk2AATkU/[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 18 ++++++++++++++ drivers/mfd/arizona-core.c | 30 +++++++++++++++++++++++ 2 files changed, 48 insertions(+)Documentation/devicetree/bindings/mfd/arizona.txt +18
-0@@ -85,6 +85,24 @@ Optional properties: present, the number of values should be less than or equal to the number of inputs, unspecified inputs will use the chip default. + - wlf,max-channels-clocked : The maximum number of channels to be clocked on + each AIF, useful for I2S systems with multiple data lines being mastered. + Specify one cell for each AIF to be configured, specify zero for AIFs that + should be handled normally. + If present, number of cells must be less than or equal to the number of + AIFs. If less than the number of AIFs, for cells that have not been + specified the corresponding AIFs will be treated as default setting. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if they are being externally supplied. As covered in Documentation/devicetree/bindings/regulator/regulator.txtdrivers/mfd/arizona-core.c +6
-0@@ -813,6 +813,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 ;@@ -869,6 +870,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))
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 887
Quoted 10 lines
drivers/mfd/arizona-core.c +10
-0+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));
Why are you using this intermediate buffer?
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 899
Quoted 12 lines
drivers/mfd/arizona-core.c +12
-0+ +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_fmt); ++count)
s/spk_fmt/spk_mute/
Quoted 8 lines
drivers/mfd/arizona-core.c +2
-0+ pdata->spk_mute[count] = pdm_val[count]; +return 0 ; }Signature · 1 line
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 64 lines · Rob Herring
Quoted 63 lines · Richard Fitzgerald
This patch adds DT settings for the
max_channels_clocked,spk_fmtandspk_mutepdata.Signed-off-by Richard Fitzgerald <rf-yzvPICuk2AATkU/[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 18 ++++++++++++++ drivers/mfd/arizona-core.c | 30 +++++++++++++++++++++++ 2 files changed, 48 insertions(+)Documentation/devicetree/bindings/mfd/arizona.txt +18
-0@@ -85,6 +85,24 @@ Optional properties: present, the number of values should be less than or equal to the number of inputs, unspecified inputs will use the chip default. + - wlf,max-channels-clocked : The maximum number of channels to be clocked on + each AIF, useful for I2S systems with multiple data lines being mastered. + Specify one cell for each AIF to be configured, specify zero for AIFs that + should be handled normally. + If present, number of cells must be less than or equal to the number of + AIFs. If less than the number of AIFs, for cells that have not been + specified the corresponding AIFs will be treated as default setting. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997, + wm8998, wm1814) + - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if they are being externally supplied. As covered in Documentation/devicetree/bindings/regulator/regulator.txtdrivers/mfd/arizona-core.c +10
-0@@ -813,6 +813,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 ;@@ -869,6 +870,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++;
Quoted 9 lines
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 887
Quoted 6 lines
drivers/mfd/arizona-core.c +6
-0+ } + + ret =of_property_read_u32_array (arizona->dev->of_node, +"wlf,spk-fmt" , + pdm_val, +ARRAY_SIZE (pdm_val));Why are you using this intermediate buffer?
Because targets are not u32
Quoted 6 lines
Quoted 6 lines
drivers/mfd/arizona-core.c +6
-0+ +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,
Quoted 9 lines
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 899
Quoted 6 lines
drivers/mfd/arizona-core.c +6
-0+"wlf,spk-mute" , + pdm_val, + ARRAY_SIZE(pdm_val)); + +if (ret >=0 ) +for (count =0 ; count <ARRAY_SIZE (pdata->spk_fmt); ++count)s/spk_fmt/spk_mute/
Damn!, I read and re-read and re-re-read that code so many times to make sure I had the right names
Quoted 8 lines
Quoted 8 lines
drivers/mfd/arizona-core.c +2
-0+ pdata->spk_mute[count] = pdm_val[count]; +return 0 ; }Signature · 1 line
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html