浏览代码

ARM: shmobile: r8a7778: implement SoC and board CCF support

Disables the legacy clock framework and passes the mode bits to the CPG
driver if CCF is enabled.

Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Ulrich Hecht 10 年之前
父节点
当前提交
43cbec8577
共有 2 个文件被更改,包括 21 次插入0 次删除
  1. 2 0
      arch/arm/mach-shmobile/board-bockw-reference.c
  2. 19 0
      arch/arm/mach-shmobile/setup-r8a7778.c

+ 2 - 0
arch/arm/mach-shmobile/board-bockw-reference.c

@@ -36,7 +36,9 @@ static void __init bockw_init(void)
 	void __iomem *fpga;
 	void __iomem *fpga;
 	void __iomem *pfc;
 	void __iomem *pfc;
 
 
+#ifndef CONFIG_COMMON_CLK
 	r8a7778_clock_init();
 	r8a7778_clock_init();
+#endif
 	r8a7778_init_irq_extpin_dt(1);
 	r8a7778_init_irq_extpin_dt(1);
 	r8a7778_add_dt_devices();
 	r8a7778_add_dt_devices();
 
 

+ 19 - 0
arch/arm/mach-shmobile/setup-r8a7778.c

@@ -15,6 +15,7 @@
  * GNU General Public License for more details.
  * GNU General Public License for more details.
  */
  */
 
 
+#include <linux/clk/shmobile.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/irqchip/arm-gic.h>
 #include <linux/irqchip/arm-gic.h>
@@ -41,6 +42,21 @@
 #include "irqs.h"
 #include "irqs.h"
 #include "r8a7778.h"
 #include "r8a7778.h"
 
 
+#define MODEMR 0xffcc0020
+
+#ifdef CONFIG_COMMON_CLK
+static void __init r8a7778_timer_init(void)
+{
+	u32 mode;
+	void __iomem *modemr = ioremap_nocache(MODEMR, 4);
+
+	BUG_ON(!modemr);
+	mode = ioread32(modemr);
+	iounmap(modemr);
+	r8a7778_clocks_init(mode);
+}
+#endif
+
 /* SCIF */
 /* SCIF */
 #define R8A7778_SCIF(index, baseaddr, irq)			\
 #define R8A7778_SCIF(index, baseaddr, irq)			\
 static struct plat_sci_port scif##index##_platform_data = {	\
 static struct plat_sci_port scif##index##_platform_data = {	\
@@ -608,6 +624,9 @@ DT_MACHINE_START(R8A7778_DT, "Generic R8A7778 (Flattened Device Tree)")
 	.init_early	= shmobile_init_delay,
 	.init_early	= shmobile_init_delay,
 	.init_irq	= r8a7778_init_irq_dt,
 	.init_irq	= r8a7778_init_irq_dt,
 	.init_late	= shmobile_init_late,
 	.init_late	= shmobile_init_late,
+#ifdef CONFIG_COMMON_CLK
+	.init_time	= r8a7778_timer_init,
+#endif
 	.dt_compat	= r8a7778_compat_dt,
 	.dt_compat	= r8a7778_compat_dt,
 MACHINE_END
 MACHINE_END