From ee5aa5e375fae188c279c052a35e8b600b75a7ce Mon Sep 17 00:00:00 2001 From: "Martin T. H. Sandsmark" Date: Fri, 2 Dec 2016 11:28:22 +0100 Subject: [PATCH] fix battery checking, only print out status for now --- arch/arm/include/asm/arch-mx6/mx6sl_pins.h | 4 ++- .../reMarkable/zero-gravitas/zero-gravitas.c | 33 +++++++++++++++---- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/arch/arm/include/asm/arch-mx6/mx6sl_pins.h b/arch/arm/include/asm/arch-mx6/mx6sl_pins.h index 9f5769a32e..2e862da6ff 100644 --- a/arch/arm/include/asm/arch-mx6/mx6sl_pins.h +++ b/arch/arm/include/asm/arch-mx6/mx6sl_pins.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2013 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright (C) 2016 reMarkable AS. All Rights Reserved. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -25,7 +26,8 @@ enum { MX6_PAD_SD1_DAT5__GPIO_5_9 = IOMUX_PAD(0x0550, 0x0248, 5, 0x0000, 0, 0), MX6_PAD_SD1_DAT6__USDHC1_DAT6 = IOMUX_PAD(0x0554, 0x024C, 0, 0x0000, 0, 0), MX6_PAD_SD1_DAT7__USDHC1_DAT7 = IOMUX_PAD(0x0558, 0x0250, 0, 0x0000, 0, 0), - MX6_PAD_KEY_ROW7__GPIO_4_7 = IOMUX_PAD(0x04B0, 0x01A8, 5, 0x0000, 0, 0), + MX6_PAD_KEY_ROW4__GPIO_4_1 = IOMUX_PAD(0x04A4, 0x019C, 5, 0x0000, 0, 0), + MX6_PAD_KEY_ROW7__GPIO_4_7 = IOMUX_PAD(0x04B0, 0x01A8, 5, 0x0000, 0, 0), MX6_PAD_SD2_CLK__USDHC2_CLK = IOMUX_PAD(0x055C, 0x0254, 0, 0x0000, 0, 0), MX6_PAD_SD2_CMD__USDHC2_CMD = IOMUX_PAD(0x0560, 0x0258, 0, 0x0000, 0, 0), MX6_PAD_SD2_DAT0__USDHC2_DAT0 = IOMUX_PAD(0x0564, 0x025C, 0, 0x0000, 0, 0), diff --git a/board/reMarkable/zero-gravitas/zero-gravitas.c b/board/reMarkable/zero-gravitas/zero-gravitas.c index a4cfdf33a7..d4932a46f0 100644 --- a/board/reMarkable/zero-gravitas/zero-gravitas.c +++ b/board/reMarkable/zero-gravitas/zero-gravitas.c @@ -102,6 +102,11 @@ int dram_init(void) return 0; } +static iomux_v3_cfg_t const charger_pads[] = { + /* CHRGR_OK */ + MX6_PAD_KEY_ROW4__GPIO_4_1 | MUX_PAD_CTRL(NO_PAD_CTRL), +}; + static iomux_v3_cfg_t const uart1_pads[] = { MX6_PAD_UART1_TXD__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_UART1_RXD__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), @@ -341,35 +346,35 @@ static int check_battery(void) I2C_SET_BUS(I2C_PMIC); - ret = i2c_read(CONFIG_POWER_CHARGER_I2C_ADDR, BQ27441_REG_VOLTAGE, 1, message, sizeof(message)); + ret = i2c_read(BQ27441_I2C_ADDR, BQ27441_REG_VOLTAGE, 1, message, sizeof(message)); if (ret) { printf("Failed to read voltage from fuel gauge\n"); return -1; } voltage = get_unaligned_le16(message); - ret = i2c_read(CONFIG_POWER_CHARGER_I2C_ADDR, BQ27441_REG_CHARGE, 1, message, sizeof(message)); + ret = i2c_read(BQ27441_I2C_ADDR, BQ27441_REG_CHARGE, 1, message, sizeof(message)); if (ret) { printf("Failed to read charge from fuel gauge\n"); return -1; } charge = get_unaligned_le16(message); - ret = i2c_read(CONFIG_POWER_CHARGER_I2C_ADDR, BQ27441_REG_FULL_CHARGE, 1, message, sizeof(message)); + ret = i2c_read(BQ27441_I2C_ADDR, BQ27441_REG_FULL_CHARGE, 1, message, sizeof(message)); if (ret) { printf("Failed to read full charge from fuel gauge\n"); return -1; } full_charge = get_unaligned_le16(message); - ret = i2c_read(CONFIG_POWER_CHARGER_I2C_ADDR, BQ27441_REG_PERCENT, 1, message, sizeof(message)); + ret = i2c_read(BQ27441_I2C_ADDR, BQ27441_REG_PERCENT, 1, message, sizeof(message)); if (ret) { printf("Failed to read percent charge from fuel gauge\n"); return -1; } percent = get_unaligned_le16(message); - ret = i2c_read(CONFIG_POWER_CHARGER_I2C_ADDR, BQ27441_REG_FLAGS, 1, message, sizeof(message)); + ret = i2c_read(BQ27441_I2C_ADDR, BQ27441_REG_FLAGS, 1, message, sizeof(message)); if (ret) { printf("Failed to read full charge from fuel gauge\n"); return -1; @@ -401,10 +406,16 @@ static int check_battery(void) printf("Battery full charge: %d mAh\n", full_charge); printf("Battery charge: %d mAh\n", charge); printf("Battery voltage: %d mV\n", voltage); - printf("Battery charge: %d%% mV\n", percent); + printf("Battery charge: %d%%\n", percent); return 0; } +static int check_charger_status(void) +{ + return gpio_get_value(BQ24133_CHRGR_OK); +} + + int power_init_board(void) { struct pmic *p; @@ -413,10 +424,20 @@ int power_init_board(void) int ret; unsigned char offset, i, switch_num; + /* Set up charger */ + imx_iomux_v3_setup_multiple_pads(charger_pads, ARRAY_SIZE(charger_pads)); + gpio_direction_input(BQ24133_CHRGR_OK); + if (check_charger_status()) { + printf("Charging\n"); + } else { + printf("Not charging\n"); + } + ret = power_pfuze100_init(I2C_PMIC); if (ret) return ret; + /* Setup PF0100 */ p = pmic_get("PFUZE100"); ret = pmic_probe(p); if (ret) {