]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00174121-2 MX6Q_SABRESD: add battery chip support.
authorZhang Jiejing <jiejing.zhang@freescale.com>
Mon, 13 Feb 2012 06:34:12 +0000 (14:34 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:34:00 +0000 (08:34 +0200)
add battery support.

support Charger plug in and detect, DC and USB.
support charging status query.

not support voltage reading due to HW design,
to support this will have more efforts so add this later if needed.

Signed-off-by: Zhang Jiejing <jiejing.zhang@freescale.com>
arch/arm/mach-mx6/board-mx6q_sabresd.c

index 0a28ff82a6d934bd2acc05b36c6265212961b9da..349e47ca0dce685007ce2970e19460628a5eeb7e 100644 (file)
@@ -46,6 +46,7 @@
 #include <linux/memblock.h>
 #include <linux/gpio.h>
 #include <linux/etherdevice.h>
+#include <linux/power/max8903_charger.h>
 #include <linux/regulator/anatop-regulator.h>
 #include <linux/regulator/consumer.h>
 #include <linux/regulator/machine.h>
 #define MX6Q_SABRESD_eCOMPASS_INT      IMX_GPIO_NR(3, 16)
 #define MX6Q_SABRESD_ALS_INT           IMX_GPIO_NR(3, 9)
 
+#define MX6Q_SABRESD_CHARGE_FLT_1_B    IMX_GPIO_NR(5, 2)
+#define MX6Q_SABRESD_CHARGE_CHG_1_B    IMX_GPIO_NR(3, 23)
+#define MX6Q_SABRESD_CHARGE_FLT_2_B    IMX_GPIO_NR(3, 14)
+#define MX6Q_SABRESD_CHARGE_CHG_2_B    IMX_GPIO_NR(3, 13)
+#define MX6Q_SABRESD_CHARGE_UOK_B      IMX_GPIO_NR(1, 27)
+#define MX6Q_SABRESD_CHARGE_DOK_B      IMX_GPIO_NR(2, 24)
+
 void __init early_console_setup(unsigned long base, struct clk *clk);
 static struct clk *sata_clk;
 static int mma8451_position = 3;
@@ -312,6 +320,15 @@ static iomux_v3_cfg_t mx6q_sabresd_pads[] = {
        MX6Q_PAD_SD4_DAT5__USDHC4_DAT5_50MHZ,
        MX6Q_PAD_SD4_DAT6__USDHC4_DAT6_50MHZ,
        MX6Q_PAD_SD4_DAT7__USDHC4_DAT7_50MHZ,
+
+       /* Charge */
+       MX6Q_PAD_EIM_A25__GPIO_5_2,  /* FLT_1_B */
+       MX6Q_PAD_EIM_D23__GPIO_3_23, /* CHG_1_B */
+       MX6Q_PAD_EIM_DA13__GPIO_3_13, /* CHG_2_B  */
+       MX6Q_PAD_EIM_DA14__GPIO_3_14, /* FLT_2_B */
+
+       MX6Q_PAD_ENET_RXD0__GPIO_1_27, /* UOK_B */
+       MX6Q_PAD_EIM_CS1__GPIO_2_24,   /* DOK_B */
 };
 
 static iomux_v3_cfg_t mx6q_sabresd_csi0_sensor_pads[] = {
@@ -832,6 +849,24 @@ static struct fsl_mxc_ldb_platform_data ldb_data = {
        .sec_disp_id = 1,
 };
 
+static struct max8903_pdata charger1_data = {
+       .dok = MX6Q_SABRESD_CHARGE_DOK_B,
+       .uok = MX6Q_SABRESD_CHARGE_UOK_B,
+       .chg = MX6Q_SABRESD_CHARGE_CHG_1_B,
+       .flt = MX6Q_SABRESD_CHARGE_FLT_1_B,
+       .dcm_always_high = true,
+       .dc_valid = true,
+       .usb_valid = true,
+};
+
+static struct platform_device sabresd_max8903_charger_1 = {
+       .name   = "max8903-charger",
+       .id     = 1,
+       .dev    = {
+               .platform_data = &charger1_data,
+       },
+};
+
 static struct imx_ipuv3_platform_data ipu_data[] = {
        {
        .rev = 4,
@@ -1192,6 +1227,9 @@ static void __init mx6_sabresd_board_init(void)
        gpio_request(MX6Q_SABRESD_AUX_5V_EN, "aux_5v_en");
        gpio_direction_output(MX6Q_SABRESD_AUX_5V_EN, 1);
        gpio_set_value(MX6Q_SABRESD_AUX_5V_EN, 1);
+
+       /* Register charger chips */
+       platform_device_register(&sabresd_max8903_charger_1);
 }
 
 extern void __iomem *twd_base;