Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a32e6a35 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'renesas-rcar-sysc-for-v4.13' of...

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: default avatarOlof Johansson <olof@lixom.net>
parents 8c5c2506 980532a5
Loading
Loading
Loading
Loading
+4 −24
Original line number Original line Diff line number Diff line
@@ -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;
+0 −2
Original line number Original line Diff line number Diff line
@@ -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 */