Patchwork [U-Boot,3/3] PMIC: MAX77686: Add FDT Support

login
register
mail settings
Submitter Rajeshwari Birje
Date Dec. 3, 2012, 12:12 p.m.
Message ID <1354536740-28485-4-git-send-email-rajeshwari.s@samsung.com>
Download mbox | patch
Permalink /patch/203328/
State Changes Requested
Delegated to: Minkyu Kang
Headers show

Comments

Rajeshwari Birje - Dec. 3, 2012, 12:12 p.m.
This patch adds fdt support to MAX77686.

Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
---
 drivers/misc/pmic_max77686.c |   34 +++++++++++++++++++++++++++++-----
 1 files changed, 29 insertions(+), 5 deletions(-)
Simon Glass - Dec. 4, 2012, 1:20 a.m.
Hi Rajeshwari,

On Mon, Dec 3, 2012 at 4:12 AM, Rajeshwari Shinde
<rajeshwari.s@samsung.com> wrote:
> This patch adds fdt support to MAX77686.
>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
> ---
>  drivers/misc/pmic_max77686.c |   34 +++++++++++++++++++++++++++++-----
>  1 files changed, 29 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/misc/pmic_max77686.c b/drivers/misc/pmic_max77686.c
> index 36f7f4d..113d038 100644
> --- a/drivers/misc/pmic_max77686.c
> +++ b/drivers/misc/pmic_max77686.c
> @@ -22,21 +22,45 @@
>   */
>
>  #include <common.h>
> +#include <fdtdec.h>
> +#include <i2c.h>
>  #include <pmic.h>
>  #include <max77686_pmic.h>
>
> +DECLARE_GLOBAL_DATA_PTR;
> +
>  int pmic_init(void)
>  {
>         struct pmic *p = get_pmic();
>         static const char name[] = "MAX77686_PMIC";
>
> -       puts("Board PMIC init\n");
> +       #ifdef CONFIG_OF_CONTROL

Should outdent this I think.

> +       const void *blob = gd->fdt_blob;
> +       int node, parent;
> +
> +       node = fdtdec_next_compatible(blob, 0, COMPAT_MAXIM_MAX77686_PMIC);
> +        if (node <= 0) {

< 0 is enough I think, although it isn't very important.

> +                debug("EXYNOS_SOUND: No node for codec in device tree\n");
> +                debug("node = %d\n", node);
> +                return -1;
> +        }
> +       parent = fdt_parent_offset(blob, node);
> +        if (parent < 0) {
> +                debug("%s: Cannot find node parent\n", __func__);
> +                return -1;
> +        }
> +       p->bus = i2c_get_bus_num_fdt(parent);
> +       p->hw.i2c.addr = fdtdec_get_int(blob, node,
> +                               "reg", 0);

Could join on to previous line

> +       #else

outdent, and #endif below

> +       p->bus = I2C_PMIC;
> +       p->hw.i2c.addr = MAX77686_I2C_ADDR;
> +       #endif
> +
>         p->name = name;
> +       p->hw.i2c.tx_num = 1;
>         p->interface = PMIC_I2C;
>         p->number_of_regs = PMIC_NUM_OF_REGS;
> -       p->hw.i2c.addr = MAX77686_I2C_ADDR;
> -       p->hw.i2c.tx_num = 1;
> -       p->bus = I2C_PMIC;
> -
> +       puts("Board PMIC init MAX77686\n");
>         return 0;
>  }
> --
> 1.7.4.4
>

I suggest if you don't already that you use patman to create patches.

Regards,
Simon

Patch

diff --git a/drivers/misc/pmic_max77686.c b/drivers/misc/pmic_max77686.c
index 36f7f4d..113d038 100644
--- a/drivers/misc/pmic_max77686.c
+++ b/drivers/misc/pmic_max77686.c
@@ -22,21 +22,45 @@ 
  */
 
 #include <common.h>
+#include <fdtdec.h>
+#include <i2c.h>
 #include <pmic.h>
 #include <max77686_pmic.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 int pmic_init(void)
 {
 	struct pmic *p = get_pmic();
 	static const char name[] = "MAX77686_PMIC";
 
-	puts("Board PMIC init\n");
+	#ifdef CONFIG_OF_CONTROL
+	const void *blob = gd->fdt_blob;
+	int node, parent;
+
+	node = fdtdec_next_compatible(blob, 0, COMPAT_MAXIM_MAX77686_PMIC);
+	 if (node <= 0) {
+                debug("EXYNOS_SOUND: No node for codec in device tree\n");
+                debug("node = %d\n", node);
+                return -1;
+        }
+	parent = fdt_parent_offset(blob, node);
+        if (parent < 0) {
+                debug("%s: Cannot find node parent\n", __func__);
+                return -1;
+        }
+	p->bus = i2c_get_bus_num_fdt(parent);
+	p->hw.i2c.addr = fdtdec_get_int(blob, node,
+				"reg", 0);
+	#else
+	p->bus = I2C_PMIC;
+	p->hw.i2c.addr = MAX77686_I2C_ADDR;
+	#endif
+
 	p->name = name;
+	p->hw.i2c.tx_num = 1;
 	p->interface = PMIC_I2C;
 	p->number_of_regs = PMIC_NUM_OF_REGS;
-	p->hw.i2c.addr = MAX77686_I2C_ADDR;
-	p->hw.i2c.tx_num = 1;
-	p->bus = I2C_PMIC;
-
+	puts("Board PMIC init MAX77686\n");
 	return 0;
 }