1
0
Fork 0

fix battery checking, only print out status for now

utp
Martin T. H. Sandsmark 2016-12-02 11:28:22 +01:00
parent cd0e6f0b2f
commit ee5aa5e375
2 changed files with 30 additions and 7 deletions

View File

@ -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),

View File

@ -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) {