Merge tag 'for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
Pull power supply and reset updates from Sebastian Reichel: "Core: - Add over-current health state - Add standard, adaptive and custom charge types - Add new properties for start/end charge threshold New Drivers / Hardware: - UCS1002 Programmable USB Port Power Controller - Ingenic JZ47xx Battery Fuel Gauge - AXP20x USB Power: Add AXP813 support - AT91 poweroff: Add SAM9X60 support - OLPC battery: Add XO-1.5 and XO-1.75 support Misc Changes: - syscon-reboot: support mask property - AXP288 fuel gauge: Blacklist ACEPC T8/T11. Looks like some vendor thought it's a good idea to build a desktop system with a fuel gauge, that slowly "discharges"... - cpcap-battery: Fix calculation errors - misc fixes" * tag 'for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (54 commits) power: supply: olpc_battery: force the le/be casts power: supply: ucs1002: Fix build error without CONFIG_REGULATOR power: supply: ucs1002: Fix wrong return value checking power: supply: Add driver for Microchip UCS1002 dt-bindings: power: supply: Add bindings for Microchip UCS1002 power: supply: core: Add POWER_SUPPLY_HEALTH_OVERCURRENT constant power: supply: core: fix clang -Wunsequenced power: supply: core: Add missing documentation for CHARGE_CONTROL_* properties power: supply: core: Add CHARGE_CONTROL_{START_THRESHOLD,END_THRESHOLD} properties power: supply: core: Add Standard, Adaptive, and Custom charge types power: supply: axp288_fuel_gauge: Add ACEPC T8 and T11 mini PCs to the blacklist power: supply: bq27xxx_battery: Notify also about status changes power: supply: olpc_battery: Have the framework register sysfs files for us power: supply: olpc_battery: Add OLPC XO 1.75 support power: supply: olpc_battery: Avoid using platform_info power: supply: olpc_battery: Use devm_power_supply_register() power: supply: olpc_battery: Move priv data to a struct power: supply: olpc_battery: Use DT to get battery version x86/platform/olpc: Use a correct version when making up a battery node x86/platform/olpc: Trivial code move in DT fixup ...
This commit is contained in:
@@ -220,10 +220,26 @@ static u32 __init olpc_dt_get_board_revision(void)
|
||||
return be32_to_cpu(rev);
|
||||
}
|
||||
|
||||
int olpc_dt_compatible_match(phandle node, const char *compat)
|
||||
{
|
||||
char buf[64], *p;
|
||||
int plen, len;
|
||||
|
||||
plen = olpc_dt_getproperty(node, "compatible", buf, sizeof(buf));
|
||||
if (plen <= 0)
|
||||
return 0;
|
||||
|
||||
len = strlen(compat);
|
||||
for (p = buf; p < buf + plen; p += strlen(p) + 1) {
|
||||
if (strcmp(p, compat) == 0)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init olpc_dt_fixup(void)
|
||||
{
|
||||
int r;
|
||||
char buf[64];
|
||||
phandle node;
|
||||
u32 board_rev;
|
||||
|
||||
@@ -231,41 +247,66 @@ void __init olpc_dt_fixup(void)
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
/*
|
||||
* If the battery node has a compatible property, we are running a new
|
||||
* enough firmware and don't have fixups to make.
|
||||
*/
|
||||
r = olpc_dt_getproperty(node, "compatible", buf, sizeof(buf));
|
||||
if (r > 0)
|
||||
return;
|
||||
|
||||
pr_info("PROM DT: Old firmware detected, applying fixes\n");
|
||||
|
||||
/* Add olpc,xo1-battery compatible marker to battery node */
|
||||
olpc_dt_interpret("\" /battery@0\" find-device"
|
||||
" \" olpc,xo1-battery\" +compatible"
|
||||
" device-end");
|
||||
|
||||
board_rev = olpc_dt_get_board_revision();
|
||||
if (!board_rev)
|
||||
return;
|
||||
|
||||
if (board_rev >= olpc_board_pre(0xd0)) {
|
||||
/* XO-1.5: add dcon device */
|
||||
olpc_dt_interpret("\" /pci/display@1\" find-device"
|
||||
" new-device"
|
||||
" \" dcon\" device-name \" olpc,xo1-dcon\" +compatible"
|
||||
" finish-device device-end");
|
||||
/* XO-1.5 */
|
||||
|
||||
if (olpc_dt_compatible_match(node, "olpc,xo1.5-battery"))
|
||||
return;
|
||||
|
||||
/* Add olpc,xo1.5-battery compatible marker to battery node */
|
||||
olpc_dt_interpret("\" /battery@0\" find-device");
|
||||
olpc_dt_interpret(" \" olpc,xo1.5-battery\" +compatible");
|
||||
olpc_dt_interpret("device-end");
|
||||
|
||||
if (olpc_dt_compatible_match(node, "olpc,xo1-battery")) {
|
||||
/*
|
||||
* If we have a olpc,xo1-battery compatible, then we're
|
||||
* running a new enough firmware that already has
|
||||
* the dcon node.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* Add dcon device */
|
||||
olpc_dt_interpret("\" /pci/display@1\" find-device");
|
||||
olpc_dt_interpret(" new-device");
|
||||
olpc_dt_interpret(" \" dcon\" device-name");
|
||||
olpc_dt_interpret(" \" olpc,xo1-dcon\" +compatible");
|
||||
olpc_dt_interpret(" finish-device");
|
||||
olpc_dt_interpret("device-end");
|
||||
} else {
|
||||
/* XO-1: add dcon device, mark RTC as olpc,xo1-rtc */
|
||||
olpc_dt_interpret("\" /pci/display@1,1\" find-device"
|
||||
" new-device"
|
||||
" \" dcon\" device-name \" olpc,xo1-dcon\" +compatible"
|
||||
" finish-device device-end"
|
||||
" \" /rtc\" find-device"
|
||||
" \" olpc,xo1-rtc\" +compatible"
|
||||
" device-end");
|
||||
/* XO-1 */
|
||||
|
||||
if (olpc_dt_compatible_match(node, "olpc,xo1-battery")) {
|
||||
/*
|
||||
* If we have a olpc,xo1-battery compatible, then we're
|
||||
* running a new enough firmware that already has
|
||||
* the dcon and RTC nodes.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* Add dcon device, mark RTC as olpc,xo1-rtc */
|
||||
olpc_dt_interpret("\" /pci/display@1,1\" find-device");
|
||||
olpc_dt_interpret(" new-device");
|
||||
olpc_dt_interpret(" \" dcon\" device-name");
|
||||
olpc_dt_interpret(" \" olpc,xo1-dcon\" +compatible");
|
||||
olpc_dt_interpret(" finish-device");
|
||||
olpc_dt_interpret("device-end");
|
||||
|
||||
olpc_dt_interpret("\" /rtc\" find-device");
|
||||
olpc_dt_interpret(" \" olpc,xo1-rtc\" +compatible");
|
||||
olpc_dt_interpret("device-end");
|
||||
}
|
||||
|
||||
/* Add olpc,xo1-battery compatible marker to battery node */
|
||||
olpc_dt_interpret("\" /battery@0\" find-device");
|
||||
olpc_dt_interpret(" \" olpc,xo1-battery\" +compatible");
|
||||
olpc_dt_interpret("device-end");
|
||||
}
|
||||
|
||||
void __init olpc_dt_build_devicetree(void)
|
||||
|
Reference in New Issue
Block a user