[alsa-devel] [PATCH 1/2] mfd: arizona: Add support for INn_MODE register control
![](https://secure.gravatar.com/avatar/37febaaf0a9c3357af28a01dea21933e.jpg?s=120&d=mm&r=g)
Some boards need to set the INn_MODE[1:0] register to change the input signal patch. This wlf,inmode property is optional. If present values must be specified by the number of ARIZONA_MAX_INPUT.
Example: - wlf,inmode = <2 0 2 0>; /* IN1, IN3 use DMIC */
Signed-off-by: Inha Song ideal.song@samsung.com --- drivers/mfd/arizona-core.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 10a0cb9..4b2eb73 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -560,6 +560,10 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); }
+ of_property_read_u32_array(arizona->dev->of_node, + "wlf,inmode", + arizona->pdata.inmode, + ARRAY_SIZE(arizona->pdata.inmode)); return 0; }
![](https://secure.gravatar.com/avatar/f60a7edd8e11b88b69978210ae97fd05.jpg?s=120&d=mm&r=g)
On Sat, Aug 09, 2014 at 05:31:38PM +0900, Inha Song wrote:
Some boards need to set the INn_MODE[1:0] register to change the input signal patch. This wlf,inmode property is optional. If present values must be specified by the number of ARIZONA_MAX_INPUT.
Example:
- wlf,inmode = <2 0 2 0>; /* IN1, IN3 use DMIC */
Signed-off-by: Inha Song ideal.song@samsung.com
drivers/mfd/arizona-core.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 10a0cb9..4b2eb73 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -560,6 +560,10 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); }
- of_property_read_u32_array(arizona->dev->of_node,
"wlf,inmode",
arizona->pdata.inmode,
ARRAY_SIZE(arizona->pdata.inmode));
Might be better to allow the device tree to be shorter than the array in pdata, should this get expanded on future devices.
Thanks, Charles
![](https://secure.gravatar.com/avatar/37febaaf0a9c3357af28a01dea21933e.jpg?s=120&d=mm&r=g)
Hi, Charles.
Thanks for your review.
On Tue, 12 Aug 2014 09:28:11 +0100 Charles Keepax ckeepax@opensource.wolfsonmicro.com wrote:
On Sat, Aug 09, 2014 at 05:31:38PM +0900, Inha Song wrote:
Some boards need to set the INn_MODE[1:0] register to change the input signal patch. This wlf,inmode property is optional. If present values must be specified by the number of ARIZONA_MAX_INPUT.
Example:
- wlf,inmode = <2 0 2 0>; /* IN1, IN3 use DMIC */
Signed-off-by: Inha Song ideal.song@samsung.com
drivers/mfd/arizona-core.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 10a0cb9..4b2eb73 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -560,6 +560,10 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); }
- of_property_read_u32_array(arizona->dev->of_node,
"wlf,inmode",
arizona->pdata.inmode,
ARRAY_SIZE(arizona->pdata.inmode));
Might be better to allow the device tree to be shorter than the array in pdata, should this get expanded on future devices.
OK, I will fix in v2 to use "of_property_count_u32_elems" and "of_property_read_u32_index".
Best regards, Inha Song.
Thanks, Charles
![](https://secure.gravatar.com/avatar/37febaaf0a9c3357af28a01dea21933e.jpg?s=120&d=mm&r=g)
Some boards need to set the INn_MODE[1:0] register to change the input signal patch. This wlf,inmode property is optional. If present values must be specified by the number of ARIZONA_MAX_INPUT.
Example: - wlf,inmode = <2 0 2 0>; /* IN1, IN3 use DMIC */
Signed-off-by: Inha Song ideal.song@samsung.com --- drivers/mfd/arizona-core.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 10a0cb9..2b68ccd 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -534,7 +534,7 @@ EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio); static int arizona_of_get_core_pdata(struct arizona *arizona) { struct arizona_pdata *pdata = &arizona->pdata; - int ret, i; + int ret, i, proplen;
pdata->reset = arizona_of_get_named_gpio(arizona, "wlf,reset", true);
@@ -560,6 +560,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) ret); }
+ proplen = of_property_count_u32_elems(arizona->dev->of_node, + "wlf,inmode"); + if (proplen > 0 && proplen <= ARRAY_SIZE(arizona->pdata.inmode)) { + for (i = 0; i < proplen; i++) + of_property_read_u32_index(arizona->dev->of_node, + "wlf,inmode", i, + &arizona->pdata.inmode[i]); + } + return 0; }
participants (2)
-
Charles Keepax
-
Inha Song