svn commit: r335113 - head/sys/arm64/rockchip/clk
Emmanuel Vadot
manu at FreeBSD.org
Thu Jun 14 06:34:28 UTC 2018
Author: manu
Date: Thu Jun 14 06:34:27 2018
New Revision: 335113
URL: https://svnweb.freebsd.org/changeset/base/335113
Log:
rk3328: Add support for the i2c clocks
Modified:
head/sys/arm64/rockchip/clk/rk3328_cru.c
Modified: head/sys/arm64/rockchip/clk/rk3328_cru.c
==============================================================================
--- head/sys/arm64/rockchip/clk/rk3328_cru.c Thu Jun 14 06:28:09 2018 (r335112)
+++ head/sys/arm64/rockchip/clk/rk3328_cru.c Thu Jun 14 06:34:27 2018 (r335113)
@@ -57,6 +57,10 @@ __FBSDID("$FreeBSD$");
#define PCLK_GPIO1 201
#define PCLK_GPIO2 202
#define PCLK_GPIO3 203
+#define PCLK_I2C0 205
+#define PCLK_I2C1 206
+#define PCLK_I2C2 207
+#define PCLK_I2C3 208
#define HCLK_SDMMC 317
#define HCLK_SDIO 318
#define HCLK_EMMC 319
@@ -80,7 +84,13 @@ static struct rk_cru_gate rk3328_gates[] = {
/* CRU_CLKGATE_CON10 */
CRU_GATE(ACLK_PERI, "aclk_peri", "aclk_peri_pre", 0x228, 0)
+ /* CRU_CLKGATE_CON15*/
+ CRU_GATE(PCLK_I2C0, "pclk_i2c0", "pclk_bus", 0x23C, 10)
+
/* CRU_CLKGATE_CON16 */
+ CRU_GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus", 0x23C, 0)
+ CRU_GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus", 0x23C, 1)
+ CRU_GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus", 0x23C, 2)
CRU_GATE(PCLK_GPIO0, "pclk_gpio0", "pclk_bus", 0x240, 7)
CRU_GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus", 0x240, 8)
CRU_GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus", 0x240, 9)
@@ -863,6 +873,104 @@ static struct rk_clk_composite_def emmc = {
.flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
};
+/* CRU_CLKSEL_CON34 */
+#define SCLK_I2C0 55
+#define SCLK_I2C1 56
+
+static const char *i2c_parents[] = {"cpll", "gpll"};
+
+static struct rk_clk_composite_def i2c0 = {
+ .clkdef = {
+ .id = SCLK_I2C0,
+ .name = "clk_i2c0",
+ .parent_names = i2c_parents,
+ .parent_cnt = nitems(i2c_parents),
+ },
+ .muxdiv_offset = 0x188,
+
+ .mux_shift = 7,
+ .mux_width = 1,
+
+ .div_shift = 0,
+ .div_width = 6,
+
+ /* CRU_CLKGATE_CON2 */
+ .gate_offset = 0x208,
+ .gate_shift = 9,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+static struct rk_clk_composite_def i2c1 = {
+ .clkdef = {
+ .id = SCLK_I2C1,
+ .name = "clk_i2c1",
+ .parent_names = i2c_parents,
+ .parent_cnt = nitems(i2c_parents),
+ },
+ .muxdiv_offset = 0x188,
+
+ .mux_shift = 15,
+ .mux_width = 1,
+
+ .div_shift = 8,
+ .div_width = 6,
+
+ /* CRU_CLKGATE_CON2 */
+ .gate_offset = 0x208,
+ .gate_shift = 10,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+/* CRU_CLKSEL_CON35 */
+#define SCLK_I2C2 57
+#define SCLK_I2C3 58
+
+static struct rk_clk_composite_def i2c2 = {
+ .clkdef = {
+ .id = SCLK_I2C2,
+ .name = "clk_i2c2",
+ .parent_names = i2c_parents,
+ .parent_cnt = nitems(i2c_parents),
+ },
+ .muxdiv_offset = 0x18C,
+
+ .mux_shift = 7,
+ .mux_width = 1,
+
+ .div_shift = 0,
+ .div_width = 6,
+
+ /* CRU_CLKGATE_CON2 */
+ .gate_offset = 0x208,
+ .gate_shift = 11,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+static struct rk_clk_composite_def i2c3 = {
+ .clkdef = {
+ .id = SCLK_I2C3,
+ .name = "clk_i2c3",
+ .parent_names = i2c_parents,
+ .parent_cnt = nitems(i2c_parents),
+ },
+ .muxdiv_offset = 0x18C,
+
+ .mux_shift = 15,
+ .mux_width = 1,
+
+ .div_shift = 8,
+ .div_width = 6,
+
+ /* CRU_CLKGATE_CON2 */
+ .gate_offset = 0x208,
+ .gate_shift = 12,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
static struct rk_clk rk3328_clks[] = {
{
.type = RK_CLK_PLL,
@@ -926,6 +1034,23 @@ static struct rk_clk rk3328_clks[] = {
{
.type = RK_CLK_COMPOSITE,
.clk.composite = &emmc
+ },
+
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &i2c0
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &i2c1
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &i2c2
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &i2c3
},
};
More information about the svn-src-head
mailing list