linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert+renesas@glider.be>
To: linux-sh@vger.kernel.org
Subject: [PATCH 2/5] [DEBUG] r8a7791: show MSTP clock status during boot-up
Date: Tue, 15 Apr 2014 12:45:21 +0000	[thread overview]
Message-ID: <1397565924-23541-3-git-send-email-geert+renesas@glider.be> (raw)

Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 arch/arm/mach-shmobile/setup-r8a7791.c |  199 ++++++++++++++++++++++++++++++++
 1 file changed, 199 insertions(+)

diff --git a/arch/arm/mach-shmobile/setup-r8a7791.c b/arch/arm/mach-shmobile/setup-r8a7791.c
index ddb47dab86ff..d3477d8062ea 100644
--- a/arch/arm/mach-shmobile/setup-r8a7791.c
+++ b/arch/arm/mach-shmobile/setup-r8a7791.c
@@ -489,6 +489,201 @@ static const struct mstp_disable smstp_disable[] __initconst = {
 	{ SMSTPCR11, SMSTP11_DISABLE },
 };
 
+#define MSTP_BIT(name, reg)				\
+{							\
+	#name,						\
+	MSTPSR ## reg, RMSTPCR ## reg, SMSTPCR ## reg,	\
+	MSTP ## reg ## _ ## name			\
+}
+
+static const struct mstp_clock {
+	const char *name;
+	unsigned long sr, rc, sc;
+	u32 mask;
+} mstp_clocks[] = {
+	MSTP_BIT(2DDMAC, 1),
+	MSTP_BIT(3DG, 1),
+	MSTP_BIT(ADG, 9),
+	MSTP_BIT(ADSP, 5),
+	MSTP_BIT(ARMREG, 0),
+	MSTP_BIT(AUDIO_DMAC0, 5),
+	MSTP_BIT(AUDIO_DMAC1, 5),
+	MSTP_BIT(CMM0, 7),
+	MSTP_BIT(CMM1, 7),
+	MSTP_BIT(CMT0, 1),
+	MSTP_BIT(CMT1, 3),
+	MSTP_BIT(CRYPT_ENGINE, 2),
+	MSTP_BIT(DARC, 9),
+	MSTP_BIT(DCU, 8),
+	MSTP_BIT(DDM, 4),
+	MSTP_BIT(DTCP, 9),
+	MSTP_BIT(DU0, 7),
+	MSTP_BIT(DU1, 7),
+	MSTP_BIT(EHCI, 7),
+	MSTP_BIT(ETHERAVB, 8),
+	MSTP_BIT(ETHER, 8),
+	MSTP_BIT(FDP0, 1),
+	MSTP_BIT(FDP1, 1),
+	MSTP_BIT(GPIO0, 9),
+	MSTP_BIT(GPIO1, 9),
+	MSTP_BIT(GPIO2, 9),
+	MSTP_BIT(GPIO3, 9),
+	MSTP_BIT(GPIO4, 9),
+	MSTP_BIT(GPIO5, 9),
+	MSTP_BIT(GPIO6, 9),
+	MSTP_BIT(GPIO7, 9),
+	MSTP_BIT(GPS, 9),
+	MSTP_BIT(GYRO_ADC_IF, 9),
+	MSTP_BIT(HSCIF0, 7),
+	MSTP_BIT(HSCIF1, 7),
+	MSTP_BIT(HSCIF2, 7),
+	MSTP_BIT(HSUSB, 7),
+	MSTP_BIT(H_UDI, 0),
+	MSTP_BIT(I2C0, 9),
+	MSTP_BIT(I2C1, 9),
+	MSTP_BIT(I2C2, 9),
+	MSTP_BIT(I2C3, 9),
+	MSTP_BIT(I2C4, 9),
+	MSTP_BIT(I2C5, 9),
+	MSTP_BIT(IEBUS, 9),
+	MSTP_BIT(IIC0, 3),
+	MSTP_BIT(IIC1, 3),
+	MSTP_BIT(IICDVFS, 9),
+	MSTP_BIT(IMP_X4, 8),
+	MSTP_BIT(IMR_LSX2_0, 8),
+	MSTP_BIT(IMR_LSX2_1, 8),
+	MSTP_BIT(INTC_RT, 0),
+	MSTP_BIT(INTC_SY, 4),		// DO NOT DISABLE
+	MSTP_BIT(IPMMU_SGX, 8),
+	MSTP_BIT(IRDA, 3),
+	MSTP_BIT(IRQC, 4),
+	MSTP_BIT(JPU, 1),
+	MSTP_BIT(LVDS0, 7),
+	MSTP_BIT(MFIS, 2),
+	MSTP_BIT(MLBPLUS, 8),
+	MSTP_BIT(MLM, 9),
+	MSTP_BIT(MMC0, 3),
+	MSTP_BIT(MSIOF0, 0),
+	MSTP_BIT(MSIOF1, 2),
+	MSTP_BIT(MSIOF2, 2),
+	MSTP_BIT(PCIEC, 3),
+	MSTP_BIT(PUBLIC_BOOT_ROM, 5),
+	MSTP_BIT(PWM, 5),
+	MSTP_BIT(QSPI, 9),
+	MSTP_BIT(RCAN0, 9),
+	MSTP_BIT(RCAN1, 9),
+	MSTP_BIT(REMOCON, 9),
+	MSTP_BIT(RGP2, 8),
+	MSTP_BIT(RTDMAC, 0),
+	MSTP_BIT(RWDT, 4),
+	MSTP_BIT(SATA0, 8),
+	MSTP_BIT(SATA1, 8),
+	MSTP_BIT(SCIF0, 7),		// May be used by serial console
+	MSTP_BIT(SCIF1, 7),
+	MSTP_BIT(SCIF2, 7),
+	MSTP_BIT(SCIF3, 7),
+	MSTP_BIT(SCIF4, 7),
+	MSTP_BIT(SCIF5, 7),
+	MSTP_BIT(SCIFA0, 2),
+	MSTP_BIT(SCIFA1, 2),
+	MSTP_BIT(SCIFA2, 2),
+	MSTP_BIT(SCIFA3, 11),
+	MSTP_BIT(SCIFA4, 11),
+	MSTP_BIT(SCIFA5, 11),
+	MSTP_BIT(SCIFB0, 2),
+	MSTP_BIT(SCIFB1, 2),
+	MSTP_BIT(SCIFB2, 2),
+	MSTP_BIT(SCU_ALL, 10),
+	MSTP_BIT(SCU_CTU0x_MIX0, 10),
+	MSTP_BIT(SCU_CTU1x_MIX1, 10),
+	MSTP_BIT(SCU_DVC0, 10),
+	MSTP_BIT(SCU_DVC1, 10),
+	MSTP_BIT(SCU_SRC0, 10),
+	MSTP_BIT(SCU_SRC1, 10),
+	MSTP_BIT(SCU_SRC2, 10),
+	MSTP_BIT(SCU_SRC3, 10),
+	MSTP_BIT(SCU_SRC4, 10),
+	MSTP_BIT(SCU_SRC5, 10),
+	MSTP_BIT(SCU_SRC6, 10),
+	MSTP_BIT(SCU_SRC7, 10),
+	MSTP_BIT(SCU_SRC8, 10),
+	MSTP_BIT(SCU_SRC9, 10),
+	MSTP_BIT(SDHI0, 3),
+	MSTP_BIT(SDHI1, 3),
+	MSTP_BIT(SDHI2, 3),
+	MSTP_BIT(SECURE_BOOT_ROM, 5),
+	MSTP_BIT(SECURE_UPTIME_CLOCK, 4),
+	MSTP_BIT(SIM_CARD_IF, 9),
+	MSTP_BIT(SPEED_PULSE_IF, 9),
+	MSTP_BIT(SPUV, 5),
+	MSTP_BIT(SSI0, 10),
+	MSTP_BIT(SSI1, 10),
+	MSTP_BIT(SSI2, 10),
+	MSTP_BIT(SSI3, 10),
+	MSTP_BIT(SSI4, 10),
+	MSTP_BIT(SSI5, 10),
+	MSTP_BIT(SSI6, 10),
+	MSTP_BIT(SSI7, 10),
+	MSTP_BIT(SSI8, 10),
+	MSTP_BIT(SSI9, 10),
+	MSTP_BIT(SSI_ALL, 10),
+	MSTP_BIT(SSP1, 1),
+	MSTP_BIT(SSUSB, 3),
+	MSTP_BIT(STB, 1),
+	MSTP_BIT(SYS_DMAC0, 2),
+	MSTP_BIT(SYS_DMAC1, 2),
+	MSTP_BIT(THERMAL_SENSOR, 5),
+	MSTP_BIT(TMU0, 1),
+	MSTP_BIT(TMU1, 1),
+	MSTP_BIT(TMU2, 1),
+	MSTP_BIT(TMU3, 1),
+	MSTP_BIT(TPU0, 3),
+	MSTP_BIT(TSIF0, 1),
+	MSTP_BIT(USBDMAC0, 3),
+	MSTP_BIT(USBDMAC1, 3),
+	MSTP_BIT(VCP0, 1),
+	MSTP_BIT(VIN0, 8),
+	MSTP_BIT(VIN1, 8),
+	MSTP_BIT(VIN2, 8),
+	MSTP_BIT(VPC0, 1),
+	MSTP_BIT(VSP1DU0, 1),
+	MSTP_BIT(VSP1DU1, 1),
+	MSTP_BIT(VSPI1, 1),
+};
+
+void r8a7791_show_mstp_clocks(struct seq_file *m)
+{
+	void __iomem *base, *offset;
+	unsigned int i;
+
+	base = ioremap(MSTP_BASE, 4096);
+	if (!base) {
+		pr_err("Cannot ioremap MSTP regs\n");
+		return;
+	}
+
+	offset = base - MSTP_BASE;
+
+	for (i = 0; i < ARRAY_SIZE(mstp_clocks); i++) {
+		u32 sr, rc, sc, mask;
+		sr = ioread32(mstp_clocks[i].sr + offset);
+		mask = mstp_clocks[i].mask;
+		if (sr & mask)
+			continue;
+		rc = ioread32(mstp_clocks[i].rc + offset);
+		sc = ioread32(mstp_clocks[i].sc + offset);
+		if (m)
+			seq_printf(m, "%-20s: %c %c\n", mstp_clocks[i].name,
+				   rc & mask ? '.' : 'R',
+				   sc & mask ? '.' : 'S');
+		else
+			pr_info("%-20s: %c %c\n", mstp_clocks[i].name,
+				rc & mask ? '.' : 'R', sc & mask ? '.' : 'S');
+	}
+
+	iounmap(base);
+}
+
 static void __init r8a7791_disable_mstp_clocks(void)
 {
 	void __iomem *base, *offset, *reg;
@@ -508,6 +703,8 @@ static void __init r8a7791_disable_mstp_clocks(void)
 
 	offset = base - MSTP_BASE;
 
+	r8a7791_show_mstp_clocks(NULL);
+
 	pr_info("Disabling MSTP clocks for the Realtime Core\n");
 	for (i = 0; i < ARRAY_SIZE(rmstp_disable); i++) {
 		pr_info("  0x%08lx: 0x%08x\n", rmstp_disable[i].reg,
@@ -524,6 +721,8 @@ static void __init r8a7791_disable_mstp_clocks(void)
 		iowrite32(ioread32(reg) | smstp_disable[i].bits, reg);
 	}
 
+	r8a7791_show_mstp_clocks(NULL);
+
 	iounmap(base);
 }
 
-- 
1.7.9.5


                 reply	other threads:[~2014-04-15 12:45 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1397565924-23541-3-git-send-email-geert+renesas@glider.be \
    --to=geert+renesas@glider.be \
    --cc=linux-sh@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).