Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> --- arch/arm/mach-zynq/Kconfig | 2 ++ arch/arm/mach-zynq/clk-zynq7000.c | 25 ++++++++++++++++++++++--- arch/arm/mach-zynq/zynq.c | 1 + 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig index cec749a..a4ce949 100644 --- a/arch/arm/mach-zynq/Kconfig +++ b/arch/arm/mach-zynq/Kconfig @@ -14,6 +14,8 @@ config ARCH_ZYNQ7000 bool "Zynq-7000" select CPU_V7 select DRIVER_SERIAL_CADENCE + select CLKDEV_LOOKUP + select COMMON_CLK endchoice diff --git a/arch/arm/mach-zynq/clk-zynq7000.c b/arch/arm/mach-zynq/clk-zynq7000.c index 0d3c3a8..74f08ad 100644 --- a/arch/arm/mach-zynq/clk-zynq7000.c +++ b/arch/arm/mach-zynq/clk-zynq7000.c @@ -335,7 +335,7 @@ static struct clk *zynq_cpu_subclk(const char *name, return &subclk->clk; } -static int zynq_init_clks(void) +static int zynq_clock_probe(struct device_d *dev) { void __iomem *slcr_base = (void __iomem *) ZYNQ_SLCR_BASE; unsigned long ps_clk_rate = 33333330; @@ -365,9 +365,28 @@ static int zynq_init_clks(void) clks[cpu_1x] = zynq_cpu_subclk("cpu_1x", CPU_SUBCLK_1X, slcr_base + 0x120, slcr_base + 0x1C4); - clk_register_clkdev(clks[cpu_3x2x], NULL, "smp_twd0"); + clk_register_clkdev(clks[cpu_3x2x], NULL, "arm_smp_twd"); clk_register_clkdev(clks[uart0], NULL, "zynq_serial0"); clk_register_clkdev(clks[uart1], NULL, "zynq_serial1"); return 0; } -postcore_initcall(zynq_init_clks); + +static __maybe_unused struct of_device_id zynq_clock_dt_ids[] = { + { + .compatible = "xlnx,zynq-clock", + }, { + /* sentinel */ + } +}; + +static struct driver_d zynq_clock_driver = { + .probe = zynq_clock_probe, + .name = "zynq-clock", + .of_compatible = DRV_OF_COMPAT(zynq_clock_dt_ids), +}; + +static int zynq_clock_init(void) +{ + return platform_driver_register(&zynq_clock_driver); +} +postcore_initcall(zynq_clock_init); diff --git a/arch/arm/mach-zynq/zynq.c b/arch/arm/mach-zynq/zynq.c index 2043655..33fc1ab 100644 --- a/arch/arm/mach-zynq/zynq.c +++ b/arch/arm/mach-zynq/zynq.c @@ -20,6 +20,7 @@ static int zynq_init(void) { + add_generic_device("zynq-clock", 0, NULL, ZYNQ_SLCR_BASE, 0x4000, IORESOURCE_MEM, NULL); return 0; } postcore_initcall(zynq_init); -- 1.8.2.rc2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox