Module Name: src Committed By: jmcneill Date: Tue Jul 3 09:39:32 UTC 2018
Modified Files: src/sys/arch/arm/samsung: exynos5422_clock.c Log Message: Add USB clocks and missing MMC biu clocks To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/samsung/exynos5422_clock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/samsung/exynos5422_clock.c diff -u src/sys/arch/arm/samsung/exynos5422_clock.c:1.7 src/sys/arch/arm/samsung/exynos5422_clock.c:1.8 --- src/sys/arch/arm/samsung/exynos5422_clock.c:1.7 Mon Jul 2 20:24:55 2018 +++ src/sys/arch/arm/samsung/exynos5422_clock.c Tue Jul 3 09:39:32 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos5422_clock.c,v 1.7 2018/07/02 20:24:55 jmcneill Exp $ */ +/* $NetBSD: exynos5422_clock.c,v 1.8 2018/07/03 09:39:32 jmcneill Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -29,7 +29,7 @@ #include "locators.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: exynos5422_clock.c,v 1.7 2018/07/02 20:24:55 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: exynos5422_clock.c,v 1.8 2018/07/03 09:39:32 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -374,14 +374,17 @@ static const struct clk_funcs exynos5422 #define EXYNOS5422_SRC_PERIC1 0x10254 #define EXYNOS5422_SRC_ISP 0x10270 #define EXYNOS5422_SRC_TOP10 0x10280 -#define EXYNOS5422_SRC_TOP11 0x10280 -#define EXYNOS5422_SRC_TOP12 0x10280 +#define EXYNOS5422_SRC_TOP11 0x10284 +#define EXYNOS5422_SRC_TOP12 0x10288 +#define EXYNOS5422_DIV_TOP0 0x10500 #define EXYNOS5422_DIV_FSYS1 0x1054c #define EXYNOS5422_DIV_PERIC0 0x10558 +#define EXYNOS5422_GATE_BUS_FSYS0 0x10740 #define EXYNOS5422_GATE_TOP_SCLK_FSYS 0x10840 #define EXYNOS5422_GATE_TOP_SCLK_PERIC 0x10850 +#define EXYNOS5422_GATE_IP_FSYS 0x10944 static const char *mout_cpll_p[] = { "fin_pll", "fout_cpll" }; static const char *mout_dpll_p[] = { "fin_pll", "fout_dpll" }; @@ -390,9 +393,19 @@ static const char *mout_spll_p[] = { "fi static const char *mout_ipll_p[] = { "fin_pll", "fout_ipll" }; static const char *mout_epll_p[] = { "fin_pll", "fout_epll" }; static const char *mout_rpll_p[] = { "fin_pll", "fout_rpll" }; +static const char *mout_group1_p[] = + { "sclk_cpll", "sclk_dpll", "sclk_mpp" }; static const char *mout_group2_p[] = { "fin_pll", "sclk_cpll", "sclk_dpll", "sclk_mpll", "sclk_spll", "sclk_ipll", "sclk_epll", "sclk_rpll" }; +static const char *mout_user_aclk200_fsys_p[] = + { "fin_pll", "mout_sw_aclk200_fsys" }; +static const char *mout_user_aclk200_fsys2_p[] = + { "fin_pll", "mout_sw_aclk200_fsys2" }; +static const char *mout_sw_aclk200_fsys_p[] = + { "dout_aclk200_fsys", "sclk_spll" }; +static const char *mout_sw_aclk200_fsys2_p[] = + { "dout_aclk200_fsys2", "sclk_spll" }; static struct exynos_clk exynos5422_clocks[] = { CLK_FIXED("fin_pll", EXYNOS_F_IN_FREQ), @@ -435,6 +448,19 @@ static struct exynos_clk exynos5422_cloc CLK_MUXF("sclk_rpll", "mout_rpll", EXYNOS5422_SRC_TOP6, __BIT(16), CLK_SET_RATE_PARENT, mout_rpll_p), + CLK_MUX("mout_sw_aclk200_fsys", EXYNOS5422_SRC_TOP10, __BIT(24), + mout_sw_aclk200_fsys_p), + CLK_MUX("mout_sw_aclk200_fsys2", EXYNOS5422_SRC_TOP10, __BIT(12), + mout_sw_aclk200_fsys2_p), + CLK_MUX("mout_user_aclk200_fsys", EXYNOS5422_SRC_TOP3, __BIT(28), + mout_user_aclk200_fsys_p), + CLK_MUX("mout_user_aclk200_fsys2", EXYNOS5422_SRC_TOP3, __BIT(12), + mout_user_aclk200_fsys2_p), + CLK_MUX("mout_aclk200_fsys", EXYNOS5422_SRC_TOP0, __BITS(25,24), + mout_group1_p), + CLK_MUX("mout_aclk200_fsys2", EXYNOS5422_SRC_TOP0, __BITS(13,12), + mout_group1_p), + CLK_MUX("mout_mmc0", EXYNOS5422_SRC_FSYS, __BITS(10,8), mout_group2_p), CLK_MUX("mout_mmc1", EXYNOS5422_SRC_FSYS, __BITS(14,12), @@ -450,6 +476,9 @@ static struct exynos_clk exynos5422_cloc CLK_MUX("mout_uart3", EXYNOS5422_SRC_PERIC0, __BITS(18,16), mout_group2_p), + CLK_DIV("dout_aclk200_fsys", "mout_aclk200_fsys", EXYNOS5422_DIV_TOP0, __BITS(30,28)), + CLK_DIV("dout_aclk200_fsys2", "mout_aclk200_fsys2", EXYNOS5422_DIV_TOP0, __BITS(14,12)), + CLK_DIV("dout_mmc0", "mout_mmc0", EXYNOS5422_DIV_FSYS1, __BITS(9,0)), CLK_DIV("dout_mmc1", "mout_mmc1", EXYNOS5422_DIV_FSYS1, __BITS(19,10)), CLK_DIV("dout_mmc2", "mout_mmc2", EXYNOS5422_DIV_FSYS1, __BITS(29,20)), @@ -462,6 +491,11 @@ static struct exynos_clk exynos5422_cloc CLK_DIV("dout_uart3", "mout_uart3", EXYNOS5422_DIV_PERIC0, __BITS(23,20)), + CLK_GATE("aclk200_fsys", "mout_user_aclk200_fsys", EXYNOS5422_GATE_BUS_FSYS0, + __BIT(9), CLK_SET_RATE_PARENT), + CLK_GATE("aclk200_fsys2", "mout_user_aclk200_fsys2", EXYNOS5422_GATE_BUS_FSYS0, + __BIT(10), CLK_SET_RATE_PARENT), + CLK_GATE("sclk_mmc0", "dout_mmc0", EXYNOS5422_GATE_TOP_SCLK_FSYS, __BIT(0), CLK_SET_RATE_PARENT), CLK_GATE("sclk_mmc1", "dout_mmc1", EXYNOS5422_GATE_TOP_SCLK_FSYS, @@ -476,6 +510,19 @@ static struct exynos_clk exynos5422_cloc __BIT(2), CLK_SET_RATE_PARENT), CLK_GATE("sclk_uart3", "dout_uart3", EXYNOS5422_GATE_TOP_SCLK_PERIC, __BIT(3), CLK_SET_RATE_PARENT), + + CLK_GATE("mmc0", "aclk200_fsys2", EXYNOS5422_GATE_IP_FSYS, + __BIT(12), CLK_SET_RATE_PARENT), + CLK_GATE("mmc1", "aclk200_fsys2", EXYNOS5422_GATE_IP_FSYS, + __BIT(13), CLK_SET_RATE_PARENT), + CLK_GATE("mmc2", "aclk200_fsys2", EXYNOS5422_GATE_IP_FSYS, + __BIT(14), CLK_SET_RATE_PARENT), + CLK_GATE("usbh20", "aclk200_fsys", EXYNOS5422_GATE_IP_FSYS, + __BIT(18), CLK_SET_RATE_PARENT), + CLK_GATE("usbd300", "aclk200_fsys", EXYNOS5422_GATE_IP_FSYS, + __BIT(19), CLK_SET_RATE_PARENT), + CLK_GATE("usbd301", "aclk200_fsys", EXYNOS5422_GATE_IP_FSYS, + __BIT(20), CLK_SET_RATE_PARENT), }; static int exynos5422_clock_match(device_t, cfdata_t, void *);