diff options
author | Sebastian Reichel <sebastian.reichel@collabora.co.uk> | 2018-03-12 09:35:10 -0400 |
---|---|---|
committer | Sebastian Reichel <sebastian.reichel@collabora.co.uk> | 2018-03-12 09:35:10 -0400 |
commit | 75dd56c0cd68847809e6e75d6fcc234e6e6711d5 (patch) | |
tree | c1c3b11bff4bf0b11e9c8d7720a02513d996e2cd | |
parent | fc5a7f0339d0641c0df14a9ed8af49c9992f9bef (diff) | |
parent | f72c14ad8c6631a0a42115e74164f9b5faf4c724 (diff) |
Merge branch 'fixes' into for-next
Merge for-stable fixes branch into for-next development branch.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-rw-r--r-- | drivers/power/reset/gemini-poweroff.c | 30 | ||||
-rw-r--r-- | drivers/power/supply/bq27xxx_battery.c | 2 | ||||
-rw-r--r-- | drivers/power/supply/ltc2941-battery-gauge.c | 8 | ||||
-rw-r--r-- | drivers/power/supply/max17042_battery.c | 1 |
4 files changed, 23 insertions, 18 deletions
diff --git a/drivers/power/reset/gemini-poweroff.c b/drivers/power/reset/gemini-poweroff.c index ff75af5abbc5..2ac291af1265 100644 --- a/drivers/power/reset/gemini-poweroff.c +++ b/drivers/power/reset/gemini-poweroff.c | |||
@@ -47,8 +47,12 @@ static irqreturn_t gemini_powerbutton_interrupt(int irq, void *data) | |||
47 | val &= 0x70U; | 47 | val &= 0x70U; |
48 | switch (val) { | 48 | switch (val) { |
49 | case GEMINI_STAT_CIR: | 49 | case GEMINI_STAT_CIR: |
50 | dev_info(gpw->dev, "infrared poweroff\n"); | 50 | /* |
51 | orderly_poweroff(true); | 51 | * We do not yet have a driver for the infrared |
52 | * controller so it can cause spurious poweroff | ||
53 | * events. Ignore those for now. | ||
54 | */ | ||
55 | dev_info(gpw->dev, "infrared poweroff - ignored\n"); | ||
52 | break; | 56 | break; |
53 | case GEMINI_STAT_RTC: | 57 | case GEMINI_STAT_RTC: |
54 | dev_info(gpw->dev, "RTC poweroff\n"); | 58 | dev_info(gpw->dev, "RTC poweroff\n"); |
@@ -116,7 +120,17 @@ static int gemini_poweroff_probe(struct platform_device *pdev) | |||
116 | return -ENODEV; | 120 | return -ENODEV; |
117 | } | 121 | } |
118 | 122 | ||
119 | /* Clear the power management IRQ */ | 123 | /* |
124 | * Enable the power controller. This is crucial on Gemini | ||
125 | * systems: if this is not done, pressing the power button | ||
126 | * will result in unconditional poweroff without any warning. | ||
127 | * This makes the kernel handle the poweroff. | ||
128 | */ | ||
129 | val = readl(gpw->base + GEMINI_PWC_CTRLREG); | ||
130 | val |= GEMINI_CTRL_ENABLE; | ||
131 | writel(val, gpw->base + GEMINI_PWC_CTRLREG); | ||
132 | |||
133 | /* Now that the state machine is active, clear the IRQ */ | ||
120 | val = readl(gpw->base + GEMINI_PWC_CTRLREG); | 134 | val = readl(gpw->base + GEMINI_PWC_CTRLREG); |
121 | val |= GEMINI_CTRL_IRQ_CLR; | 135 | val |= GEMINI_CTRL_IRQ_CLR; |
122 | writel(val, gpw->base + GEMINI_PWC_CTRLREG); | 136 | writel(val, gpw->base + GEMINI_PWC_CTRLREG); |
@@ -129,16 +143,6 @@ static int gemini_poweroff_probe(struct platform_device *pdev) | |||
129 | pm_power_off = gemini_poweroff; | 143 | pm_power_off = gemini_poweroff; |
130 | gpw_poweroff = gpw; | 144 | gpw_poweroff = gpw; |
131 | 145 | ||
132 | /* | ||
133 | * Enable the power controller. This is crucial on Gemini | ||
134 | * systems: if this is not done, pressing the power button | ||
135 | * will result in unconditional poweroff without any warning. | ||
136 | * This makes the kernel handle the poweroff. | ||
137 | */ | ||
138 | val = readl(gpw->base + GEMINI_PWC_CTRLREG); | ||
139 | val |= GEMINI_CTRL_ENABLE; | ||
140 | writel(val, gpw->base + GEMINI_PWC_CTRLREG); | ||
141 | |||
142 | dev_info(dev, "Gemini poweroff driver registered\n"); | 146 | dev_info(dev, "Gemini poweroff driver registered\n"); |
143 | 147 | ||
144 | return 0; | 148 | return 0; |
diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c index d99981542a46..7ce60519b1bc 100644 --- a/drivers/power/supply/bq27xxx_battery.c +++ b/drivers/power/supply/bq27xxx_battery.c | |||
@@ -1670,7 +1670,7 @@ static int bq27xxx_battery_status(struct bq27xxx_device_info *di, | |||
1670 | status = POWER_SUPPLY_STATUS_FULL; | 1670 | status = POWER_SUPPLY_STATUS_FULL; |
1671 | else if (di->cache.flags & BQ27000_FLAG_CHGS) | 1671 | else if (di->cache.flags & BQ27000_FLAG_CHGS) |
1672 | status = POWER_SUPPLY_STATUS_CHARGING; | 1672 | status = POWER_SUPPLY_STATUS_CHARGING; |
1673 | else if (power_supply_am_i_supplied(di->bat)) | 1673 | else if (power_supply_am_i_supplied(di->bat) > 0) |
1674 | status = POWER_SUPPLY_STATUS_NOT_CHARGING; | 1674 | status = POWER_SUPPLY_STATUS_NOT_CHARGING; |
1675 | else | 1675 | else |
1676 | status = POWER_SUPPLY_STATUS_DISCHARGING; | 1676 | status = POWER_SUPPLY_STATUS_DISCHARGING; |
diff --git a/drivers/power/supply/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c index 9360faca7026..4f129bb4c972 100644 --- a/drivers/power/supply/ltc2941-battery-gauge.c +++ b/drivers/power/supply/ltc2941-battery-gauge.c | |||
@@ -341,15 +341,15 @@ static int ltc294x_get_temperature(const struct ltc294x_info *info, int *val) | |||
341 | 341 | ||
342 | if (info->id == LTC2942_ID) { | 342 | if (info->id == LTC2942_ID) { |
343 | reg = LTC2942_REG_TEMPERATURE_MSB; | 343 | reg = LTC2942_REG_TEMPERATURE_MSB; |
344 | value = 60000; /* Full-scale is 600 Kelvin */ | 344 | value = 6000; /* Full-scale is 600 Kelvin */ |
345 | } else { | 345 | } else { |
346 | reg = LTC2943_REG_TEMPERATURE_MSB; | 346 | reg = LTC2943_REG_TEMPERATURE_MSB; |
347 | value = 51000; /* Full-scale is 510 Kelvin */ | 347 | value = 5100; /* Full-scale is 510 Kelvin */ |
348 | } | 348 | } |
349 | ret = ltc294x_read_regs(info->client, reg, &datar[0], 2); | 349 | ret = ltc294x_read_regs(info->client, reg, &datar[0], 2); |
350 | value *= (datar[0] << 8) | datar[1]; | 350 | value *= (datar[0] << 8) | datar[1]; |
351 | /* Convert to centidegrees */ | 351 | /* Convert to tenths of degree Celsius */ |
352 | *val = value / 0xFFFF - 27215; | 352 | *val = value / 0xFFFF - 2722; |
353 | return ret; | 353 | return ret; |
354 | } | 354 | } |
355 | 355 | ||
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c index 35dde81b1c9b..1a568df383db 100644 --- a/drivers/power/supply/max17042_battery.c +++ b/drivers/power/supply/max17042_battery.c | |||
@@ -1053,6 +1053,7 @@ static int max17042_probe(struct i2c_client *client, | |||
1053 | 1053 | ||
1054 | i2c_set_clientdata(client, chip); | 1054 | i2c_set_clientdata(client, chip); |
1055 | psy_cfg.drv_data = chip; | 1055 | psy_cfg.drv_data = chip; |
1056 | psy_cfg.of_node = dev->of_node; | ||
1056 | 1057 | ||
1057 | /* When current is not measured, | 1058 | /* When current is not measured, |
1058 | * CURRENT_NOW and CURRENT_AVG properties should be invisible. */ | 1059 | * CURRENT_NOW and CURRENT_AVG properties should be invisible. */ |