mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 08:48:48 +00:00
Renesas ARM Based SoC R-Car SYSC Updates for v4.13
Use GENPD_FLAG_ALWAYS_ON in R-Car SYSC driver -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJZQ9m5AAoJENfPZGlqN0++ZnkP/A1awxW1NlFq0MYydJFUiNgl uqN0Cfliws5VvghxKsX5VMNdKYZCqCsK8LPkIsY/TsVbeyTmV5EIAq1Mgr1QbtT6 AxgAc1SfAziLkMDTR0/Yy+xv8cvcb5HbneABHWsT2BrLPAeOeLC5yd6yICxff+Vn r1YQBB44J/IJQQBrRxOOuZDyWO/E4tGhtU54+tU6aRJ/uPgN/MzXlwSZikWOiHpY a8w2u3xcViJE+6HBtTpK31xrJqIIEQsjpK1U48Y+hrq6CKxZ0ZJLk5Xn4drehMNw F47qXi4PJXeNwDpPY/H01zauP8fB8jo4oUHZCePps2K4OrtMvTY7vMbxvsxxVxlW jjJXbDT+y/Wi6WJZAujqnBubFjbZTDboNjjQAMfVpPABYZmqWx1NsLBHvWsVgr0+ HkViencpsxTe1qgVwEoGbTZtG0pJ+T6d6bid7MFyq4cIlYObJz+R4TnuuVlj2CYe AidLlL7F1tGZUAweBmdRUXo789n83sBtNF6rzOc8p+Oxva6qgEH6UyZe1AUV9dtL uSInCh1ES7m8S+aYu/8PaqFyij3wOiwFUYSx3wMfOqrVIqMt0ck5MELU0BUvg5AX 6wskdIZD6OMbLiDNjWaZdLpgYe/K0613bNo4eKfEKjk+fM6AyM1SWio3o+wsRknf 04SPy0L6Nknhyf3S5wXl =QQgo -----END PGP SIGNATURE----- Merge tag 'renesas-rcar-sysc-for-v4.13' of https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/drivers Renesas ARM Based SoC R-Car SYSC Updates for v4.13 Use GENPD_FLAG_ALWAYS_ON in R-Car SYSC driver * tag 'renesas-rcar-sysc-for-v4.13' of https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: soc: renesas: rcar-sysc: Use GENPD_FLAG_ALWAYS_ON Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
a32e6a353d
@ -181,17 +181,6 @@ static int rcar_sysc_pd_power_off(struct generic_pm_domain *genpd)
|
|||||||
struct rcar_sysc_pd *pd = to_rcar_pd(genpd);
|
struct rcar_sysc_pd *pd = to_rcar_pd(genpd);
|
||||||
|
|
||||||
pr_debug("%s: %s\n", __func__, genpd->name);
|
pr_debug("%s: %s\n", __func__, genpd->name);
|
||||||
|
|
||||||
if (pd->flags & PD_NO_CR) {
|
|
||||||
pr_debug("%s: Cannot control %s\n", __func__, genpd->name);
|
|
||||||
return -EBUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pd->flags & PD_BUSY) {
|
|
||||||
pr_debug("%s: %s busy\n", __func__, genpd->name);
|
|
||||||
return -EBUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rcar_sysc_power_down(&pd->ch);
|
return rcar_sysc_power_down(&pd->ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,12 +189,6 @@ static int rcar_sysc_pd_power_on(struct generic_pm_domain *genpd)
|
|||||||
struct rcar_sysc_pd *pd = to_rcar_pd(genpd);
|
struct rcar_sysc_pd *pd = to_rcar_pd(genpd);
|
||||||
|
|
||||||
pr_debug("%s: %s\n", __func__, genpd->name);
|
pr_debug("%s: %s\n", __func__, genpd->name);
|
||||||
|
|
||||||
if (pd->flags & PD_NO_CR) {
|
|
||||||
pr_debug("%s: Cannot control %s\n", __func__, genpd->name);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rcar_sysc_power_up(&pd->ch);
|
return rcar_sysc_power_up(&pd->ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,8 +206,7 @@ static void __init rcar_sysc_pd_setup(struct rcar_sysc_pd *pd)
|
|||||||
* only be turned off if the CPU is not in use.
|
* only be turned off if the CPU is not in use.
|
||||||
*/
|
*/
|
||||||
pr_debug("PM domain %s contains %s\n", name, "CPU");
|
pr_debug("PM domain %s contains %s\n", name, "CPU");
|
||||||
pd->flags |= PD_BUSY;
|
genpd->flags |= GENPD_FLAG_ALWAYS_ON;
|
||||||
gov = &pm_domain_always_on_gov;
|
|
||||||
} else if (pd->flags & PD_SCU) {
|
} else if (pd->flags & PD_SCU) {
|
||||||
/*
|
/*
|
||||||
* This domain contains an SCU and cache-controller, and
|
* This domain contains an SCU and cache-controller, and
|
||||||
@ -232,19 +214,17 @@ static void __init rcar_sysc_pd_setup(struct rcar_sysc_pd *pd)
|
|||||||
* not in use.
|
* not in use.
|
||||||
*/
|
*/
|
||||||
pr_debug("PM domain %s contains %s\n", name, "SCU");
|
pr_debug("PM domain %s contains %s\n", name, "SCU");
|
||||||
pd->flags |= PD_BUSY;
|
genpd->flags |= GENPD_FLAG_ALWAYS_ON;
|
||||||
gov = &pm_domain_always_on_gov;
|
|
||||||
} else if (pd->flags & PD_NO_CR) {
|
} else if (pd->flags & PD_NO_CR) {
|
||||||
/*
|
/*
|
||||||
* This domain cannot be turned off.
|
* This domain cannot be turned off.
|
||||||
*/
|
*/
|
||||||
pd->flags |= PD_BUSY;
|
genpd->flags |= GENPD_FLAG_ALWAYS_ON;
|
||||||
gov = &pm_domain_always_on_gov;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(pd->flags & (PD_CPU | PD_SCU))) {
|
if (!(pd->flags & (PD_CPU | PD_SCU))) {
|
||||||
/* Enable Clock Domain for I/O devices */
|
/* Enable Clock Domain for I/O devices */
|
||||||
genpd->flags = GENPD_FLAG_PM_CLK;
|
genpd->flags |= GENPD_FLAG_PM_CLK;
|
||||||
if (has_cpg_mstp) {
|
if (has_cpg_mstp) {
|
||||||
genpd->attach_dev = cpg_mstp_attach_dev;
|
genpd->attach_dev = cpg_mstp_attach_dev;
|
||||||
genpd->detach_dev = cpg_mstp_detach_dev;
|
genpd->detach_dev = cpg_mstp_detach_dev;
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
#define PD_SCU BIT(1) /* Area contains SCU and L2 cache */
|
#define PD_SCU BIT(1) /* Area contains SCU and L2 cache */
|
||||||
#define PD_NO_CR BIT(2) /* Area lacks PWR{ON,OFF}CR registers */
|
#define PD_NO_CR BIT(2) /* Area lacks PWR{ON,OFF}CR registers */
|
||||||
|
|
||||||
#define PD_BUSY BIT(3) /* Busy, for internal use only */
|
|
||||||
|
|
||||||
#define PD_CPU_CR PD_CPU /* CPU area has CR (R-Car H1) */
|
#define PD_CPU_CR PD_CPU /* CPU area has CR (R-Car H1) */
|
||||||
#define PD_CPU_NOCR PD_CPU | PD_NO_CR /* CPU area lacks CR (R-Car Gen2/3) */
|
#define PD_CPU_NOCR PD_CPU | PD_NO_CR /* CPU area lacks CR (R-Car Gen2/3) */
|
||||||
#define PD_ALWAYS_ON PD_NO_CR /* Always-on area */
|
#define PD_ALWAYS_ON PD_NO_CR /* Always-on area */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user