svn commit: r344626 - head/sys/arm64/rockchip/clk

Emmanuel Vadot manu at FreeBSD.org
Wed Feb 27 17:29:39 UTC 2019


Author: manu
Date: Wed Feb 27 17:29:38 2019
New Revision: 344626
URL: https://svnweb.freebsd.org/changeset/base/344626

Log:
  arm64: rockchip: rk3399_clk: Add sd clock definitions
  
  MFC after:	1 week

Modified:
  head/sys/arm64/rockchip/clk/rk3399_cru.c

Modified: head/sys/arm64/rockchip/clk/rk3399_cru.c
==============================================================================
--- head/sys/arm64/rockchip/clk/rk3399_cru.c	Wed Feb 27 17:00:27 2019	(r344625)
+++ head/sys/arm64/rockchip/clk/rk3399_cru.c	Wed Feb 27 17:29:38 2019	(r344626)
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 #define	PCLK_I2C5		344
 #define	PCLK_I2C6		345
 #define	PCLK_I2C7		346
+#define	HCLK_SDMMC		462
 
 static struct rk_cru_gate rk3399_gates[] = {
 	/* CRU_CLKGATE_CON0 */
@@ -99,6 +100,9 @@ static struct rk_cru_gate rk3399_gates[] = {
 	CRU_GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_alive", 0x37c, 3)
 	CRU_GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_alive", 0x37c, 4)
 	CRU_GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_alive", 0x37c, 5)
+
+	/* CRU_CLKGATE_CON33 */
+	CRU_GATE(HCLK_SDMMC, "hclk_sdmmc", "hclk_sd", 0x384, 8)
 };
 
 
@@ -1385,6 +1389,60 @@ static struct rk_clk_armclk_def armclk_b = {
 	.nrates = nitems(rk3399_armclkb_rates),
 };
 
+/*
+ * sdmmc
+ */
+
+#define	HCLK_SD		461
+
+static const char *hclk_sd_parents[] = {"cpll", "gpll"};
+
+static struct rk_clk_composite_def hclk_sd = {
+	.clkdef = {
+		.id = HCLK_SD,
+		.name = "hclk_sd",
+		.parent_names = hclk_sd_parents,
+		.parent_cnt = nitems(hclk_sd_parents),
+	},
+
+	.muxdiv_offset = 0x134,
+	.mux_shift = 15,
+	.mux_width = 1,
+
+	.div_shift = 8,
+	.div_width = 5,
+
+	.gate_offset = 0x330,
+	.gate_shift = 13,
+
+	.flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+#define	SCLK_SDMMC		76
+
+static const char *sclk_sdmmc_parents[] = {"cpll", "gpll", "npll", "ppll"};
+
+static struct rk_clk_composite_def sclk_sdmmc = {
+	.clkdef = {
+		.id = SCLK_SDMMC,
+		.name = "sclk_sdmmc",
+		.parent_names = sclk_sdmmc_parents,
+		.parent_cnt = nitems(sclk_sdmmc_parents),
+	},
+
+	.muxdiv_offset = 0x140,
+	.mux_shift = 8,
+	.mux_width = 3,
+
+	.div_shift = 0,
+	.div_width = 7,
+
+	.gate_offset = 0x318,
+	.gate_shift = 1,
+
+	.flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
 static struct rk_clk rk3399_clks[] = {
 	{
 		.type = RK3399_CLK_PLL,
@@ -1483,6 +1541,15 @@ static struct rk_clk rk3399_clks[] = {
 	{
 		.type = RK_CLK_ARMCLK,
 		.clk.armclk = &armclk_b,
+	},
+
+	{
+		.type = RK_CLK_COMPOSITE,
+		.clk.composite = &hclk_sd,
+	},
+	{
+		.type = RK_CLK_COMPOSITE,
+		.clk.composite = &sclk_sdmmc,
 	},
 };
 


More information about the svn-src-head mailing list