Unlike other i.MX8M variants, TF-A on i.MX8MP enables all power domains up front, so later software can keep reusing it. This benefited us because we didn't have a driver for the HSIO blk-ctrl, which powers the USB PHYs and controllers on the i.MX8MP. However, not all i.MX8MP SKUs have all power domains, e.g. the lite variant lacks VPUs, NPU, ISP and DSP and their associated power domains. Removing power domains altogether in TF-A though would break USB in barebox when not booted over SDP as neither BootROM or TF-A would enable the HSIO blk-ctrl. In order to decouple barebox from prior HSIO initialization, port over the Linux driver. Ahmad Fatoum (19): drivers: soc: split off powerdomains into new pmdomain directory pmdomain: use single implementation for dev_pm_domain_attach pmdomain: power: drop unused parameters for internal functions pmdomain: associate devices with their power domain pmdomain: push have_genpd_providers check into __genpd_dev_pm_attach pmdomain: drop superfluous parameter to __genpd_dev_pm_attach pmdomain: implement dev_pm_domain_attach_by_id/name pmdomain: add support for enabling power domains later on pmdomain: imx: gpcv2: enable COMPILE_TEST build pmdomain: add stub definition for dev_pm_domain_detach pmdomain: add stub definition for pm_runtime_put_genpd pmdomain: implement pm_genpd_remove/of_genpd_del_provider for cleanup driver: have dev_request_mem_region_err_null warn if resource starts at 0 include: linux/device.h: implement dev_platform_ioremap_resource regmap: include missing header from linux/regmap.h clk: define aliases for clk_bulk_prepare_enable/disable_unprepare driver: make driver.h header self-contained pmdomain: imx: add i.MX8MP HSIO blk-ctrl driver ARM: dts: i.MX8MP: drop barebox,allow-dummy for HSIO blk-ctrl arch/arm/dts/imx8mp.dtsi | 4 - drivers/Kconfig | 1 + drivers/Makefile | 1 + drivers/base/driver.c | 2 +- drivers/base/power.c | 209 +++++++- drivers/pmdomain/Kconfig | 7 + drivers/pmdomain/Makefile | 3 + drivers/pmdomain/imx/Kconfig | 16 + drivers/pmdomain/imx/Makefile | 3 + drivers/{soc => pmdomain}/imx/gpcv2.c | 0 drivers/pmdomain/imx/imx8mp-blk-ctrl.c | 459 ++++++++++++++++++ drivers/{soc => pmdomain}/ti/Kconfig | 1 + drivers/{soc => pmdomain}/ti/Makefile | 1 + .../{soc => pmdomain}/ti/ti_sci_pm_domains.c | 0 drivers/soc/Kconfig | 1 - drivers/soc/Makefile | 1 - drivers/soc/imx/Kconfig | 6 - drivers/soc/imx/Makefile | 1 - include/driver.h | 4 + include/linux/clk.h | 3 + include/linux/device.h | 12 + include/linux/regmap.h | 1 + include/pm_domain.h | 171 +++++-- 23 files changed, 838 insertions(+), 69 deletions(-) create mode 100644 drivers/pmdomain/Kconfig create mode 100644 drivers/pmdomain/Makefile create mode 100644 drivers/pmdomain/imx/Kconfig create mode 100644 drivers/pmdomain/imx/Makefile rename drivers/{soc => pmdomain}/imx/gpcv2.c (100%) create mode 100644 drivers/pmdomain/imx/imx8mp-blk-ctrl.c rename drivers/{soc => pmdomain}/ti/Kconfig (84%) rename drivers/{soc => pmdomain}/ti/Makefile (57%) rename drivers/{soc => pmdomain}/ti/ti_sci_pm_domains.c (100%) -- 2.39.2