Basic clock, reset & device tree support for StarFive JH7110 RISC-V SoC
Subsystems (10)
Hal Feng
maintainerv7 cover Basic clock, reset & device tree support for StarFive JH7110 RISC-V SoC
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
You can simply review or test the patches at the link [2]. Hope this series will be merged soon.
[1]: https://lore.kernel.org/all/[email protected]/
[2]: https://github.com/hal-feng/linux/commits/visionfive2-minimal
Changes since v6:
- Rebased on v6.3-rc4.
- Made the dt-bindings patches (patch 11, 12) be the first two patches. Merged all maintainers changes into the first dt-bindings patch.
Patch 13:
- Moved the reset related functions from clk-starfive-jh71x0.c to clk-starfive-jh7110-sys.c.
- Moved the declaration of jh7110_reset_controller_register() to a new header clk-starfive-jh7110.h.
- Dropped the include <linux/clk.h> and added <linux/auxiliary_bus.h>.
- Included "clk-starfive-jh7110.h" instead of "clk-starfive-jh71x0.h".
- Set the qspi clock flags as 0.
- Set the flag of clock gmac?_gtxc as 0 and added CLK_SET_RATE_NO_REPARENT flag for the clock gmac1_tx.
- Removed the PLL clock return in jh7110_sysclk_get().
- Used "else" instead of "else if (pidx >= JH7110_SYSCLK_PLL0_OUT && \
pidx <= JH7110_SYSCLK_PLL2_OUT)".
- Renamed the reset aux device name from "reset-sys" to "rst-sys" avoiding exceeding the maximum length of auxiliary_device_id name.
Patch 14:
- Dropped the include <linux/clk.h>
- Included "clk-starfive-jh7110.h" instead of "clk-starfive-jh71x0.h".
- Added CLK_SET_RATE_NO_REPARENT flag for the clock gmac0_tx.
- Renamed the reset aux device name from "reset-aon" to "rst-aon". Patch 15:
- Changed the auxiliary_device_id name from "clk_starfive_jh71x0.reset-*" to "clk_starfive_jh7110_sys.rst-*".
v6: https://lore.kernel.org/all/[email protected]/
Changes since v5:
- Rebased on v6.3-rc3.
Patch 1:
- Set obj-y for starfive/ in drivers/clk/Makefile.
Patch 2:
- Sorted the StarFive entries alphabetically in MAINTAINERS. Patch 3:
- Fixed the build error which caused by renaming the header without changing the users of the header.
Patch 4:
- Fixed the errors reported by checkpatch.pl.
Patch 6:
- Set obj-y for starfive/ in drivers/reset/Makefile. Patch 13:
- Set the timer clock flags as 0.
v5: https://lore.kernel.org/all/[email protected]/
Changes since v4:
- Rebased on v6.3-rc1.
- Added two patches to replace SOC_STARFIVE with ARCH_STARFIVE.
- Added Tested-by tag for Tommaso.
Patch 9:
- Set GMAC1 related clocks as optional inputs.
- Dropped PLL clock definitions.
Patch 10:
- Set GMAC0 related clocks and RTC oscillator as optional inputs.
- Sorted the clocks.
Patch 11:
- Replaced SOC_STARFIVE with ARCH_STARFIVE.
- Added macros for PLL clocks and adjusted the code properly to make it easier to add the PLL clock driver later.
- Updated the clock flags.
Patch 12:
- Built as a module by default.
- Sorted the clocks.
- Updated the clock flags.
Patch 13:
- Replaced "default CLK_STARFIVE_JH7110_SYS" with "default ARCH_STARFIVE".
- Renamed "reset_info" struct to "jh7110_reset_info" and moved its definition into the driver.
- Put jh7110_sys_info and jh7110_sys_info before the probe(). Patch 17:
- Dropped "_zicsr" in ISA.
- Sorted the external clocks alphabetically.
- Put the ccache node before the plic node according to their addresses.
- Sorted the clock inputs of the aoncrg node.
Patch 19:
- Replaced SOC_STARFIVE with ARCH_STARFIVE.
- Sorted the nodes alphabetically.
v4: https://lore.kernel.org/all/[email protected]/
Changes since v3:
- Suggested by Conor, Merged clock & reset series and DT series together so that they could go via the same tree as the dt-binding headers are required by both driver & devicetree.
- Rebased on tag v6.2.
[Clock & reset]
Patch 2:
- Split patch 2 into two. One for renaming file and one for renaming variables. (by Conor)
Patch 4:
- Split patch 4 into two. One for code movement and one for extraction. (by Conor)
Patch 5 & 9 & 10 & 11:
- Fixed the issues reported by kernel test robot.
Patch 9:
- Set (&priv->base) as driver data instead of (priv->base).
- Set the frequency of clock PLL0 as 1000MHz for Synchronizing with the lastest u-boot setting from StarFive. (by Emil)
- Used devm_kzalloc() instead of kzalloc() when registering aux device. Patch 10:
- Set (&priv->base) as driver data instead of (priv->base). Patch 11:
- Used (*base) to get the register base address instead of (base).
[Device tree]
- Dropped patch 1, 4, 5 because they were accepted.
- Added a new patch to add SiFive S7 compatible. (by Conor)
- Added a new patch to add JH7110 pin function definitions. Patch 6:
- Changed the label "S76_0" to "S7_0" and used compatible "sifive,s7" for core 0.
- Updated ISA of each cores. (by Conor)
- Made the node names generic. (by Krzysztof)
- Added clock-output-names for all external clocks.
- Added i2c0~6 nodes.
- Changed the node name "gpio" to "pinctrl". Changed the label "gpio" and "gpioa" to "sysgpio" and "aongpio". (by Conor)
Patch 7:
- Separated the long lines into more lines in Makefile. (by Conor)
- Renamed jh7110-starfive-visionfive-2-va.dts and jh7110-starfive-visionfive-2-vb.dts to jh7110-starfive-visionfive-2-v1.2a.dts and jh7110-starfive-visionfive-2-v1.3b.dts.
Changed the model and compatible to match v1.2A and v1.3B which are printed on the silkscreen of VisionFive 2 board. (by Emil)
- Configured pins for i2c0/2/5/6 and enabled them.
clock & reset v3: https://lore.kernel.org/all/[email protected]/
DT v3: https://lore.kernel.org/all/[email protected]/
Changes since v2:
[Clock & reset]
- Rebased on tag v6.1.
- Added "JH71X0" to the StarFive driver headers in MAINTAINERS.
- Removed Co-developed-by tag of Hal in patch 1 and patch 4.
- Changed the commit author from Hal to Emil in patch 2 and patch 5. Removed Co-developed-by tag of Emil in patch 2 and patch 5. (by Emil)
- Improved the coding style of patch 11, 12 and 13.
- Dropped patch 14. (by Emil)
Patch 4:
- Passed the "owner" member of reset_controller_dev structure directly in reset_starfive_jh7100_register(). (by Emil)
- Added MAINTAINERS changes.
Patch 7:
- Split patch 7 into sys part and aon part. Merged them into patch 9 and patch 10 respectively. (by Krzysztof)
- Renamed include/dt-bindings/clock/starfive-jh7110.h to include/dt-bindings/clock/starfive,jh7110-crg.h. (by Krzysztof)
- Synchronized the definitions with the latest changes from Emil. Patch 8:
- Split patch 8 into sys part and aon part. Merged them into patch 9 and patch 10 respectively. (by Krzysztof)
- Renamed include/dt-bindings/reset/starfive-jh7110.h to include/dt-bindings/reset/starfive,jh7110-crg.h. (by Krzysztof)
- Fixed the date of Copyright. (by Emil)
- Dropped weird indentations. (by Krzysztof)
- Synchronized the definitions with the latest changes from Emil. Patch 9:
- Improved the description of clocks. (by Emil and Krzysztof)
- Added MAINTAINERS changes.
Patch 10:
- Improved the description of clocks. (by Emil and Krzysztof)
- Changed the clock-name "clk_rtc" to "rtc_osc" and "apb_bus_func" to "apb_bus".
Patch 11:
- Removed the flags of trace/debug clocks and set the flags of core clocks as CLK_IS_CRITICAL. (by Emil)
- Deleted the extra 1-1 clocks and synchronized the clock tree with the latest changes from Emil. (by Emil)
- Selected RESET_STARFIVE_JH7110 in Kconfig option CLK_STARFIVE_JH7110_SYS. Patch 12:
- Changed the macro JH7110_AONCLK_RTC to JH7110_AONCLK_RTC_OSC and JH7110_AONCLK_APB_BUS_FUNC to JH7110_AONCLK_APB_BUS.
- Synchronized the clock tree with the latest changes from Emil.
- Set the MODULE_LICENSE as "GPL" according to commit bf7fbeeae6db. Patch 13:
- Removed the "asserted" member in reset_info structure and always pass NULL when calling reset_starfive_jh71x0_register(). (by Emil)
[Device tree]
- Rebased on tag v6.1.
- Dropped patch 8 because it was merged.
Patch 1:
- Made the links into "Link:" tags. (by Conor)
- Corrected the board name to "VisionFive 2" instead of "VisionFive V2" and added compatibles for version A and version B of VisionFive 2. (by Emil)
Patch 4:
- Used "sifive,ccache0" compatible string to match. (by Conor) Patch 5:
- Dropped "select SIFIVE_CCACHE" in config SOC_STARFIVE. (by Conor)
- Dropped "starfive,jh7110-ccache" compatible in drivers/soc/sifive/sifive_ccache.c.
Patch 6:
- Removed all "clock-frequency = <0>". (by Conor)
- Sorted the nodes after their addresses. (by Emil)
- Renamed "clk_rtc" to "rtc_osc".
- Added "sifive,ccache0" compatible in the cache-controller node.
- Renamed "JH7110_SYSCLK_APB_BUS_FUNC" to "JH7110_SYSCLK_APB_BUS" and renamed "apb_bus_func" to "apb_bus".
Renamed "JH7110_SYSCLK_IOMUX" to "JH7110_SYSCLK_IOMUX_APB". Renamed "JH7110_SYSRST_IOMUX" to "JH7110_SYSRST_IOMUX_APB". Renamed "JH7110_AONRST_AON_IOMUX" to "JH7110_AONRST_IOMUX".
- Removed "reg-names" in gpio nodes.
Patch 7:
- Corrected the board name to "VisionFive 2" instead of "VisionFive V2".
- Renamed jh7110-starfive-visionfive-v2.dts to jh7110-starfive-visionfive-2.dtsi.
- Added dts for VisionFive 2 version A and version B boards.
- In the chosen node, deleted "linux,initrd-start" and "linux,initrd-end" and changed the value of "stdout-path" to "serial0:115200n8".
- Changed the bias of uart0 "rx-pins" to
"bias-disable; /* external pull-up */".
- Renamed "clk_rtc" to "rtc_osc".
- Moved the gpio node behind the uart0 node.
clock & reset v2: https://lore.kernel.org/all/[email protected]/
DT v2: https://lore.kernel.org/all/[email protected]/
Changes since v1:
[Clock & reset]
- Rebased on tag v6.1-rc5.
- Rewrote the clock and reset drivers using auxiliary bus framework, so patch 8, 9, 15 were dropped and all patches changed a lot. (by Stephen)
- Split Patch 14 into two patches. One is for factoring out the common JH71X0 code, the another one is for renaming. (by Stephen)
- Created a subdirectory for StarFive reset drivers.
- Factored out common JH71X0 reset code.
- Renamed the common clock and reset code from "*starfive*" or "*STARFIVE*" to "*jh71x0*" or "*JH71X0*".
- Combined JH7110 system and always-on clock DT binding headers in one file named "include/dt-bindings/clock/starfive-jh7110.h".
- Renamed clock definitions "JH7110_SYSCLK_PCLK2_MUX_FUNC_PCLK" and "JH7110_SYSCLK_U2_PCLK_MUX_PCLK" to "JH7110_SYSCLK_PCLK2_MUX_FUNC" and "JH7110_SYSCLK_PCLK2_MUX".
- Rewrote the DT bindings of clock and reset for using auxiliary bus.
- Registered an auxiliary device for reset controller in clock drivers.
- Changed clock names "CODAJ*" and "WAVE*" to "codaj*" and "wave*". Changed clock names "u2_pclk_mux_func_pclk" and "u2_pclk_mux_pclk" to "pclk2_mux_func" and "pclk2_mux".
- Changed the flags of clock apb0 and noc_bus_isp_axi to CLK_IS_CRITICAL as suggested by StarFive SDK group.
- Registered clock gmac0_gtxc as a gate clock instead of a div clock as suggested by StarFive SDK group.
- Changed the frequency of clock pll2_out to 1188MHz as suggested by StarFive SDK group.
- Fixed the bug that the clock JH7110_AONCLK_GMAC0_GTXCLK was not handled in JH7110 always-on clock driver.
- Registered the reset driver as an auxiliary driver.
- Reworded the commit messages.
[Device tree]
- Rebased on tag v6.1-rc5.
- Added blank line in patch 1. (by Krzysztof)
- Rebased patch 4 and 6 on the newest code. (by Conor)
- Dropped patch 5. (by Conor)
- Removed the quirk of JH7100 in patch 6, considering this patch series should only add support for JH7110.
- For patch 27, added Co-developed-by tag for Jianlong and me. Renamed cpu labels to "S76_0", "U74_*" instead of "cpu*" following the style of jh7100.dtsi. Moved all "clock-frequency" properties to the board dts. Rewrote clock-controller nodes and deleted reset-controller nodes for using auxiliary bus. Rewrote gpio nodes following generic pinctrl bindings. Removed the redundant second reset entry of uart nodes.
- For patch 28, added Co-developed-by tag for Jianlong and me. Added a chosen node. Removed reserved-memory node. Added fixed frequency clock nodes for overriding the "clock-frequency" properties. Rewrote the gpio nodes following generic pinctrl bindings.
- Dropped patch 30. (by Conor)
- Reworded the commit messages.
v1: https://lore.kernel.org/all/[email protected]/
Emil Renner Berthing (16):
dt-bindings: clock: Add StarFive JH7110 system clock and reset
generator
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset
generator
clk: starfive: Factor out common JH7100 and JH7110 code
clk: starfive: Rename clk-starfive-jh7100.h to clk-starfive-jh71x0.h
clk: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: Create subdirectory for StarFive drivers
reset: starfive: Factor out common JH71X0 reset code
reset: starfive: Extract the common JH71X0 reset code
reset: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: starfive: jh71x0: Use 32bit I/O on 32bit registers
clk: starfive: Add StarFive JH7110 system clock driver
clk: starfive: Add StarFive JH7110 always-on clock driver
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
riscv: dts: starfive: Add initial StarFive JH7110 device tree
riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device
tree
Hal Feng (5):
clk: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
reset: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
reset: starfive: Add StarFive JH7110 reset driver
dt-bindings: riscv: Add SiFive S7 compatible
riscv: dts: starfive: jh7110: Correct the properties of S7 core
Jianlong Huang (1):
riscv: dts: starfive: Add StarFive JH7110 pin function definitions
.../clock/starfive,jh7110-aoncrg.yaml | 107 +++ .../clock/starfive,jh7110-syscrg.yaml | 104 +++ .../sifive,plic-1.0.0.yaml | 1 + .../devicetree/bindings/riscv/cpus.yaml | 1 + .../bindings/timer/sifive,clint.yaml | 1 + MAINTAINERS | 16 +- arch/riscv/boot/dts/starfive/Makefile | 6 +- arch/riscv/boot/dts/starfive/jh7110-pinfunc.h | 308 ++++++++ .../jh7110-starfive-visionfive-2-v1.2a.dts | 13 + .../jh7110-starfive-visionfive-2-v1.3b.dts | 13 + .../jh7110-starfive-visionfive-2.dtsi | 215 ++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 500 ++++++++++++ drivers/clk/Makefile | 2 +- drivers/clk/starfive/Kconfig | 33 +- drivers/clk/starfive/Makefile | 6 +- .../clk/starfive/clk-starfive-jh7100-audio.c | 74 +- drivers/clk/starfive/clk-starfive-jh7100.c | 716 +++++------------- drivers/clk/starfive/clk-starfive-jh7100.h | 112 --- .../clk/starfive/clk-starfive-jh7110-aon.c | 156 ++++ .../clk/starfive/clk-starfive-jh7110-sys.c | 490 ++++++++++++ drivers/clk/starfive/clk-starfive-jh7110.h | 11 + drivers/clk/starfive/clk-starfive-jh71x0.c | 333 ++++++++ drivers/clk/starfive/clk-starfive-jh71x0.h | 123 +++ drivers/reset/Kconfig | 8 +- drivers/reset/Makefile | 2 +- drivers/reset/reset-starfive-jh7100.c | 173 ----- drivers/reset/starfive/Kconfig | 20 + drivers/reset/starfive/Makefile | 5 + .../reset/starfive/reset-starfive-jh7100.c | 74 ++ .../reset/starfive/reset-starfive-jh7110.c | 70 ++ .../reset/starfive/reset-starfive-jh71x0.c | 131 ++++ .../reset/starfive/reset-starfive-jh71x0.h | 14 + .../dt-bindings/clock/starfive,jh7110-crg.h | 221 ++++++ .../dt-bindings/reset/starfive,jh7110-crg.h | 154 ++++ 34 files changed, 3351 insertions(+), 862 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-aoncrg.yaml create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-syscrg.yaml create mode 100644 arch/riscv/boot/dts/starfive/jh7110-pinfunc.h create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi delete mode 100644 drivers/clk/starfive/clk-starfive-jh7100.h create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110.h create mode 100644 drivers/clk/starfive/clk-starfive-jh71x0.c create mode 100644 drivers/clk/starfive/clk-starfive-jh71x0.h delete mode 100644 drivers/reset/reset-starfive-jh7100.c create mode 100644 drivers/reset/starfive/Kconfig create mode 100644 drivers/reset/starfive/Makefile create mode 100644 drivers/reset/starfive/reset-starfive-jh7100.c create mode 100644 drivers/reset/starfive/reset-starfive-jh7110.c create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.c create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.h create mode 100644 include/dt-bindings/clock/starfive,jh7110-crg.h create mode 100644 include/dt-bindings/reset/starfive,jh7110-crg.h
base-commit: 197b6b60ae7bc51dd0814953c562833143b292aa
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 1/22 dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
From: Emil Renner Berthing <[email protected]>
Add bindings for the system clock and reset generator (SYSCRG) on the JH7110 RISC-V SoC by StarFive Ltd.
--- .../clock/starfive,jh7110-syscrg.yaml | 104 +++++++++ MAINTAINERS | 16 +- .../dt-bindings/clock/starfive,jh7110-crg.h | 203 ++++++++++++++++++ .../dt-bindings/reset/starfive,jh7110-crg.h | 142 ++++++++++++ 4 files changed, 458 insertions(+), 7 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-syscrg.yaml create mode 100644 include/dt-bindings/clock/starfive,jh7110-crg.h create mode 100644 include/dt-bindings/reset/starfive,jh7110-crg.h
Documentation/devicetree/bindings/clock/starfive,jh7110-syscrg.yaml new file +104 -0
@@ -0,0 +1,104 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/starfive,jh7110-syscrg.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 System Clock and Reset Generator + +maintainers: + - Emil Renner Berthing <[email protected]> + +properties: + compatible: + const: starfive,jh7110-syscrg + + reg: + maxItems: 1 + + clocks: + oneOf: + - items: + - description: Main Oscillator (24 MHz) + - description: GMAC1 RMII reference or GMAC1 RGMII RX + - description: External I2S TX bit clock + - description: External I2S TX left/right channel clock + - description: External I2S RX bit clock + - description: External I2S RX left/right channel clock + - description: External TDM clock + - description: External audio master clock + + - items: + - description: Main Oscillator (24 MHz) + - description: GMAC1 RMII reference + - description: GMAC1 RGMII RX + - description: External I2S TX bit clock + - description: External I2S TX left/right channel clock + - description: External I2S RX bit clock + - description: External I2S RX left/right channel clock + - description: External TDM clock + - description: External audio master clock + + clock-names: + oneOf: + - items: + - const: osc + - enum: + - gmac1_rmii_refin + - gmac1_rgmii_rxin + - const: i2stx_bclk_ext + - const: i2stx_lrck_ext + - const: i2srx_bclk_ext + - const: i2srx_lrck_ext + - const: tdm_ext + - const: mclk_ext + + - items: + - const: osc + - const: gmac1_rmii_refin + - const: gmac1_rgmii_rxin + - const: i2stx_bclk_ext + - const: i2stx_lrck_ext + - const: i2srx_bclk_ext + - const: i2srx_lrck_ext + - const: tdm_ext + - const: mclk_ext + + '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices. + + '#reset-cells': + const: 1 + description: + See <dt-bindings/reset/starfive,jh7110-crg.h> for valid indices. + +required: + - compatible + - reg + - clocks + - clock-names + - '#clock-cells' + - '#reset-cells' + +additionalProperties: false + +examples: + - | + clock-controller@13020000 { + compatible = "starfive,jh7110-syscrg"; + reg = <0x13020000 0x10000>; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + #reset-cells = <1>; + };
MAINTAINERS +9 -7
@@ -19905,12 +19905,13 @@ M: Emil Renner Berthing <[email protected]> S: Maintained F: arch/riscv/boot/dts/starfive/ -STARFIVE JH7100 CLOCK DRIVERS +STARFIVE JH71X0 CLOCK DRIVERS M: Emil Renner Berthing <[email protected]> +M: Hal Feng <[email protected]> S: Maintained -F: Documentation/devicetree/bindings/clock/starfive,jh7100-*.yaml -F: drivers/clk/starfive/clk-starfive-jh7100* -F: include/dt-bindings/clock/starfive-jh7100*.h +F: Documentation/devicetree/bindings/clock/starfive,jh71*.yaml +F: drivers/clk/starfive/clk-starfive-jh71* +F: include/dt-bindings/clock/starfive?jh71*.h STARFIVE JH7110 MMC/SD/SDIO DRIVER M: William Qiu <[email protected]>
@@ -19928,12 +19929,13 @@ F: drivers/pinctrl/starfive/pinctrl-starfive-jh71* F: include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h F: include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h -STARFIVE JH7100 RESET CONTROLLER DRIVER +STARFIVE JH71X0 RESET CONTROLLER DRIVER M: Emil Renner Berthing <[email protected]> +M: Hal Feng <[email protected]> S: Maintained F: Documentation/devicetree/bindings/reset/starfive,jh7100-reset.yaml -F: drivers/reset/reset-starfive-jh7100.c -F: include/dt-bindings/reset/starfive-jh7100.h +F: drivers/reset/starfive/reset-starfive-jh71* +F: include/dt-bindings/reset/starfive?jh71*.h STARFIVE JH71XX PMU CONTROLLER DRIVER M: Walker Chen <[email protected]>
include/dt-bindings/clock/starfive,jh7110-crg.h new file +203 -0
203 lines not on this page · raw message
include/dt-bindings/reset/starfive,jh7110-crg.h new file +142 -0
142 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 2/22 dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add bindings for the always-on clock and reset generator (AONCRG) on the JH7110 RISC-V SoC by StarFive Ltd.
--- .../clock/starfive,jh7110-aoncrg.yaml | 107 ++++++++++++++++++ .../dt-bindings/clock/starfive,jh7110-crg.h | 18 +++ .../dt-bindings/reset/starfive,jh7110-crg.h | 12 ++ 3 files changed, 137 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-aoncrg.yaml
Documentation/devicetree/bindings/clock/starfive,jh7110-aoncrg.yaml new file +107 -0
@@ -0,0 +1,107 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/starfive,jh7110-aoncrg.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 Always-On Clock and Reset Generator + +maintainers: + - Emil Renner Berthing <[email protected]> + +properties: + compatible: + const: starfive,jh7110-aoncrg + + reg: + maxItems: 1 + + clocks: + oneOf: + - items: + - description: Main Oscillator (24 MHz) + - description: GMAC0 RMII reference or GMAC0 RGMII RX + - description: STG AXI/AHB + - description: APB Bus + - description: GMAC0 GTX + + - items: + - description: Main Oscillator (24 MHz) + - description: GMAC0 RMII reference or GMAC0 RGMII RX + - description: STG AXI/AHB or GMAC0 RGMII RX + - description: APB Bus or STG AXI/AHB + - description: GMAC0 GTX or APB Bus + - description: RTC Oscillator (32.768 kHz) or GMAC0 GTX + + - items: + - description: Main Oscillator (24 MHz) + - description: GMAC0 RMII reference + - description: GMAC0 RGMII RX + - description: STG AXI/AHB + - description: APB Bus + - description: GMAC0 GTX + - description: RTC Oscillator (32.768 kHz) + + clock-names: + oneOf: + - minItems: 5 + items: + - const: osc + - enum: + - gmac0_rmii_refin + - gmac0_rgmii_rxin + - const: stg_axiahb + - const: apb_bus + - const: gmac0_gtxclk + - const: rtc_osc + + - minItems: 6 + items: + - const: osc + - const: gmac0_rmii_refin + - const: gmac0_rgmii_rxin + - const: stg_axiahb + - const: apb_bus + - const: gmac0_gtxclk + - const: rtc_osc + + '#clock-cells': + const: 1 + description: + See <dt-bindings/clock/starfive,jh7110-crg.h> for valid indices. + + '#reset-cells': + const: 1 + description: + See <dt-bindings/reset/starfive,jh7110-crg.h> for valid indices. + +required: + - compatible + - reg + - clocks + - clock-names + - '#clock-cells' + - '#reset-cells' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive,jh7110-crg.h> + + clock-controller@17000000 { + compatible = "starfive,jh7110-aoncrg"; + reg = <0x17000000 0x10000>; + clocks = <&osc>, <&gmac0_rmii_refin>, + <&gmac0_rgmii_rxin>, + <&syscrg JH7110_SYSCLK_STG_AXIAHB>, + <&syscrg JH7110_SYSCLK_APB_BUS>, + <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>, + <&rtc_osc>; + clock-names = "osc", "gmac0_rmii_refin", + "gmac0_rgmii_rxin", "stg_axiahb", + "apb_bus", "gmac0_gtxclk", + "rtc_osc"; + #clock-cells = <1>; + #reset-cells = <1>; + };
include/dt-bindings/clock/starfive,jh7110-crg.h +18 -0
@@ -200,4 +200,22 @@#define JH7110_SYSCLK_END 190 +/* AONCRG clocks */ +#define JH7110_AONCLK_OSC_DIV4 0 +#define JH7110_AONCLK_APB_FUNC 1 +#define JH7110_AONCLK_GMAC0_AHB 2 +#define JH7110_AONCLK_GMAC0_AXI 3 +#define JH7110_AONCLK_GMAC0_RMII_RTX 4 +#define JH7110_AONCLK_GMAC0_TX 5 +#define JH7110_AONCLK_GMAC0_TX_INV 6 +#define JH7110_AONCLK_GMAC0_RX 7 +#define JH7110_AONCLK_GMAC0_RX_INV 8 +#define JH7110_AONCLK_OTPC_APB 9 +#define JH7110_AONCLK_RTC_APB 10 +#define JH7110_AONCLK_RTC_INTERNAL 11 +#define JH7110_AONCLK_RTC_32K 12 +#define JH7110_AONCLK_RTC_CAL 13 + +#define JH7110_AONCLK_END 14 +#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7110_CRG_H__ */
include/dt-bindings/reset/starfive,jh7110-crg.h +12 -0
@@ -139,4 +139,16 @@#define JH7110_SYSRST_END 126 +/* AONCRG resets */ +#define JH7110_AONRST_GMAC0_AXI 0 +#define JH7110_AONRST_GMAC0_AHB 1 +#define JH7110_AONRST_IOMUX 2 +#define JH7110_AONRST_PMU_APB 3 +#define JH7110_AONRST_PMU_WKUP 4 +#define JH7110_AONRST_RTC_APB 5 +#define JH7110_AONRST_RTC_CAL 6 +#define JH7110_AONRST_RTC_32K 7 + +#define JH7110_AONRST_END 8 +#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7110_CRG_H__ */
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 3/22 clk: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
In reply to Hal FengUsing ARCH_FOO symbol is preferred than SOC_FOO. Set obj-y for starfive/ in Makefile, so the StarFive drivers can be compiled with COMPILE_TEST=y but ARCH_STARFIVE=n.
--- drivers/clk/Makefile | 2 +- drivers/clk/starfive/Kconfig | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-)
drivers/clk/Makefile +1 -1
@@ -117,7 +117,7 @@ obj-$(CONFIG_PLAT_SPEAR) += spear/ obj-y += sprd/ obj-$(CONFIG_ARCH_STI) += st/ obj-$(CONFIG_ARCH_STM32) += stm32/ -obj-$(CONFIG_SOC_STARFIVE) += starfive/ +obj-y += starfive/ obj-$(CONFIG_ARCH_SUNXI) += sunxi/ obj-y += sunxi-ng/ obj-$(CONFIG_ARCH_TEGRA) += tegra/
drivers/clk/starfive/Kconfig +3 -3
@@ -2,8 +2,8 @@ config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" - depends on SOC_STARFIVE || COMPILE_TEST - default SOC_STARFIVE + depends on ARCH_STARFIVE || COMPILE_TEST + default ARCH_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100 SoC.
@@ -11,7 +11,7 @@ config CLK_STARFIVE_JH7100 config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" depends on CLK_STARFIVE_JH7100 - default m if SOC_STARFIVE + default m if ARCH_STARFIVE help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC.
Signature · 1 line
2.38.1
Re: [PATCH v7 03/22] clk: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
Am Samstag, 1. April 2023, 13:19:15 CEST schrieb Hal Feng:
Quoted 6 lines
Using
ARCH_FOOsymbol is preferred thanSOC_FOO. Set obj-y for starfive/ inMakefile, so the StarFive drivers can be compiled with COMPILE_TEST=y but ARCH_STARFIVE=n.Reviewed-by Conor Dooley <[email protected]>Signed-off-by Hal Feng <[email protected]>
Quoted 35 lines
--- drivers/clk/Makefile | 2 +- drivers/clk/starfive/Kconfig | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-)drivers/clk/Makefile +1
-1@@ -117,7 +117,7 @@ obj-$(CONFIG_PLAT_SPEAR) += spear/ obj-y += sprd/ obj-$(CONFIG_ARCH_STI) += st/ obj-$(CONFIG_ARCH_STM32) += stm32/ -obj-$(CONFIG_SOC_STARFIVE) += starfive/ +obj-y += starfive/ obj-$(CONFIG_ARCH_SUNXI) += sunxi/ obj-y += sunxi-ng/ obj-$(CONFIG_ARCH_TEGRA) += tegra/drivers/clk/starfive/Kconfig +2
-2@@ -2,8 +2,8 @@ config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" - depends on SOC_STARFIVE || COMPILE_TEST - default SOC_STARFIVE + depends on ARCH_STARFIVE || COMPILE_TEST + default ARCH_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100 SoC.
drivers/clk/starfive/Kconfig config CLK_STARFIVE_JH7100 · line 17
Quoted 8 lines
drivers/clk/starfive/Kconfig +1
-1@@ -11,7 +11,7 @@ config CLK_STARFIVE_JH7100 config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" depends on CLK_STARFIVE_JH7100 - default m if SOC_STARFIVE + default m if ARCH_STARFIVE help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC.
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Hal Feng
maintainerPATCH v7 4/22 clk: starfive: Factor out common JH7100 and JH7110 code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
The clock control registers on the StarFive JH7100 and JH7110 work identically, so factor out the code then drivers for the two SoCs can share it without depending on each other. No functional change.
--- drivers/clk/starfive/Kconfig | 5 + drivers/clk/starfive/Makefile | 3 +- drivers/clk/starfive/clk-starfive-jh7100.c | 325 -------------------- drivers/clk/starfive/clk-starfive-jh7100.h | 2 + drivers/clk/starfive/clk-starfive-jh71x0.c | 333 +++++++++++++++++++++ 5 files changed, 342 insertions(+), 326 deletions(-) create mode 100644 drivers/clk/starfive/clk-starfive-jh71x0.c
drivers/clk/starfive/Kconfig +5 -0
@@ -1,8 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 +config CLK_STARFIVE_JH71X0 + bool + config CLK_STARFIVE_JH7100 bool "StarFive JH7100 clock support" depends on ARCH_STARFIVE || COMPILE_TEST + select CLK_STARFIVE_JH71X0 default ARCH_STARFIVE help Say yes here to support the clock controller on the StarFive JH7100
@@ -11,6 +15,7 @@ config CLK_STARFIVE_JH7100 config CLK_STARFIVE_JH7100_AUDIO tristate "StarFive JH7100 audio clock support" depends on CLK_STARFIVE_JH7100 + select CLK_STARFIVE_JH71X0 default m if ARCH_STARFIVE help Say Y or M here to support the audio clocks on the StarFive JH7100
drivers/clk/starfive/Makefile +2 -1
@@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -# StarFive Clock +obj-$(CONFIG_CLK_STARFIVE_JH71X0) += clk-starfive-jh71x0.o + obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o
drivers/clk/starfive/clk-starfive-jh7100.c +0 -325
341 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh7100.h +2 -0
@@ -4,6 +4,8 @@#include <linux/bits.h> #include <linux/clk-provider.h> +#include <linux/device.h> +#include <linux/spinlock.h> /* register fields */ #define JH7100_CLK_ENABLE BIT(31)
drivers/clk/starfive/clk-starfive-jh71x0.c new file +333 -0
333 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 5/22 clk: starfive: Rename clk-starfive-jh7100.h to clk-starfive-jh71x0.h
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Rename clk-starfive-jh7100.h to clk-starfive-jh71x0.h for making the code to be common.
---
drivers/clk/starfive/clk-starfive-jh7100-audio.c | 2 +-
drivers/clk/starfive/clk-starfive-jh7100.c | 2 +-
drivers/clk/starfive/clk-starfive-jh71x0.c | 2 +-
.../starfive/{clk-starfive-jh7100.h => clk-starfive-jh71x0.h} | 0
4 files changed, 3 insertions(+), 3 deletions(-)
rename drivers/clk/starfive/{clk-starfive-jh7100.h => clk-starfive-jh71x0.h} (100%)drivers/clk/starfive/clk-starfive-jh7100-audio.c +1 -1
@@ -16,7 +16,7 @@#include <dt-bindings/clock/starfive-jh7100-audio.h> -#include "clk-starfive-jh7100.h" +#include "clk-starfive-jh71x0.h" /* external clocks */ #define JH7100_AUDCLK_AUDIO_SRC (JH7100_AUDCLK_END + 0)
drivers/clk/starfive/clk-starfive-jh7100.c +1 -1
@@ -15,7 +15,7 @@#include <dt-bindings/clock/starfive-jh7100.h> -#include "clk-starfive-jh7100.h" +#include "clk-starfive-jh71x0.h" /* external clocks */ #define JH7100_CLK_OSC_SYS (JH7100_CLK_END + 0)
drivers/clk/starfive/clk-starfive-jh71x0.c +1 -1
@@ -10,7 +10,7 @@#include <linux/device.h> #include <linux/io.h> -#include "clk-starfive-jh7100.h" +#include "clk-starfive-jh71x0.h" static struct jh7100_clk *jh7100_clk_from (struct clk_hw *hw) {
drivers/clk/starfive/clk-starfive-jh71x0.h renamed from drivers/clk/starfive/clk-starfive-jh7100.h +0 -0
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 6/22 clk: starfive: Rename "jh7100" to "jh71x0" for the common code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Rename some variables from "jh7100" or "JH7100" to "jh71x0" or "JH71X0".
--- .../clk/starfive/clk-starfive-jh7100-audio.c | 72 ++-- drivers/clk/starfive/clk-starfive-jh7100.c | 389 +++++++++--------- drivers/clk/starfive/clk-starfive-jh71x0.c | 282 ++++++------- drivers/clk/starfive/clk-starfive-jh71x0.h | 81 ++-- 4 files changed, 418 insertions(+), 406 deletions(-)
drivers/clk/starfive/clk-starfive-jh7100-audio.c +36 -36
@@ -28,66 +28,66 @@#define JH7100_AUDCLK_I2SDAC_LRCLK_IOPAD (JH7100_AUDCLK_END + 6)#define JH7100_AUDCLK_VAD_INTMEM (JH7100_AUDCLK_END + 7) -static const struct jh7100_clk_data jh7100_audclk_data[] = { -JH7100__GMD (JH7100_AUDCLK_ADC_MCLK ,"adc_mclk" ,0 ,15 ,2 , +static const struct jh71x0_clk_data jh7100_audclk_data[] = { +JH71X0__GMD (JH7100_AUDCLK_ADC_MCLK ,"adc_mclk" ,0 ,15 ,2 ,JH7100_AUDCLK_AUDIO_SRC ,JH7100_AUDCLK_AUDIO_12288 ), -JH7100__GMD (JH7100_AUDCLK_I2S1_MCLK ,"i2s1_mclk" ,0 ,15 ,2 , +JH71X0__GMD (JH7100_AUDCLK_I2S1_MCLK ,"i2s1_mclk" ,0 ,15 ,2 ,JH7100_AUDCLK_AUDIO_SRC ,JH7100_AUDCLK_AUDIO_12288 ), -JH7100_GATE (JH7100_AUDCLK_I2SADC_APB ,"i2sadc_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100_MDIV (JH7100_AUDCLK_I2SADC_BCLK ,"i2sadc_bclk" ,31 ,2 , +JH71X0_GATE (JH7100_AUDCLK_I2SADC_APB ,"i2sadc_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0_MDIV (JH7100_AUDCLK_I2SADC_BCLK ,"i2sadc_bclk" ,31 ,2 ,JH7100_AUDCLK_ADC_MCLK ,JH7100_AUDCLK_I2SADC_BCLK_IOPAD ), -JH7100__INV (JH7100_AUDCLK_I2SADC_BCLK_N ,"i2sadc_bclk_n" ,JH7100_AUDCLK_I2SADC_BCLK ), -JH7100_MDIV (JH7100_AUDCLK_I2SADC_LRCLK ,"i2sadc_lrclk" ,63 ,3 , +JH71X0__INV (JH7100_AUDCLK_I2SADC_BCLK_N ,"i2sadc_bclk_n" ,JH7100_AUDCLK_I2SADC_BCLK ), +JH71X0_MDIV (JH7100_AUDCLK_I2SADC_LRCLK ,"i2sadc_lrclk" ,63 ,3 ,JH7100_AUDCLK_I2SADC_BCLK_N ,JH7100_AUDCLK_I2SADC_LRCLK_IOPAD ,JH7100_AUDCLK_I2SADC_BCLK ), -JH7100_GATE (JH7100_AUDCLK_PDM_APB ,"pdm_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100__GMD (JH7100_AUDCLK_PDM_MCLK ,"pdm_mclk" ,0 ,15 ,2 , +JH71X0_GATE (JH7100_AUDCLK_PDM_APB ,"pdm_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0__GMD (JH7100_AUDCLK_PDM_MCLK ,"pdm_mclk" ,0 ,15 ,2 ,JH7100_AUDCLK_AUDIO_SRC ,JH7100_AUDCLK_AUDIO_12288 ), -JH7100_GATE (JH7100_AUDCLK_I2SVAD_APB ,"i2svad_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100__GMD (JH7100_AUDCLK_SPDIF ,"spdif" ,0 ,15 ,2 , +JH71X0_GATE (JH7100_AUDCLK_I2SVAD_APB ,"i2svad_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0__GMD (JH7100_AUDCLK_SPDIF ,"spdif" ,0 ,15 ,2 ,JH7100_AUDCLK_AUDIO_SRC ,JH7100_AUDCLK_AUDIO_12288 ), -JH7100_GATE (JH7100_AUDCLK_SPDIF_APB ,"spdif_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100_GATE (JH7100_AUDCLK_PWMDAC_APB ,"pwmdac_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100__GMD (JH7100_AUDCLK_DAC_MCLK ,"dac_mclk" ,0 ,15 ,2 , +JH71X0_GATE (JH7100_AUDCLK_SPDIF_APB ,"spdif_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0_GATE (JH7100_AUDCLK_PWMDAC_APB ,"pwmdac_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0__GMD (JH7100_AUDCLK_DAC_MCLK ,"dac_mclk" ,0 ,15 ,2 ,JH7100_AUDCLK_AUDIO_SRC ,JH7100_AUDCLK_AUDIO_12288 ), -JH7100_GATE (JH7100_AUDCLK_I2SDAC_APB ,"i2sdac_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100_MDIV (JH7100_AUDCLK_I2SDAC_BCLK ,"i2sdac_bclk" ,31 ,2 , +JH71X0_GATE (JH7100_AUDCLK_I2SDAC_APB ,"i2sdac_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0_MDIV (JH7100_AUDCLK_I2SDAC_BCLK ,"i2sdac_bclk" ,31 ,2 ,JH7100_AUDCLK_DAC_MCLK ,JH7100_AUDCLK_I2SDAC_BCLK_IOPAD ), -JH7100__INV (JH7100_AUDCLK_I2SDAC_BCLK_N ,"i2sdac_bclk_n" ,JH7100_AUDCLK_I2SDAC_BCLK ), -JH7100_MDIV (JH7100_AUDCLK_I2SDAC_LRCLK ,"i2sdac_lrclk" ,31 ,2 , +JH71X0__INV (JH7100_AUDCLK_I2SDAC_BCLK_N ,"i2sdac_bclk_n" ,JH7100_AUDCLK_I2SDAC_BCLK ), +JH71X0_MDIV (JH7100_AUDCLK_I2SDAC_LRCLK ,"i2sdac_lrclk" ,31 ,2 ,JH7100_AUDCLK_I2S1_MCLK ,JH7100_AUDCLK_I2SDAC_BCLK_IOPAD ), -JH7100_GATE (JH7100_AUDCLK_I2S1_APB ,"i2s1_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100_MDIV (JH7100_AUDCLK_I2S1_BCLK ,"i2s1_bclk" ,31 ,2 , +JH71X0_GATE (JH7100_AUDCLK_I2S1_APB ,"i2s1_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0_MDIV (JH7100_AUDCLK_I2S1_BCLK ,"i2s1_bclk" ,31 ,2 ,JH7100_AUDCLK_I2S1_MCLK ,JH7100_AUDCLK_I2SDAC_BCLK_IOPAD ), -JH7100__INV (JH7100_AUDCLK_I2S1_BCLK_N ,"i2s1_bclk_n" ,JH7100_AUDCLK_I2S1_BCLK ), -JH7100_MDIV (JH7100_AUDCLK_I2S1_LRCLK ,"i2s1_lrclk" ,63 ,3 , +JH71X0__INV (JH7100_AUDCLK_I2S1_BCLK_N ,"i2s1_bclk_n" ,JH7100_AUDCLK_I2S1_BCLK ), +JH71X0_MDIV (JH7100_AUDCLK_I2S1_LRCLK ,"i2s1_lrclk" ,63 ,3 ,JH7100_AUDCLK_I2S1_BCLK_N ,JH7100_AUDCLK_I2SDAC_LRCLK_IOPAD ), -JH7100_GATE (JH7100_AUDCLK_I2SDAC16K_APB ,"i2s1dac16k_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), -JH7100__DIV (JH7100_AUDCLK_APB0_BUS ,"apb0_bus" ,8 ,JH7100_AUDCLK_DOM7AHB_BUS ), -JH7100_GATE (JH7100_AUDCLK_DMA1P_AHB ,"dma1p_ahb" ,0 ,JH7100_AUDCLK_DOM7AHB_BUS ), -JH7100_GATE (JH7100_AUDCLK_USB_APB ,"usb_apb" ,CLK_IGNORE_UNUSED ,JH7100_AUDCLK_APB_EN ), -JH7100_GDIV (JH7100_AUDCLK_USB_LPM ,"usb_lpm" ,CLK_IGNORE_UNUSED ,4 ,JH7100_AUDCLK_USB_APB ), -JH7100_GDIV (JH7100_AUDCLK_USB_STB ,"usb_stb" ,CLK_IGNORE_UNUSED ,3 ,JH7100_AUDCLK_USB_APB ), -JH7100__DIV (JH7100_AUDCLK_APB_EN ,"apb_en" ,8 ,JH7100_AUDCLK_DOM7AHB_BUS ), -JH7100__MUX (JH7100_AUDCLK_VAD_MEM ,"vad_mem" ,2 , +JH71X0_GATE (JH7100_AUDCLK_I2SDAC16K_APB ,"i2s1dac16k_apb" ,0 ,JH7100_AUDCLK_APB0_BUS ), +JH71X0__DIV (JH7100_AUDCLK_APB0_BUS ,"apb0_bus" ,8 ,JH7100_AUDCLK_DOM7AHB_BUS ), +JH71X0_GATE (JH7100_AUDCLK_DMA1P_AHB ,"dma1p_ahb" ,0 ,JH7100_AUDCLK_DOM7AHB_BUS ), +JH71X0_GATE (JH7100_AUDCLK_USB_APB ,"usb_apb" ,CLK_IGNORE_UNUSED ,JH7100_AUDCLK_APB_EN ), +JH71X0_GDIV (JH7100_AUDCLK_USB_LPM ,"usb_lpm" ,CLK_IGNORE_UNUSED ,4 ,JH7100_AUDCLK_USB_APB ), +JH71X0_GDIV (JH7100_AUDCLK_USB_STB ,"usb_stb" ,CLK_IGNORE_UNUSED ,3 ,JH7100_AUDCLK_USB_APB ), +JH71X0__DIV (JH7100_AUDCLK_APB_EN ,"apb_en" ,8 ,JH7100_AUDCLK_DOM7AHB_BUS ), +JH71X0__MUX (JH7100_AUDCLK_VAD_MEM ,"vad_mem" ,2 ,JH7100_AUDCLK_VAD_INTMEM ,JH7100_AUDCLK_AUDIO_12288 ), };static struct clk_hw *jh7100_audclk_get (struct of_phandle_args *clkspec,void *data) { -struct jh7100_clk_priv *priv = data; +struct jh71x0_clk_priv *priv = data;unsigned int idx = clkspec->args[0 ];if (idx <JH7100_AUDCLK_END )
@@ -98,7 +98,7 @@ static struct clk_hw *jh7100_audclk_get(struct of_phandle_args *clkspec, void *dstatic int jh7100_audclk_probe (struct platform_device *pdev) { -struct jh7100_clk_priv *priv; +struct jh71x0_clk_priv *priv;unsigned int idx;int ret;
@@ -117,12 +117,12 @@ static int jh7100_audclk_probe(struct platform_device *pdev)struct clk_parent_data parents[4 ] = {};struct clk_init_data init = { .name = jh7100_audclk_data[idx].name, - .ops =starfive_jh7100_clk_ops (max), + .ops =starfive_jh71x0_clk_ops (max), .parent_data = parents, - .num_parents = ((max &JH7100_CLK_MUX_MASK ) >>JH7100_CLK_MUX_SHIFT ) +1 , + .num_parents = ((max &JH71X0_CLK_MUX_MASK ) >>JH71X0_CLK_MUX_SHIFT ) +1 , .flags = jh7100_audclk_data[idx].flags, }; -struct jh7100_clk *clk = &priv->reg[idx]; +struct jh71x0_clk *clk = &priv->reg[idx];unsigned int i;for (i =0 ; i < init.num_parents; i++) {
@@ -140,7 +140,7 @@ static int jh7100_audclk_probe(struct platform_device *pdev) clk->hw.init = &init; clk->idx = idx; - clk->max_div = max &JH7100_CLK_DIV_MASK ; + clk->max_div = max &JH71X0_CLK_DIV_MASK ; ret =devm_clk_hw_register (priv->dev, &clk->hw);if (ret)
drivers/clk/starfive/clk-starfive-jh7100.c +196 -193
472 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh71x0.c +141 -141
447 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh71x0.h +45 -36
158 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 7/22 reset: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
In reply to Hal FengUsing ARCH_FOO symbol is preferred than SOC_FOO.
--- drivers/reset/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/reset/Kconfig +2 -2
@@ -234,8 +234,8 @@ config RESET_SOCFPGA config RESET_STARFIVE_JH7100 bool "StarFive JH7100 Reset Driver" - depends on SOC_STARFIVE || COMPILE_TEST - default SOC_STARFIVE + depends on ARCH_STARFIVE || COMPILE_TEST + default ARCH_STARFIVE help This enables the reset controller driver for the StarFive JH7100 SoC.
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 8/22 reset: Create subdirectory for StarFive drivers
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
This moves the StarFive JH7100 reset driver to a new subdirectory in preparation for adding more StarFive reset drivers.
---
drivers/reset/Kconfig | 8 +-------
drivers/reset/Makefile | 2 +-
drivers/reset/starfive/Kconfig | 8 ++++++++
drivers/reset/starfive/Makefile | 2 ++
drivers/reset/{ => starfive}/reset-starfive-jh7100.c | 0
5 files changed, 12 insertions(+), 8 deletions(-)
create mode 100644 drivers/reset/starfive/Kconfig
create mode 100644 drivers/reset/starfive/Makefile
rename drivers/reset/{ => starfive}/reset-starfive-jh7100.c (100%)drivers/reset/Kconfig +1 -7
@@ -232,13 +232,6 @@ config RESET_SOCFPGA This enables the reset driver for the SoCFPGA ARMv7 platforms. This driver gets initialized early during platform init calls. -config RESET_STARFIVE_JH7100 - bool "StarFive JH7100 Reset Driver" - depends on ARCH_STARFIVE || COMPILE_TEST - default ARCH_STARFIVE - help - This enables the reset controller driver for the StarFive JH7100 SoC. - config RESET_SUNPLUS bool "Sunplus SoCs Reset Driver" if COMPILE_TEST default ARCH_SUNPLUS
@@ -320,6 +313,7 @@ config RESET_ZYNQ help This enables the reset controller driver for Xilinx Zynq SoCs. +source "drivers/reset/starfive/Kconfig" source "drivers/reset/sti/Kconfig" source "drivers/reset/hisilicon/Kconfig" source "drivers/reset/tegra/Kconfig"
drivers/reset/Makefile +1 -1
@@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 obj-y += core.o obj-y += hisilicon/ +obj-y += starfive/ obj-$(CONFIG_ARCH_STI) += sti/ obj-$(CONFIG_ARCH_TEGRA) += tegra/ obj-$(CONFIG_RESET_A10SR) += reset-a10sr.o
@@ -30,7 +31,6 @@ obj-$(CONFIG_RESET_RZG2L_USBPHY_CTRL) += reset-rzg2l-usbphy-ctrl.o obj-$(CONFIG_RESET_SCMI) += reset-scmi.o obj-$(CONFIG_RESET_SIMPLE) += reset-simple.o obj-$(CONFIG_RESET_SOCFPGA) += reset-socfpga.o -obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o obj-$(CONFIG_RESET_SUNPLUS) += reset-sunplus.o obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o obj-$(CONFIG_RESET_TI_SCI) += reset-ti-sci.o
drivers/reset/starfive/Kconfig new file +8 -0
@@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config RESET_STARFIVE_JH7100 + bool "StarFive JH7100 Reset Driver" + depends on ARCH_STARFIVE || COMPILE_TEST + default ARCH_STARFIVE + help + This enables the reset controller driver for the StarFive JH7100 SoC.
drivers/reset/starfive/Makefile new file +2 -0
@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o
drivers/reset/starfive/reset-starfive-jh7100.c renamed from drivers/reset/reset-starfive-jh7100.c +0 -0
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 9/22 reset: starfive: Factor out common JH71X0 reset code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
The StarFive JH7100 SoC has additional reset controllers for audio and video, but the registers follow the same structure. On the JH7110 the reset registers don't get their own memory range, but instead follow the clock control registers. The registers still follow the same structure though, so let's factor out the common code to handle all these cases.
--- drivers/reset/starfive/Kconfig | 4 + drivers/reset/starfive/Makefile | 2 + .../reset/starfive/reset-starfive-jh7100.c | 150 +--------------- .../reset/starfive/reset-starfive-jh71x0.c | 162 ++++++++++++++++++ .../reset/starfive/reset-starfive-jh71x0.h | 11 ++ 5 files changed, 180 insertions(+), 149 deletions(-) create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.c create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.h
drivers/reset/starfive/Kconfig +4 -0
@@ -1,8 +1,12 @@ # SPDX-License-Identifier: GPL-2.0-only +config RESET_STARFIVE_JH71X0 + bool + config RESET_STARFIVE_JH7100 bool "StarFive JH7100 Reset Driver" depends on ARCH_STARFIVE || COMPILE_TEST + select RESET_STARFIVE_JH71X0 default ARCH_STARFIVE help This enables the reset controller driver for the StarFive JH7100 SoC.
drivers/reset/starfive/Makefile +2 -0
@@ -1,2 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 +obj-$(CONFIG_RESET_STARFIVE_JH71X0) += reset-starfive-jh71x0.o + obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o
drivers/reset/starfive/reset-starfive-jh7100.c +1 -149
159 lines not on this page · raw message
drivers/reset/starfive/reset-starfive-jh71x0.c new file +162 -0
162 lines not on this page · raw message
drivers/reset/starfive/reset-starfive-jh71x0.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* +* Copyright (C) 2021 Emil Renner Berthing <[email protected]> +*/ + +#ifndef __RESET_STARFIVE_JH71X0_H +#define __RESET_STARFIVE_JH71X0_H + +int jh7100_reset_probe (struct platform_device *pdev); + +#endif /* __RESET_STARFIVE_JH71X0_H */
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 10/22 reset: starfive: Extract the common JH71X0 reset code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Extract the common JH71X0 reset code for reusing them to support JH7110 SoC.
--- .../reset/starfive/reset-starfive-jh7100.c | 49 ++++++++++++ .../reset/starfive/reset-starfive-jh71x0.c | 76 ++++++------------- .../reset/starfive/reset-starfive-jh71x0.h | 5 +- 3 files changed, 76 insertions(+), 54 deletions(-)
drivers/reset/starfive/reset-starfive-jh7100.c +49 -0
@@ -10,6 +10,55 @@#include "reset-starfive-jh71x0.h" +#include <dt-bindings/reset/starfive-jh7100.h> + +/* register offsets */ +#define JH7100_RESET_ASSERT0 0x00 +#define JH7100_RESET_ASSERT1 0x04 +#define JH7100_RESET_ASSERT2 0x08 +#define JH7100_RESET_ASSERT3 0x0c +#define JH7100_RESET_STATUS0 0x10 +#define JH7100_RESET_STATUS1 0x14 +#define JH7100_RESET_STATUS2 0x18 +#define JH7100_RESET_STATUS3 0x1c + +/* +* Writing a 1 to the n'th bit of the m'th ASSERT register asserts +* line 32m + n, and writing a 0 deasserts the same line. +* Most reset lines have their status inverted so a 0 bit in the STATUS +* register means the line is asserted and a 1 means it's deasserted. A few +* lines don't though, so store the expected value of the status registers when +* all lines are asserted. +*/ +static const u64 jh7100_reset_asserted[2 ] = { +/* STATUS0 */ +BIT_ULL_MASK (JH7100_RST_U74 ) | +BIT_ULL_MASK (JH7100_RST_VP6_DRESET ) | +BIT_ULL_MASK (JH7100_RST_VP6_BRESET ) | +/* STATUS1 */ +BIT_ULL_MASK (JH7100_RST_HIFI4_DRESET ) | +BIT_ULL_MASK (JH7100_RST_HIFI4_BRESET ), +/* STATUS2 */ +BIT_ULL_MASK (JH7100_RST_E24 ) | +/* STATUS3 */ +0 , +}; + +static int __init jh7100_reset_probe (struct platform_device *pdev) +{ +void __iomem *base =devm_platform_ioremap_resource (pdev,0 ); + +if (IS_ERR (base)) +return PTR_ERR (base); + +return reset_starfive_jh7100_register (&pdev->dev, pdev->dev.of_node, + base +JH7100_RESET_ASSERT0 , + base +JH7100_RESET_STATUS0 , + jh7100_reset_asserted, +JH7100_RSTN_END , +THIS_MODULE ); +} +static const struct of_device_id jh7100_reset_dt_ids[] = { { .compatible ="starfive,jh7100-reset" }, {/* sentinel */ }
drivers/reset/starfive/reset-starfive-jh71x0.c +23 -53
118 lines not on this page · raw message
drivers/reset/starfive/reset-starfive-jh71x0.h +4 -1
@@ -6,6 +6,9 @@#ifndef __RESET_STARFIVE_JH71X0_H#define __RESET_STARFIVE_JH71X0_H -int jh7100_reset_probe (struct platform_device *pdev); +int reset_starfive_jh7100_register (struct device *dev,struct device_node *of_node, +void __iomem *assert,void __iomem *status, +const u64 *asserted,unsigned int nr_resets, +struct module *owner);#endif /* __RESET_STARFIVE_JH71X0_H */
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 11/22 reset: starfive: Rename "jh7100" to "jh71x0" for the common code
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
For the common code will be shared with the StarFive JH7110 SoC.
--- .../reset/starfive/reset-starfive-jh7100.c | 2 +- .../reset/starfive/reset-starfive-jh71x0.c | 50 +++++++++---------- .../reset/starfive/reset-starfive-jh71x0.h | 2 +- 3 files changed, 27 insertions(+), 27 deletions(-)
drivers/reset/starfive/reset-starfive-jh7100.c +1 -1
@@ -51,7 +51,7 @@ static int __init jh7100_reset_probe(struct platform_device *pdev)if (IS_ERR (base))return PTR_ERR (base); - return reset_starfive_jh7100_register(&pdev->dev, pdev->dev.of_node, + return reset_starfive_jh71x0_register(&pdev->dev, pdev->dev.of_node, base + JH7100_RESET_ASSERT0, base + JH7100_RESET_STATUS0, jh7100_reset_asserted,
drivers/reset/starfive/reset-starfive-jh71x0.c +25 -25
117 lines not on this page · raw message
drivers/reset/starfive/reset-starfive-jh71x0.h +1 -1
@@ -6,7 +6,7 @@#ifndef __RESET_STARFIVE_JH71X0_H#define __RESET_STARFIVE_JH71X0_H -int reset_starfive_jh7100_register (struct device *dev,struct device_node *of_node, +int reset_starfive_jh71x0_register (struct device *dev,struct device_node *of_node,void __iomem *assert,void __iomem *status,const u64 *asserted,unsigned int nr_resets,struct module *owner);
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 12/22 reset: starfive: jh71x0: Use 32bit I/O on 32bit registers
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
We currently use 64bit I/O on the 32bit registers. This works because there are an even number of assert and status registers, so they're only ever accessed in pairs on 64bit boundaries.
There are however other reset controllers for audio and video on the JH7100 SoC with only one status register that isn't 64bit aligned so 64bit I/O results in an unaligned access exception.
Switch to 32bit I/O in preparation for supporting these resets too.
--- .../reset/starfive/reset-starfive-jh7100.c | 14 ++++----- .../reset/starfive/reset-starfive-jh71x0.c | 31 +++++++++---------- .../reset/starfive/reset-starfive-jh71x0.h | 2 +- 3 files changed, 23 insertions(+), 24 deletions(-)
drivers/reset/starfive/reset-starfive-jh7100.c +7 -7
@@ -30,16 +30,16 @@* lines don't though, so store the expected value of the status registers when * all lines are asserted. */ -static const u64 jh7100_reset_asserted[2 ] = { +static const u32 jh7100_reset_asserted[4 ] = {/* STATUS0 */ -BIT_ULL_MASK (JH7100_RST_U74 ) | -BIT_ULL_MASK (JH7100_RST_VP6_DRESET ) | -BIT_ULL_MASK (JH7100_RST_VP6_BRESET ) | +BIT (JH7100_RST_U74 %32 ) | +BIT (JH7100_RST_VP6_DRESET %32 ) | +BIT (JH7100_RST_VP6_BRESET %32 ),/* STATUS1 */ -BIT_ULL_MASK (JH7100_RST_HIFI4_DRESET ) | -BIT_ULL_MASK (JH7100_RST_HIFI4_BRESET ), +BIT (JH7100_RST_HIFI4_DRESET %32 ) | +BIT (JH7100_RST_HIFI4_BRESET %32 ),/* STATUS2 */ -BIT_ULL_MASK (JH7100_RST_E24 ) | +BIT (JH7100_RST_E24 %32 ),/* STATUS3 */ 0 , };
drivers/reset/starfive/reset-starfive-jh71x0.c +15 -16
@@ -8,7 +8,6 @@#include <linux/bitmap.h> #include <linux/device.h> #include <linux/io.h> -#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/iopoll.h> #include <linux/reset-controller.h> #include <linux/spinlock.h>
@@ -21,7 +20,7 @@ struct jh71x0_reset {spinlock_t lock;void __iomem *assert;void __iomem *status; -const u64 *asserted; +const u32 *asserted; }; static inline struct jh71x0_reset *
@@ -34,12 +33,12 @@ static int jh71x0_reset_update(struct reset_controller_dev *rcdev, unsigned long id, bool assert) {struct jh71x0_reset *data =jh71x0_reset_from (rcdev); -unsigned long offset =BIT_ULL_WORD (id); -u64 mask =BIT_ULL_MASK (id); -void __iomem *reg_assert = data->assert + offset *sizeof (u64); -void __iomem *reg_status = data->status + offset *sizeof (u64); -u64 done = data->asserted ? data->asserted[offset] & mask :0 ; -u64 value; +unsigned long offset = id /32 ; +u32 mask =BIT (id %32 ); +void __iomem *reg_assert = data->assert + offset *sizeof (u32); +void __iomem *reg_status = data->status + offset *sizeof (u32); +u32 done = data->asserted ? data->asserted[offset] & mask :0 ; +u32 value;unsigned long flags;int ret;
@@ -48,15 +47,15 @@ static int jh71x0_reset_update(struct reset_controller_dev *rcdev,spin_lock_irqsave (&data->lock, flags); - value =readq (reg_assert); + value =readl (reg_assert);if (assert) value |= mask;else value &= ~mask; -writeq (value, reg_assert); +writel (value, reg_assert);/* if the associated clock is gated, deasserting might otherwise hang forever */ - ret =readq_poll_timeout_atomic (reg_status, value, (value & mask) == done,0 ,1000 ); + ret =readl_poll_timeout_atomic (reg_status, value, (value & mask) == done,0 ,1000 );spin_unlock_irqrestore (&data->lock, flags);return ret;
@@ -90,10 +89,10 @@ static int jh71x0_reset_status(struct reset_controller_dev *rcdev, unsigned long id) {struct jh71x0_reset *data =jh71x0_reset_from (rcdev); -unsigned long offset =BIT_ULL_WORD (id); -u64 mask =BIT_ULL_MASK (id); -void __iomem *reg_status = data->status + offset *sizeof (u64); -u64 value =readq (reg_status); +unsigned long offset = id /32 ; +u32 mask =BIT (id %32 ); +void __iomem *reg_status = data->status + offset *sizeof (u32); +u32 value =readl (reg_status);return !((value ^ data->asserted[offset]) & mask); }
@@ -107,7 +106,7 @@ static const struct reset_control_ops jh71x0_reset_ops = {int reset_starfive_jh71x0_register (struct device *dev,struct device_node *of_node,void __iomem *assert,void __iomem *status, -const u64 *asserted,unsigned int nr_resets, +const u32 *asserted,unsigned int nr_resets,struct module *owner) {struct jh71x0_reset *data;
drivers/reset/starfive/reset-starfive-jh71x0.h +1 -1
@@ -8,7 +8,7 @@int reset_starfive_jh71x0_register (struct device *dev,struct device_node *of_node,void __iomem *assert,void __iomem *status, -const u64 *asserted,unsigned int nr_resets, +const u32 *asserted,unsigned int nr_resets,struct module *owner);#endif /* __RESET_STARFIVE_JH71X0_H */
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 13/22 clk: starfive: Add StarFive JH7110 system clock driver
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add driver for the StarFive JH7110 system clock controller and register an auxiliary device for system reset controller which is named as "reset-sys".
--- drivers/clk/starfive/Kconfig | 11 + drivers/clk/starfive/Makefile | 2 + .../clk/starfive/clk-starfive-jh7110-sys.c | 490 ++++++++++++++++++ drivers/clk/starfive/clk-starfive-jh7110.h | 11 + 4 files changed, 514 insertions(+) create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110.h
drivers/clk/starfive/Kconfig +11 -0
@@ -20,3 +20,14 @@ config CLK_STARFIVE_JH7100_AUDIO help Say Y or M here to support the audio clocks on the StarFive JH7100 SoC. + +config CLK_STARFIVE_JH7110_SYS + bool "StarFive JH7110 system clock support" + depends on ARCH_STARFIVE || COMPILE_TEST + select AUXILIARY_BUS + select CLK_STARFIVE_JH71X0 + select RESET_STARFIVE_JH7110 + default ARCH_STARFIVE + help + Say yes here to support the system clock controller on the + StarFive JH7110 SoC.
drivers/clk/starfive/Makefile +2 -0
@@ -3,3 +3,5 @@ obj-$(CONFIG_CLK_STARFIVE_JH71X0) += clk-starfive-jh71x0.o obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o + +obj-$(CONFIG_CLK_STARFIVE_JH7110_SYS) += clk-starfive-jh7110-sys.o
drivers/clk/starfive/clk-starfive-jh7110-sys.c new file +490 -0
490 lines not on this page · raw message
drivers/clk/starfive/clk-starfive-jh7110.h new file +11 -0
@@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __CLK_STARFIVE_JH7110_H +#define __CLK_STARFIVE_JH7110_H + +#include "clk-starfive-jh71x0.h" + +int jh7110_reset_controller_register (struct jh71x0_clk_priv *priv, +const char *adev_name, +u32 adev_id); + +#endif
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 14/22 clk: starfive: Add StarFive JH7110 always-on clock driver
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add driver for the StarFive JH7110 always-on clock controller and register an auxiliary device for always-on reset controller which is named as "reset-aon".
--- drivers/clk/starfive/Kconfig | 11 ++ drivers/clk/starfive/Makefile | 1 + .../clk/starfive/clk-starfive-jh7110-aon.c | 156 ++++++++++++++++++ 3 files changed, 168 insertions(+) create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c
drivers/clk/starfive/Kconfig +11 -0
@@ -31,3 +31,14 @@ config CLK_STARFIVE_JH7110_SYS help Say yes here to support the system clock controller on the StarFive JH7110 SoC. + +config CLK_STARFIVE_JH7110_AON + tristate "StarFive JH7110 always-on clock support" + depends on CLK_STARFIVE_JH7110_SYS + select AUXILIARY_BUS + select CLK_STARFIVE_JH71X0 + select RESET_STARFIVE_JH7110 + default m if ARCH_STARFIVE + help + Say yes here to support the always-on clock controller on the + StarFive JH7110 SoC.
drivers/clk/starfive/Makefile +1 -0
@@ -5,3 +5,4 @@ obj-$(CONFIG_CLK_STARFIVE_JH7100) += clk-starfive-jh7100.o obj-$(CONFIG_CLK_STARFIVE_JH7100_AUDIO) += clk-starfive-jh7100-audio.o obj-$(CONFIG_CLK_STARFIVE_JH7110_SYS) += clk-starfive-jh7110-sys.o +obj-$(CONFIG_CLK_STARFIVE_JH7110_AON) += clk-starfive-jh7110-aon.o
drivers/clk/starfive/clk-starfive-jh7110-aon.c new file +156 -0
156 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 15/22 reset: starfive: Add StarFive JH7110 reset driver
In reply to Hal FengAdd auxiliary driver to support StarFive JH7110 system and always-on resets.
--- drivers/reset/starfive/Kconfig | 8 +++ drivers/reset/starfive/Makefile | 1 + .../reset/starfive/reset-starfive-jh7110.c | 70 +++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 drivers/reset/starfive/reset-starfive-jh7110.c
drivers/reset/starfive/Kconfig +8 -0
@@ -10,3 +10,11 @@ config RESET_STARFIVE_JH7100 default ARCH_STARFIVE help This enables the reset controller driver for the StarFive JH7100 SoC. + +config RESET_STARFIVE_JH7110 + bool "StarFive JH7110 Reset Driver" + depends on AUXILIARY_BUS && CLK_STARFIVE_JH7110_SYS + select RESET_STARFIVE_JH71X0 + default ARCH_STARFIVE + help + This enables the reset controller driver for the StarFive JH7110 SoC.
drivers/reset/starfive/Makefile +1 -0
@@ -2,3 +2,4 @@ obj-$(CONFIG_RESET_STARFIVE_JH71X0) += reset-starfive-jh71x0.o obj-$(CONFIG_RESET_STARFIVE_JH7100) += reset-starfive-jh7100.o +obj-$(CONFIG_RESET_STARFIVE_JH7110) += reset-starfive-jh7110.o
drivers/reset/starfive/reset-starfive-jh7110.c new file +70 -0
70 lines not on this page · raw message
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 16/22 dt-bindings: timer: Add StarFive JH7110 clint
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add compatible string for the StarFive JH7110 clint.
--- Documentation/devicetree/bindings/timer/sifive,clint.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/timer/sifive,clint.yaml +1 -0
@@ -31,6 +31,7 @@ properties: - enum: - sifive,fu540-c000-clint - starfive,jh7100-clint + - starfive,jh7110-clint - canaan,k210-clint - const: sifive,clint0 - items:
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 17/22 dt-bindings: interrupt-controller: Add StarFive JH7110 plic
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add compatible string for StarFive JH7110 plic.
--- .../bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +1 -0
@@ -59,6 +59,7 @@ properties: - enum: - sifive,fu540-c000-plic - starfive,jh7100-plic + - starfive,jh7110-plic - canaan,k210-plic - const: sifive,plic-1.0.0 - items:
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 18/22 dt-bindings: riscv: Add SiFive S7 compatible
In reply to Hal FengAdd a new compatible string in cpu.yaml for SiFive S7 CPU core which is used on SiFive U74-MC core complex etc.
--- Documentation/devicetree/bindings/riscv/cpus.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/riscv/cpus.yaml +1 -0
@@ -35,6 +35,7 @@ properties: - sifive,e7 - sifive,e71 - sifive,rocket0 + - sifive,s7 - sifive,u5 - sifive,u54 - sifive,u7
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 19/22 riscv: dts: starfive: Add initial StarFive JH7110 device tree
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 509 +++++++++++++++++++++++ 1 file changed, 509 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +509 -0
@@ -0,0 +1,509 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include <dt-bindings/clock/starfive,jh7110-crg.h> +#include <dt-bindings/reset/starfive,jh7110-crg.h> + +/ { + compatible = "starfive,jh7110"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + S7_0: cpu@0 { + compatible = "sifive,s7", "riscv"; + reg = <0>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <8192>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <16384>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imac_zba_zbb"; + tlb-split; + status = "disabled"; + + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_1: cpu@1 { + compatible = "sifive,u74-mc", "riscv"; + reg = <1>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu1_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_2: cpu@2 { + compatible = "sifive,u74-mc", "riscv"; + reg = <2>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu2_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_3: cpu@3 { + compatible = "sifive,u74-mc", "riscv"; + reg = <3>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu3_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_4: cpu@4 { + compatible = "sifive,u74-mc", "riscv"; + reg = <4>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu4_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu-map { + cluster0 { + core0 { + cpu = <&S7_0>; + }; + + core1 { + cpu = <&U74_1>; + }; + + core2 { + cpu = <&U74_2>; + }; + + core3 { + cpu = <&U74_3>; + }; + + core4 { + cpu = <&U74_4>; + }; + }; + }; + }; + + gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac0_rgmii_rxin"; + #clock-cells = <0>; + }; + + gmac0_rmii_refin: gmac0-rmii-refin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac0_rmii_refin"; + #clock-cells = <0>; + }; + + gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac1_rgmii_rxin"; + #clock-cells = <0>; + }; + + gmac1_rmii_refin: gmac1-rmii-refin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac1_rmii_refin"; + #clock-cells = <0>; + }; + + i2srx_bclk_ext: i2srx-bclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2srx_bclk_ext"; + #clock-cells = <0>; + }; + + i2srx_lrck_ext: i2srx-lrck-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2srx_lrck_ext"; + #clock-cells = <0>; + }; + + i2stx_bclk_ext: i2stx-bclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2stx_bclk_ext"; + #clock-cells = <0>; + }; + + i2stx_lrck_ext: i2stx-lrck-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2stx_lrck_ext"; + #clock-cells = <0>; + }; + + mclk_ext: mclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "mclk_ext"; + #clock-cells = <0>; + }; + + osc: oscillator { + compatible = "fixed-clock"; + clock-output-names = "osc"; + #clock-cells = <0>; + }; + + rtc_osc: rtc-oscillator { + compatible = "fixed-clock"; + clock-output-names = "rtc_osc"; + #clock-cells = <0>; + }; + + tdm_ext: tdm-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "tdm_ext"; + #clock-cells = <0>; + }; + + soc { + compatible = "simple-bus"; + interrupt-parent = <&plic>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clint: timer@2000000 { + compatible = "starfive,jh7110-clint", "sifive,clint0"; + reg = <0x0 0x2000000 0x0 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>; + }; + + ccache: cache-controller@2010000 { + compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache"; + reg = <0x0 0x2010000 0x0 0x4000>; + interrupts = <1>, <3>, <4>, <2>; + cache-block-size = <64>; + cache-level = <2>; + cache-sets = <2048>; + cache-size = <2097152>; + cache-unified; + }; + + plic: interrupt-controller@c000000 { + compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0"; + reg = <0x0 0xc000000 0x0 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, + <&cpu1_intc 11>, <&cpu1_intc 9>, + <&cpu2_intc 11>, <&cpu2_intc 9>, + <&cpu3_intc 11>, <&cpu3_intc 9>, + <&cpu4_intc 11>, <&cpu4_intc 9>; + interrupt-controller; + #interrupt-cells = <1>; + #address-cells = <0>; + riscv,ndev = <136>; + }; + + uart0: serial@10000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10000000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>, + <&syscrg JH7110_SYSCLK_UART0_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART0_APB>; + interrupts = <32>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart1: serial@10010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10010000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>, + <&syscrg JH7110_SYSCLK_UART1_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART1_APB>; + interrupts = <33>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart2: serial@10020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10020000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>, + <&syscrg JH7110_SYSCLK_UART2_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART2_APB>; + interrupts = <34>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + i2c0: i2c@10030000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10030000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C0_APB>; + interrupts = <35>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c1: i2c@10040000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C1_APB>; + interrupts = <36>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c2: i2c@10050000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10050000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C2_APB>; + interrupts = <37>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + uart3: serial@12000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12000000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>, + <&syscrg JH7110_SYSCLK_UART3_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART3_APB>; + interrupts = <45>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart4: serial@12010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12010000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>, + <&syscrg JH7110_SYSCLK_UART4_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART4_APB>; + interrupts = <46>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart5: serial@12020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12020000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>, + <&syscrg JH7110_SYSCLK_UART5_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART5_APB>; + interrupts = <47>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + i2c3: i2c@12030000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12030000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C3_APB>; + interrupts = <48>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c4: i2c@12040000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C4_APB>; + interrupts = <49>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c5: i2c@12050000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12050000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C5_APB>; + interrupts = <50>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c6: i2c@12060000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12060000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C6_APB>; + interrupts = <51>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + syscrg: clock-controller@13020000 { + compatible = "starfive,jh7110-syscrg"; + reg = <0x0 0x13020000 0x0 0x10000>; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + sysgpio: pinctrl@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>; + resets = <&syscrg JH7110_SYSRST_IOMUX_APB>; + interrupts = <86>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + + aoncrg: clock-controller@17000000 { + compatible = "starfive,jh7110-aoncrg"; + reg = <0x0 0x17000000 0x0 0x10000>; + clocks = <&osc>, <&gmac0_rmii_refin>, + <&gmac0_rgmii_rxin>, + <&syscrg JH7110_SYSCLK_STG_AXIAHB>, + <&syscrg JH7110_SYSCLK_APB_BUS>, + <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>, + <&rtc_osc>; + clock-names = "osc", "gmac0_rmii_refin", + "gmac0_rgmii_rxin", "stg_axiahb", + "apb_bus", "gmac0_gtxclk", + "rtc_osc"; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + aongpio: pinctrl@17020000 { + compatible = "starfive,jh7110-aon-pinctrl"; + reg = <0x0 0x17020000 0x0 0x10000>; + resets = <&aoncrg JH7110_AONRST_IOMUX>; + interrupts = <85>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + }; +};
Signature · 1 line
2.38.1
Re: [PATCH v7 19/22] riscv: dts: starfive: Add initial StarFive JH7110 device tree
Hi Hal,
Quoted 263 lines
From: Emil Renner Berthing <[email protected]>
Add initial device tree for the JH7110 RISC-V SoC by StarFive Technology Ltd.
Tested-by Tommaso Merciai <[email protected]>Reviewed-by Conor Dooley <[email protected]>Signed-off-by Emil Renner Berthing <[email protected]>Co-developed-by Jianlong Huang <[email protected]>Signed-off-by Jianlong Huang <[email protected]>Co-developed-by Hal Feng <[email protected]>Signed-off-by Hal Feng <[email protected]>--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 509 +++++++++++++++++++++++ 1 file changed, 509 insertions(+)create mode 100644
arch/riscv/boot/dts/starfive/jh7110.dtsiarch/riscv/boot/dts/starfive/jh7110.dtsi new file +240
-0@@ -0,0 +1,509 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include <dt-bindings/clock/starfive,jh7110-crg.h> +#include <dt-bindings/reset/starfive,jh7110-crg.h> + +/ { + compatible = "starfive,jh7110"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + S7_0: cpu@0 { + compatible = "sifive,s7", "riscv"; + reg = <0>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <8192>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <16384>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imac_zba_zbb"; + tlb-split; + status = "disabled"; + + cpu0_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_1: cpu@1 { + compatible = "sifive,u74-mc", "riscv"; + reg = <1>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu1_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_2: cpu@2 { + compatible = "sifive,u74-mc", "riscv"; + reg = <2>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu2_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_3: cpu@3 { + compatible = "sifive,u74-mc", "riscv"; + reg = <3>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu3_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + U74_4: cpu@4 { + compatible = "sifive,u74-mc", "riscv"; + reg = <4>; + d-cache-block-size = <64>; + d-cache-sets = <64>; + d-cache-size = <32768>; + d-tlb-sets = <1>; + d-tlb-size = <40>; + device_type = "cpu"; + i-cache-block-size = <64>; + i-cache-sets = <64>; + i-cache-size = <32768>; + i-tlb-sets = <1>; + i-tlb-size = <40>; + mmu-type = "riscv,sv39"; + next-level-cache = <&ccache>; + riscv,isa = "rv64imafdc_zba_zbb"; + tlb-split; + + cpu4_intc: interrupt-controller { + compatible = "riscv,cpu-intc"; + interrupt-controller; + #interrupt-cells = <1>; + }; + }; + + cpu-map { + cluster0 { + core0 { + cpu = <&S7_0>; + }; + + core1 { + cpu = <&U74_1>; + }; + + core2 { + cpu = <&U74_2>; + }; + + core3 { + cpu = <&U74_3>; + }; + + core4 { + cpu = <&U74_4>; + }; + }; + }; + }; + + gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac0_rgmii_rxin"; + #clock-cells = <0>; + }; + + gmac0_rmii_refin: gmac0-rmii-refin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac0_rmii_refin"; + #clock-cells = <0>; + }; + + gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac1_rgmii_rxin"; + #clock-cells = <0>; + }; + + gmac1_rmii_refin: gmac1-rmii-refin-clock { + compatible = "fixed-clock"; + clock-output-names = "gmac1_rmii_refin"; + #clock-cells = <0>; + }; + + i2srx_bclk_ext: i2srx-bclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2srx_bclk_ext"; + #clock-cells = <0>; + }; + + i2srx_lrck_ext: i2srx-lrck-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2srx_lrck_ext"; + #clock-cells = <0>; + }; + + i2stx_bclk_ext: i2stx-bclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2stx_bclk_ext"; + #clock-cells = <0>; + }; + + i2stx_lrck_ext: i2stx-lrck-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "i2stx_lrck_ext"; + #clock-cells = <0>; + }; + + mclk_ext: mclk-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "mclk_ext"; + #clock-cells = <0>; + }; + + osc: oscillator { + compatible = "fixed-clock"; + clock-output-names = "osc"; + #clock-cells = <0>; + }; + + rtc_osc: rtc-oscillator { + compatible = "fixed-clock"; + clock-output-names = "rtc_osc"; + #clock-cells = <0>; + };
arch/riscv/boot/dts/starfive/jh7110.dtsi line 250
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +10
-0+ + tdm_ext: tdm-ext-clock { + compatible = "fixed-clock"; + clock-output-names = "tdm_ext"; + #clock-cells = <0>; + }; + + soc { + compatible = "simple-bus"; + interrupt-parent = <&plic>;
Do we really need this interrupt-parent? Seems it is causing a dependency cycle:
platform soc: Fixed dependency cycle(s) with /soc/interrupt-controller@c000000
And seems fu740 dts doesn't have this.
Best regards,
Shengyu
Quoted 259 lines
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +259
-0+ #address-cells = <2>; + #size-cells = <2>; + ranges; + + clint: timer@2000000 { + compatible = "starfive,jh7110-clint", "sifive,clint0"; + reg = <0x0 0x2000000 0x0 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>; + }; + + ccache: cache-controller@2010000 { + compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache"; + reg = <0x0 0x2010000 0x0 0x4000>; + interrupts = <1>, <3>, <4>, <2>; + cache-block-size = <64>; + cache-level = <2>; + cache-sets = <2048>; + cache-size = <2097152>; + cache-unified; + }; + + plic: interrupt-controller@c000000 { + compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0"; + reg = <0x0 0xc000000 0x0 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, + <&cpu1_intc 11>, <&cpu1_intc 9>, + <&cpu2_intc 11>, <&cpu2_intc 9>, + <&cpu3_intc 11>, <&cpu3_intc 9>, + <&cpu4_intc 11>, <&cpu4_intc 9>; + interrupt-controller; + #interrupt-cells = <1>; + #address-cells = <0>; + riscv,ndev = <136>; + }; + + uart0: serial@10000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10000000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>, + <&syscrg JH7110_SYSCLK_UART0_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART0_APB>; + interrupts = <32>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart1: serial@10010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10010000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>, + <&syscrg JH7110_SYSCLK_UART1_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART1_APB>; + interrupts = <33>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart2: serial@10020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10020000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>, + <&syscrg JH7110_SYSCLK_UART2_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART2_APB>; + interrupts = <34>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + i2c0: i2c@10030000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10030000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C0_APB>; + interrupts = <35>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c1: i2c@10040000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C1_APB>; + interrupts = <36>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c2: i2c@10050000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x10050000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C2_APB>; + interrupts = <37>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + uart3: serial@12000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12000000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>, + <&syscrg JH7110_SYSCLK_UART3_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART3_APB>; + interrupts = <45>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart4: serial@12010000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12010000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>, + <&syscrg JH7110_SYSCLK_UART4_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART4_APB>; + interrupts = <46>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + uart5: serial@12020000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x12020000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>, + <&syscrg JH7110_SYSCLK_UART5_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART5_APB>; + interrupts = <47>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + + i2c3: i2c@12030000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12030000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C3_APB>; + interrupts = <48>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c4: i2c@12040000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C4_APB>; + interrupts = <49>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c5: i2c@12050000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12050000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C5_APB>; + interrupts = <50>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c6: i2c@12060000 { + compatible = "snps,designware-i2c"; + reg = <0x0 0x12060000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>; + clock-names = "ref"; + resets = <&syscrg JH7110_SYSRST_I2C6_APB>; + interrupts = <51>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + syscrg: clock-controller@13020000 { + compatible = "starfive,jh7110-syscrg"; + reg = <0x0 0x13020000 0x0 0x10000>; + clocks = <&osc>, <&gmac1_rmii_refin>, + <&gmac1_rgmii_rxin>, + <&i2stx_bclk_ext>, <&i2stx_lrck_ext>, + <&i2srx_bclk_ext>, <&i2srx_lrck_ext>, + <&tdm_ext>, <&mclk_ext>; + clock-names = "osc", "gmac1_rmii_refin", + "gmac1_rgmii_rxin", + "i2stx_bclk_ext", "i2stx_lrck_ext", + "i2srx_bclk_ext", "i2srx_lrck_ext", + "tdm_ext", "mclk_ext"; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + sysgpio: pinctrl@13040000 { + compatible = "starfive,jh7110-sys-pinctrl"; + reg = <0x0 0x13040000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>; + resets = <&syscrg JH7110_SYSRST_IOMUX_APB>; + interrupts = <86>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + + aoncrg: clock-controller@17000000 { + compatible = "starfive,jh7110-aoncrg"; + reg = <0x0 0x17000000 0x0 0x10000>; + clocks = <&osc>, <&gmac0_rmii_refin>, + <&gmac0_rgmii_rxin>, + <&syscrg JH7110_SYSCLK_STG_AXIAHB>, + <&syscrg JH7110_SYSCLK_APB_BUS>, + <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>, + <&rtc_osc>; + clock-names = "osc", "gmac0_rmii_refin", + "gmac0_rgmii_rxin", "stg_axiahb", + "apb_bus", "gmac0_gtxclk", + "rtc_osc"; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + aongpio: pinctrl@17020000 { + compatible = "starfive,jh7110-aon-pinctrl"; + reg = <0x0 0x17020000 0x0 0x10000>; + resets = <&aoncrg JH7110_AONRST_IOMUX>; + interrupts = <85>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + }; +};
Hal Feng
maintainerRe: [PATCH v7 19/22] riscv: dts: starfive: Add initial StarFive JH7110 device tree
Quoted 19 lines · Shengyu Qu
Hi Hal,
Quoted 18 lines
From: Emil Renner Berthing <[email protected]>
arch/riscv/boot/dts/starfive/jh7110.dtsi new file +11
-0@@ -0,0 +1,509 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include <dt-bindings/clock/starfive,jh7110-crg.h> +#include <dt-bindings/reset/starfive,jh7110-crg.h> + +/ {
[...]
Quoted 10 lines
Quoted 4 lines
+
+ soc {
+ compatible = "simple-bus";
+ interrupt-parent = <&plic>;Do we really need this interrupt-parent? Seems it is causing a dependency cycle:
platform soc: Fixed dependency cycle(s) with /soc/interrupt-controller@c000000
And seems fu740 dts doesn't have this.
Sorry to reply too late. If we drop this line, we need to add 'interrupt-parent' to every node which uses interrupt. And I found some other platform did the same such as
arch/riscv/boot/dts/allwinner/sun20i-d1s.dtsiarch/riscv/boot/dts/canaan/k210.dtsiarch/riscv/boot/dts/renesas/r9a07g043f.dtsi
Best regards,
Hal
Quoted 53 lines
Quoted 53 lines
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;arch/riscv/boot/dts/starfive/jh7110.dtsi new file +49
-0+ + clint: timer@2000000 { + compatible = "starfive,jh7110-clint", "sifive,clint0"; + reg = <0x0 0x2000000 0x0 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, + <&cpu1_intc 3>, <&cpu1_intc 7>, + <&cpu2_intc 3>, <&cpu2_intc 7>, + <&cpu3_intc 3>, <&cpu3_intc 7>, + <&cpu4_intc 3>, <&cpu4_intc 7>; + }; + + ccache: cache-controller@2010000 { + compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache"; + reg = <0x0 0x2010000 0x0 0x4000>; + interrupts = <1>, <3>, <4>, <2>; + cache-block-size = <64>; + cache-level = <2>; + cache-sets = <2048>; + cache-size = <2097152>; + cache-unified; + }; + + plic: interrupt-controller@c000000 { + compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0"; + reg = <0x0 0xc000000 0x0 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, + <&cpu1_intc 11>, <&cpu1_intc 9>, + <&cpu2_intc 11>, <&cpu2_intc 9>, + <&cpu3_intc 11>, <&cpu3_intc 9>, + <&cpu4_intc 11>, <&cpu4_intc 9>; + interrupt-controller; + #interrupt-cells = <1>; + #address-cells = <0>; + riscv,ndev = <136>; + }; + + uart0: serial@10000000 { + compatible = "snps,dw-apb-uart"; + reg = <0x0 0x10000000 0x0 0x10000>; + clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>, + <&syscrg JH7110_SYSCLK_UART0_APB>; + clock-names = "baudclk", "apb_pclk"; + resets = <&syscrg JH7110_SYSRST_UART0_APB>; + interrupts = <32>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; +
[...]
Hal Feng
maintainerPATCH v7 20/22 riscv: dts: starfive: Add StarFive JH7110 pin function definitions
In reply to Hal FengFrom: Jianlong Huang <[email protected]>
Add pin function definitions for StarFive JH7110 SoC.
--- arch/riscv/boot/dts/starfive/jh7110-pinfunc.h | 308 ++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 arch/riscv/boot/dts/starfive/jh7110-pinfunc.h
arch/riscv/boot/dts/starfive/jh7110-pinfunc.h new file +308 -0
@@ -0,0 +1,308 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* +* Copyright (C) 2022 Emil Renner Berthing <[email protected]> +* Copyright (C) 2022 StarFive Technology Co., Ltd. +*/ + +#ifndef __JH7110_PINFUNC_H__ +#define __JH7110_PINFUNC_H__ + +/* +* mux bits: +* | 31 - 24 | 23 - 16 | 15 - 10 | 9 - 8 | 7 - 0 | +* | din | dout | doen | function | gpio nr | +* +* dout: output signal +* doen: output enable signal +* din: optional input signal, 0xff = none +* function: function selector +* gpio nr: gpio number, 0 - 63 +*/ +#define GPIOMUX (n, dout, doen, din) ( \ + (((din) & 0xff) << 24) | \ + (((dout) & 0xff) << 16) | \ + (((doen) & 0x3f) << 10) | \ + ((n) & 0x3f)) + +#define PINMUX (n, func) ((1 << 10) | (((func) & 0x3) << 8) | ((n) & 0xff)) + +/* sys_iomux dout */ +#define GPOUT_LOW 0 +#define GPOUT_HIGH 1 +#define GPOUT_SYS_WAVE511_UART_TX 2 +#define GPOUT_SYS_CAN0_STBY 3 +#define GPOUT_SYS_CAN0_TST_NEXT_BIT 4 +#define GPOUT_SYS_CAN0_TST_SAMPLE_POINT 5 +#define GPOUT_SYS_CAN0_TXD 6 +#define GPOUT_SYS_USB_DRIVE_VBUS 7 +#define GPOUT_SYS_QSPI_CS1 8 +#define GPOUT_SYS_SPDIF 9 +#define GPOUT_SYS_HDMI_CEC_SDA 10 +#define GPOUT_SYS_HDMI_DDC_SCL 11 +#define GPOUT_SYS_HDMI_DDC_SDA 12 +#define GPOUT_SYS_WATCHDOG 13 +#define GPOUT_SYS_I2C0_CLK 14 +#define GPOUT_SYS_I2C0_DATA 15 +#define GPOUT_SYS_SDIO0_BACK_END_POWER 16 +#define GPOUT_SYS_SDIO0_CARD_POWER_EN 17 +#define GPOUT_SYS_SDIO0_CCMD_OD_PULLUP_EN 18 +#define GPOUT_SYS_SDIO0_RST 19 +#define GPOUT_SYS_UART0_TX 20 +#define GPOUT_SYS_HIFI4_JTAG_TDO 21 +#define GPOUT_SYS_JTAG_TDO 22 +#define GPOUT_SYS_PDM_MCLK 23 +#define GPOUT_SYS_PWM_CHANNEL0 24 +#define GPOUT_SYS_PWM_CHANNEL1 25 +#define GPOUT_SYS_PWM_CHANNEL2 26 +#define GPOUT_SYS_PWM_CHANNEL3 27 +#define GPOUT_SYS_PWMDAC_LEFT 28 +#define GPOUT_SYS_PWMDAC_RIGHT 29 +#define GPOUT_SYS_SPI0_CLK 30 +#define GPOUT_SYS_SPI0_FSS 31 +#define GPOUT_SYS_SPI0_TXD 32 +#define GPOUT_SYS_GMAC_PHYCLK 33 +#define GPOUT_SYS_I2SRX_BCLK 34 +#define GPOUT_SYS_I2SRX_LRCK 35 +#define GPOUT_SYS_I2STX0_BCLK 36 +#define GPOUT_SYS_I2STX0_LRCK 37 +#define GPOUT_SYS_MCLK 38 +#define GPOUT_SYS_TDM_CLK 39 +#define GPOUT_SYS_TDM_SYNC 40 +#define GPOUT_SYS_TDM_TXD 41 +#define GPOUT_SYS_TRACE_DATA0 42 +#define GPOUT_SYS_TRACE_DATA1 43 +#define GPOUT_SYS_TRACE_DATA2 44 +#define GPOUT_SYS_TRACE_DATA3 45 +#define GPOUT_SYS_TRACE_REF 46 +#define GPOUT_SYS_CAN1_STBY 47 +#define GPOUT_SYS_CAN1_TST_NEXT_BIT 48 +#define GPOUT_SYS_CAN1_TST_SAMPLE_POINT 49 +#define GPOUT_SYS_CAN1_TXD 50 +#define GPOUT_SYS_I2C1_CLK 51 +#define GPOUT_SYS_I2C1_DATA 52 +#define GPOUT_SYS_SDIO1_BACK_END_POWER 53 +#define GPOUT_SYS_SDIO1_CARD_POWER_EN 54 +#define GPOUT_SYS_SDIO1_CLK 55 +#define GPOUT_SYS_SDIO1_CMD_OD_PULLUP_EN 56 +#define GPOUT_SYS_SDIO1_CMD 57 +#define GPOUT_SYS_SDIO1_DATA0 58 +#define GPOUT_SYS_SDIO1_DATA1 59 +#define GPOUT_SYS_SDIO1_DATA2 60 +#define GPOUT_SYS_SDIO1_DATA3 61 +#define GPOUT_SYS_SDIO1_DATA4 63 +#define GPOUT_SYS_SDIO1_DATA5 63 +#define GPOUT_SYS_SDIO1_DATA6 64 +#define GPOUT_SYS_SDIO1_DATA7 65 +#define GPOUT_SYS_SDIO1_RST 66 +#define GPOUT_SYS_UART1_RTS 67 +#define GPOUT_SYS_UART1_TX 68 +#define GPOUT_SYS_I2STX1_SDO0 69 +#define GPOUT_SYS_I2STX1_SDO1 70 +#define GPOUT_SYS_I2STX1_SDO2 71 +#define GPOUT_SYS_I2STX1_SDO3 72 +#define GPOUT_SYS_SPI1_CLK 73 +#define GPOUT_SYS_SPI1_FSS 74 +#define GPOUT_SYS_SPI1_TXD 75 +#define GPOUT_SYS_I2C2_CLK 76 +#define GPOUT_SYS_I2C2_DATA 77 +#define GPOUT_SYS_UART2_RTS 78 +#define GPOUT_SYS_UART2_TX 79 +#define GPOUT_SYS_SPI2_CLK 80 +#define GPOUT_SYS_SPI2_FSS 81 +#define GPOUT_SYS_SPI2_TXD 82 +#define GPOUT_SYS_I2C3_CLK 83 +#define GPOUT_SYS_I2C3_DATA 84 +#define GPOUT_SYS_UART3_TX 85 +#define GPOUT_SYS_SPI3_CLK 86 +#define GPOUT_SYS_SPI3_FSS 87 +#define GPOUT_SYS_SPI3_TXD 88 +#define GPOUT_SYS_I2C4_CLK 89 +#define GPOUT_SYS_I2C4_DATA 90 +#define GPOUT_SYS_UART4_RTS 91 +#define GPOUT_SYS_UART4_TX 92 +#define GPOUT_SYS_SPI4_CLK 93 +#define GPOUT_SYS_SPI4_FSS 94 +#define GPOUT_SYS_SPI4_TXD 95 +#define GPOUT_SYS_I2C5_CLK 96 +#define GPOUT_SYS_I2C5_DATA 97 +#define GPOUT_SYS_UART5_RTS 98 +#define GPOUT_SYS_UART5_TX 99 +#define GPOUT_SYS_SPI5_CLK 100 +#define GPOUT_SYS_SPI5_FSS 101 +#define GPOUT_SYS_SPI5_TXD 102 +#define GPOUT_SYS_I2C6_CLK 103 +#define GPOUT_SYS_I2C6_DATA 104 +#define GPOUT_SYS_SPI6_CLK 105 +#define GPOUT_SYS_SPI6_FSS 106 +#define GPOUT_SYS_SPI6_TXD 107 + +/* aon_iomux dout */ +#define GPOUT_AON_CLK_32K_OUT 2 +#define GPOUT_AON_PTC0_PWM4 3 +#define GPOUT_AON_PTC0_PWM5 4 +#define GPOUT_AON_PTC0_PWM6 5 +#define GPOUT_AON_PTC0_PWM7 6 +#define GPOUT_AON_CLK_GCLK0 7 +#define GPOUT_AON_CLK_GCLK1 8 +#define GPOUT_AON_CLK_GCLK2 9 + +/* sys_iomux doen */ +#define GPOEN_ENABLE 0 +#define GPOEN_DISABLE 1 +#define GPOEN_SYS_HDMI_CEC_SDA 2 +#define GPOEN_SYS_HDMI_DDC_SCL 3 +#define GPOEN_SYS_HDMI_DDC_SDA 4 +#define GPOEN_SYS_I2C0_CLK 5 +#define GPOEN_SYS_I2C0_DATA 6 +#define GPOEN_SYS_HIFI4_JTAG_TDO 7 +#define GPOEN_SYS_JTAG_TDO 8 +#define GPOEN_SYS_PWM0_CHANNEL0 9 +#define GPOEN_SYS_PWM0_CHANNEL1 10 +#define GPOEN_SYS_PWM0_CHANNEL2 11 +#define GPOEN_SYS_PWM0_CHANNEL3 12 +#define GPOEN_SYS_SPI0_NSSPCTL 13 +#define GPOEN_SYS_SPI0_NSSP 14 +#define GPOEN_SYS_TDM_SYNC 15 +#define GPOEN_SYS_TDM_TXD 16 +#define GPOEN_SYS_I2C1_CLK 17 +#define GPOEN_SYS_I2C1_DATA 18 +#define GPOEN_SYS_SDIO1_CMD 19 +#define GPOEN_SYS_SDIO1_DATA0 20 +#define GPOEN_SYS_SDIO1_DATA1 21 +#define GPOEN_SYS_SDIO1_DATA2 22 +#define GPOEN_SYS_SDIO1_DATA3 23 +#define GPOEN_SYS_SDIO1_DATA4 24 +#define GPOEN_SYS_SDIO1_DATA5 25 +#define GPOEN_SYS_SDIO1_DATA6 26 +#define GPOEN_SYS_SDIO1_DATA7 27 +#define GPOEN_SYS_SPI1_NSSPCTL 28 +#define GPOEN_SYS_SPI1_NSSP 29 +#define GPOEN_SYS_I2C2_CLK 30 +#define GPOEN_SYS_I2C2_DATA 31 +#define GPOEN_SYS_SPI2_NSSPCTL 32 +#define GPOEN_SYS_SPI2_NSSP 33 +#define GPOEN_SYS_I2C3_CLK 34 +#define GPOEN_SYS_I2C3_DATA 35 +#define GPOEN_SYS_SPI3_NSSPCTL 36 +#define GPOEN_SYS_SPI3_NSSP 37 +#define GPOEN_SYS_I2C4_CLK 38 +#define GPOEN_SYS_I2C4_DATA 39 +#define GPOEN_SYS_SPI4_NSSPCTL 40 +#define GPOEN_SYS_SPI4_NSSP 41 +#define GPOEN_SYS_I2C5_CLK 42 +#define GPOEN_SYS_I2C5_DATA 43 +#define GPOEN_SYS_SPI5_NSSPCTL 44 +#define GPOEN_SYS_SPI5_NSSP 45 +#define GPOEN_SYS_I2C6_CLK 46 +#define GPOEN_SYS_I2C6_DATA 47 +#define GPOEN_SYS_SPI6_NSSPCTL 48 +#define GPOEN_SYS_SPI6_NSSP 49 + +/* aon_iomux doen */ +#define GPOEN_AON_PTC0_OE_N_4 2 +#define GPOEN_AON_PTC0_OE_N_5 3 +#define GPOEN_AON_PTC0_OE_N_6 4 +#define GPOEN_AON_PTC0_OE_N_7 5 + +/* sys_iomux gin */ +#define GPI_NONE 255 + +#define GPI_SYS_WAVE511_UART_RX 0 +#define GPI_SYS_CAN0_RXD 1 +#define GPI_SYS_USB_OVERCURRENT 2 +#define GPI_SYS_SPDIF 3 +#define GPI_SYS_JTAG_RST 4 +#define GPI_SYS_HDMI_CEC_SDA 5 +#define GPI_SYS_HDMI_DDC_SCL 6 +#define GPI_SYS_HDMI_DDC_SDA 7 +#define GPI_SYS_HDMI_HPD 8 +#define GPI_SYS_I2C0_CLK 9 +#define GPI_SYS_I2C0_DATA 10 +#define GPI_SYS_SDIO0_CD 11 +#define GPI_SYS_SDIO0_INT 12 +#define GPI_SYS_SDIO0_WP 13 +#define GPI_SYS_UART0_RX 14 +#define GPI_SYS_HIFI4_JTAG_TCK 15 +#define GPI_SYS_HIFI4_JTAG_TDI 16 +#define GPI_SYS_HIFI4_JTAG_TMS 17 +#define GPI_SYS_HIFI4_JTAG_RST 18 +#define GPI_SYS_JTAG_TDI 19 +#define GPI_SYS_JTAG_TMS 20 +#define GPI_SYS_PDM_DMIC0 21 +#define GPI_SYS_PDM_DMIC1 22 +#define GPI_SYS_I2SRX_SDIN0 23 +#define GPI_SYS_I2SRX_SDIN1 24 +#define GPI_SYS_I2SRX_SDIN2 25 +#define GPI_SYS_SPI0_CLK 26 +#define GPI_SYS_SPI0_FSS 27 +#define GPI_SYS_SPI0_RXD 28 +#define GPI_SYS_JTAG_TCK 29 +#define GPI_SYS_MCLK_EXT 30 +#define GPI_SYS_I2SRX_BCLK 31 +#define GPI_SYS_I2SRX_LRCK 32 +#define GPI_SYS_I2STX0_BCLK 33 +#define GPI_SYS_I2STX0_LRCK 34 +#define GPI_SYS_TDM_CLK 35 +#define GPI_SYS_TDM_RXD 36 +#define GPI_SYS_TDM_SYNC 37 +#define GPI_SYS_CAN1_RXD 38 +#define GPI_SYS_I2C1_CLK 39 +#define GPI_SYS_I2C1_DATA 40 +#define GPI_SYS_SDIO1_CD 41 +#define GPI_SYS_SDIO1_INT 42 +#define GPI_SYS_SDIO1_WP 43 +#define GPI_SYS_SDIO1_CMD 44 +#define GPI_SYS_SDIO1_DATA0 45 +#define GPI_SYS_SDIO1_DATA1 46 +#define GPI_SYS_SDIO1_DATA2 47 +#define GPI_SYS_SDIO1_DATA3 48 +#define GPI_SYS_SDIO1_DATA4 49 +#define GPI_SYS_SDIO1_DATA5 50 +#define GPI_SYS_SDIO1_DATA6 51 +#define GPI_SYS_SDIO1_DATA7 52 +#define GPI_SYS_SDIO1_STRB 53 +#define GPI_SYS_UART1_CTS 54 +#define GPI_SYS_UART1_RX 55 +#define GPI_SYS_SPI1_CLK 56 +#define GPI_SYS_SPI1_FSS 57 +#define GPI_SYS_SPI1_RXD 58 +#define GPI_SYS_I2C2_CLK 59 +#define GPI_SYS_I2C2_DATA 60 +#define GPI_SYS_UART2_CTS 61 +#define GPI_SYS_UART2_RX 62 +#define GPI_SYS_SPI2_CLK 63 +#define GPI_SYS_SPI2_FSS 64 +#define GPI_SYS_SPI2_RXD 65 +#define GPI_SYS_I2C3_CLK 66 +#define GPI_SYS_I2C3_DATA 67 +#define GPI_SYS_UART3_RX 68 +#define GPI_SYS_SPI3_CLK 69 +#define GPI_SYS_SPI3_FSS 70 +#define GPI_SYS_SPI3_RXD 71 +#define GPI_SYS_I2C4_CLK 72 +#define GPI_SYS_I2C4_DATA 73 +#define GPI_SYS_UART4_CTS 74 +#define GPI_SYS_UART4_RX 75 +#define GPI_SYS_SPI4_CLK 76 +#define GPI_SYS_SPI4_FSS 77 +#define GPI_SYS_SPI4_RXD 78 +#define GPI_SYS_I2C5_CLK 79 +#define GPI_SYS_I2C5_DATA 80 +#define GPI_SYS_UART5_CTS 81 +#define GPI_SYS_UART5_RX 82 +#define GPI_SYS_SPI5_CLK 83 +#define GPI_SYS_SPI5_FSS 84 +#define GPI_SYS_SPI5_RXD 85 +#define GPI_SYS_I2C6_CLK 86 +#define GPI_SYS_I2C6_DATA 87 +#define GPI_SYS_SPI6_CLK 88 +#define GPI_SYS_SPI6_FSS 89 +#define GPI_SYS_SPI6_RXD 90 + +/* aon_iomux gin */ +#define GPI_AON_PMU_GPIO_WAKEUP_0 0 +#define GPI_AON_PMU_GPIO_WAKEUP_1 1 +#define GPI_AON_PMU_GPIO_WAKEUP_2 2 +#define GPI_AON_PMU_GPIO_WAKEUP_3 3 + +#endif
Signature · 1 line
2.38.1
Hal Feng
maintainerPATCH v7 21/22 riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device tree
In reply to Hal FengFrom: Emil Renner Berthing <[email protected]>
Add a minimal device tree for StarFive JH7110 VisionFive 2 board which has version A and version B. Support booting and basic clock/reset/pinctrl/uart drivers.
--- arch/riscv/boot/dts/starfive/Makefile | 6 +- .../jh7110-starfive-visionfive-2-v1.2a.dts | 13 ++ .../jh7110-starfive-visionfive-2-v1.3b.dts | 13 ++ .../jh7110-starfive-visionfive-2.dtsi | 215 ++++++++++++++++++ 4 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
arch/riscv/boot/dts/starfive/Makefile +5 -1
@@ -1,2 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 -dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-beaglev-starlight.dtb jh7100-starfive-visionfive-v1.dtb +dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-beaglev-starlight.dtb +dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-starfive-visionfive-v1.dtb + +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb +dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts new file +13 -0
@@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include "jh7110-starfive-visionfive-2.dtsi" + +/ { + model = "StarFive VisionFive 2 v1.2A"; + compatible = "starfive,visionfive-2-v1.2a", "starfive,jh7110"; +};
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts new file +13 -0
@@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Emil Renner Berthing <[email protected]> + */ + +/dts-v1/; +#include "jh7110-starfive-visionfive-2.dtsi" + +/ { + model = "StarFive VisionFive 2 v1.3B"; + compatible = "starfive,visionfive-2-v1.3b", "starfive,jh7110"; +};
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +215 -0
215 lines not on this page · raw message
Signature · 1 line
2.38.1
Re: [PATCH v7 21/22] riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device tree
Hi Hal,
Quoted 4 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +4
-0+ aliases { + i2c0 = &i2c0; + i2c2 = &i2c2; + i2c5 = &i2c5;
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi line 26
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +10
-0+ i2c6 = &i2c6; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + cpus { + timebase-frequency = <4000000>;
Is mtime frequency on JH7110 could be modified? If not, I think it's better
to put it into jh7110.dtsi.
Quoted 4 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +4
-0+ }; + + memory@40000000 { + device_type = "memory";
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi line 40
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +10
-0+ reg = <0x0 0x40000000 0x1 0x0>; + }; + + gpio-restart { + compatible = "gpio-restart"; + gpios = <&sysgpio 35 GPIO_ACTIVE_HIGH>; + priority = <224>; + }; +}; +
Best regards,
Shengyu
Hal Feng
maintainerRe: [PATCH v7 21/22] riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device tree
Quoted 19 lines · Shengyu Qu
Hi Hal,
Quoted 7 lines
+ aliases {
+ i2c0 = &i2c0;
+ i2c2 = &i2c2;
+ i2c5 = &i2c5;
+ i2c6 = &i2c6;
+ serial0 = &uart0;
+ };arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi line 26
Quoted 7 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +7
-0+ + chosen { + stdout-path = "serial0:115200n8"; + }; + + cpus { + timebase-frequency = <4000000>;Is mtime frequency on JH7110 could be modified? If not, I think it's better
Quoted 1 line
to put it into
jh7110.dtsi.
This frequency is from (osc / 6). This is based on the frequency of the crystal oscillator on the board. So we set it here.
Best regards,
Hal
Quoted 20 lines
Quoted 5 lines
+ };
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +3
-0+ + memory@40000000 { + device_type = "memory";arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi line 40
Quoted 10 lines
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi new file +10
-0+ reg = <0x0 0x40000000 0x1 0x0>; + }; + + gpio-restart { + compatible = "gpio-restart"; + gpios = <&sysgpio 35 GPIO_ACTIVE_HIGH>; + priority = <224>; + }; +}; +Best regards,
Shengyu
Hal Feng
maintainerPATCH v7 22/22 riscv: dts: starfive: jh7110: Correct the properties of S7 core
In reply to Hal FengThe S7 core has no L1 data cache and MMU, so delete some related properties.
--- arch/riscv/boot/dts/starfive/jh7110.dtsi | 9 --------- 1 file changed, 9 deletions(-)
arch/riscv/boot/dts/starfive/jh7110.dtsi +0 -9
@@ -20,21 +20,12 @@ cpus { S7_0: cpu@0 { compatible = "sifive,s7", "riscv"; reg = <0>; - d-cache-block-size = <64>; - d-cache-sets = <64>; - d-cache-size = <8192>; - d-tlb-sets = <1>; - d-tlb-size = <40>; device_type = "cpu"; i-cache-block-size = <64>; i-cache-sets = <64>; i-cache-size = <16384>; - i-tlb-sets = <1>; - i-tlb-size = <40>; - mmu-type = "riscv,sv39"; next-level-cache = <&ccache>; riscv,isa = "rv64imac_zba_zbb"; - tlb-split; status = "disabled"; cpu0_intc: interrupt-controller {
Signature · 7 lines
2.38.1 _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Conor Dooley
maintainerHey Hal,
Quoted 5 lines · Hal Feng
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
Thanks. I probably should have asked for that, makes my life easier that's for sure!
Quoted 3 lines
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
I hadn't merged that into anywhere, so I just went and dropped the original incarnation of that branch and have re-created it. I don't recall there being a maintainers pattern error (from running scripts/get_maintainer.pl --self-test=patterns) with what I had done in my branch, but with your patch 1 applied I see one. To save myself a complaint from LKP, I stripped out the MAINTAINERS bits from patch 1 into their own patch that can go with the clock/reset bits.
I squashed 22 into "riscv: dts: starfive: Add initial StarFive JH7110 device tree" since there's no reason to add something knowingly incorrect IMO.
I've gone and pushed out the following as riscv-jh7110_initial_dts:
riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device
riscv: dts: starfive: Add StarFive JH7110 pin function definitions
riscv: dts: starfive: Add initial StarFive JH7110 device tree
dt-bindings: riscv: Add SiFive S7 compatible
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator
dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
And the rest as riscv-jh7110_clk_reset:MAINTAINERS: generalise StarFive clk/reset entries
reset: starfive: Add StarFive JH7110 reset driver
clk: starfive: Add StarFive JH7110 always-on clock driver
clk: starfive: Add StarFive JH7110 system clock driver
reset: starfive: jh71x0: Use 32bit I/O on 32bit registers
reset: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: starfive: Extract the common JH71X0 reset code
reset: starfive: Factor out common JH71X0 reset code
reset: Create subdirectory for StarFive drivers
reset: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
clk: starfive: Rename "jh7100" to "jh71x0" for the common code
clk: starfive: Rename clk-starfive-jh7100.h to clk-starfive-jh71x0.h
clk: starfive: Factor out common JH7100 and JH7110 code
clk: starfive: Replace SOC_STARFIVE with ARCH_STARFIVE
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator
dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
<https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/refs>
As it looks like everything has been resolved in terms of comments on v6, provided LKP doesn't complain or people don't spot something else, my plan is to send Stephen a PR around Wednesday for the driver bits.
Please LMK if I screwed up anything,
Conor.
Hal Feng
maintainerQuoted 11 lines · Conor Dooley
Hey Hal,
Quoted 5 lines · Hal Feng
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
Thanks. I probably should have asked for that, makes my life easier that's for sure!
My pleasure.
Quoted 27 lines
Quoted 4 lines
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
I hadn't merged that into anywhere, so I just went and dropped the original incarnation of that branch and have re-created it. I don't recall there being a maintainers pattern error (from running
scripts/get_maintainer.pl--self-test=patterns) with what I had done in my branch, but with your patch 1 applied I see one. To save myself a complaint from LKP, I stripped out theMAINTAINERSbits from patch 1 into their own patch that can go with the clock/reset bits.I squashed 22 into "riscv: dts: starfive: Add initial StarFive JH7110 device tree" since there's no reason to add something knowingly incorrect IMO.
I've gone and pushed out the following as riscv-jh7110_initial_dts:
riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device
riscv: dts: starfive: Add StarFive JH7110 pin function definitions
riscv: dts: starfive: Add initial StarFive JH7110 device tree
dt-bindings: riscv: Add SiFive S7 compatible
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator
dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
Quoted 2 lines
And the rest as riscv-jh7110_clk_reset:
MAINTAINERS: generalise StarFive clk/reset entries
For this patch, I find something to improve.
1. Could you please help me sort the StarFive entries in MAINTAINERS? "STARFIVE JH71X0 CLOCK DRIVERS" should be added after "STARFIVE JH7110 MMC/SD/SDIO DRIVER".
2. A "S" should be added at the end of
"STARFIVE JH7100 RESET CONTROLLER DRIVER".
I have tested your branch and have no comments on the other patches.
Quoted 16 lines
reset: starfive: Add StarFive JH7110 reset driver
clk: starfive: Add StarFive JH7110 always-on clock driver
clk: starfive: Add StarFive JH7110 system clock driver
reset: starfive: jh71x0: Use 32bit I/O on 32bit registers
reset: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: starfive: Extract the common JH71X0 reset code
reset: starfive: Factor out common JH71X0 reset code
reset: Create subdirectory for StarFive drivers
reset: starfive: ReplaceSOC_STARFIVEwithARCH_STARFIVE
clk: starfive: Rename "jh7100" to "jh71x0" for the common code
clk: starfive: Renameclk-starfive-jh7100.htoclk-starfive-jh71x0.h
clk: starfive: Factor out common JH7100 and JH7110 code
clk: starfive: ReplaceSOC_STARFIVEwithARCH_STARFIVE
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator
dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
Quoted 5 lines
<https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/refs>
As it looks like everything has been resolved in terms of comments on v6, provided LKP doesn't complain or people don't spot something else, my plan is to send Stephen a PR around Wednesday for the driver bits.
Thanks for your work.
Best regards,
Hal
Quoted 3 lines
Please LMK if I screwed up anything,
Conor.
Quoted 11 lines · Hal Feng
Quoted 4 lines · Conor Dooley
On Sat, Apr 01, 2023 at 07:19:12PM +0800, Hal Feng wrote:
And the rest as riscv-jh7110_clk_reset:
MAINTAINERS: generalise StarFive clk/reset entriesFor this patch, I find something to improve.
1. Could you please help me sort the StarFive entries inMAINTAINERS? "STARFIVE JH71X0 CLOCK DRIVERS" should be added after "STARFIVE JH7110 MMC/SD/SDIO DRIVER".
Quoted 4 lines
2. A "S" should be added at the end of
"STARFIVE JH7100 RESET CONTROLLER DRIVER".I have tested your branch and have no comments on the other patches.
Done:
MAINTAINERS +7 -7
@@ -19907,6 +19907,12 @@ M: Emil Renner Berthing <[email protected]> S: Maintained F: arch/riscv/boot/dts/starfive/ +STARFIVE JH7110 MMC/SD/SDIO DRIVER +M: William Qiu <[email protected]> +S: Supported +F: Documentation/devicetree/bindings/mmc/starfive* +F: drivers/mmc/host/dw_mmc-starfive.c + STARFIVE JH71X0 CLOCK DRIVERS M: Emil Renner Berthing <[email protected]> M: Hal Feng <[email protected]>
@@ -19915,12 +19921,6 @@ F: Documentation/devicetree/bindings/clock/starfive,jh71*.yaml F: drivers/clk/starfive/clk-starfive-jh71* F: include/dt-bindings/clock/starfive?jh71*.h -STARFIVE JH7110 MMC/SD/SDIO DRIVER -M: William Qiu <[email protected]> -S: Supported -F: Documentation/devicetree/bindings/mmc/starfive* -F: drivers/mmc/host/dw_mmc-starfive.c - STARFIVE JH71X0 PINCTRL DRIVERS M: Emil Renner Berthing <[email protected]> M: Jianlong Huang <[email protected]>
@@ -19931,7 +19931,7 @@ F: drivers/pinctrl/starfive/pinctrl-starfive-jh71* F: include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h F: include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h -STARFIVE JH71X0 RESET CONTROLLER DRIVER +STARFIVE JH71X0 RESET CONTROLLER DRIVERS M: Emil Renner Berthing <[email protected]> M: Hal Feng <[email protected]> S: Maintained
Cheers,
Conor.
Quoted 11 lines · Hal Feng
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
Quoted 5 lines
You can simply review or test the patches at the link [2]. Hope this series will be merged soon.
[1]: https://lore.kernel.org/all/[email protected]/
[2]: https://github.com/hal-feng/linux/commits/visionfive2-minimal
Thanks, this looks good to me now.
Conor: I've reviewed this series a few times now and I'm happy with this. You can add
where it makes sense.
/Emil
Quoted 371 lines
Changes since v6:
- Rebased on v6.3-rc4.
- Made the dt-bindings patches (patch 11, 12) be the first two patches. Merged all maintainers changes into the first dt-bindings patch.
Patch 13:
- Moved the reset related functions fromclk-starfive-jh71x0.ctoclk-starfive-jh7110-sys.c.
- Moved the declaration ofjh7110_reset_controller_register()to a new headerclk-starfive-jh7110.h.
- Dropped the include <linux/clk.h> and added <linux/auxiliary_bus.h>.
- Included "clk-starfive-jh7110.h" instead of "clk-starfive-jh71x0.h".
- Set the qspi clock flags as 0.
- Set the flag of clock gmac?_gtxc as 0 and addedCLK_SET_RATE_NO_REPARENTflag for the clockgmac1_tx.
- Removed the PLL clock return injh7110_sysclk_get().
- Used "else" instead of "else if (pidx >=JH7110_SYSCLK_PLL0_OUT&& \
pidx <=JH7110_SYSCLK_PLL2_OUT)".
- Renamed the reset aux device name from "reset-sys" to "rst-sys" avoiding exceeding the maximum length ofauxiliary_device_idname.
Patch 14:
- Dropped the include <linux/clk.h>
- Included "clk-starfive-jh7110.h" instead of "clk-starfive-jh71x0.h".
- AddedCLK_SET_RATE_NO_REPARENTflag for the clockgmac0_tx.
- Renamed the reset aux device name from "reset-aon" to "rst-aon". Patch 15:
- Changed theauxiliary_device_idname from "clk_starfive_jh71x0.reset-*" to "clk_starfive_jh7110_sys.rst-*".v6: https://lore.kernel.org/all/[email protected]/
Changes since v5:
- Rebased on v6.3-rc3.
Patch 1:
- Set obj-y for starfive/ indrivers/clk/Makefile.
Patch 2:
- Sorted the StarFive entries alphabetically inMAINTAINERS. Patch 3:
- Fixed the build error which caused by renaming the header without changing the users of the header.
Patch 4:
- Fixed the errors reported by checkpatch.pl.
Patch 6:
- Set obj-y for starfive/ indrivers/reset/Makefile. Patch 13:
- Set the timer clock flags as 0.v5: https://lore.kernel.org/all/[email protected]/
Changes since v4:
- Rebased on v6.3-rc1.
- Added two patches to replaceSOC_STARFIVEwithARCH_STARFIVE.
- Added Tested-by tag for Tommaso.
Patch 9:
- Set GMAC1 related clocks as optional inputs.
- Dropped PLL clock definitions.
Patch 10:
- Set GMAC0 related clocks and RTC oscillator as optional inputs.
- Sorted the clocks.
Patch 11:
- ReplacedSOC_STARFIVEwithARCH_STARFIVE.
- Added macros for PLL clocks and adjusted the code properly to make it easier to add the PLL clock driver later.
- Updated the clock flags.
Patch 12:
- Built as a module by default.
- Sorted the clocks.
- Updated the clock flags.
Patch 13:
- Replaced "defaultCLK_STARFIVE_JH7110_SYS" with "defaultARCH_STARFIVE".
- Renamed "reset_info" struct to "jh7110_reset_info" and moved its definition into the driver.
- Putjh7110_sys_infoandjh7110_sys_infobefore theprobe(). Patch 17:
- Dropped "_zicsr" in ISA.
- Sorted the external clocks alphabetically.
- Put the ccache node before the plic node according to their addresses.
- Sorted the clock inputs of the aoncrg node.
Patch 19:
- ReplacedSOC_STARFIVEwithARCH_STARFIVE.
- Sorted the nodes alphabetically.v4: https://lore.kernel.org/all/[email protected]/
Changes since v3:
- Suggested by Conor, Merged clock & reset series and DT series together so that they could go via the same tree as the dt-binding headers are required by both driver & devicetree.
- Rebased on tag v6.2.[Clock & reset]
Patch 2:
- Split patch 2 into two. One for renaming file and one for renaming variables. (by Conor)
Patch 4:
- Split patch 4 into two. One for code movement and one for extraction. (by Conor)
Patch 5 & 9 & 10 & 11:
- Fixed the issues reported by kernel test robot.
Patch 9:
- Set (&priv->base) as driver data instead of (priv->base).
- Set the frequency of clock PLL0 as 1000MHz for Synchronizing with the lastest u-boot setting from StarFive. (by Emil)
- Useddevm_kzalloc()instead ofkzalloc()when registering aux device. Patch 10:
- Set (&priv->base) as driver data instead of (priv->base). Patch 11:
- Used (*base) to get the register base address instead of (base).[Device tree]
- Dropped patch 1, 4, 5 because they were accepted.
- Added a new patch to add SiFive S7 compatible. (by Conor)
- Added a new patch to add JH7110 pin function definitions. Patch 6:
- Changed the label "S76_0" to "S7_0" and used compatible "sifive,s7" for core 0.
- Updated ISA of each cores. (by Conor)
- Made the node names generic. (by Krzysztof)
- Added clock-output-names for all external clocks.
- Added i2c0~6 nodes.
- Changed the node name "gpio" to "pinctrl". Changed the label "gpio" and "gpioa" to "sysgpio" and "aongpio". (by Conor)
Patch 7:
- Separated the long lines into more lines inMakefile. (by Conor)
- Renamedjh7110-starfive-visionfive-2-va.dtsandjh7110-starfive-visionfive-2-vb.dtstojh7110-starfive-visionfive-2-v1.2a.dtsandjh7110-starfive-visionfive-2-v1.3b.dts.
Changed the model and compatible to match v1.2A and v1.3B which are printed on the silkscreen of VisionFive 2 board. (by Emil)
- Configured pins for i2c0/2/5/6 and enabled them.clock & reset v3: https://lore.kernel.org/all/[email protected]/
DT v3: https://lore.kernel.org/all/[email protected]/Changes since v2:
[Clock & reset]
- Rebased on tag v6.1.
- Added "JH71X0" to the StarFive driver headers inMAINTAINERS.
- Removed Co-developed-by tag of Hal in patch 1 and patch 4.
- Changed the commit author from Hal to Emil in patch 2 and patch 5. Removed Co-developed-by tag of Emil in patch 2 and patch 5. (by Emil)
- Improved the coding style of patch 11, 12 and 13.
- Dropped patch 14. (by Emil)
Patch 4:
- Passed the "owner" member ofreset_controller_devstructure directly inreset_starfive_jh7100_register(). (by Emil)
- AddedMAINTAINERSchanges.
Patch 7:
- Split patch 7 into sys part and aon part. Merged them into patch 9 and patch 10 respectively. (by Krzysztof)
- Renamedinclude/dt-bindings/clock/starfive-jh7110.htoinclude/dt-bindings/clock/starfive,jh7110-crg.h. (by Krzysztof)
- Synchronized the definitions with the latest changes from Emil. Patch 8:
- Split patch 8 into sys part and aon part. Merged them into patch 9 and patch 10 respectively. (by Krzysztof)
- Renamedinclude/dt-bindings/reset/starfive-jh7110.htoinclude/dt-bindings/reset/starfive,jh7110-crg.h. (by Krzysztof)
- Fixed the date of Copyright. (by Emil)
- Dropped weird indentations. (by Krzysztof)
- Synchronized the definitions with the latest changes from Emil. Patch 9:
- Improved the description of clocks. (by Emil and Krzysztof)
- AddedMAINTAINERSchanges.
Patch 10:
- Improved the description of clocks. (by Emil and Krzysztof)
- Changed the clock-name "clk_rtc" to "rtc_osc" and "apb_bus_func" to "apb_bus".
Patch 11:
- Removed the flags of trace/debug clocks and set the flags of core clocks asCLK_IS_CRITICAL. (by Emil)
- Deleted the extra 1-1 clocks and synchronized the clock tree with the latest changes from Emil. (by Emil)
- SelectedRESET_STARFIVE_JH7110inKconfigoptionCLK_STARFIVE_JH7110_SYS. Patch 12:
- Changed the macroJH7110_AONCLK_RTCtoJH7110_AONCLK_RTC_OSCandJH7110_AONCLK_APB_BUS_FUNCtoJH7110_AONCLK_APB_BUS.
- Synchronized the clock tree with the latest changes from Emil.
- Set theMODULE_LICENSEas "GPL" according to commitbf7fbeeae6db. Patch 13:
- Removed the "asserted" member inreset_infostructure and always pass NULL when callingreset_starfive_jh71x0_register(). (by Emil)[Device tree]
- Rebased on tag v6.1.
- Dropped patch 8 because it was merged.
Patch 1:
- Made the links into "Link:" tags. (by Conor)
- Corrected the board name to "VisionFive 2" instead of "VisionFive V2" and added compatibles for version A and version B of VisionFive 2. (by Emil)
Patch 4:
- Used "sifive,ccache0" compatible string to match. (by Conor) Patch 5:
- Dropped "selectSIFIVE_CCACHE" in configSOC_STARFIVE. (by Conor)
- Dropped "starfive,jh7110-ccache" compatible indrivers/soc/sifive/sifive_ccache.c.
Patch 6:
- Removed all "clock-frequency = <0>". (by Conor)
- Sorted the nodes after their addresses. (by Emil)
- Renamed "clk_rtc" to "rtc_osc".
- Added "sifive,ccache0" compatible in the cache-controller node.
- Renamed "JH7110_SYSCLK_APB_BUS_FUNC" to "JH7110_SYSCLK_APB_BUS" and renamed "apb_bus_func" to "apb_bus".
Renamed "JH7110_SYSCLK_IOMUX" to "JH7110_SYSCLK_IOMUX_APB". Renamed "JH7110_SYSRST_IOMUX" to "JH7110_SYSRST_IOMUX_APB". Renamed "JH7110_AONRST_AON_IOMUX" to "JH7110_AONRST_IOMUX".
- Removed "reg-names" in gpio nodes.
Patch 7:
- Corrected the board name to "VisionFive 2" instead of "VisionFive V2".
- Renamedjh7110-starfive-visionfive-v2.dtstojh7110-starfive-visionfive-2.dtsi.
- Added dts for VisionFive 2 version A and version B boards.
- In the chosen node, deleted "linux,initrd-start" and "linux,initrd-end" and changed the value of "stdout-path" to "serial0:115200n8".
- Changed the bias of uart0 "rx-pins" to
"bias-disable; /* external pull-up */".
- Renamed "clk_rtc" to "rtc_osc".
- Moved the gpio node behind the uart0 node.clock & reset v2: https://lore.kernel.org/all/[email protected]/
DT v2: https://lore.kernel.org/all/[email protected]/Changes since v1:
[Clock & reset]
- Rebased on tag v6.1-rc5.
- Rewrote the clock and reset drivers using auxiliary bus framework, so patch 8, 9, 15 were dropped and all patches changed a lot. (by Stephen)
- Split Patch 14 into two patches. One is for factoring out the common JH71X0 code, the another one is for renaming. (by Stephen)
- Created a subdirectory for StarFive reset drivers.
- Factored out common JH71X0 reset code.
- Renamed the common clock and reset code from "*starfive*" or "*STARFIVE*" to "*jh71x0*" or "*JH71X0*".
- Combined JH7110 system and always-on clock DT binding headers in one file named "include/dt-bindings/clock/starfive-jh7110.h".
- Renamed clock definitions "JH7110_SYSCLK_PCLK2_MUX_FUNC_PCLK" and "JH7110_SYSCLK_U2_PCLK_MUX_PCLK" to "JH7110_SYSCLK_PCLK2_MUX_FUNC" and "JH7110_SYSCLK_PCLK2_MUX".
- Rewrote the DT bindings of clock and reset for using auxiliary bus.
- Registered an auxiliary device for reset controller in clock drivers.
- Changed clock names "CODAJ*" and "WAVE*" to "codaj*" and "wave*". Changed clock names "u2_pclk_mux_func_pclk" and "u2_pclk_mux_pclk" to "pclk2_mux_func" and "pclk2_mux".
- Changed the flags of clock apb0 andnoc_bus_isp_axitoCLK_IS_CRITICALas suggested by StarFive SDK group.
- Registered clockgmac0_gtxcas a gate clock instead of a div clock as suggested by StarFive SDK group.
- Changed the frequency of clockpll2_outto 1188MHz as suggested by StarFive SDK group.
- Fixed the bug that the clockJH7110_AONCLK_GMAC0_GTXCLKwas not handled in JH7110 always-on clock driver.
- Registered the reset driver as an auxiliary driver.
- Reworded the commit messages.[Device tree]
- Rebased on tag v6.1-rc5.
- Added blank line in patch 1. (by Krzysztof)
- Rebased patch 4 and 6 on the newest code. (by Conor)
- Dropped patch 5. (by Conor)
- Removed the quirk of JH7100 in patch 6, considering this patch series should only add support for JH7110.
- For patch 27, added Co-developed-by tag for Jianlong and me. Renamed cpu labels to "S76_0", "U74_*" instead of "cpu*" following the style ofjh7100.dtsi. Moved all "clock-frequency" properties to the board dts. Rewrote clock-controller nodes and deleted reset-controller nodes for using auxiliary bus. Rewrote gpio nodes following generic pinctrl bindings. Removed the redundant second reset entry of uart nodes.
- For patch 28, added Co-developed-by tag for Jianlong and me. Added a chosen node. Removed reserved-memory node. Added fixed frequency clock nodes for overriding the "clock-frequency" properties. Rewrote the gpio nodes following generic pinctrl bindings.
- Dropped patch 30. (by Conor)
- Reworded the commit messages.v1: https://lore.kernel.org/all/[email protected]/
Emil Renner Berthing (16):
dt-bindings: clock: Add StarFive JH7110 system clock and reset
generator
dt-bindings: clock: Add StarFive JH7110 always-on clock and reset
generator
clk: starfive: Factor out common JH7100 and JH7110 code
clk: starfive: Renameclk-starfive-jh7100.htoclk-starfive-jh71x0.h
clk: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: Create subdirectory for StarFive drivers
reset: starfive: Factor out common JH71X0 reset code
reset: starfive: Extract the common JH71X0 reset code
reset: starfive: Rename "jh7100" to "jh71x0" for the common code
reset: starfive: jh71x0: Use 32bit I/O on 32bit registers
clk: starfive: Add StarFive JH7110 system clock driver
clk: starfive: Add StarFive JH7110 always-on clock driver
dt-bindings: timer: Add StarFive JH7110 clint
dt-bindings: interrupt-controller: Add StarFive JH7110 plic
riscv: dts: starfive: Add initial StarFive JH7110 device tree
riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device
treeHal Feng (5):
clk: starfive: ReplaceSOC_STARFIVEwithARCH_STARFIVE
reset: starfive: ReplaceSOC_STARFIVEwithARCH_STARFIVE
reset: starfive: Add StarFive JH7110 reset driver
dt-bindings: riscv: Add SiFive S7 compatible
riscv: dts: starfive: jh7110: Correct the properties of S7 coreJianlong Huang (1):
riscv: dts: starfive: Add StarFive JH7110 pin function definitions.../clock/starfive,jh7110-aoncrg.yaml | 107 +++ .../clock/starfive,jh7110-syscrg.yaml | 104 +++ .../sifive,plic-1.0.0.yaml | 1 + .../devicetree/bindings/riscv/cpus.yaml | 1 + .../bindings/timer/sifive,clint.yaml | 1 + MAINTAINERS | 16 +- arch/riscv/boot/dts/starfive/Makefile | 6 +- arch/riscv/boot/dts/starfive/jh7110-pinfunc.h | 308 ++++++++ .../jh7110-starfive-visionfive-2-v1.2a.dts | 13 + .../jh7110-starfive-visionfive-2-v1.3b.dts | 13 + .../jh7110-starfive-visionfive-2.dtsi | 215 ++++++ arch/riscv/boot/dts/starfive/jh7110.dtsi | 500 ++++++++++++ drivers/clk/Makefile | 2 +- drivers/clk/starfive/Kconfig | 33 +- drivers/clk/starfive/Makefile | 6 +- .../clk/starfive/clk-starfive-jh7100-audio.c | 74 +- drivers/clk/starfive/clk-starfive-jh7100.c | 716 +++++------------- drivers/clk/starfive/clk-starfive-jh7100.h | 112 --- .../clk/starfive/clk-starfive-jh7110-aon.c | 156 ++++ .../clk/starfive/clk-starfive-jh7110-sys.c | 490 ++++++++++++ drivers/clk/starfive/clk-starfive-jh7110.h | 11 + drivers/clk/starfive/clk-starfive-jh71x0.c | 333 ++++++++ drivers/clk/starfive/clk-starfive-jh71x0.h | 123 +++ drivers/reset/Kconfig | 8 +- drivers/reset/Makefile | 2 +- drivers/reset/reset-starfive-jh7100.c | 173 ----- drivers/reset/starfive/Kconfig | 20 + drivers/reset/starfive/Makefile | 5 + .../reset/starfive/reset-starfive-jh7100.c | 74 ++ .../reset/starfive/reset-starfive-jh7110.c | 70 ++ .../reset/starfive/reset-starfive-jh71x0.c | 131 ++++ .../reset/starfive/reset-starfive-jh71x0.h | 14 + .../dt-bindings/clock/starfive,jh7110-crg.h | 221 ++++++ .../dt-bindings/reset/starfive,jh7110-crg.h | 154 ++++ 34 files changed, 3351 insertions(+), 862 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-aoncrg.yaml create mode 100644 Documentation/devicetree/bindings/clock/starfive,jh7110-syscrg.yaml create mode 100644 arch/riscv/boot/dts/starfive/jh7110-pinfunc.h create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts create mode 100644 arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi create mode 100644 arch/riscv/boot/dts/starfive/jh7110.dtsi delete mode 100644 drivers/clk/starfive/clk-starfive-jh7100.h create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-aon.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110-sys.c create mode 100644 drivers/clk/starfive/clk-starfive-jh7110.h create mode 100644 drivers/clk/starfive/clk-starfive-jh71x0.c create mode 100644 drivers/clk/starfive/clk-starfive-jh71x0.h delete mode 100644 drivers/reset/reset-starfive-jh7100.c create mode 100644 drivers/reset/starfive/Kconfig create mode 100644 drivers/reset/starfive/Makefile create mode 100644 drivers/reset/starfive/reset-starfive-jh7100.c create mode 100644 drivers/reset/starfive/reset-starfive-jh7110.c create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.c create mode 100644 drivers/reset/starfive/reset-starfive-jh71x0.h create mode 100644 include/dt-bindings/clock/starfive,jh7110-crg.h create mode 100644 include/dt-bindings/reset/starfive,jh7110-crg.hbase-commit:
197b6b60ae7bc51dd0814953c562833143b292aa--
2.38.1
From: Conor Dooley <[email protected]>
Quoted 11 lines · Hal Feng
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
[...]
Applied to riscv-dt-for-next, thanks!
[01/22] dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
https://git.kernel.org/conor/c/7fce1e39f019 [02/22] dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator https://git.kernel.org/conor/c/3de0c9103258
These two are shared with clk.
[16/22] dt-bindings: timer: Add StarFive JH7110 clint
https://git.kernel.org/conor/c/1ff5482ab9a5 [17/22] dt-bindings: interrupt-controller: Add StarFive JH7110 plic https://git.kernel.org/conor/c/8406d19ca049
I took these bindings too, as Palmer has done that in the past for new SoC support.
[18/22] dt-bindings: riscv: Add SiFive S7 compatible
https://git.kernel.org/conor/c/8868caa2a073 [19/22] riscv: dts: starfive: Add initial StarFive JH7110 device tree https://git.kernel.org/conor/c/60bf0a39842e [20/22] riscv: dts: starfive: Add StarFive JH7110 pin function definitions https://git.kernel.org/conor/c/e22f09e598d1 [21/22] riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device tree https://git.kernel.org/conor/c/54baba33392d
[22/22] riscv: dts: starfive: jh7110: Correct the properties of S7 core
(squashed)
Hal, can you get your folks to resend whatever dts bits that are now applicable? IOW, the dt-bindings for the entries are in a for-next branch for some subsystem.
Thanks,
Conor.
Hal Feng
maintainerQuoted 9 lines · Conor Dooley
From: Conor Dooley <[email protected]>
Quoted 6 lines · Hal Feng
This patch series adds basic clock, reset & DT support for StarFive JH7110 SoC.
@Stephen and @Conor, I have made this series start with the shared dt-bindings, so it will be easier to merge.
Quoted 7 lines
Quoted 5 lines
@Conor, patch 1, 2, 16~21 were already in your branch. Patch 22 is the same with the patch [1] I submitted before, which you had accepted but not merge it into your branch.
[...]
Applied to riscv-dt-for-next, thanks!
Thank you so much.
Quoted 24 lines
[01/22] dt-bindings: clock: Add StarFive JH7110 system clock and reset generator
https://git.kernel.org/conor/c/7fce1e39f019 [02/22] dt-bindings: clock: Add StarFive JH7110 always-on clock and reset generator https://git.kernel.org/conor/c/3de0c9103258These two are shared with clk.
[16/22] dt-bindings: timer: Add StarFive JH7110 clint
https://git.kernel.org/conor/c/1ff5482ab9a5 [17/22] dt-bindings: interrupt-controller: Add StarFive JH7110 plic https://git.kernel.org/conor/c/8406d19ca049I took these bindings too, as Palmer has done that in the past for new SoC support.
[18/22] dt-bindings: riscv: Add SiFive S7 compatible
https://git.kernel.org/conor/c/8868caa2a073 [19/22] riscv: dts: starfive: Add initial StarFive JH7110 device tree https://git.kernel.org/conor/c/60bf0a39842e [20/22] riscv: dts: starfive: Add StarFive JH7110 pin function definitions https://git.kernel.org/conor/c/e22f09e598d1 [21/22] riscv: dts: starfive: Add StarFive JH7110 VisionFive 2 board device tree https://git.kernel.org/conor/c/54baba33392d
Quoted 6 lines
[22/22] riscv: dts: starfive: jh7110: Correct the properties of S7 core
(squashed)Hal, can you get your folks to resend whatever dts bits that are now applicable? IOW, the dt-bindings for the entries are in a for-next branch for some subsystem.
Of course. As far as I know, these nodes include trng / pmu / mmc / qspi.
Best regards,
Hal
_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv
Conor Dooley
maintainerQuoted 7 lines · Hal Feng
Quoted 3 lines · Conor Dooley
Hal, can you get your folks to resend whatever dts bits that are now applicable? IOW, the dt-bindings for the entries are in a for-next branch for some subsystem.
Of course. As far as I know, these nodes include trng / pmu / mmc / qspi.
Just FYI, you can get the lads to resend them whenever, but it's too late for v6.4 now.
Cheers,
Conor.
Hal Feng
maintainerQuoted 11 lines · Conor Dooley
Quoted 7 lines · Hal Feng
Quoted 3 lines · Conor Dooley
Hal, can you get your folks to resend whatever dts bits that are now applicable? IOW, the dt-bindings for the entries are in a for-next branch for some subsystem.
Of course. As far as I know, these nodes include trng / pmu / mmc / qspi.
Just FYI, you can get the lads to resend them whenever, but it's too late for v6.4 now.
I knew it later that, trng depends on stg clock dt-bindings, mmc depends on syscon dt-bindings which will be merged into the pll clock driver, the dt-bindings of qspi need to be fixed due to the actual number of clock inputs it need is 3. Walker plans to resend the pmu bits these days, but sorry to hear that it's too late now.
Best regards,
Hal