[PATCH] ARM: shmobile: MULTIPLATFORM KZM9D with no clocks prototype hack

Magnus Damm magnus.damm at gmail.com
Tue Jul 9 06:46:16 EDT 2013


From: Magnus Damm <damm at opensource.se>

Ugly prototype hack to allow boot of KZM9D without clock framework
in case of ARCH_SHMOBILE_MULTI. Obviously not for upstream merge,
but may be useful for people working on common clock framework.

Not-even-remotely-signed-off-by: Magnus Damm <damm at opensource.se>
---

 drivers/clocksource/em_sti.c      |   14 ++++++++++----
 drivers/tty/serial/8250/8250_em.c |   13 ++++++++++---
 2 files changed, 20 insertions(+), 7 deletions(-)

--- 0001/drivers/clocksource/em_sti.c
+++ work/drivers/clocksource/em_sti.c	2013-07-09 13:04:04.000000000 +0900
@@ -77,6 +77,7 @@ static int em_sti_enable(struct em_sti_p
 {
 	int ret;
 
+#if 0
 	/* enable clock */
 	ret = clk_enable(p->clk);
 	if (ret) {
@@ -86,7 +87,9 @@ static int em_sti_enable(struct em_sti_p
 
 	/* configure channel, periodic mode and maximum timeout */
 	p->rate = clk_get_rate(p->clk);
-
+#else
+	p->rate = 32768;
+#endif
 	/* reset the counter */
 	em_sti_write(p, STI_SET_H, 0x40000000);
 	em_sti_write(p, STI_SET_L, 0x00000000);
@@ -105,9 +108,10 @@ static void em_sti_disable(struct em_sti
 {
 	/* mask interrupts */
 	em_sti_write(p, STI_INTENCLR, 3);
-
+#if 0
 	/* stop clock */
 	clk_disable(p->clk);
+#endif
 }
 
 static cycle_t em_sti_count(struct em_sti_priv *p)
@@ -348,7 +352,7 @@ static int em_sti_probe(struct platform_
 		ret = -ENXIO;
 		goto err0;
 	}
-
+#if 0
 	/* get hold of clock */
 	p->clk = clk_get(&pdev->dev, "sclk");
 	if (IS_ERR(p->clk)) {
@@ -356,7 +360,7 @@ static int em_sti_probe(struct platform_
 		ret = PTR_ERR(p->clk);
 		goto err1;
 	}
-
+#endif
 	if (request_irq(irq, em_sti_interrupt,
 			IRQF_TIMER | IRQF_IRQPOLL | IRQF_NOBALANCING,
 			dev_name(&pdev->dev), p)) {
@@ -371,7 +375,9 @@ static int em_sti_probe(struct platform_
 	return 0;
 
 err2:
+#if 0
 	clk_put(p->clk);
+#endif
 err1:
 	iounmap(p->base);
 err0:
--- 0001/drivers/tty/serial/8250/8250_em.c
+++ work/drivers/tty/serial/8250/8250_em.c	2013-07-09 13:04:04.000000000 +0900
@@ -108,14 +108,14 @@ static int serial8250_em_probe(struct pl
 		ret = -ENOMEM;
 		goto err0;
 	}
-
+#if 0
 	priv->sclk = clk_get(&pdev->dev, "sclk");
 	if (IS_ERR(priv->sclk)) {
 		dev_err(&pdev->dev, "unable to get clock\n");
 		ret = PTR_ERR(priv->sclk);
 		goto err1;
 	}
-
+#endif
 	memset(&up, 0, sizeof(up));
 	up.port.mapbase = regs->start;
 	up.port.irq = irq->start;
@@ -123,9 +123,12 @@ static int serial8250_em_probe(struct pl
 	up.port.flags = UPF_BOOT_AUTOCONF | UPF_FIXED_PORT | UPF_IOREMAP;
 	up.port.dev = &pdev->dev;
 	up.port.private_data = priv;
-
+#if 0
 	clk_enable(priv->sclk);
 	up.port.uartclk = clk_get_rate(priv->sclk);
+#else
+	up.port.uartclk = 114688000;
+#endif
 
 	up.port.iotype = UPIO_MEM32;
 	up.port.serial_in = serial8250_em_serial_in;
@@ -144,8 +147,10 @@ static int serial8250_em_probe(struct pl
 	return 0;
 
  err2:
+#if 0
 	clk_disable(priv->sclk);
 	clk_put(priv->sclk);
+#endif
  err1:
 	kfree(priv);
  err0:
@@ -157,8 +162,10 @@ static int serial8250_em_remove(struct p
 	struct serial8250_em_priv *priv = platform_get_drvdata(pdev);
 
 	serial8250_unregister_port(priv->line);
+#if 0
 	clk_disable(priv->sclk);
 	clk_put(priv->sclk);
+#endif
 	kfree(priv);
 	return 0;
 }



More information about the linux-arm-kernel mailing list