mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
PATCH v2 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 | 11 ++++++++ drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)
Documentation/devicetree/bindings/mfd/arizona.txt +11 -0
@@ -85,6 +85,17 @@ 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, specify zero for AIFs that should be handled + normally. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + - 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 +31 -0
@@ -816,6 +816,37 @@ 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++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = 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
Requires a DT Ack.
Quoted 73 lines · Richard Fitzgerald
This patch adds DT settings for the
max_channels_clocked,spk_fmtandspk_mutepdata.Signed-off-by Richard Fitzgerald <[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 11 ++++++++ drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)Documentation/devicetree/bindings/mfd/arizona.txt +11
-0@@ -85,6 +85,17 @@ 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, specify zero for AIFs that should be handled + normally. + + - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + + - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6). + See the datasheet for values. + - 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 +31
-0@@ -816,6 +816,37 @@ 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++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = val; + count++; + } +return 0 ; }
Signature · 4 lines
Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Rob Herring
maintainerQuoted 6 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 | 11 ++++++++
Binding looks fine, but...
Quoted 11 lines
drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)drivers/mfd/arizona-core.c +0
-0@@ -816,6 +816,37 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) count++; }
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 828
Quoted 10 lines
drivers/mfd/arizona-core.c +10
-0+ 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++; + }
of_property_read_u32_array doesn't work for you?
Quoted 31 lines
drivers/mfd/arizona-core.c +21
-0+ + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = 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
--
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 21 lines · Rob Herring
Quoted 6 lines · Richard Fitzgerald
This patch adds DT settings for the
max_channels_clocked,spk_fmtandspk_mutepdata.Signed-off-by Richard Fitzgerald <[email protected]>--- Documentation/devicetree/bindings/mfd/arizona.txt | 11 ++++++++Binding looks fine, but...
Quoted 11 lines
drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)drivers/mfd/arizona-core.c +0
-0@@ -816,6 +816,37 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) count++; }
Quoted 12 lines
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 828
Quoted 10 lines
drivers/mfd/arizona-core.c +10
-0+ 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++; + }
of_property_read_u32_arraydoesn't work for you?
No, it doesn't, because it doesn't read a variable-sized array.
Quoted 32 lines
Quoted 32 lines
drivers/mfd/arizona-core.c +21
-0+ + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = 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 35 lines · Richard Fitzgerald
Quoted 21 lines · Rob Herring
Quoted 6 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 | 11 ++++++++Binding looks fine, but...
Quoted 11 lines
drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)drivers/mfd/arizona-core.c +0
-0@@ -816,6 +816,37 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) count++; }Quoted 12 lines
drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 828
Quoted 10 lines
drivers/mfd/arizona-core.c +10
-0+ 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++; + }
of_property_read_u32_arraydoesn't work for you?
Quoted 1 line
No, it doesn't, because it doesn't read a variable-sized array.
But the next 2 loops are fixed with 2 elements, right? They should be converted. If not fixed size, you have the same pattern repeated 3 times.
Maybe we should fix of_property_read_u32_array to be more flexible and return an array less than a max size. Not sure if anyone relies on that case failing though, so leaving the 1st loop is fine.
Rob
Quoted 23 lines
Quoted 23 lines
Quoted 23 lines
drivers/mfd/arizona-core.c +20
-0+ count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = val; + count++; + } +return 0 ; }
Quoted 9 lines
Quoted 7 lines
Quoted 7 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
--
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 37 lines · Rob Herring
Quoted 35 lines · Richard Fitzgerald
Quoted 33 lines · Rob Herring
Quoted 6 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 | 11 ++++++++Binding looks fine, but...
Quoted 11 lines
drivers/mfd/arizona-core.c | 31 +++++++++++++++++++++++ 2 files changed, 42 insertions(+)drivers/mfd/arizona-core.c +0
-0@@ -816,6 +816,37 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) count++; }drivers/mfd/arizona-core.c static int arizona_of_get_core_pdata(struct arizona *arizona) · line 828
Quoted 10 lines
drivers/mfd/arizona-core.c +10
-0+ 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++; + }
of_property_read_u32_arraydoesn't work for you?
Quoted 3 lines
Quoted 1 line
No, it doesn't, because it doesn't read a variable-sized array.
But the next 2 loops are fixed with 2 elements, right? They should be
Ok, that's true the code is flexible size (because the number of AIFs and the number of outputs varies between codecs, and the number actually in use also varies) but the binding documentation I pulled in hasn't been updated to match the code.
Quoted 2 lines
converted. If not fixed size, you have the same pattern repeated 3 times.
We originally had duplicated DT code in our driver factored out into functions but this was rejected by mfd maintainer in favour of only using the standard functions and duplicating code if necessary. I didn't upstream that original patch so I don't know now what the justification was.
Quoted 39 lines
Maybe we should fix
of_property_read_u32_arrayto be more flexible and return an array less than a max size. Not sure if anyone relies on that case failing though, so leaving the 1st loop is fine.Rob
Quoted 32 lines
Quoted 30 lines
Quoted 30 lines
drivers/mfd/arizona-core.c +20
-1+ count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-fmt" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_fmt)) +break ; + + pdata->spk_fmt[count] = val; + count++; + } + + count =0 ; +of_property_for_each_u32 (arizona->dev->of_node,"wlf,spk-mute" , prop, + cur, val) { +if (count ==ARRAY_SIZE (pdata->spk_mute)) +break ; + + pdata->spk_mute[count] = val; + count++; + } +return 0 ; } --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
--
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