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

2012-12-03 Thread Rajeshwari Shinde
This patch adds fdt support to MAX77686.

Signed-off-by: Rajeshwari Shinde rajeshwar...@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
+   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;
 }
-- 
1.7.4.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 3/3] PMIC: MAX77686: Add FDT Support

2012-12-03 Thread Simon Glass
Hi Rajeshwari,

On Mon, Dec 3, 2012 at 4:12 AM, Rajeshwari Shinde
rajeshwar...@samsung.com wrote:
 This patch adds fdt support to MAX77686.

 Signed-off-by: Rajeshwari Shinde rajeshwar...@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
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot