summaryrefslogtreecommitdiffstats
path: root/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch')
-rw-r--r--meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch108
1 files changed, 0 insertions, 108 deletions
diff --git a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch b/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch
deleted file mode 100644
index a8403b5..0000000
--- a/meta-rcar-gen3/recipes-kernel/linux/linux-renesas/0001-soc-renesas-rcar-sysc-Update-power-control-flow-for-.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From c8623487a0716301221dfbceee63856ed6f0c15f Mon Sep 17 00:00:00 2001
-From: Dien Pham <dien.pham.ry@renesas.com>
-Date: Wed, 11 Apr 2018 16:19:03 +0700
-Subject: [PATCH 1/6] soc: renesas: rcar-sysc: Update power control flow for
- SYSCEXTMASK register
-
-On H3 v3.0, it can observe the system hang up after changing
-power domains many times (~2000 times) continuously.
-This occurs because there is conflict when changing state
-of power domains.
-
-To overcome this issue, power domain on/off control flow
-need to be updated. It needs to set/clear value of SYSCEXTMASK register.
-
-This patch is updated for above purpose.
-
-Signed-off-by: Dien Pham <dien.pham.ry@renesas.com>
----
- drivers/soc/renesas/rcar-sysc.c | 22 +++++++++++++++++++++-
- drivers/soc/renesas/rcar-sysc.h | 8 ++++++++
- 2 files changed, 29 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/soc/renesas/rcar-sysc.c b/drivers/soc/renesas/rcar-sysc.c
-index a063887..b170f9b 100644
---- a/drivers/soc/renesas/rcar-sysc.c
-+++ b/drivers/soc/renesas/rcar-sysc.c
-@@ -96,10 +96,24 @@
-
- static void __iomem *rcar_sysc_base;
- static DEFINE_SPINLOCK(rcar_sysc_lock); /* SMP CPUs + I/O devices */
--
-+static struct rcar_sysc_extra_regs *extra_regs;
-
- static const char *to_pd_name(const struct rcar_sysc_ch *sysc_ch);
-
-+static void rcar_sysc_extmask_ctrl(bool on)
-+{
-+ u32 extmask_msks = 0;
-+
-+ if (!extra_regs || !extra_regs->sysc_extmask_msks)
-+ return;
-+
-+ if (on)
-+ extmask_msks = extra_regs->sysc_extmask_msks;
-+
-+ iowrite32(extmask_msks,
-+ rcar_sysc_base + extra_regs->sysc_extmask_offs);
-+}
-+
- static int rcar_sysc_pwr_on_off(const struct rcar_sysc_ch *sysc_ch, bool on)
- {
- unsigned int sr_bit, reg_offs;
-@@ -147,6 +161,7 @@ static int rcar_sysc_power(const struct rcar_sysc_ch *sysc_ch, bool on)
-
- spin_lock_irqsave(&rcar_sysc_lock, flags);
-
-+ rcar_sysc_extmask_ctrl(1); /* set EXTMSK0 */
- iowrite32(isr_mask, rcar_sysc_base + SYSCISCR);
-
- /* Submit power shutoff or resume request until it was accepted */
-@@ -181,6 +196,7 @@ static int rcar_sysc_power(const struct rcar_sysc_ch *sysc_ch, bool on)
- iowrite32(isr_mask, rcar_sysc_base + SYSCISCR);
-
- out:
-+ rcar_sysc_extmask_ctrl(0); /* clear EXTMSK0 */
- spin_unlock_irqrestore(&rcar_sysc_lock, flags);
-
- pr_debug("sysc power %s domain %d: %08x -> %d\n", on ? "on" : "off",
-@@ -436,6 +452,10 @@ static int __init rcar_sysc_pd_init(void)
-
- rcar_sysc_base = base;
-
-+ /* Check and get extra registers */
-+ if (info->extra_regs)
-+ extra_regs = info->extra_regs;
-+
- domains = kzalloc(sizeof(*domains), GFP_KERNEL);
- if (!domains) {
- error = -ENOMEM;
-diff --git a/drivers/soc/renesas/rcar-sysc.h b/drivers/soc/renesas/rcar-sysc.h
-index cfc7e30..1c3aedb 100644
---- a/drivers/soc/renesas/rcar-sysc.h
-+++ b/drivers/soc/renesas/rcar-sysc.h
-@@ -38,6 +38,13 @@ struct rcar_sysc_area {
- unsigned int flags; /* See PD_* */
- };
-
-+/*
-+ * List of registers that are not common in all platform.
-+ */
-+struct rcar_sysc_extra_regs {
-+ u16 sysc_extmask_offs; /* Offset of SYSCEXTMASK register */
-+ u32 sysc_extmask_msks; /* Mask value of SYSCEXTMASK register */
-+};
-
- /*
- * SoC-specific Power Area Description
-@@ -47,6 +54,7 @@ struct rcar_sysc_info {
- int (*init)(void); /* Optional */
- const struct rcar_sysc_area *areas;
- unsigned int num_areas;
-+ struct rcar_sysc_extra_regs *extra_regs;
- };
-
- extern const struct rcar_sysc_info r8a7743_sysc_info;
---
-1.9.1
-