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>
This commit is contained in:
Sebastian Reichel 2018-03-12 14:35:10 +01:00
commit 75dd56c0cd
4 changed files with 23 additions and 18 deletions

View File

@ -47,8 +47,12 @@ static irqreturn_t gemini_powerbutton_interrupt(int irq, void *data)
val &= 0x70U; val &= 0x70U;
switch (val) { switch (val) {
case GEMINI_STAT_CIR: case GEMINI_STAT_CIR:
dev_info(gpw->dev, "infrared poweroff\n"); /*
orderly_poweroff(true); * We do not yet have a driver for the infrared
* controller so it can cause spurious poweroff
* events. Ignore those for now.
*/
dev_info(gpw->dev, "infrared poweroff - ignored\n");
break; break;
case GEMINI_STAT_RTC: case GEMINI_STAT_RTC:
dev_info(gpw->dev, "RTC poweroff\n"); dev_info(gpw->dev, "RTC poweroff\n");
@ -116,7 +120,17 @@ static int gemini_poweroff_probe(struct platform_device *pdev)
return -ENODEV; return -ENODEV;
} }
/* Clear the power management IRQ */ /*
* Enable the power controller. This is crucial on Gemini
* systems: if this is not done, pressing the power button
* will result in unconditional poweroff without any warning.
* This makes the kernel handle the poweroff.
*/
val = readl(gpw->base + GEMINI_PWC_CTRLREG);
val |= GEMINI_CTRL_ENABLE;
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
/* Now that the state machine is active, clear the IRQ */
val = readl(gpw->base + GEMINI_PWC_CTRLREG); val = readl(gpw->base + GEMINI_PWC_CTRLREG);
val |= GEMINI_CTRL_IRQ_CLR; val |= GEMINI_CTRL_IRQ_CLR;
writel(val, gpw->base + GEMINI_PWC_CTRLREG); writel(val, gpw->base + GEMINI_PWC_CTRLREG);
@ -129,16 +143,6 @@ static int gemini_poweroff_probe(struct platform_device *pdev)
pm_power_off = gemini_poweroff; pm_power_off = gemini_poweroff;
gpw_poweroff = gpw; gpw_poweroff = gpw;
/*
* Enable the power controller. This is crucial on Gemini
* systems: if this is not done, pressing the power button
* will result in unconditional poweroff without any warning.
* This makes the kernel handle the poweroff.
*/
val = readl(gpw->base + GEMINI_PWC_CTRLREG);
val |= GEMINI_CTRL_ENABLE;
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
dev_info(dev, "Gemini poweroff driver registered\n"); dev_info(dev, "Gemini poweroff driver registered\n");
return 0; return 0;

View File

@ -1670,7 +1670,7 @@ static int bq27xxx_battery_status(struct bq27xxx_device_info *di,
status = POWER_SUPPLY_STATUS_FULL; status = POWER_SUPPLY_STATUS_FULL;
else if (di->cache.flags & BQ27000_FLAG_CHGS) else if (di->cache.flags & BQ27000_FLAG_CHGS)
status = POWER_SUPPLY_STATUS_CHARGING; status = POWER_SUPPLY_STATUS_CHARGING;
else if (power_supply_am_i_supplied(di->bat)) else if (power_supply_am_i_supplied(di->bat) > 0)
status = POWER_SUPPLY_STATUS_NOT_CHARGING; status = POWER_SUPPLY_STATUS_NOT_CHARGING;
else else
status = POWER_SUPPLY_STATUS_DISCHARGING; status = POWER_SUPPLY_STATUS_DISCHARGING;

View File

@ -341,15 +341,15 @@ static int ltc294x_get_temperature(const struct ltc294x_info *info, int *val)
if (info->id == LTC2942_ID) { if (info->id == LTC2942_ID) {
reg = LTC2942_REG_TEMPERATURE_MSB; reg = LTC2942_REG_TEMPERATURE_MSB;
value = 60000; /* Full-scale is 600 Kelvin */ value = 6000; /* Full-scale is 600 Kelvin */
} else { } else {
reg = LTC2943_REG_TEMPERATURE_MSB; reg = LTC2943_REG_TEMPERATURE_MSB;
value = 51000; /* Full-scale is 510 Kelvin */ value = 5100; /* Full-scale is 510 Kelvin */
} }
ret = ltc294x_read_regs(info->client, reg, &datar[0], 2); ret = ltc294x_read_regs(info->client, reg, &datar[0], 2);
value *= (datar[0] << 8) | datar[1]; value *= (datar[0] << 8) | datar[1];
/* Convert to centidegrees */ /* Convert to tenths of degree Celsius */
*val = value / 0xFFFF - 27215; *val = value / 0xFFFF - 2722;
return ret; return ret;
} }

View File

@ -1053,6 +1053,7 @@ static int max17042_probe(struct i2c_client *client,
i2c_set_clientdata(client, chip); i2c_set_clientdata(client, chip);
psy_cfg.drv_data = chip; psy_cfg.drv_data = chip;
psy_cfg.of_node = dev->of_node;
/* When current is not measured, /* When current is not measured,
* CURRENT_NOW and CURRENT_AVG properties should be invisible. */ * CURRENT_NOW and CURRENT_AVG properties should be invisible. */