Restructure driver/power and add Tegra PMC driver
Subsystems (12)
cover Restructure driver/power and add Tegra PMC driver
From: Thierry Reding <[email protected]>
Hi,
I recently posted a series of patches to move some drivers out of arch/arm so that they can be shared between 64-bit and 32-bit SoCs. People objected quite strongly, asking me to find better homes for the drivers than drivers/soc.
This is my attempt to do that for the Tegra PMC (Power-Management Controller) which provides, among other things, control over power partitions on the SoC. It does not contain battery charging logic or indeed anything supply-related, but people thought that drivers/power was still the best fit (see also the code in drivers/power/avs).
However, simply putting the driver in that directory would imply a dependency on the power-supply class, because drivers/power is only descended into when POWER_SUPPLY is selected. Given how the PMC isn't a power supply driver at all that didn't seem like the right thing to do, so this became a two-patch series.
Patch 1 move all current power-supply drivers into a drivers/power/supply subdirectory, thereby making drivers/power available as a new home for miscellaneous power-management or -control related drivers.
Finally patch 2 moves out the PMC related code from arch/arm/mach-tegra into the drivers/power directory.
I would very much appreciate comments on this approach, especially from the power-supply maintainers, since this effectively makes them the maintainers of this new type of driver as well, and that may after all not be something that they signed up to.
Thanks,
Thierry
Thierry Reding (2):
power: Move power-supply drivers to subdirectory
ARM: tegra: Convert PMC to a driver
arch/arm/mach-tegra/Makefile | 2 -
arch/arm/mach-tegra/board.h | 7 -
arch/arm/mach-tegra/platsmp.c | 1 -
arch/arm/mach-tegra/pm.c | 30 +-
arch/arm/mach-tegra/pm.h | 10 +-
arch/arm/mach-tegra/pmc.c | 402 ---------
arch/arm/mach-tegra/pmc.h | 62 --
arch/arm/mach-tegra/powergate.c | 503 ------------
arch/arm/mach-tegra/tegra.c | 6 -
drivers/Makefile | 2 +-
drivers/power/Kconfig | 395 +--------
drivers/power/Makefile | 63 +-
drivers/power/{ => supply}/88pm860x_battery.c | 0
drivers/power/{ => supply}/88pm860x_charger.c | 0
drivers/power/supply/Kconfig | 392 +++++++++
drivers/power/supply/Makefile | 58 ++
drivers/power/{ => supply}/ab8500_bmdata.c | 0
drivers/power/{ => supply}/ab8500_btemp.c | 0
drivers/power/{ => supply}/ab8500_charger.c | 0
drivers/power/{ => supply}/ab8500_fg.c | 0
drivers/power/{ => supply}/abx500_chargalg.c | 0
drivers/power/{ => supply}/apm_power.c | 0
drivers/power/{ => supply}/bq2415x_charger.c | 0
drivers/power/{ => supply}/bq24190_charger.c | 0
drivers/power/{ => supply}/bq24735-charger.c | 0
drivers/power/{ => supply}/bq27x00_battery.c | 0
drivers/power/{ => supply}/collie_battery.c | 0
drivers/power/{ => supply}/da9030_battery.c | 0
drivers/power/{ => supply}/da9052-battery.c | 0
drivers/power/{ => supply}/ds2760_battery.c | 0
drivers/power/{ => supply}/ds2780_battery.c | 0
drivers/power/{ => supply}/ds2781_battery.c | 0
drivers/power/{ => supply}/ds2782_battery.c | 0
drivers/power/{ => supply}/generic-adc-battery.c | 0
drivers/power/{ => supply}/goldfish_battery.c | 0
drivers/power/{ => supply}/gpio-charger.c | 0
drivers/power/{ => supply}/intel_mid_battery.c | 0
drivers/power/{ => supply}/isp1704_charger.c | 0
drivers/power/{ => supply}/jz4740-battery.c | 0
drivers/power/{ => supply}/lp8727_charger.c | 0
drivers/power/{ => supply}/lp8788-charger.c | 0
drivers/power/{ => supply}/max14577_charger.c | 0
drivers/power/{ => supply}/max17040_battery.c | 0
drivers/power/{ => supply}/max17042_battery.c | 0
drivers/power/{ => supply}/max8903_charger.c | 0
drivers/power/{ => supply}/max8925_power.c | 0
drivers/power/{ => supply}/max8997_charger.c | 0
drivers/power/{ => supply}/max8998_charger.c | 0
drivers/power/{ => supply}/olpc_battery.c | 0
drivers/power/{ => supply}/pcf50633-charger.c | 0
drivers/power/{ => supply}/pda_power.c | 0
drivers/power/{ => supply}/pm2301_charger.c | 0
drivers/power/{ => supply}/pm2301_charger.h | 0
drivers/power/{ => supply}/pmu_battery.c | 0
drivers/power/{ => supply}/power_supply.h | 0
drivers/power/{ => supply}/power_supply_core.c | 0
drivers/power/{ => supply}/power_supply_leds.c | 0
drivers/power/{ => supply}/power_supply_sysfs.c | 0
drivers/power/{ => supply}/rx51_battery.c | 0
drivers/power/{ => supply}/s3c_adc_battery.c | 0
drivers/power/{ => supply}/sbs-battery.c | 0
drivers/power/{ => supply}/smb347-charger.c | 0
drivers/power/{ => supply}/test_power.c | 0
drivers/power/{ => supply}/tosa_battery.c | 0
drivers/power/{ => supply}/tps65090-charger.c | 0
drivers/power/{ => supply}/twl4030_charger.c | 0
drivers/power/{ => supply}/twl4030_madc_battery.c | 0
drivers/power/{ => supply}/wm831x_backup.c | 0
drivers/power/{ => supply}/wm831x_power.c | 0
drivers/power/{ => supply}/wm8350_power.c | 0
drivers/power/{ => supply}/wm97xx_battery.c | 0
drivers/power/{ => supply}/z2_battery.c | 0
drivers/power/tegra-pmc.c | 948 ++++++++++++++++++++++
include/linux/tegra-soc.h | 46 ++
74 files changed, 1473 insertions(+), 1454 deletions(-)
delete mode 100644 arch/arm/mach-tegra/pmc.c
delete mode 100644 arch/arm/mach-tegra/pmc.h
delete mode 100644 arch/arm/mach-tegra/powergate.c
rename drivers/power/{ => supply}/88pm860x_battery.c (100%)
rename drivers/power/{ => supply}/88pm860x_charger.c (100%)
create mode 100644 drivers/power/supply/Kconfig
create mode 100644 drivers/power/supply/Makefile
rename drivers/power/{ => supply}/ab8500_bmdata.c (100%)
rename drivers/power/{ => supply}/ab8500_btemp.c (100%)
rename drivers/power/{ => supply}/ab8500_charger.c (100%)
rename drivers/power/{ => supply}/ab8500_fg.c (100%)
rename drivers/power/{ => supply}/abx500_chargalg.c (100%)
rename drivers/power/{ => supply}/apm_power.c (100%)
rename drivers/power/{ => supply}/bq2415x_charger.c (100%)
rename drivers/power/{ => supply}/bq24190_charger.c (100%)
rename drivers/power/{ => supply}/bq24735-charger.c (100%)
rename drivers/power/{ => supply}/bq27x00_battery.c (100%)
rename drivers/power/{ => supply}/collie_battery.c (100%)
rename drivers/power/{ => supply}/da9030_battery.c (100%)
rename drivers/power/{ => supply}/da9052-battery.c (100%)
rename drivers/power/{ => supply}/ds2760_battery.c (100%)
rename drivers/power/{ => supply}/ds2780_battery.c (100%)
rename drivers/power/{ => supply}/ds2781_battery.c (100%)
rename drivers/power/{ => supply}/ds2782_battery.c (100%)
rename drivers/power/{ => supply}/generic-adc-battery.c (100%)
rename drivers/power/{ => supply}/goldfish_battery.c (100%)
rename drivers/power/{ => supply}/gpio-charger.c (100%)
rename drivers/power/{ => supply}/intel_mid_battery.c (100%)
rename drivers/power/{ => supply}/isp1704_charger.c (100%)
rename drivers/power/{ => supply}/jz4740-battery.c (100%)
rename drivers/power/{ => supply}/lp8727_charger.c (100%)
rename drivers/power/{ => supply}/lp8788-charger.c (100%)
rename drivers/power/{ => supply}/max14577_charger.c (100%)
rename drivers/power/{ => supply}/max17040_battery.c (100%)
rename drivers/power/{ => supply}/max17042_battery.c (100%)
rename drivers/power/{ => supply}/max8903_charger.c (100%)
rename drivers/power/{ => supply}/max8925_power.c (100%)
rename drivers/power/{ => supply}/max8997_charger.c (100%)
rename drivers/power/{ => supply}/max8998_charger.c (100%)
rename drivers/power/{ => supply}/olpc_battery.c (100%)
rename drivers/power/{ => supply}/pcf50633-charger.c (100%)
rename drivers/power/{ => supply}/pda_power.c (100%)
rename drivers/power/{ => supply}/pm2301_charger.c (100%)
rename drivers/power/{ => supply}/pm2301_charger.h (100%)
rename drivers/power/{ => supply}/pmu_battery.c (100%)
rename drivers/power/{ => supply}/power_supply.h (100%)
rename drivers/power/{ => supply}/power_supply_core.c (100%)
rename drivers/power/{ => supply}/power_supply_leds.c (100%)
rename drivers/power/{ => supply}/power_supply_sysfs.c (100%)
rename drivers/power/{ => supply}/rx51_battery.c (100%)
rename drivers/power/{ => supply}/s3c_adc_battery.c (100%)
rename drivers/power/{ => supply}/sbs-battery.c (100%)
rename drivers/power/{ => supply}/smb347-charger.c (100%)
rename drivers/power/{ => supply}/test_power.c (100%)
rename drivers/power/{ => supply}/tosa_battery.c (100%)
rename drivers/power/{ => supply}/tps65090-charger.c (100%)
rename drivers/power/{ => supply}/twl4030_charger.c (100%)
rename drivers/power/{ => supply}/twl4030_madc_battery.c (100%)
rename drivers/power/{ => supply}/wm831x_backup.c (100%)
rename drivers/power/{ => supply}/wm831x_power.c (100%)
rename drivers/power/{ => supply}/wm8350_power.c (100%)
rename drivers/power/{ => supply}/wm97xx_battery.c (100%)
rename drivers/power/{ => supply}/z2_battery.c (100%)
create mode 100644 drivers/power/tegra-pmc.cSignature · 1 line
2.0.1
PATCH 1/2 power: Move power-supply drivers to subdirectory
From: Thierry Reding <[email protected]>
Currently the drivers/power directory almost exclusively contains drivers implementing the power-supply class. However not all power- related devices are supplies, so in order to give them an appropriate home this commit moves supply drivers into a supply subdirectory. That allows the base directory to be used for drivers that don't depend on the POWER_SUPPLY symbol.
---
drivers/Makefile | 2 +-
drivers/power/Kconfig | 395 +---------------------
drivers/power/Makefile | 62 +---
drivers/power/{ => supply}/88pm860x_battery.c | 0
drivers/power/{ => supply}/88pm860x_charger.c | 0
drivers/power/supply/Kconfig | 392 +++++++++++++++++++++
drivers/power/supply/Makefile | 58 ++++
drivers/power/{ => supply}/ab8500_bmdata.c | 0
drivers/power/{ => supply}/ab8500_btemp.c | 0
drivers/power/{ => supply}/ab8500_charger.c | 0
drivers/power/{ => supply}/ab8500_fg.c | 0
drivers/power/{ => supply}/abx500_chargalg.c | 0
drivers/power/{ => supply}/apm_power.c | 0
drivers/power/{ => supply}/bq2415x_charger.c | 0
drivers/power/{ => supply}/bq24190_charger.c | 0
drivers/power/{ => supply}/bq24735-charger.c | 0
drivers/power/{ => supply}/bq27x00_battery.c | 0
drivers/power/{ => supply}/collie_battery.c | 0
drivers/power/{ => supply}/da9030_battery.c | 0
drivers/power/{ => supply}/da9052-battery.c | 0
drivers/power/{ => supply}/ds2760_battery.c | 0
drivers/power/{ => supply}/ds2780_battery.c | 0
drivers/power/{ => supply}/ds2781_battery.c | 0
drivers/power/{ => supply}/ds2782_battery.c | 0
drivers/power/{ => supply}/generic-adc-battery.c | 0
drivers/power/{ => supply}/goldfish_battery.c | 0
drivers/power/{ => supply}/gpio-charger.c | 0
drivers/power/{ => supply}/intel_mid_battery.c | 0
drivers/power/{ => supply}/isp1704_charger.c | 0
drivers/power/{ => supply}/jz4740-battery.c | 0
drivers/power/{ => supply}/lp8727_charger.c | 0
drivers/power/{ => supply}/lp8788-charger.c | 0
drivers/power/{ => supply}/max14577_charger.c | 0
drivers/power/{ => supply}/max17040_battery.c | 0
drivers/power/{ => supply}/max17042_battery.c | 0
drivers/power/{ => supply}/max8903_charger.c | 0
drivers/power/{ => supply}/max8925_power.c | 0
drivers/power/{ => supply}/max8997_charger.c | 0
drivers/power/{ => supply}/max8998_charger.c | 0
drivers/power/{ => supply}/olpc_battery.c | 0
drivers/power/{ => supply}/pcf50633-charger.c | 0
drivers/power/{ => supply}/pda_power.c | 0
drivers/power/{ => supply}/pm2301_charger.c | 0
drivers/power/{ => supply}/pm2301_charger.h | 0
drivers/power/{ => supply}/pmu_battery.c | 0
drivers/power/{ => supply}/power_supply.h | 0
drivers/power/{ => supply}/power_supply_core.c | 0
drivers/power/{ => supply}/power_supply_leds.c | 0
drivers/power/{ => supply}/power_supply_sysfs.c | 0
drivers/power/{ => supply}/rx51_battery.c | 0
drivers/power/{ => supply}/s3c_adc_battery.c | 0
drivers/power/{ => supply}/sbs-battery.c | 0
drivers/power/{ => supply}/smb347-charger.c | 0
drivers/power/{ => supply}/test_power.c | 0
drivers/power/{ => supply}/tosa_battery.c | 0
drivers/power/{ => supply}/tps65090-charger.c | 0
drivers/power/{ => supply}/twl4030_charger.c | 0
drivers/power/{ => supply}/twl4030_madc_battery.c | 0
drivers/power/{ => supply}/wm831x_backup.c | 0
drivers/power/{ => supply}/wm831x_power.c | 0
drivers/power/{ => supply}/wm8350_power.c | 0
drivers/power/{ => supply}/wm97xx_battery.c | 0
drivers/power/{ => supply}/z2_battery.c | 0
63 files changed, 455 insertions(+), 454 deletions(-)
rename drivers/power/{ => supply}/88pm860x_battery.c (100%)
rename drivers/power/{ => supply}/88pm860x_charger.c (100%)
create mode 100644 drivers/power/supply/Kconfig
create mode 100644 drivers/power/supply/Makefile
rename drivers/power/{ => supply}/ab8500_bmdata.c (100%)
rename drivers/power/{ => supply}/ab8500_btemp.c (100%)
rename drivers/power/{ => supply}/ab8500_charger.c (100%)
rename drivers/power/{ => supply}/ab8500_fg.c (100%)
rename drivers/power/{ => supply}/abx500_chargalg.c (100%)
rename drivers/power/{ => supply}/apm_power.c (100%)
rename drivers/power/{ => supply}/bq2415x_charger.c (100%)
rename drivers/power/{ => supply}/bq24190_charger.c (100%)
rename drivers/power/{ => supply}/bq24735-charger.c (100%)
rename drivers/power/{ => supply}/bq27x00_battery.c (100%)
rename drivers/power/{ => supply}/collie_battery.c (100%)
rename drivers/power/{ => supply}/da9030_battery.c (100%)
rename drivers/power/{ => supply}/da9052-battery.c (100%)
rename drivers/power/{ => supply}/ds2760_battery.c (100%)
rename drivers/power/{ => supply}/ds2780_battery.c (100%)
rename drivers/power/{ => supply}/ds2781_battery.c (100%)
rename drivers/power/{ => supply}/ds2782_battery.c (100%)
rename drivers/power/{ => supply}/generic-adc-battery.c (100%)
rename drivers/power/{ => supply}/goldfish_battery.c (100%)
rename drivers/power/{ => supply}/gpio-charger.c (100%)
rename drivers/power/{ => supply}/intel_mid_battery.c (100%)
rename drivers/power/{ => supply}/isp1704_charger.c (100%)
rename drivers/power/{ => supply}/jz4740-battery.c (100%)
rename drivers/power/{ => supply}/lp8727_charger.c (100%)
rename drivers/power/{ => supply}/lp8788-charger.c (100%)
rename drivers/power/{ => supply}/max14577_charger.c (100%)
rename drivers/power/{ => supply}/max17040_battery.c (100%)
rename drivers/power/{ => supply}/max17042_battery.c (100%)
rename drivers/power/{ => supply}/max8903_charger.c (100%)
rename drivers/power/{ => supply}/max8925_power.c (100%)
rename drivers/power/{ => supply}/max8997_charger.c (100%)
rename drivers/power/{ => supply}/max8998_charger.c (100%)
rename drivers/power/{ => supply}/olpc_battery.c (100%)
rename drivers/power/{ => supply}/pcf50633-charger.c (100%)
rename drivers/power/{ => supply}/pda_power.c (100%)
rename drivers/power/{ => supply}/pm2301_charger.c (100%)
rename drivers/power/{ => supply}/pm2301_charger.h (100%)
rename drivers/power/{ => supply}/pmu_battery.c (100%)
rename drivers/power/{ => supply}/power_supply.h (100%)
rename drivers/power/{ => supply}/power_supply_core.c (100%)
rename drivers/power/{ => supply}/power_supply_leds.c (100%)
rename drivers/power/{ => supply}/power_supply_sysfs.c (100%)
rename drivers/power/{ => supply}/rx51_battery.c (100%)
rename drivers/power/{ => supply}/s3c_adc_battery.c (100%)
rename drivers/power/{ => supply}/sbs-battery.c (100%)
rename drivers/power/{ => supply}/smb347-charger.c (100%)
rename drivers/power/{ => supply}/test_power.c (100%)
rename drivers/power/{ => supply}/tosa_battery.c (100%)
rename drivers/power/{ => supply}/tps65090-charger.c (100%)
rename drivers/power/{ => supply}/twl4030_charger.c (100%)
rename drivers/power/{ => supply}/twl4030_madc_battery.c (100%)
rename drivers/power/{ => supply}/wm831x_backup.c (100%)
rename drivers/power/{ => supply}/wm831x_power.c (100%)
rename drivers/power/{ => supply}/wm8350_power.c (100%)
rename drivers/power/{ => supply}/wm97xx_battery.c (100%)
rename drivers/power/{ => supply}/z2_battery.c (100%)drivers/Makefile +1 -1
@@ -100,7 +100,7 @@ obj-y += i2c/ media/ obj-$(CONFIG_PPS) += pps/ obj-$(CONFIG_PTP_1588_CLOCK) += ptp/ obj-$(CONFIG_W1) += w1/ -obj-$(CONFIG_POWER_SUPPLY) += power/ +obj-y += power/ obj-$(CONFIG_HWMON) += hwmon/ obj-$(CONFIG_THERMAL) += thermal/ obj-$(CONFIG_WATCHDOG) += watchdog/
drivers/power/Kconfig +1 -394
397 lines not on this page · raw message
drivers/power/Makefile +3 -59
63 lines not on this page · raw message
drivers/power/supply/88pm860x_battery.c renamed from drivers/power/88pm860x_battery.c +0 -0
drivers/power/supply/88pm860x_charger.c renamed from drivers/power/88pm860x_charger.c +0 -0
drivers/power/supply/Kconfig new file +392 -0
392 lines not on this page · raw message
drivers/power/supply/Makefile new file +58 -0
58 lines not on this page · raw message
drivers/power/supply/ab8500_bmdata.c renamed from drivers/power/ab8500_bmdata.c +0 -0
drivers/power/supply/ab8500_btemp.c renamed from drivers/power/ab8500_btemp.c +0 -0
drivers/power/supply/ab8500_charger.c renamed from drivers/power/ab8500_charger.c +0 -0
drivers/power/supply/ab8500_fg.c renamed from drivers/power/ab8500_fg.c +0 -0
drivers/power/supply/abx500_chargalg.c renamed from drivers/power/abx500_chargalg.c +0 -0
drivers/power/supply/apm_power.c renamed from drivers/power/apm_power.c +0 -0
drivers/power/supply/bq2415x_charger.c renamed from drivers/power/bq2415x_charger.c +0 -0
drivers/power/supply/bq24190_charger.c renamed from drivers/power/bq24190_charger.c +0 -0
drivers/power/supply/bq24735-charger.c renamed from drivers/power/bq24735-charger.c +0 -0
drivers/power/supply/bq27x00_battery.c renamed from drivers/power/bq27x00_battery.c +0 -0
drivers/power/supply/collie_battery.c renamed from drivers/power/collie_battery.c +0 -0
drivers/power/supply/da9030_battery.c renamed from drivers/power/da9030_battery.c +0 -0
drivers/power/supply/da9052-battery.c renamed from drivers/power/da9052-battery.c +0 -0
drivers/power/supply/ds2760_battery.c renamed from drivers/power/ds2760_battery.c +0 -0
drivers/power/supply/ds2780_battery.c renamed from drivers/power/ds2780_battery.c +0 -0
drivers/power/supply/ds2781_battery.c renamed from drivers/power/ds2781_battery.c +0 -0
drivers/power/supply/ds2782_battery.c renamed from drivers/power/ds2782_battery.c +0 -0
drivers/power/supply/generic-adc-battery.c renamed from drivers/power/generic-adc-battery.c +0 -0
drivers/power/supply/goldfish_battery.c renamed from drivers/power/goldfish_battery.c +0 -0
drivers/power/supply/gpio-charger.c renamed from drivers/power/gpio-charger.c +0 -0
drivers/power/supply/intel_mid_battery.c renamed from drivers/power/intel_mid_battery.c +0 -0
drivers/power/supply/isp1704_charger.c renamed from drivers/power/isp1704_charger.c +0 -0
drivers/power/supply/jz4740-battery.c renamed from drivers/power/jz4740-battery.c +0 -0
drivers/power/supply/lp8727_charger.c renamed from drivers/power/lp8727_charger.c +0 -0
drivers/power/supply/lp8788-charger.c renamed from drivers/power/lp8788-charger.c +0 -0
drivers/power/supply/max14577_charger.c renamed from drivers/power/max14577_charger.c +0 -0
drivers/power/supply/max17040_battery.c renamed from drivers/power/max17040_battery.c +0 -0
drivers/power/supply/max17042_battery.c renamed from drivers/power/max17042_battery.c +0 -0
drivers/power/supply/max8903_charger.c renamed from drivers/power/max8903_charger.c +0 -0
drivers/power/supply/max8925_power.c renamed from drivers/power/max8925_power.c +0 -0
drivers/power/supply/max8997_charger.c renamed from drivers/power/max8997_charger.c +0 -0
drivers/power/supply/max8998_charger.c renamed from drivers/power/max8998_charger.c +0 -0
drivers/power/supply/olpc_battery.c renamed from drivers/power/olpc_battery.c +0 -0
drivers/power/supply/pcf50633-charger.c renamed from drivers/power/pcf50633-charger.c +0 -0
drivers/power/supply/pda_power.c renamed from drivers/power/pda_power.c +0 -0
drivers/power/supply/pm2301_charger.c renamed from drivers/power/pm2301_charger.c +0 -0
drivers/power/supply/pm2301_charger.h renamed from drivers/power/pm2301_charger.h +0 -0
drivers/power/supply/pmu_battery.c renamed from drivers/power/pmu_battery.c +0 -0
drivers/power/supply/power_supply.h renamed from drivers/power/power_supply.h +0 -0
drivers/power/supply/power_supply_core.c renamed from drivers/power/power_supply_core.c +0 -0
drivers/power/supply/power_supply_leds.c renamed from drivers/power/power_supply_leds.c +0 -0
drivers/power/supply/power_supply_sysfs.c renamed from drivers/power/power_supply_sysfs.c +0 -0
drivers/power/supply/rx51_battery.c renamed from drivers/power/rx51_battery.c +0 -0
drivers/power/supply/s3c_adc_battery.c renamed from drivers/power/s3c_adc_battery.c +0 -0
drivers/power/supply/sbs-battery.c renamed from drivers/power/sbs-battery.c +0 -0
drivers/power/supply/smb347-charger.c renamed from drivers/power/smb347-charger.c +0 -0
drivers/power/supply/test_power.c renamed from drivers/power/test_power.c +0 -0
drivers/power/supply/tosa_battery.c renamed from drivers/power/tosa_battery.c +0 -0
drivers/power/supply/tps65090-charger.c renamed from drivers/power/tps65090-charger.c +0 -0
drivers/power/supply/twl4030_charger.c renamed from drivers/power/twl4030_charger.c +0 -0
drivers/power/supply/twl4030_madc_battery.c renamed from drivers/power/twl4030_madc_battery.c +0 -0
drivers/power/supply/wm831x_backup.c renamed from drivers/power/wm831x_backup.c +0 -0
drivers/power/supply/wm831x_power.c renamed from drivers/power/wm831x_power.c +0 -0
drivers/power/supply/wm8350_power.c renamed from drivers/power/wm8350_power.c +0 -0
drivers/power/supply/wm97xx_battery.c renamed from drivers/power/wm97xx_battery.c +0 -0
drivers/power/supply/z2_battery.c renamed from drivers/power/z2_battery.c +0 -0
Signature · 1 line
2.0.1
PATCH 2/2 ARM: tegra: Convert PMC to a driver
In reply to Thierry RedingFrom: Thierry Reding <[email protected]>
This commit converts the PMC support code to a platform driver. Because the boot process needs to call into this driver very early, set up a minimalistic environment via an early initcall.
While at it, also move the driver out to drivers/power so that it can be shared with 64-bit SoCs.
--- arch/arm/mach-tegra/Makefile | 2 - arch/arm/mach-tegra/board.h | 7 - arch/arm/mach-tegra/platsmp.c | 1 - arch/arm/mach-tegra/pm.c | 30 +- arch/arm/mach-tegra/pm.h | 10 +- arch/arm/mach-tegra/pmc.c | 402 ----------------- arch/arm/mach-tegra/pmc.h | 62 --- arch/arm/mach-tegra/powergate.c | 503 --------------------- arch/arm/mach-tegra/tegra.c | 6 - drivers/power/Makefile | 1 + drivers/power/tegra-pmc.c | 948 ++++++++++++++++++++++++++++++++++++++++ include/linux/tegra-soc.h | 46 ++ 12 files changed, 1018 insertions(+), 1000 deletions(-) delete mode 100644 arch/arm/mach-tegra/pmc.c delete mode 100644 arch/arm/mach-tegra/pmc.h delete mode 100644 arch/arm/mach-tegra/powergate.c create mode 100644 drivers/power/tegra-pmc.c
arch/arm/mach-tegra/Makefile +0 -2
@@ -2,9 +2,7 @@ asflags-y += -march=armv7-a obj-y += io.o obj-y += irq.o -obj-y += pmc.o obj-y += flowctrl.o -obj-y += powergate.o obj-y += pm.o obj-y += reset.o obj-y += reset-handler.o
arch/arm/mach-tegra/board.h +0 -7
@@ -28,13 +28,6 @@void __init tegra_map_common_io (void );void __init tegra_init_irq (void ); -int __init tegra_powergate_init (void ); -#if defined(CONFIG_ARCH_TEGRA_2x_SOC) && defined(CONFIG_DEBUG_FS ) -int __init tegra_powergate_debugfs_init (void ); -#else -static inline int tegra_powergate_debugfs_init (void ) {return 0 ; } -#endif -void __init tegra_paz00_wifikill_init (void );#endif
arch/arm/mach-tegra/platsmp.c +0 -1
@@ -28,7 +28,6 @@#include "flowctrl.h" #include "reset.h" -#include "pmc.h" #include "common.h" #include "iomap.h"
arch/arm/mach-tegra/pm.c +22 -8
@@ -39,7 +39,6 @@#include "reset.h" #include "flowctrl.h" #include "pm.h" -#include "pmc.h" #include "sleep.h" #ifdef CONFIG_PM_SLEEP
@@ -166,9 +165,29 @@ static int tegra_sleep_cpu(unsigned long v2p)return 0 ; } +static void tegra_pm_set (enum tegra_suspend_mode mode) +{ +u32 value; + +switch (tegra_chip_id) { +case TEGRA20 : +case TEGRA30 : +break ; +default : +/* Turn off CRAIL */ + value =flowctrl_read_cpu_csr (0 ); + value &= ~FLOW_CTRL_CSR_ENABLE_EXT_MASK ; + value |=FLOW_CTRL_CSR_ENABLE_EXT_CRAIL ; +flowctrl_write_cpu_csr (0 , value); +break ; + } + +tegra_pmc_enter_suspend_mode (mode); +} +void tegra_idle_lp2_last (void ) { -tegra_pmc_pm_set (TEGRA_SUSPEND_LP2 ); +tegra_pm_set (TEGRA_SUSPEND_LP2 );cpu_cluster_pm_enter ();suspend_cpu_complex ();
@@ -267,8 +286,6 @@ static bool tegra_sleep_core_init(void)static void tegra_suspend_enter_lp1 (void ) { -tegra_pmc_suspend (); -/* copy the reset vector & SDRAM shutdown code into IRAM */ memcpy (iram_save_addr,IO_ADDRESS (TEGRA_IRAM_LPx_RESUME_AREA), iram_save_size);
@@ -280,8 +297,6 @@ static void tegra_suspend_enter_lp1(void)static void tegra_suspend_exit_lp1 (void ) { -tegra_pmc_resume (); -/* restore IRAM */ memcpy (IO_ADDRESS (TEGRA_IRAM_LPx_RESUME_AREA), iram_save_addr, iram_save_size);
@@ -306,7 +321,7 @@ static int tegra_suspend_enter(suspend_state_t state)pr_info ("Entering suspend state %s\n" , lp_state[mode]); -tegra_pmc_pm_set (mode); +tegra_pm_set (mode);local_fiq_disable ();
@@ -354,7 +369,6 @@ void __init tegra_init_suspend(void)return ;tegra_tear_down_cpu_init (); -tegra_pmc_suspend_init ();if (mode >=TEGRA_SUSPEND_LP1 ) {if (!tegra_lp1_iram_hook () || !tegra_sleep_core_init ()) {
arch/arm/mach-tegra/pm.h +1 -9
@@ -21,12 +21,11 @@#ifndef _MACH_TEGRA_PM_H_#define _MACH_TEGRA_PM_H_ -#include "pmc.h" -struct tegra_lp1_iram {void *start_addr;void *end_addr; }; +extern struct tegra_lp1_iram tegra_lp1_iram;extern void (*tegra_sleep_core_finish)(unsigned long v2p);
@@ -42,15 +41,8 @@ void tegra_idle_lp2_last(void);extern void (*tegra_tear_down_cpu)(void );#ifdef CONFIG_PM_SLEEP -enum tegra_suspend_mode tegra_pm_validate_suspend_mode ( -enum tegra_suspend_mode mode);void tegra_init_suspend (void );#else -static inline enum tegra_suspend_mode tegra_pm_validate_suspend_mode ( -enum tegra_suspend_mode mode) -{ -return TEGRA_SUSPEND_NONE ; -}static inline void tegra_init_suspend (void ) {}#endif
arch/arm/mach-tegra/pmc.c deleted +0 -402
402 lines not on this page · raw message
arch/arm/mach-tegra/pmc.h deleted +0 -62
62 lines not on this page · raw message
arch/arm/mach-tegra/powergate.c deleted +0 -503
503 lines not on this page · raw message
arch/arm/mach-tegra/tegra.c +0 -6
@@ -49,7 +49,6 @@#include "flowctrl.h" #include "iomap.h" #include "irq.h" -#include "pmc.h" #include "pm.h" #include "reset.h" #include "sleep.h"
@@ -75,14 +74,12 @@ static void __init tegra_init_early(void)of_register_trusted_foundations ();tegra_init_fuse ();tegra_cpu_reset_handler_init (); -tegra_powergate_init ();tegra_hotplug_init ();tegra_flowctrl_init (); }static void __init tegra_dt_init_irq (void ) { -tegra_pmc_init_irq ();tegra_init_irq ();irqchip_init ();tegra_legacy_irq_syscore_init ();
@@ -94,8 +91,6 @@ static void __init tegra_dt_init(void)struct soc_device *soc_dev;struct device *parent =NULL ; -tegra_pmc_init (); -tegra_clocks_apply_init_table (); soc_dev_attr =kzalloc (sizeof (*soc_dev_attr),GFP_KERNEL );
@@ -145,7 +140,6 @@ static void __init tegra_dt_init_late(void)tegra_init_suspend ();tegra_cpuidle_init (); -tegra_powergate_debugfs_init ();for (i =0 ; i <ARRAY_SIZE (board_init_funcs); i++) {if (of_machine_is_compatible (board_init_funcs[i].machine)) {
drivers/power/Makefile +1 -0
@@ -2,3 +2,4 @@ obj-$(CONFIG_POWER_SUPPLY) += supply/ obj-$(CONFIG_POWER_RESET) += reset/ obj-$(CONFIG_POWER_AVS) += avs/ +obj-$(CONFIG_ARCH_TEGRA) += tegra-pmc.o
drivers/power/tegra-pmc.c new file +948 -0
948 lines not on this page · raw message
include/linux/tegra-soc.h +46 -0
58 lines not on this page · raw message
Signature · 1 line
2.0.1
PATCH 2/2 ARM: tegra: Convert PMC to a driver
Quoted 5 lines · Thierry Reding
From: Thierry Reding <[email protected]>
This commit converts the PMC support code to a platform driver. Because the boot process needs to call into this driver very early, set up a minimalistic environment via an early initcall.
Can we do this without using standalone initcalls? There's no way to ensure ordering with initcalls, which seems like it'll be problematic once we start converting more stuff.
Instead, can we have some "driver" that binds to the top-level DT node, does all the low-/chip-level init, then continues processing the DT? I suspect that Pawel's "platform: Make platform_bus device a platform device" will help out here. He just posted it today:
http://www.spinics.net/lists/arm-kernel/msg349328.html
Quoted 7 lines
While at it, also move the driver out to
drivers/powerso that it can be shared with 64-bit SoCs.arch/arm/mach-tegra/pmc.c | 402 ----------------- arch/arm/mach-tegra/powergate.c | 503 ---------------------drivers/power/tegra-pmc.c | 948 ++++++++++++++++++++++++++++++++++++++++
It's a bit hard to review this patch because two files at the source were merged into one at the destination, and so "git diff -M" couldn't detect/represent any changes that happened during the move and highlight just those. I assume this just cut/pastes the whole of pmc.c and powergate.c into the new tegra-pmc.c without actually changing anything much?
I wonder if putting the file into drivers/power/ directly makes sense? We have "class"-specific sub-directories drivers/power/supply (after this series) and drives/power/{avs,reset}/ before. Should we have a drivers/power/domain or drivers/power/soc/? instead?
That said, drivers/soc/tegra still feels fine to me for this code...
Aside from that, at a quick look through, this series looks OK to me.
PATCH 2/2 ARM: tegra: Convert PMC to a driver
Quoted 10 lines · Stephen Warren
Quoted 5 lines · Thierry Reding
From: Thierry Reding <[email protected]>
This commit converts the PMC support code to a platform driver. Because the boot process needs to call into this driver very early, set up a minimalistic environment via an early initcall.
Can we do this without using standalone initcalls? There's no way to ensure ordering with initcalls, which seems like it'll be problematic once we start converting more stuff.
This driver uses an early_initcall to setup the basic environment required for SMP. That basic environment will stay intact until the proper driver takes over the resources sometime at device_initcall time.
Obviously this type of ordering should only be used for this type of low-level code that has no other dependencies.
Quoted 6 lines
Instead, can we have some "driver" that binds to the top-level DT node, does all the low-/chip-level init, then continues processing the DT? I suspect that Pawel's "platform: Make
platform_busdevice a platform device" will help out here. He just posted it today:
I'm not entirely convinced that this is really necessary. Ideally the early code should be fairly limited. Given that the ARM64 maintainers prefer to have SMP handled using a firmware interface this whole discussion may become moot anyway.
Handling this in firmware is going to create a whole new set of problems, though, I guess. For instance on Tegra we need to program the PMC to bring up CPUs. The operations that toggle the power partition state aren't atomic, so there's always the possibility that firmware will try to power-up/down a CPU while some other driver is trying to power-up/down some other partition. How are firmware and kernel supposed to serialize register accesses?
Quoted 6 lines
Quoted 5 lines
While at it, also move the driver out to
drivers/powerso that it can be shared with 64-bit SoCs.arch/arm/mach-tegra/pmc.c | 402 ----------------- arch/arm/mach-tegra/powergate.c | 503 ---------------------
Quoted 8 lines
Quoted 1 line
drivers/power/tegra-pmc.c | 948 ++++++++++++++++++++++++++++++++++++++++It's a bit hard to review this patch because two files at the source were merged into one at the destination, and so "git diff -M" couldn't detect/represent any changes that happened during the move and highlight just those. I assume this just cut/pastes the whole of
pmc.candpowergate.cinto the newtegra-pmc.cwithout actually changing anything much?
Yes, it's simply a cut-and-paste job. Well, there's a slight difference in what functions are being built. The old code didn't conditionally build the CONFIG_PM_SLEEP and CONFIG_SMP functions in the driver (though the prototypes were conditionalized). The new driver restores consistency. That was to fix randconfig build errors that Arnd reported.
Quoted 4 lines
I wonder if putting the file into
drivers/power/directly makes sense? We have "class"-specific sub-directoriesdrivers/power/supply(after this series) and drives/power/{avs,reset}/ before. Should we have adrivers/power/domainordrivers/power/soc/? instead?
Yeah, moving the code into a subdirectory should be fine. It seemed a little pointless since there was only one, but if drivers/power maintainers ever agree to this restructuring I'll happily create another subdirectory for power domain or SoC power drivers.
Quoted 1 line
That said,
drivers/soc/tegrastill feels fine to me for this code...
I agree. At this point in time it's unlikely that we'll be able to come up with a generic framework to accomodate this driver. Until that time I don't think it makes sense to move this anywhere else.
But if people insist there shouldn't be a problem to move this out again since the difficult part of untangling the dependencies is done now, so it should simply be a matter of doing a git mv and adjusting the Kconfig and/or Makefile.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140721/89794850/attachment.sig>