From e701eb06b6de93f5bce6819ca578a276f5249383 Mon Sep 17 00:00:00 2001 From: Zhang Jiejing Date: Mon, 13 Feb 2012 14:34:12 +0800 Subject: [PATCH] ENGR00174121-2 MX6Q_SABRESD: add battery chip support. 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 --- arch/arm/mach-mx6/board-mx6q_sabresd.c | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c index 0a28ff82a6d9..349e47ca0dce 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabresd.c +++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -98,6 +99,13 @@ #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; -- 2.39.5