This starts to implement the power domains that are just skeleton implementations right now.
Signed-off-by: Linus Walleij <[email protected]> --- drivers/pmdomain/st/ste-ux500-pm-domain.c | 125 +++++++++++++++++++++++++++++- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/drivers/pmdomain/st/ste-ux500-pm-domain.c b/drivers/pmdomain/st/ste-ux500-pm-domain.c index 6896cb4a7b71..723001004690 100644 --- a/drivers/pmdomain/st/ste-ux500-pm-domain.c +++ b/drivers/pmdomain/st/ste-ux500-pm-domain.c @@ -41,14 +41,137 @@ static int pd_power_on(struct generic_pm_domain *domain) return 0; } +/* + * Apart from these voltage domains there is also VSAFE which is always + * on. Vape_esram0_pwr for eSRAM0 is connected to VSAFE. + */ static struct generic_pm_domain ux500_pm_domain_vape = { - .name = "VAPE", + /* Vape_pwr */ + .name = "VAPE", /* 0.95 .. 1.20 V */ + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_varm = { + .name = "VARM", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_vmodem = { + .name = "VMODEM", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_vpll = { + .name = "VPLL", /* 1.8 V */ + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +/* + * CHECKME: as these are used directly by peripherals as regulators, + * perhaps they should stay in the regulator subsystem? + */ +static struct generic_pm_domain ux500_pm_domain_vsmps1 = { + .name = "VSMPS1", /* Also called VIO (1.2V) */ + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_vsmps2 = { + .name = "VSMPS2", /* Also called VIO (1.8V) */ + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_vsmps3 = { + .name = "VSMPS3", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_vrf1 = { + .name = "VRF1", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +/* The following are technically children of VAPE */ +static struct generic_pm_domain ux500_pm_domain_sva_mmdsp = { + /* Vape_SVA_MMDSP_pwr */ + .name = "SVA_MMDSP", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_sva_pipe = { + /* Vape_SVA_pwr */ + .name = "SVA_PIPE", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_sia_mmdsp = { + /* Vape_SIA_MMDSP_pwr */ + .name = "SIA_MMDSP", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_sia_pipe = { + /* Vape_SIA_pwr */ + .name = "SIA_PIPE", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_sga = { + /* Vape_SGA_pwr */ + .name = "SGA", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_b2r2_mcde = { + /* Vape_DSS_pwr DSS (display subsystem) */ + .name = "B2R2_MCDE", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_esram_12 = { + /* Vape_esram0_pwr, Vape_esram1_pwr */ + .name = "ESRAM_12", + .power_off = pd_power_off, + .power_on = pd_power_on, +}; + +static struct generic_pm_domain ux500_pm_domain_esram_34 = { + /* Vape_esram3_pwr, Vape_esram4_pwr */ + .name = "ESRAM_34", .power_off = pd_power_off, .power_on = pd_power_on, }; static struct generic_pm_domain *ux500_pm_domains[NR_DOMAINS] = { [DOMAIN_VAPE] = &ux500_pm_domain_vape, + [DOMAIN_VARM] = &ux500_pm_domain_varm, + [DOMAIN_VMODEM] = &ux500_pm_domain_vmodem, + [DOMAIN_VPLL] = &ux500_pm_domain_vpll, + [DOMAIN_VSMPS1] = &ux500_pm_domain_vsmps1, + [DOMAIN_VSMPS2] = &ux500_pm_domain_vsmps2, + [DOMAIN_VSMPS3] = &ux500_pm_domain_vsmps3, + [DOMAIN_VRF1] = &ux500_pm_domain_vrf1, + [DOMAIN_SVA_MMDSP] = &ux500_pm_domain_sva_mmdsp, + [DOMAIN_SVA_PIPE] = &ux500_pm_domain_sva_pipe, + [DOMAIN_SIA_MMDSP] = &ux500_pm_domain_sia_mmdsp, + [DOMAIN_SIA_PIPE] = &ux500_pm_domain_sia_pipe, + [DOMAIN_SGA] = &ux500_pm_domain_sga, + [DOMAIN_B2R2_MCDE] = &ux500_pm_domain_b2r2_mcde, + [DOMAIN_ESRAM_12] = &ux500_pm_domain_esram_12, + [DOMAIN_ESRAM_34] = &ux500_pm_domain_esram_34, }; static const struct of_device_id ux500_pm_domain_matches[] = { -- 2.54.0
