[alsa-devel] [PATCH 1/2] mfd: arizona: Add support for INn_MODE register control
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; }
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
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
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