svn commit: r354087 - head/sys/arm64/rockchip/clk
Emmanuel Vadot
manu at FreeBSD.org
Fri Oct 25 18:08:26 UTC 2019
Author: manu
Date: Fri Oct 25 18:08:25 2019
New Revision: 354087
URL: https://svnweb.freebsd.org/changeset/base/354087
Log:
arm64: rk3399: Add clock and gate for usb3 clocks
MFC after: 1 month
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 Fri Oct 25 17:56:24 2019 (r354086)
+++ head/sys/arm64/rockchip/clk/rk3399_cru.c Fri Oct 25 18:08:25 2019 (r354087)
@@ -54,9 +54,18 @@ __FBSDID("$FreeBSD$");
#define SCLK_USB2PHY0_REF 123
#define SCLK_USB2PHY1_REF 124
+#define SCLK_USB3OTG0_REF 129
+#define SCLK_USB3OTG1_REF 130
+#define SCLK_USB3OTG0_SUSPEND 131
+#define SCLK_USB3OTG1_SUSPEND 132
#define ACLK_EMMC_CORE 241
#define ACLK_EMMC_NOC 242
#define ACLK_EMMC_GRF 243
+#define ACLK_USB3_NOC 245
+#define ACLK_USB3OTG0 246
+#define ACLK_USB3OTG1 247
+#define ACLK_USB3_RKSOC_AXI_PERF 248
+#define ACLK_USB3_GRF 249
#define PCLK_GPIO2 336
#define PCLK_GPIO3 337
#define PCLK_GPIO4 338
@@ -103,6 +112,12 @@ static struct rk_cru_gate rk3399_gates[] = {
CRU_GATE(0, "hclk_perilp1_cpll_src", "cpll", 0x320, 1)
CRU_GATE(0, "hclk_perilp1_gpll_src", "gpll", 0x320, 0)
+ /* CRU_CLKGATE_CON12 */
+ CRU_GATE(SCLK_USB3OTG0_REF, "sclk_usb3otg0_ref", "xin24m", 0x330, 1)
+ CRU_GATE(SCLK_USB3OTG1_REF, "sclk_usb3otg1_ref", "xin24m", 0x330, 2)
+ CRU_GATE(SCLK_USB3OTG0_SUSPEND, "sclk_usb3otg0_suspend", "xin24m", 0x330, 3)
+ CRU_GATE(SCLK_USB3OTG1_SUSPEND, "sclk_usb3otg1_suspend", "xin24m", 0x330, 4)
+
/* CRU_CLKGATE_CON20 */
CRU_GATE(HCLK_HOST0, "hclk_host0", "hclk_perihp", 0x350, 5)
CRU_GATE(HCLK_HOST0_ARB, "hclk_host0_arb", "hclk_perihp", 0x350, 6)
@@ -117,6 +132,13 @@ static struct rk_cru_gate rk3399_gates[] = {
CRU_GATE(PCLK_I2C2, "pclk_rki2c2", "pclk_perilp1", 0x358, 9)
CRU_GATE(PCLK_I2C3, "pclk_rki2c3", "pclk_perilp1", 0x358, 10)
+ /* CRU_CLKGATE_CON30 */
+ CRU_GATE(ACLK_USB3_NOC, "aclk_usb3_noc", "aclk_usb3", 0x378, 0)
+ CRU_GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb3", 0x378, 1)
+ CRU_GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_usb3", 0x378, 2)
+ CRU_GATE(ACLK_USB3_RKSOC_AXI_PERF, "aclk_usb3_rksoc_axi_perf", "aclk_usb3", 0x378, 3)
+ CRU_GATE(ACLK_USB3_GRF, "aclk_usb3_grf", "aclk_usb3", 0x378, 4)
+
/* CRU_CLKGATE_CON31 */
CRU_GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_alive", 0x37c, 3)
CRU_GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_alive", 0x37c, 4)
@@ -1066,6 +1088,32 @@ static struct rk_clk_composite_def pclk_perilp1 = {
.flags = RK_CLK_COMPOSITE_HAVE_GATE,
};
+/* USB3 clock */
+
+#define ACLK_USB3 244
+static const char *aclk_usb3_parents[] = {"cpll", "gpll", "npll", "npll"};
+static struct rk_clk_composite_def aclk_usb3 = {
+ .clkdef = {
+ .id = ACLK_USB3,
+ .name = "aclk_usb3",
+ .parent_names = aclk_usb3_parents,
+ .parent_cnt = nitems(aclk_usb3_parents),
+ },
+ /* CRU_CLKSET_CON39 */
+ .muxdiv_offset = 0x19C,
+ .mux_shift = 6,
+ .mux_width = 2,
+
+ .div_shift = 0,
+ .div_width = 5,
+
+ /* CRU_CLKGATE_CON12 */
+ .gate_offset = 0x330,
+ .gate_shift = 0,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
/*
* i2c
*/
@@ -1210,6 +1258,114 @@ static struct rk_clk_composite_def i2c7 = {
.flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
};
+/* USB3 */
+
+#define SCLK_UPHY0_TCPDPHY_REF 125
+#define SCLK_UPHY0_TCPDCORE 126
+
+/* Missing xin32k exported by rk808 */
+static const char *uphy0_tcpdphy_ref_parents[] = {"xin24m"};
+
+static struct rk_clk_composite_def uphy0_tcpdphy_ref = {
+ .clkdef = {
+ .id = SCLK_UPHY0_TCPDPHY_REF,
+ .name = "uphy0_tcpdphy_ref",
+ .parent_names = uphy0_tcpdphy_ref_parents,
+ .parent_cnt = nitems(uphy0_tcpdphy_ref_parents),
+ },
+ /* CRU_CLKSET_CON64 */
+ .muxdiv_offset = 0x0200,
+ .mux_shift = 15,
+ .mux_width = 1,
+
+ .div_shift = 8,
+ .div_width = 5,
+
+ /* CRU_CLKGATE_CON13 */
+ .gate_offset = 0x0334,
+ .gate_shift = 4,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+/* Missing xin32k exported by rk808 */
+static const char *uphy0_tcpdcore_parents[] = {"xin24m", "xin24m", "cpll", "gpll"};
+
+static struct rk_clk_composite_def uphy0_tcpdcore = {
+ .clkdef = {
+ .id = SCLK_UPHY0_TCPDCORE,
+ .name = "uphy0_tcpdcore",
+ .parent_names = uphy0_tcpdcore_parents,
+ .parent_cnt = nitems(uphy0_tcpdcore_parents),
+ },
+ /* CRU_CLKSET_CON64 */
+ .muxdiv_offset = 0x0200,
+ .mux_shift = 6,
+ .mux_width = 2,
+
+ .div_shift = 0,
+ .div_width = 5,
+
+ /* CRU_CLKGATE_CON13 */
+ .gate_offset = 0x0334,
+ .gate_shift = 5,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+#define SCLK_UPHY1_TCPDPHY_REF 127
+#define SCLK_UPHY1_TCPDCORE 128
+
+/* Missing xin32k exported by rk808 */
+static const char *uphy1_tcpdphy_ref_parents[] = {"xin24m"};
+
+static struct rk_clk_composite_def uphy1_tcpdphy_ref = {
+ .clkdef = {
+ .id = SCLK_UPHY1_TCPDPHY_REF,
+ .name = "uphy1_tcpdphy_ref",
+ .parent_names = uphy1_tcpdphy_ref_parents,
+ .parent_cnt = nitems(uphy1_tcpdphy_ref_parents),
+ },
+ /* CRU_CLKSET_CON65 */
+ .muxdiv_offset = 0x0204,
+ .mux_shift = 15,
+ .mux_width = 1,
+
+ .div_shift = 8,
+ .div_width = 5,
+
+ /* CRU_CLKGATE_CON13 */
+ .gate_offset = 0x0334,
+ .gate_shift = 6,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
+/* Missing xin32k exported by rk808 */
+static const char *uphy1_tcpdcore_parents[] = {"xin24m", "xin24m", "cpll", "gpll"};
+
+static struct rk_clk_composite_def uphy1_tcpdcore = {
+ .clkdef = {
+ .id = SCLK_UPHY1_TCPDCORE,
+ .name = "uphy1_tcpdcore",
+ .parent_names = uphy1_tcpdcore_parents,
+ .parent_cnt = nitems(uphy1_tcpdcore_parents),
+ },
+ /* CRU_CLKSET_CON65 */
+ .muxdiv_offset = 0x0204,
+ .mux_shift = 6,
+ .mux_width = 2,
+
+ .div_shift = 0,
+ .div_width = 5,
+
+ /* CRU_CLKGATE_CON13 */
+ .gate_offset = 0x0334,
+ .gate_shift = 7,
+
+ .flags = RK_CLK_COMPOSITE_HAVE_MUX | RK_CLK_COMPOSITE_HAVE_GATE,
+};
+
/*
* ARM CPU clocks (LITTLE and big)
*/
@@ -1593,6 +1749,10 @@ static struct rk_clk rk3399_clks[] = {
},
{
.type = RK_CLK_COMPOSITE,
+ .clk.composite = &aclk_usb3,
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
.clk.composite = &i2c1,
},
{
@@ -1614,6 +1774,22 @@ static struct rk_clk rk3399_clks[] = {
{
.type = RK_CLK_COMPOSITE,
.clk.composite = &i2c7,
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &uphy0_tcpdphy_ref,
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &uphy0_tcpdcore,
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &uphy1_tcpdphy_ref,
+ },
+ {
+ .type = RK_CLK_COMPOSITE,
+ .clk.composite = &uphy1_tcpdcore,
},
{
More information about the svn-src-all
mailing list