diff options
Diffstat (limited to 'arch/arm/mach-mx6/board-mx6q_sabresd.c')
-rw-r--r-- | arch/arm/mach-mx6/board-mx6q_sabresd.c | 38 |
1 files changed, 38 insertions, 0 deletions
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 <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> @@ -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; |