mfd: arizona: Add support for INn_Mode register control
authorInha Song <ideal.song@samsung.com>
Sat, 30 Aug 2014 02:27:18 +0000 (11:27 +0900)
committerLee Jones <lee.jones@linaro.org>
Fri, 26 Sep 2014 07:15:52 +0000 (08:15 +0100)
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 less than or equal to
the number of input singals. If values less than the number
of input signals, elements that has not been specifed are set
to 0 by default.

Example:
   - wlf,inmode = <2 0 2>; /* IN1, IN3 use DMIC */

Signed-off-by: Inha Song <ideal.song@samsung.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/arizona-core.c

index 7eabc36b97c15357c911590ce4c8e58e778d8fae..4afb232b5cdef6c2462ec2b65db6359a8626f2e1 100644 (file)
@@ -534,7 +534,11 @@ EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio);
 static int arizona_of_get_core_pdata(struct arizona *arizona)
 {
        struct arizona_pdata *pdata = &arizona->pdata;
+       struct property *prop;
+       const __be32 *cur;
+       u32 val;
        int ret, i;
+       int count = 0;
 
        pdata->reset = arizona_of_get_named_gpio(arizona, "wlf,reset", true);
 
@@ -560,6 +564,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
                        ret);
        }
 
+       of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop,
+                                cur, val) {
+               if (count == ARRAY_SIZE(arizona->pdata.inmode))
+                       break;
+
+               arizona->pdata.inmode[count] = val;
+               count++;
+       }
+
        return 0;
 }
 
This page took 0.026026 seconds and 5 git commands to generate.