From nobody Thu Sep 21 16:00:19 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Rs0VD0X88z4tcgX; Thu, 21 Sep 2023 16:00:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Rs0VC6V7Dz4Rg0; Thu, 21 Sep 2023 16:00:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695312020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Yj80QVjCnN6sN3hFl+UFFzPHP+PFWG3wi+cfGme2Kho=; b=JUX8MnmPp8UAs0Ob0MwaYWILifG7E7FhGqZMg6CS/UbGvF55lyiRs329f5AqoOYy6cACnB W82haEpP2nWDAvgO80uY7gOu/VYvyhKg++0lamh52CKdFjGunZKC7CnybKqBta704KBKFh hB2LkLjuvjTnxbtso9yjXoWfD/uvNeQqHDveFf5S/eDzSR5XjmD8CnR5hW9kqoEEX7SruM kmFRMquS+bxzDppciNZrL5j6k5EUJk87kNEadYaWCum4jmP/qAEZiHQYc8cWQJHH6ZcHXp svTsw/cM/cOsxYsNwGd7DrdpPVKHTI48o+iKbKs2sNOWwOts1sT/3iKdsQTLDA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1695312020; a=rsa-sha256; cv=none; b=mbWBuKvbFalKtW/81cEIUZECXmEvjOVQQm09zotYrYNLUFbb6yxRvUwhfakSzaQUW2cLqY lsPFDN2eX1wEjVKQOsSzwXYkUuQeqapavW7xicR5KIjIPkVTIwnIxrttwRJT6ClQHQ4EJI X9nLduB3/DHrs0woWwNq9i4PC6YOHeSrJGCzJX9/lnhTlq5BnxjmgPg6v3z0Cp5A7Bhyfa jBhXZ69ZRh9FbWzXbuN0A8sHw2dr76NCYuo4xQGhf22ddLxBMWSC/g/qPE9jkSgCkT7lXc RFykZRGuUJzQmNRnMfJHtq1pGEo8oOl7F8UhiCN75lQ8VOU3cE7U94jwcvH2KA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695312020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Yj80QVjCnN6sN3hFl+UFFzPHP+PFWG3wi+cfGme2Kho=; b=G342vF5Z+Ps5T23klMy8BXM+8TtziSP54psjxL9IsMPKIqZxSbsDUTHmt2JhnG0FJOqrkM abCUjwNhe+iU93hHsVuVV8JRaTqvsje2egaWPzciBMbSZj/EMJuHCd5eDH9jOy6ZOeQwwr bCqaPnoOvxB9ALQRCmisFDI2OBqQlY5wETIs/QdyDG/k5iDxLiSqlMd0JNBhjPFxM33hBQ 4kIGe66k2MO/zLIoWPECAI4ytL0oOD3KmQtItngtGc0qV+sezJz8bG+yM0mmPu5JlaDRmy Nb0pQWFKTRYus9VyluXzXFZmyks9NjhgxijmdBspIVWkcassDdR90TGPVgGYeQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Rs0VC5YYjzlTN; Thu, 21 Sep 2023 16:00:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 38LG0JUg050776; Thu, 21 Sep 2023 16:00:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38LG0JfQ050773; Thu, 21 Sep 2023 16:00:19 GMT (envelope-from git) Date: Thu, 21 Sep 2023 16:00:19 GMT Message-Id: <202309211600.38LG0JfQ050773@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 829b06ad8f6f - main - arm64: rockchip: rk3399_pmucru: Finish exporting all clocks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 829b06ad8f6f3317777c2395a090a898fdcd550c Auto-Submitted: auto-generated The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=829b06ad8f6f3317777c2395a090a898fdcd550c commit 829b06ad8f6f3317777c2395a090a898fdcd550c Author: Emmanuel Vadot AuthorDate: 2023-09-21 14:49:00 +0000 Commit: Emmanuel Vadot CommitDate: 2023-09-21 15:49:33 +0000 arm64: rockchip: rk3399_pmucru: Finish exporting all clocks - All used clocks are now exported. - Use the macros from rk_cru.h so code is similar to other rk clock drivers. --- sys/arm64/rockchip/clk/rk3399_pmucru.c | 211 +++++++++++++++++---------------- 1 file changed, 110 insertions(+), 101 deletions(-) diff --git a/sys/arm64/rockchip/clk/rk3399_pmucru.c b/sys/arm64/rockchip/clk/rk3399_pmucru.c index 9af438254a02..276905ae4561 100644 --- a/sys/arm64/rockchip/clk/rk3399_pmucru.c +++ b/sys/arm64/rockchip/clk/rk3399_pmucru.c @@ -46,35 +46,96 @@ #include +#define CRU_CLKSEL_CON(x) (0x80 + (x) * 0x4) #define CRU_CLKGATE_CON(x) (0x100 + (x) * 0x4) -/* GATES */ - +#define PLL_PPLL 1 +#define SCLK_32K_SUSPEND_PMU 2 +#define SCLK_SPI3_PMU 3 +#define SCLK_TIMER12_PMU 4 +#define SCLK_TIMER13_PMU 5 +#define SCLK_UART4_PMU 6 +#define SCLK_PVTM_PMU 7 +#define SCLK_WIFI_PMU 8 +#define SCLK_I2C0_PMU 9 +#define SCLK_I2C4_PMU 10 +#define SCLK_I2C8_PMU 11 + +#define PCLK_PMU_SRC 19 #define PCLK_PMU 20 +#define PCLK_PMUGRF_PMU 21 +#define PCLK_INTMEM1_PMU 22 #define PCLK_GPIO0_PMU 23 #define PCLK_GPIO1_PMU 24 +#define PCLK_SGRF_PMU 25 +#define PCLK_NOC_PMU 26 #define PCLK_I2C0_PMU 27 #define PCLK_I2C4_PMU 28 #define PCLK_I2C8_PMU 29 #define PCLK_RKPWM_PMU 30 +#define PCLK_SPI3_PMU 31 +#define PCLK_TIMER_PMU 32 +#define PCLK_MAILBOX_PMU 33 +#define PCLK_UART4_PMU 34 +#define PCLK_WDT_M0_PMU 35 + +#define FCLK_CM0S_SRC_PMU 44 +#define FCLK_CM0S_PMU 45 +#define SCLK_CM0S_PMU 46 +#define HCLK_CM0S_PMU 47 +#define DCLK_CM0S_PMU 48 +#define PCLK_INTR_ARB_PMU 49 +#define HCLK_NOC_PMU 50 +/* GATES */ static struct rk_cru_gate rk3399_pmu_gates[] = { + /* PMUCRU_CLKGATE_CON0 */ + /* 0 Reserved */ + /* 1 fclk_cm0s_pmu_ppll_src_en */ + GATE(SCLK_SPI3_PMU, "clk_spi3_pmu", "clk_spi3_c", 0, 2), + GATE(SCLK_TIMER12_PMU, "clk_timer0_pmu", "clk_timer_sel", 0, 3), + GATE(SCLK_TIMER13_PMU, "clk_timer1_pmu", "clk_timer_sel", 0, 4), + GATE(SCLK_UART4_PMU, "clk_uart4_pmu", "clk_uart4_sel", 0, 5), + GATE(0, "clk_uart4_frac", "clk_uart4_frac_frac", 0, 6), + /* 7 clk_pvtm_pmu_en */ + GATE(SCLK_WIFI_PMU, "clk_wifi_pmu", "clk_wifi_sel", 0, 8), + GATE(SCLK_I2C0_PMU, "clk_i2c0_src", "clk_i2c0_div", 0, 9), + GATE(SCLK_I2C4_PMU, "clk_i2c4_src", "clk_i2c4_div", 0, 10), + GATE(SCLK_I2C8_PMU, "clk_i2c8_src", "clk_i2c8_div", 0, 11), + /* 12:15 Reserved */ + /* PMUCRU_CLKGATE_CON1 */ GATE(PCLK_PMU, "pclk_pmu", "pclk_pmu_src", 1, 0), + /* 1 pclk_pmugrf_en */ + /* 2 pclk_intmem1_en */ GATE(PCLK_GPIO0_PMU, "pclk_gpio0_pmu", "pclk_pmu_src", 1, 3), GATE(PCLK_GPIO1_PMU, "pclk_gpio1_pmu", "pclk_pmu_src", 1, 4), + /* 5 pclk_sgrf_en */ + /* 6 pclk_noc_pmu_en */ GATE(PCLK_I2C0_PMU, "pclk_i2c0_pmu", "pclk_pmu_src", 1, 7), GATE(PCLK_I2C4_PMU, "pclk_i2c4_pmu", "pclk_pmu_src", 1, 8), GATE(PCLK_I2C8_PMU, "pclk_i2c8_pmu", "pclk_pmu_src", 1, 9), - GATE(PCLK_RKPWM_PMU, "pclk_rkpwm_pmu", "pclk_pmu_src", 1, 10) + GATE(PCLK_RKPWM_PMU, "pclk_rkpwm_pmu", "pclk_pmu_src", 1, 10), + GATE(PCLK_SPI3_PMU, "pclk_spi3_pmu", "pclk_pmu_src", 1, 11), + GATE(PCLK_TIMER_PMU, "pclk_timer_pmu", "pclk_pmu_src", 1, 12), + GATE(PCLK_MAILBOX_PMU, "pclk_mailbox_pmu", "pclk_pmu_src", 1, 13), + /* 14 pclk_uartm0_en */ + /* 15 pclk_wdt_m0_pmu_en */ + + /* PMUCRU_CLKGATE_CON2 */ + /* 0 fclk_cm0s_en */ + /* 1 sclk_cm0s_en */ + /* 2 hclk_cm0s_en */ + /* 3 dclk_cm0s_en */ + /* 4 Reserved */ + /* 5 hclk_noc_pmu_en */ + /* 6:15 Reserved */ }; /* * PLLs */ -#define PLL_PPLL 1 - static struct rk_clk_pll_rate rk3399_pll_rates[] = { { .freq = 2208000000, @@ -695,124 +756,72 @@ static struct rk_clk_pll_rate rk3399_pll_rates[] = { {}, }; -static const char *pll_parents[] = {"xin24m"}; +PLIST(xin24m_p) = {"xin24m"}; +PLIST(xin24m_xin32k_p) = {"xin24m", "xin32k"}; +PLIST(xin24m_ppll_p) = {"xin24m", "ppll"}; +PLIST(uart4_p) = {"clk_uart4_c", "clk_uart4_frac", "xin24m"}; +PLIST(wifi_p) = {"clk_wifi_c", "clk_wifi_frac"}; static struct rk_clk_pll_def ppll = { .clkdef = { .id = PLL_PPLL, .name = "ppll", - .parent_names = pll_parents, - .parent_cnt = nitems(pll_parents), + .parent_names = xin24m_p, + .parent_cnt = nitems(xin24m_p), }, .base_offset = 0x00, .rates = rk3399_pll_rates, }; -static const char *pmu_parents[] = {"ppll"}; - -#define PCLK_PMU_SRC 19 - -static struct rk_clk_composite_def pclk_pmu_src = { - .clkdef = { - .id = PCLK_PMU_SRC, - .name = "pclk_pmu_src", - .parent_names = pmu_parents, - .parent_cnt = nitems(pmu_parents), - }, - /* PMUCRU_CLKSEL_CON0 */ - .muxdiv_offset = 0x80, - - .div_shift = 0, - .div_width = 5, -}; - -#define SCLK_I2C0_PMU 9 -#define SCLK_I2C4_PMU 10 -#define SCLK_I2C8_PMU 11 +static struct rk_clk rk3399_pmu_clks[] = { + /* Linked clocks */ + LINK("xin32k"), -static struct rk_clk_composite_def i2c0 = { - .clkdef = { - .id = SCLK_I2C0_PMU, - .name = "clk_i2c0_pmu", - .parent_names = pmu_parents, - .parent_cnt = nitems(pmu_parents), + { + .type = RK3399_CLK_PLL, + .clk.pll = &ppll }, - /* PMUCRU_CLKSEL_CON2 */ - .muxdiv_offset = 0x88, - - .div_shift = 0, - .div_width = 7, - - /* PMUCRU_CLKGATE_CON0 */ - .gate_offset = 0x100, - .gate_shift = 9, - .flags = RK_CLK_COMPOSITE_HAVE_GATE, -}; + /* PMUCRU_CLKSEL_CON0 */ + CDIV(PCLK_PMU_SRC, "pclk_pmu_src", "ppll", 0, 0, 0, 5), + /* 5:7 Reserved */ + /* 8:12 cm0s_div */ + /* 13:14 Reserved */ + /* 15 cm0s_clk_pll_sel */ + + /* PMUCRU_CLKSEL_CON1 */ + COMP(0, "clk_spi3_c", xin24m_ppll_p, 0, 1, 0, 7, 7, 1), + COMP(0, "clk_wifi_c", xin24m_ppll_p, 0, 1, 8, 5, 13, 1), + MUX(0, "clk_wifi_sel", wifi_p, 0, 1, 14, 1), + MUX(0, "clk_timer_sel", xin24m_xin32k_p, 0, 1, 15, 1), -static struct rk_clk_composite_def i2c8 = { - .clkdef = { - .id = SCLK_I2C8_PMU, - .name = "clk_i2c8_pmu", - .parent_names = pmu_parents, - .parent_cnt = nitems(pmu_parents), - }, /* PMUCRU_CLKSEL_CON2 */ - .muxdiv_offset = 0x88, - - .div_shift = 8, - .div_width = 7, - - /* PMUCRU_CLKGATE_CON0 */ - .gate_offset = 0x100, - .gate_shift = 11, - - .flags = RK_CLK_COMPOSITE_HAVE_GATE, -}; + CDIV(0, "clk_i2c0_div", "ppll", 0, 2, 0, 7), + /* 7 Reserved */ + CDIV(0, "clk_i2c8_div", "ppll", 0, 2, 8, 7), + /* 15 Reserved */ -static struct rk_clk_composite_def i2c4 = { - .clkdef = { - .id = SCLK_I2C4_PMU, - .name = "clk_i2c4_pmu", - .parent_names = pmu_parents, - .parent_cnt = nitems(pmu_parents), - }, /* PMUCRU_CLKSEL_CON3 */ - .muxdiv_offset = 0x8c, + CDIV(0, "clk_i2c4_div", "ppll", 0, 3, 0, 7), + /* 7:15 Reserved */ - .div_shift = 0, - .div_width = 7, + /* PMUCRU_CLKSEL_CON4 */ + /* 0:9 clk_32k_suspend_div */ + /* 10:14 Reserved */ + /* 15 clk_32k_suspend_sel */ - /* PMUCRU_CLKGATE_CON0 */ - .gate_offset = 0x100, - .gate_shift = 10, + /* PMUCRU_CLKSEL_CON5 */ + COMP(0, "clk_uart4_c", xin24m_ppll_p, 0, 5, 0, 7, 10, 1), + /* 7 Reserved */ + MUX(0, "clk_uart4_sel", uart4_p, 0, 5, 8, 2), + /* 11:15 Reserved */ - .flags = RK_CLK_COMPOSITE_HAVE_GATE, -}; + /* PMUCRU_CLKFRAC_CON0 / PMUCRU_CLKSEL_CON6 */ + FRACT(0, "clk_uart4_frac_frac", "clk_uart4_sel", 0, 6), -static struct rk_clk rk3399_pmu_clks[] = { - { - .type = RK3399_CLK_PLL, - .clk.pll = &ppll - }, - - { - .type = RK_CLK_COMPOSITE, - .clk.composite = &pclk_pmu_src - }, - { - .type = RK_CLK_COMPOSITE, - .clk.composite = &i2c0 - }, - { - .type = RK_CLK_COMPOSITE, - .clk.composite = &i2c4 - }, - { - .type = RK_CLK_COMPOSITE, - .clk.composite = &i2c8 - }, + /* PMUCRU_CLKFRAC_CON1 / PMUCRU_CLKSEL_CON7 */ + FRACT(0, "clk_wifi_frac", "clk_wifi_c", 0, 7), }; static int