All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Brandt <chris.brandt@renesas.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>,
	Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
	Simon Horman <horms+renesas@verge.net.au>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-clk@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	Chris Brandt <chris.brandt@renesas.com>
Subject: [PATCH v3] clk: renesas: rz: Select EXTAL vs USB clock
Date: Thu,  1 Sep 2016 09:10:36 -0400	[thread overview]
Message-ID: <20160901131036.17241-1-chris.brandt@renesas.com> (raw)
In-Reply-To: <20160830031358.19468-1-chris.brandt@renesas.com>

Check the MD_CLK pin to determine the current clock mode in order to set
the pll clock parent correctly.

Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
---
v3:
* move reading GPIO port into separate function
v2:
* Switched to reading MD_CLK pin to determine mode
---
 drivers/clk/renesas/clk-rz.c | 31 ++++++++++++++++++++++++++++---
 1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/renesas/clk-rz.c b/drivers/clk/renesas/clk-rz.c
index f6312c6..29a8638 100644
--- a/drivers/clk/renesas/clk-rz.c
+++ b/drivers/clk/renesas/clk-rz.c
@@ -25,10 +25,34 @@ struct rz_cpg {
 #define CPG_FRQCR	0x10
 #define CPG_FRQCR2	0x14
 
+#define PPR0 0xFCFE3200
+#define PIBC0 0xFCFE7000
+
+#define MD_BOOT0(x) ((x >> 0) & 1)	/* P0_0 */
+#define MD_BOOT1(x) ((x >> 1) & 1)	/* P0_1 */
+#define MD_CLK(x)   ((x >> 2) & 1)	/* P0_2 */
+#define MD_CLKS(x)  ((x >> 3) & 1)	/* P0_3 */
+
 /* -----------------------------------------------------------------------------
  * Initialization
  */
 
+u16 rz_cpg_read_mode_pins(void)
+{
+	void __iomem *ppr0, *pibc0;
+	u16 modes;
+
+	ppr0 = ioremap_nocache(PPR0, 2);
+	pibc0 = ioremap_nocache(PIBC0, 2);
+	BUG_ON(!ppr0 || !pibc0);
+	iowrite16(4, pibc0);	/* enable input buffer */
+	modes = ioread16(ppr0);
+	iounmap(ppr0);
+	iounmap(pibc0);
+
+	return modes;
+}
+
 static struct clk * __init
 rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *name)
 {
@@ -37,10 +61,11 @@ rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *na
 	static const unsigned frqcr_tab[4] = { 3, 2, 0, 1 };
 
 	if (strcmp(name, "pll") == 0) {
-		/* FIXME: cpg_mode should be read from GPIO. But no GPIO support yet */
-		unsigned cpg_mode = 0; /* hardcoded to EXTAL for now */
-		const char *parent_name = of_clk_get_parent_name(np, cpg_mode);
+		unsigned int cpg_mode;
+		const char *parent_name;
 
+		cpg_mode = MD_CLK(rz_cpg_read_mode_pins());
+		parent_name = of_clk_get_parent_name(np, cpg_mode);
 		mult = cpg_mode ? (32 / 4) : 30;
 
 		return clk_register_fixed_factor(NULL, name, parent_name, 0, mult, 1);
-- 
2.9.2

  parent reply	other threads:[~2016-09-01 13:12 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-25 19:05 [PATCH] clk: renesas: rz: Select EXTAL vs USB clock Chris Brandt
2016-08-29 13:18 ` Geert Uytterhoeven
2016-08-29 14:53   ` Chris Brandt
2016-08-29 14:53     ` Chris Brandt
2016-08-29 15:13     ` Geert Uytterhoeven
2016-08-29 15:32       ` Chris Brandt
2016-08-29 15:32         ` Chris Brandt
2016-08-29 15:41         ` Geert Uytterhoeven
2016-08-29 16:04           ` Chris Brandt
2016-08-29 16:04             ` Chris Brandt
2016-08-29 18:39 ` Sergei Shtylyov
2016-08-29 18:41   ` Geert Uytterhoeven
2016-08-30  3:13 ` [PATCH v2] " Chris Brandt
2016-08-30  7:04   ` Simon Horman
2016-08-30  7:06     ` Simon Horman
2016-08-30  7:23   ` Geert Uytterhoeven
2016-08-30 13:31     ` Chris Brandt
2016-08-30 13:31       ` Chris Brandt
2016-09-01 13:10   ` Chris Brandt [this message]
2016-09-01 19:21     ` [PATCH v3] " Geert Uytterhoeven
2016-09-01 19:41       ` Chris Brandt
2016-09-01 19:41         ` Chris Brandt
2016-09-02  2:32     ` [PATCH v4] " Chris Brandt
2016-09-02  8:19       ` Geert Uytterhoeven

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=20160901131036.17241-1-chris.brandt@renesas.com \
    --to=chris.brandt@renesas.com \
    --cc=geert@linux-m68k.org \
    --cc=horms+renesas@verge.net.au \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@codeaurora.org \
    --cc=sergei.shtylyov@cogentembedded.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.