Re: [U-Boot] [PATCH 08/16] pmic:muic: Support for MUIC built into MAX8997 device
Hi Stefano, On 14/09/2012 17:40, Lukasz Majewski wrote: Support for MUIC (Micro USB Integrated Circuit) built into the MAX8997 power management device. The MUIC device will work with redesigned PMIC framework. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Stefano Babic sba...@denx.de --- Hi Lukasz, drivers/misc/Makefile|1 + drivers/misc/muic_max8997.c | 80 ++ include/power/max8997_muic.h | 61 include/power/power_chrg.h | 1 + 4 files changed, 143 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/muic_max8997.c create mode 100644 include/power/max8997_muic.h I see now with this patch, but we have a mix between drivers/misc and drivers/power. I think this was done because the power directory was introduced later, but really all pmics under drivers/misc should be moved into drivers/power. Maybe belong this one also to drivers/power ? You added several add-ons for MAX8997. Maybe it is clearer if everything goes into a separate directory, such as power/max8997/ diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 271463c..f08a800 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -41,6 +41,7 @@ COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/misc/muic_max8997.c b/drivers/misc/muic_max8997.c new file mode 100644 index 000..d332c09 --- /dev/null +++ b/drivers/misc/muic_max8997.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Lukasz Majewski l.majew...@samsung.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include common.h +#include power/pmic.h +#include power/power_chrg.h +#include power/max8997_muic.h +#include i2c.h + +int power_muic_init(unsigned int bus) You add a different function to initialize it, but this is a version opf pmic_init(). Why cannot we consider this one as all other pmics, avoiding to introduce new and undocumented functions ? If I do not misunderstand, you use the different functions to select the pmic. In other words, calling power_update_battery() in the trats code selects automatically the fulel-gauge, because this code implements this function. But this is against the goal of your patches, that is to add multi instances of the pmics (and maybe a second instance of fuel_gauge..). I think this should be solved moving this function to the general API and calling it via pointer. For example, something like: p = pmic_get(MAX_8997); p-read(...); p = pmic_get(MAX17042_FG); p-power_update_battery(..); What do you think ? I think that struct pmic shall be extended by another field: struct pmic { struct power_ops *p_ops; }; struct bat_ops { int (*check_battery) (struct pmic *p); int (*update_battery) (struct pmic *p); int (*init_battery) (struct pmic *p); [other battery related callbacks] }; Each instance of struct bat_ops is tied with power related device. I will post v2 of the framework very soon. -- Best regards, Lukasz Majewski Samsung Poland RD Center | Linux Platform Group ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 08/16] pmic:muic: Support for MUIC built into MAX8997 device
On 14/09/2012 17:40, Lukasz Majewski wrote: Support for MUIC (Micro USB Integrated Circuit) built into the MAX8997 power management device. The MUIC device will work with redesigned PMIC framework. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Stefano Babic sba...@denx.de --- Hi Lukasz, drivers/misc/Makefile|1 + drivers/misc/muic_max8997.c | 80 ++ include/power/max8997_muic.h | 61 include/power/power_chrg.h |1 + 4 files changed, 143 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/muic_max8997.c create mode 100644 include/power/max8997_muic.h I see now with this patch, but we have a mix between drivers/misc and drivers/power. I think this was done because the power directory was introduced later, but really all pmics under drivers/misc should be moved into drivers/power. Maybe belong this one also to drivers/power ? You added several add-ons for MAX8997. Maybe it is clearer if everything goes into a separate directory, such as power/max8997/ diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 271463c..f08a800 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -41,6 +41,7 @@ COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS:= $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/misc/muic_max8997.c b/drivers/misc/muic_max8997.c new file mode 100644 index 000..d332c09 --- /dev/null +++ b/drivers/misc/muic_max8997.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Lukasz Majewski l.majew...@samsung.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include common.h +#include power/pmic.h +#include power/power_chrg.h +#include power/max8997_muic.h +#include i2c.h + +int power_muic_init(unsigned int bus) You add a different function to initialize it, but this is a version opf pmic_init(). Why cannot we consider this one as all other pmics, avoiding to introduce new and undocumented functions ? If I do not misunderstand, you use the different functions to select the pmic. In other words, calling power_update_battery() in the trats code selects automatically the fulel-gauge, because this code implements this function. But this is against the goal of your patches, that is to add multi instances of the pmics (and maybe a second instance of fuel_gauge..). I think this should be solved moving this function to the general API and calling it via pointer. For example, something like: p = pmic_get(MAX_8997); p-read(...); p = pmic_get(MAX17042_FG); p-power_update_battery(..); What do you think ? Best regards, Stefano Babic -- = DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de = ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 08/16] pmic:muic: Support for MUIC built into MAX8997 device
Hi Stefano, On 14/09/2012 17:40, Lukasz Majewski wrote: Support for MUIC (Micro USB Integrated Circuit) built into the MAX8997 power management device. The MUIC device will work with redesigned PMIC framework. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Stefano Babic sba...@denx.de --- Hi Lukasz, drivers/misc/Makefile|1 + drivers/misc/muic_max8997.c | 80 ++ include/power/max8997_muic.h | 61 include/power/power_chrg.h | 1 + 4 files changed, 143 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/muic_max8997.c create mode 100644 include/power/max8997_muic.h I see now with this patch, but we have a mix between drivers/misc and drivers/power. I think this was done because the power directory was introduced later, but really all pmics under drivers/misc should be moved into drivers/power. Yes, I agree about that. PMIC (or in the future POWER) related code shall be moved to drivers/power/{subdir_per_PMIC_device} Please also keep in mind, that I plan to rename the pmic command/framework to power to better reflect its purpose. Maybe belong this one also to drivers/power ? You added several add-ons for MAX8997. Maybe it is clearer if everything goes into a separate directory, such as power/max8997/ Very good idea. I've already proposed a little cleanup with putting all power related includes to ./include/power/ directory. diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 271463c..f08a800 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -41,6 +41,7 @@ COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/misc/muic_max8997.c b/drivers/misc/muic_max8997.c new file mode 100644 index 000..d332c09 --- /dev/null +++ b/drivers/misc/muic_max8997.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Lukasz Majewski l.majew...@samsung.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include common.h +#include power/pmic.h +#include power/power_chrg.h +#include power/max8997_muic.h +#include i2c.h + +int power_muic_init(unsigned int bus) You add a different function to initialize it, but this is a version opf pmic_init(). Why cannot we consider this one as all other pmics, avoiding to introduce new and undocumented functions ? If I do not misunderstand, you use the different functions to select the pmic. In other words, calling power_update_battery() in the trats code selects automatically the fulel-gauge, because this code implements this function. But this is against the goal of your patches, that is to add multi instances of the pmics (and maybe a second instance of fuel_gauge..). I think this should be solved moving this function to the general API and calling it via pointer. For example, something like: p = pmic_get(MAX_8997); p-read(...); p = pmic_get(MAX17042_FG); p-power_update_battery(..); What do you think ? I will think about that and give you an answer. Best regards, Stefano Babic Regards, Lukasz ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 08/16] pmic:muic: Support for MUIC built into MAX8997 device
Support for MUIC (Micro USB Integrated Circuit) built into the MAX8997 power management device. The MUIC device will work with redesigned PMIC framework. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Stefano Babic sba...@denx.de --- drivers/misc/Makefile|1 + drivers/misc/muic_max8997.c | 80 ++ include/power/max8997_muic.h | 61 include/power/power_chrg.h |1 + 4 files changed, 143 insertions(+), 0 deletions(-) create mode 100644 drivers/misc/muic_max8997.c create mode 100644 include/power/max8997_muic.h diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index 271463c..f08a800 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -41,6 +41,7 @@ COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o COBJS-$(CONFIG_PMIC_MAX8997) += pmic_max8997.o +COBJS-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/misc/muic_max8997.c b/drivers/misc/muic_max8997.c new file mode 100644 index 000..d332c09 --- /dev/null +++ b/drivers/misc/muic_max8997.c @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Lukasz Majewski l.majew...@samsung.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include common.h +#include power/pmic.h +#include power/power_chrg.h +#include power/max8997_muic.h +#include i2c.h + +int power_muic_init(unsigned int bus) +{ + struct pmic *p = pmic_alloc(); + static const char name[] = MAX8997_MUIC; + + puts(Board Micro USB Interface Controller init\n); + + p-name = name; + p-interface = PMIC_I2C; + p-number_of_regs = MUIC_NUM_OF_REGS; + p-hw.i2c.addr = MAX8997_MUIC_I2C_ADDR; + p-hw.i2c.tx_num = 1; + p-bus = bus; + + return 0; +} + +int power_chrg_get_type(void) +{ + unsigned int val; + unsigned char charge_type, charger; + struct pmic *p = pmic_get(MAX8997_MUIC); + + if (pmic_probe(p)) + return CHARGER_NO; + + pmic_reg_read(p, MAX8997_MUIC_STATUS2, val); + charge_type = val MAX8997_MUIC_CHG_MASK; + + switch (charge_type) { + case MAX8997_MUIC_CHG_NO: + charger = CHARGER_NO; + break; + case MAX8997_MUIC_CHG_USB: + case MAX8997_MUIC_CHG_USB_D: + charger = CHARGER_USB; + break; + case MAX8997_MUIC_CHG_TA: + case MAX8997_MUIC_CHG_TA_1A: + charger = CHARGER_TA; + break; + case MAX8997_MUIC_CHG_TA_500: + charger = CHARGER_TA_500; + break; + default: + charger = CHARGER_UNKNOWN; + break; + } + + return charger; +} diff --git a/include/power/max8997_muic.h b/include/power/max8997_muic.h new file mode 100644 index 000..0149c12 --- /dev/null +++ b/include/power/max8997_muic.h @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Lukasz Majewski l.majew...@samsung.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __MAX8997_MUIC_H_ +#define __MAX8997_MUIC_H_ + +#include power/power_chrg.h + +/* MAX8997_MUIC_STATUS2 */ +#define MAX8997_MUIC_CHG_NO0x00 +#define MAX8997_MUIC_CHG_USB 0x01 +#define