Add Sunplus SP7021 SoC Support
Subsystems (7)
Qin Jian
maintainerv9 cover Add Sunplus SP7021 SoC Support
This patch series add Sunplus SP7021 SoC support.
Sunplus SP7021 is an ARM Cortex A7 (4 cores) based SoC. It integrates many peripherals (ex: UART, I2C, SPI, SDIO, eMMC, USB, SD card and etc.) into a single chip. It is designed for industrial control.
SP7021 consists of two chips (dies) in a package. One is called C-chip (computing chip). It is a 4-core ARM Cortex A7 CPU. It adopts high-level process (22 nm) for high performance computing. The other is called P- chip (peripheral chip). It has many peripherals and an ARM A926 added especially for real-time control. P-chip is made for customers. It adopts low-level process (ex: 0.11 um) to reduce cost.
Refer to (for documentations):
https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview
Refer to (applications):
https://tibbo.com/store/plus1.html
Refer to (applications):
http://www.sinovoip.com.cn/ecp_view.asp?id=586
Changes in v9:
- clk/Kconfig: fix the comments form Stephen Boyd
- clk-sp7021.c: fix the comments form Stephen Boyd
Changes in v8:
- clk-sp7021.c: fix the comments form Stephen Boyd
Changes in v7:
- sunplus,sp7021-clkc.yaml: Add clocks & clock-names
- clk-sp7021.c: fix the comments form Stephen Boyd
- irq-sp7021-intc.c: fix the comments from Marc
Changes in v6:
- reset-sunplus.c: fix the comments from Philipp
- irq-sp7021-intc.c: fix the comments from Marc
- mach-sunplus: fix the comments from Arnd
Changes in v5:
- reset-sunplus.c: fix strict checks
- clk/Kconfig: fix spell
- clk-sp7021.c: using bitfield ops, fix strict checks
- irqchip/Kconfig: fix spell
- irq-sp7021-intc.c: cleanup error path in probe, fix strict checks
- arm/Kconfig: fix spell & typo, remove CONFIG_SERIAL_SUNPLUS
- mach-sunplus/Kconfig: fix typo
- sp7021_defconfig: add CONFIG_SERIAL_SUNPLUS
Changes in v4:
- mach-sunplus: add initial support for SP7021
- sp7021_defconfig: add generic SP7021 defconfig
- reset-sunplus: remove Q645 support
- reset-sunplus.c: refine code based on Philipp's review
- clk-sp7021: clock defines add prefix, more clean up
Changes in v3:
- sp7021-intc: remove primary controller mode due to P-chip running Linux not supported any more.
- sp7021-intc.h: removed, not set ext through the DT but sp_intc_set_ext()
- sunplus,sp7021-intc.yaml: update descriptions for above changes
- irq-sp7021-intc.c: more cleanup based on Marc's review
- all driver's Kconfig removed default, it's selected by platform config
Changes in v2:
- sunplus,sp7021-intc.yaml: add descrption for "#interrupt-cells", interrupts
- sunplus,sp7021-intc.yaml: drop "ext0-mask"/"ext1-mask" from DT
- sunplus,sp7021-intc.yaml: fix example.dt too long error
- irq-sp7021-intc.c: major rewrite
- all files with dual license
Qin Jian (10):
dt-bindings: vendor-prefixes: Add Sunplus
dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
dt-bindings: reset: Add bindings for SP7021 reset driver
reset: Add Sunplus SP7021 reset driver
dt-bindings: clock: Add bindings for SP7021 clock driver
clk: Add Sunplus SP7021 clock driver
dt-bindings: interrupt-controller: Add bindings for SP7021 interrupt
controller
irqchip: Add Sunplus SP7021 interrupt controller driver
ARM: sunplus: Add initial support for Sunplus SP7021 SoC
ARM: sp7021_defconfig: Add Sunplus SP7021 defconfig
.../bindings/arm/sunplus,sp7021.yaml | 27 + .../bindings/clock/sunplus,sp7021-clkc.yaml | 52 ++ .../sunplus,sp7021-intc.yaml | 62 ++ .../bindings/reset/sunplus,reset.yaml | 38 + .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 17 + arch/arm/Kconfig | 2 + arch/arm/Makefile | 1 + arch/arm/configs/multi_v7_defconfig | 1 + arch/arm/configs/sp7021_defconfig | 61 ++ arch/arm/mach-sunplus/Kconfig | 26 + arch/arm/mach-sunplus/Makefile | 9 + arch/arm/mach-sunplus/sp7021.c | 16 + drivers/clk/Kconfig | 10 + drivers/clk/Makefile | 1 + drivers/clk/clk-sp7021.c | 741 ++++++++++++++++++ drivers/irqchip/Kconfig | 9 + drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-sp7021-intc.c | 288 +++++++ drivers/reset/Kconfig | 9 + drivers/reset/Makefile | 1 + drivers/reset/reset-sunplus.c | 130 +++ include/dt-bindings/clock/sp-sp7021.h | 112 +++ include/dt-bindings/reset/sp-sp7021.h | 97 +++ 24 files changed, 1713 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml create mode 100644 Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml create mode 100644 Documentation/devicetree/bindings/reset/sunplus,reset.yaml create mode 100644 arch/arm/configs/sp7021_defconfig create mode 100644 arch/arm/mach-sunplus/Kconfig create mode 100644 arch/arm/mach-sunplus/Makefile create mode 100644 arch/arm/mach-sunplus/sp7021.c create mode 100644 drivers/clk/clk-sp7021.c create mode 100644 drivers/irqchip/irq-sp7021-intc.c create mode 100644 drivers/reset/reset-sunplus.c create mode 100644 include/dt-bindings/clock/sp-sp7021.h create mode 100644 include/dt-bindings/reset/sp-sp7021.h
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 1/10 dt-bindings: vendor-prefixes: Add Sunplus
Add vendor prefix for Sunplus Technology Co., Ltd. (http://www.sunplus.com)
--- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
@@ -1131,6 +1131,8 @@ patternProperties: description: Summit microelectronics "^sunchip,.*": description: Shenzhen Sunchip Technology Co., Ltd + "^sunplus,.*": + description: Sunplus Technology Co., Ltd. "^SUNW,.*": description: Sun Microsystems, Inc "^supermicro,.*":
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 2/10 dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
In reply to Qin JianThis introduces bindings for boards based Sunplus SP7021 SoC.
--- .../bindings/arm/sunplus,sp7021.yaml | 27 +++++++++++++++++++ MAINTAINERS | 7 +++++ 2 files changed, 34 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml new file +27 -0
@@ -0,0 +1,27 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/sunplus,sp7021.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sunplus SP7021 Boards Device Tree Bindings + +maintainers: + - qinjian <[email protected]> + +description: | + ARM platforms using Sunplus SP7021, an ARM Cortex A7 (4-cores) based SoC. + Wiki: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview + +properties: + $nodename: + const: '/' + compatible: + oneOf: + - items: + - const: sunplus,sp7021-achip + +additionalProperties: true + +...
MAINTAINERS +7 -0
@@ -2655,6 +2655,13 @@ F: drivers/clocksource/armv7m_systick.c N: stm32 N: stm +ARM/SUNPLUS SP7021 SOC SUPPORT +M: Qin Jian <[email protected]> +L: [email protected] (moderated for mon-subscribers) +S: Maintained +W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview +F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml + ARM/Synaptics SoC support M: Jisheng Zhang <[email protected]> M: Sebastian Hesselbarth <[email protected]>
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 30 lines · Qin Jian
This introduces bindings for boards based Sunplus SP7021 SoC.
Reviewed-by Rob Herring <[email protected]>Signed-off-by Qin Jian <[email protected]>--- .../bindings/arm/sunplus,sp7021.yaml | 27 +++++++++++++++++++ MAINTAINERS | 7 +++++ 2 files changed, 34 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/sunplus,sp7021.yamlDocumentation/devicetree/bindings/arm/sunplus,sp7021.yaml new file +14
-0@@ -0,0 +1,27 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/sunplus,sp7021.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sunplus SP7021 Boards Device Tree Bindings + +maintainers: + - qinjian <[email protected]> + +description: | + ARM platforms using Sunplus SP7021, an ARM Cortex A7 (4-cores) based SoC.
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml line 24
Quoted 10 lines
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml new file +10
-0+ Wiki: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview + +properties: + $nodename: + const: '/' + compatible: + oneOf: + - items: + - const: sunplus,sp7021-achip +
You did not publish DTS so bigger picture and context are missing here. Is it a SoC compatible? A board compatible? Why only one? Against what does it validate?
This binding looks incomplete.
Best regards,
Krzysztof
qinjian[覃健]
maintainerRE: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 14 lines
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml line 24
Quoted 9 lines
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml new file +9
-0+ +properties: + $nodename: + const: '/' + compatible: + oneOf: + - items: + - const: sunplus,sp7021-achip +You did not publish DTS so bigger picture and context are missing here. Is it a SoC compatible? A board compatible? Why only one? Against what does it validate?
Quoted 1 line
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
Re: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 14 lines · qinjian[覃健]
Quoted 14 lines
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml line 24
Quoted 9 lines
Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml new file +9
-0+ +properties: + $nodename: + const: '/' + compatible: + oneOf: + - items: + - const: sunplus,sp7021-achip +You did not publish DTS so bigger picture and context are missing here. Is it a SoC compatible? A board compatible? Why only one? Against what does it validate?
Quoted 6 lines
Quoted 1 line
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
You have there only one compatible but if I would expect at least two. One for SoC and one for board. Something like this:Documentation/devicetree/bindings/arm/rda.yaml
but in your case enum would have only one entry.
Best regards,
Krzysztof
qinjian[覃健]
maintainerRE: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 8 lines
Quoted 7 lines
Quoted 2 lines
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
Quoted 4 lines
You have there only one compatible but if I would expect at least two. One for SoC and one for board. Something like this:
Documentation/devicetree/bindings/arm/rda.yaml
but in your case enum would have only one entry.
Currently, we only support one board. Maybe will support more boards in future.
Re: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 8 lines · qinjian[覃健]
Quoted 8 lines
Quoted 7 lines
Quoted 2 lines
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
Quoted 6 lines
Quoted 4 lines
You have there only one compatible but if I would expect at least two. One for SoC and one for board. Something like this:
Documentation/devicetree/bindings/arm/rda.yaml
but in your case enum would have only one entry.Currently, we only support one board. Maybe will support more boards in future.
This is not the answer for my questions. I said I expect two compatibles:
1. One for SoC,
2. One for board.
And you respond "we have only one board".
Where is the SoC compatible?
Best regards,
Krzysztof
qinjian[覃健]
maintainerRE: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 14 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 1 line
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
Quoted 6 lines
Quoted 4 lines
You have there only one compatible but if I would expect at least two. One for SoC and one for board. Something like this:
Documentation/devicetree/bindings/arm/rda.yaml
but in your case enum would have only one entry.Currently, we only support one board. Maybe will support more boards in future.
Quoted 8 lines
This is not the answer for my questions. I said I expect two compatibles:
1. One for SoC,
2. One for board.And you respond "we have only one board".
Where is the SoC compatible?
Got it, thanks for your explanation.
I'll add the SoC compatible(sunplus,sp7021) in next patch.
compatible:
items:
- enum:
- sunplus,sp7021-achip
- const: sunplus,sp7021
Re: [PATCH v9 02/10] dt-bindings: arm: sunplus: Add bindings for Sunplus SP7021 SoC boards
Quoted 25 lines · qinjian[覃健]
Quoted 14 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 1 line
This binding looks incomplete.
Sunplus SP7021 is an ARM Cortex A7 based SoC. The patch is for SP7021 SoC and SP7021 based boards. Sorry, I don't understand your questions. Could you explain more?
Quoted 6 lines
Quoted 4 lines
You have there only one compatible but if I would expect at least two. One for SoC and one for board. Something like this:
Documentation/devicetree/bindings/arm/rda.yaml
but in your case enum would have only one entry.Currently, we only support one board. Maybe will support more boards in future.
Quoted 8 lines
This is not the answer for my questions. I said I expect two compatibles:
1. One for SoC,
2. One for board.And you respond "we have only one board".
Where is the SoC compatible?
Got it, thanks for your explanation.
Quoted 7 lines
I'll add the SoC
compatible(sunplus,sp7021)in next patch.compatible:
items:
- enum:
- sunplus,sp7021-achip
- const: sunplus,sp7021
Yes, this looks correct (assuming "sp7021-achip" is the name for this board.
Best regards,
Krzysztof
Qin Jian
maintainerPATCH v9 3/10 dt-bindings: reset: Add bindings for SP7021 reset driver
In reply to Qin JianAdd documentation to describe Sunplus SP7021 reset driver bindings.
--- .../bindings/reset/sunplus,reset.yaml | 38 ++++++++ MAINTAINERS | 2 + include/dt-bindings/reset/sp-sp7021.h | 97 +++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/sunplus,reset.yaml create mode 100644 include/dt-bindings/reset/sp-sp7021.h
Documentation/devicetree/bindings/reset/sunplus,reset.yaml new file +38 -0
@@ -0,0 +1,38 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/reset/sunplus,reset.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Sunplus SoC Reset Controller + +maintainers: + - Qin Jian <[email protected]> + +properties: + compatible: + const: sunplus,sp7021-reset + + "#reset-cells": + const: 1 + + reg: + maxItems: 1 + +required: + - compatible + - "#reset-cells" + - reg + +additionalProperties: false + +examples: + - | + rstc: reset@9c000054 { + compatible = "sunplus,sp7021-reset"; + #reset-cells = <1>; + reg = <0x9c000054 0x28>; + }; + +...
MAINTAINERS +2 -0
@@ -2661,6 +2661,8 @@ L: [email protected] (moderated for mon-subscribers) S: Maintained W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml +F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml +F: include/dt-bindings/reset/sp-sp7021.h ARM/Synaptics SoC support M: Jisheng Zhang <[email protected]>
include/dt-bindings/reset/sp-sp7021.h new file +97 -0
97 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 4/10 reset: Add Sunplus SP7021 reset driver
In reply to Qin JianAdd reset driver for Sunplus SP7021 SoC.
--- MAINTAINERS | 1 + drivers/reset/Kconfig | 9 +++ drivers/reset/Makefile | 1 + drivers/reset/reset-sunplus.c | 130 ++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 drivers/reset/reset-sunplus.c
MAINTAINERS +1 -0
@@ -2662,6 +2662,7 @@ S: Maintained W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml +F: drivers/reset/reset-sunplus.c F: include/dt-bindings/reset/sp-sp7021.h ARM/Synaptics SoC support
drivers/reset/Kconfig +9 -0
@@ -224,6 +224,15 @@ config RESET_SOCFPGA This enables the reset driver for the SoCFPGA ARMv7 platforms. This driver gets initialized early during platform init calls. +config RESET_SUNPLUS + bool "Sunplus SoCs Reset Driver" if COMPILE_TEST + default ARCH_SUNPLUS + help + This enables the reset driver support for Sunplus SoCs. + The reset lines that can be asserted and deasserted by toggling bits + in a contiguous, exclusive register space. The register is HIWORD_MASKED, + which means each register hold 16 reset lines. + config RESET_SUNXI bool "Allwinner SoCs Reset Driver" if COMPILE_TEST && !ARCH_SUNXI default ARCH_SUNXI
drivers/reset/Makefile +1 -0
@@ -29,6 +29,7 @@ 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_SUNPLUS) += reset-sunplus.o obj-$(CONFIG_RESET_SUNXI) += reset-sunxi.o obj-$(CONFIG_RESET_TI_SCI) += reset-ti-sci.o obj-$(CONFIG_RESET_TI_SYSCON) += reset-ti-syscon.o
drivers/reset/reset-sunplus.c new file +130 -0
130 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 5/10 dt-bindings: clock: Add bindings for SP7021 clock driver
In reply to Qin JianAdd documentation to describe Sunplus SP7021 clock driver bindings.
--- .../bindings/clock/sunplus,sp7021-clkc.yaml | 52 ++++++++ MAINTAINERS | 2 + include/dt-bindings/clock/sp-sp7021.h | 112 ++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml create mode 100644 include/dt-bindings/clock/sp-sp7021.h
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +52 -0
@@ -0,0 +1,52 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/sunplus,sp7021-clkc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sunplus SP7021 SoC Clock Controller Binding + +maintainers: + - Qin Jian <[email protected]> + +properties: + compatible: + const: sunplus,sp7021-clkc + + "#clock-cells": + const: 1 + + reg: + maxItems: 1 + + clocks: + items: + - description: External oscillator clock + - description: System clock + + clock-names: + items: + - const: extclk + - const: pllsys + +required: + - compatible + - "#clock-cells" + - reg + - clocks + - clock-names + +additionalProperties: false + +examples: + - | + clkc: clock-controller@9c000000 { + compatible = "sunplus,sp7021-clkc"; + #clock-cells = <1>; + reg = <0x9c000000 0x280>; + clocks = <&extclk>, <&clkc PLL_SYS>; + clock-names = "extclk", "pllsys"; + }; + +...
MAINTAINERS +2 -0
@@ -2661,8 +2661,10 @@ L: [email protected] (moderated for mon-subscribers) S: Maintained W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml +F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml F: drivers/reset/reset-sunplus.c +F: include/dt-bindings/clock/sp-sp7021.h F: include/dt-bindings/reset/sp-sp7021.h ARM/Synaptics SoC support
include/dt-bindings/clock/sp-sp7021.h new file +112 -0
112 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Rob Herring
maintainerRe: [PATCH v9 05/10] dt-bindings: clock: Add bindings for SP7021 clock driver
Quoted 5 lines · Qin Jian
Add documentation to describe Sunplus SP7021 clock driver bindings.
Reviewed-by Stephen Boyd <[email protected]>Reviewed-by Rob Herring <[email protected]>Signed-off-by Qin Jian <[email protected]>
Quoted 8 lines
--- .../bindings/clock/sunplus,sp7021-clkc.yaml | 52 ++++++++ MAINTAINERS | 2 + include/dt-bindings/clock/sp-sp7021.h | 112 ++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml create mode 100644 include/dt-bindings/clock/sp-sp7021.h
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Error: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.example.dts:23.38-39 syntax error FATAL ERROR: Unable to parse input tree
make[1]: *** [scripts/Makefile.lib:378: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.example.dt.yaml] Error 1 make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1398: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/1595308
This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit.
Re: [PATCH v9 05/10] dt-bindings: clock: Add bindings for SP7021 clock driver
In reply to Qin JianQuoted 57 lines · Qin Jian
Add documentation to describe Sunplus SP7021 clock driver bindings.
Reviewed-by Stephen Boyd <[email protected]>Reviewed-by Rob Herring <[email protected]>Signed-off-by Qin Jian <[email protected]>--- .../bindings/clock/sunplus,sp7021-clkc.yaml | 52 ++++++++ MAINTAINERS | 2 + include/dt-bindings/clock/sp-sp7021.h | 112 ++++++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml create mode 100644 include/dt-bindings/clock/sp-sp7021.hDocumentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +38
-0@@ -0,0 +1,52 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/sunplus,sp7021-clkc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sunplus SP7021 SoC Clock Controller Binding + +maintainers: + - Qin Jian <[email protected]> + +properties: + compatible: + const: sunplus,sp7021-clkc + + "#clock-cells": + const: 1 + + reg: + maxItems: 1 + + clocks: + items: + - description: External oscillator clock + - description: System clock + + clock-names: + items: + - const: extclk + - const: pllsys + +required: + - compatible + - "#clock-cells" + - reg + - clocks + - clock-names
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml line 48
Quoted 10 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +10
-0+ +additionalProperties: false + +examples: + - | + clkc: clock-controller@9c000000 { + compatible = "sunplus,sp7021-clkc"; + #clock-cells = <1>; + reg = <0x9c000000 0x280>; + clocks = <&extclk>, <&clkc PLL_SYS>;
Except the warning pointed out by Rob's bot, it looks like you feed this clock-controller with a clock from itself. Is there a point to express it in DTS at all?
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml line 50
Quoted 2 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +2
-0+ clock-names = "extclk", "pllsys"; + };
Best regards,
Krzysztof
qinjian[覃健]
maintainerRE: [PATCH v9 05/10] dt-bindings: clock: Add bindings for SP7021 clock driver
Quoted 11 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml line 48
Quoted 7 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +7
-0+examples: + - | + clkc: clock-controller@9c000000 { + compatible = "sunplus,sp7021-clkc"; + #clock-cells = <1>; + reg = <0x9c000000 0x280>; + clocks = <&extclk>, <&clkc PLL_SYS>;Except the warning pointed out by Rob's bot, it looks like you feed this clock-controller with a clock from itself. Is there a point to express it in DTS at all?
Yes, pllsys is an internal clock, but it also as a parent clock for some other clocks in this clock-controller.
Re: [PATCH v9 05/10] dt-bindings: clock: Add bindings for SP7021 clock driver
Quoted 8 lines · qinjian[覃健]
Quoted 8 lines
Quoted 7 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +7
-0+examples: + - | + clkc: clock-controller@9c000000 { + compatible = "sunplus,sp7021-clkc"; + #clock-cells = <1>; + reg = <0x9c000000 0x280>; + clocks = <&extclk>, <&clkc PLL_SYS>;
Quoted 6 lines
Quoted 3 lines
Except the warning pointed out by Rob's bot, it looks like you feed this clock-controller with a clock from itself. Is there a point to express it in DTS at all?
Yes, pllsys is an internal clock, but it also as a parent clock for some other clocks in this clock-controller.
What is the point to express it in DTS? Usually such internal parent-child relation is described in the driver.
And how does it even work? How can you get a clock from a device before you registered that device?
Best regards,
Krzysztof
qinjian[覃健]
maintainerRE: [PATCH v9 05/10] dt-bindings: clock: Add bindings for SP7021 clock driver
Quoted 12 lines
Quoted 12 lines
Quoted 11 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml line 48
Quoted 7 lines
Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml new file +7
-0+examples: + - | + clkc: clock-controller@9c000000 { + compatible = "sunplus,sp7021-clkc"; + #clock-cells = <1>; + reg = <0x9c000000 0x280>; + clocks = <&extclk>, <&clkc PLL_SYS>;Except the warning pointed out by Rob's bot, it looks like you feed this clock-controller with a clock from itself. Is there a point to express it in DTS at all?
Quoted 8 lines
Quoted 2 lines
Yes, pllsys is an internal clock, but it also as a parent clock for some other clocks in this clock-controller.
What is the point to express it in DTS? Usually such internal parent-child relation is described in the driver.
And how does it even work? How can you get a clock from a device before you registered that device?
Thanks for your explanation.
I'll remove the internal clock parent form DTS.
Qin Jian
maintainerPATCH v9 6/10 clk: Add Sunplus SP7021 clock driver
In reply to Qin JianAdd clock driver for Sunplus SP7021 SoC.
---
Fix the comments from Stephen Boyd.
--- MAINTAINERS | 1 + drivers/clk/Kconfig | 10 + drivers/clk/Makefile | 1 + drivers/clk/clk-sp7021.c | 741 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 753 insertions(+) create mode 100644 drivers/clk/clk-sp7021.c
MAINTAINERS +1 -0
@@ -2663,6 +2663,7 @@ W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml +F: drivers/clk/clk-sp7021.c F: drivers/reset/reset-sunplus.c F: include/dt-bindings/clock/sp-sp7021.h F: include/dt-bindings/reset/sp-sp7021.h
drivers/clk/Kconfig +10 -0
@@ -334,6 +334,16 @@ config COMMON_CLK_VC5 This driver supports the IDT VersaClock 5 and VersaClock 6 programmable clock generators. +config COMMON_CLK_SP7021 + bool "Clock driver for Sunplus SP7021 SoC" + depends on SOC_SP7021 || COMPILE_TEST + default SOC_SP7021 + help + This driver supports the Sunplus SP7021 SoC clocks. + It implements SP7021 PLLs/gate. + Not all features of the PLL are currently supported + by the driver. + config COMMON_CLK_STM32MP157 def_bool COMMON_CLK && MACH_STM32MP157 help
drivers/clk/Makefile +1 -0
@@ -60,6 +60,7 @@ obj-$(CONFIG_COMMON_CLK_SI5351) += clk-si5351.o obj-$(CONFIG_COMMON_CLK_SI514) += clk-si514.o obj-$(CONFIG_COMMON_CLK_SI544) += clk-si544.o obj-$(CONFIG_COMMON_CLK_SI570) += clk-si570.o +obj-$(CONFIG_COMMON_CLK_SP7021) += clk-sp7021.o obj-$(CONFIG_COMMON_CLK_STM32F) += clk-stm32f4.o obj-$(CONFIG_COMMON_CLK_STM32H7) += clk-stm32h7.o obj-$(CONFIG_COMMON_CLK_STM32MP157) += clk-stm32mp1.o
drivers/clk/clk-sp7021.c new file +741 -0
741 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 7/10 dt-bindings: interrupt-controller: Add bindings for SP7021 interrupt controller
In reply to Qin JianAdd documentation to describe Sunplus SP7021 interrupt controller bindings.
--- .../sunplus,sp7021-intc.yaml | 62 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml
Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml new file +62 -0
@@ -0,0 +1,62 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/interrupt-controller/sunplus,sp7021-intc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sunplus SP7021 SoC Interrupt Controller Device Tree Bindings + +maintainers: + - Qin Jian <[email protected]> + +properties: + compatible: + items: + - const: sunplus,sp7021-intc + + interrupt-controller: true + + "#interrupt-cells": + const: 2 + description: + The first cell is the IRQ number, the second cell is the trigger + type as defined in interrupt.txt in this directory. + + reg: + maxItems: 2 + description: + Specifies base physical address(s) and size of the controller regs. + The 1st region include type/polarity/priority/mask regs. + The 2nd region include clear/masked_ext0/masked_ext1/group regs. + + interrupts: + maxItems: 2 + description: + EXT_INT0 & EXT_INT1, 2 interrupts references to primary interrupt + controller. + +required: + - compatible + - interrupt-controller + - "#interrupt-cells" + - reg + - interrupts + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + + intc: interrupt-controller@9c000780 { + compatible = "sunplus,sp7021-intc"; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0x9c000780 0x80>, <0x9c000a80 0x80>; + interrupt-parent = <&gic>; + interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, /* EXT_INT0 */ + <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; /* EXT_INT1 */ + }; + +...
MAINTAINERS +1 -0
@@ -2662,6 +2662,7 @@ S: Maintained W: https://sunplus-tibbo.atlassian.net/wiki/spaces/doc/overview F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml +F: Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml F: drivers/clk/clk-sp7021.c F: drivers/reset/reset-sunplus.c
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 8/10 irqchip: Add Sunplus SP7021 interrupt controller driver
In reply to Qin JianAdd interrupt controller driver for Sunplus SP7021 SoC.
This is the interrupt controller in P-chip which collects all interrupt sources in P-chip and routes them to parent interrupt controller in C-chip.
---
Fix the comments from Marc.
--- MAINTAINERS | 1 + drivers/irqchip/Kconfig | 9 + drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-sp7021-intc.c | 288 ++++++++++++++++++++++++++++++ 4 files changed, 299 insertions(+) create mode 100644 drivers/irqchip/irq-sp7021-intc.c
MAINTAINERS +1 -0
@@ -2665,6 +2665,7 @@ F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml F: Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml F: drivers/clk/clk-sp7021.c +F: drivers/irqchip/irq-sp7021-intc.c F: drivers/reset/reset-sunplus.c F: include/dt-bindings/clock/sp-sp7021.h F: include/dt-bindings/reset/sp-sp7021.h
drivers/irqchip/Kconfig +9 -0
@@ -602,4 +602,13 @@ config APPLE_AIC Support for the Apple Interrupt Controller found on Apple Silicon SoCs, such as the M1. +config SUNPLUS_SP7021_INTC + bool "Sunplus SP7021 interrupt controller" if COMPILE_TEST + default SOC_SP7021 + help + Support for the Sunplus SP7021 Interrupt Controller IP core. + SP7021 SoC has 2 Chips: C-Chip & P-Chip. This is used as a + chained controller, routing all interrupt source in P-Chip to + the primary controller on C-Chip. + endmenu
drivers/irqchip/Makefile +1 -0
@@ -116,3 +116,4 @@ obj-$(CONFIG_MACH_REALTEK_RTL) += irq-realtek-rtl.o obj-$(CONFIG_WPCM450_AIC) += irq-wpcm450-aic.o obj-$(CONFIG_IRQ_IDT3243X) += irq-idt3243x.o obj-$(CONFIG_APPLE_AIC) += irq-apple-aic.o +obj-$(CONFIG_SUNPLUS_SP7021_INTC) += irq-sp7021-intc.o
drivers/irqchip/irq-sp7021-intc.c new file +288 -0
288 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 9/10 ARM: sunplus: Add initial support for Sunplus SP7021 SoC
In reply to Qin JianThis patch aims to add an initial support for Sunplus SP7021 SoC.
--- MAINTAINERS | 1 + arch/arm/Kconfig | 2 ++ arch/arm/Makefile | 1 + arch/arm/mach-sunplus/Kconfig | 26 ++++++++++++++++++++++++++ arch/arm/mach-sunplus/Makefile | 9 +++++++++ arch/arm/mach-sunplus/sp7021.c | 16 ++++++++++++++++ 6 files changed, 55 insertions(+) create mode 100644 arch/arm/mach-sunplus/Kconfig create mode 100644 arch/arm/mach-sunplus/Makefile create mode 100644 arch/arm/mach-sunplus/sp7021.c
MAINTAINERS +1 -0
@@ -2664,6 +2664,7 @@ F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml F: Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml +F: arch/arm/mach-sunplus/ F: drivers/clk/clk-sp7021.c F: drivers/irqchip/irq-sp7021-intc.c F: drivers/reset/reset-sunplus.c
arch/arm/Kconfig +2 -0
@@ -689,6 +689,8 @@ source "arch/arm/mach-sti/Kconfig" source "arch/arm/mach-stm32/Kconfig" +source "arch/arm/mach-sunplus/Kconfig" + source "arch/arm/mach-sunxi/Kconfig" source "arch/arm/mach-tegra/Kconfig"
arch/arm/Makefile +1 -0
@@ -212,6 +212,7 @@ machine-$(CONFIG_ARCH_RENESAS) += shmobile machine-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga machine-$(CONFIG_ARCH_STI) += sti machine-$(CONFIG_ARCH_STM32) += stm32 +machine-$(CONFIG_ARCH_SUNPLUS) += sunplus machine-$(CONFIG_ARCH_SUNXI) += sunxi machine-$(CONFIG_ARCH_TEGRA) += tegra machine-$(CONFIG_ARCH_U8500) += ux500
arch/arm/mach-sunplus/Kconfig new file +26 -0
@@ -0,0 +1,26 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) + +menuconfig ARCH_SUNPLUS + bool "Sunplus SoCs" + depends on ARCH_MULTI_V7 + help + Support for Sunplus SoC family: SP7021 and succeeding SoC-based systems, + such as the Banana Pi BPI-F2S development board (and derivatives). + (<http://www.sinovoip.com.cn/ecp_view.asp?id=586>) + (<https://tibbo.com/store/plus1.html>) + +config SOC_SP7021 + bool "Sunplus SP7021 SoC support" + depends on ARCH_SUNPLUS + default ARCH_SUNPLUS + select ARM_GIC + select ARM_PSCI + select PINCTRL + select PINCTRL_SPPCTL + select SERIAL_SUNPLUS + select SERIAL_SUNPLUS_CONSOLE + help + Support for Sunplus SP7021 SoC. It is based on ARM 4-core + Cortex-A7 with various peripherals (ex: I2C, SPI, SDIO, + Ethernet and etc.), FPGA interface, chip-to-chip bus. + It is designed for industrial control.
arch/arm/mach-sunplus/Makefile new file +9 -0
@@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Makefile for the linux kernel. +# + +# Object file lists. + +obj-$(CONFIG_SOC_SP7021) += sp7021.o +
arch/arm/mach-sunplus/sp7021.c new file +16 -0
@@ -0,0 +1,16 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +/* +* Copyright (C) Sunplus Technology Co., Ltd. +* All rights reserved. +*/ +#include <linux/kernel.h> +#include <asm/mach/arch.h> + +static const char *sp7021_compat[]__initconst = { +"sunplus,sp7021" , +NULL +}; + +DT_MACHINE_START (SP7021_DT ,"SP7021" ) + .dt_compat = sp7021_compat, +MACHINE_END
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Qin Jian
maintainerPATCH v9 10/10 ARM: sp7021_defconfig: Add Sunplus SP7021 defconfig
In reply to Qin JianAdd generic Sunplus SP7021 based board defconfig
--- MAINTAINERS | 1 + arch/arm/configs/multi_v7_defconfig | 1 + arch/arm/configs/sp7021_defconfig | 61 +++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 arch/arm/configs/sp7021_defconfig
MAINTAINERS +1 -0
@@ -2664,6 +2664,7 @@ F: Documentation/devicetree/bindings/arm/sunplus,sp7021.yaml F: Documentation/devicetree/bindings/clock/sunplus,sp7021-clkc.yaml F: Documentation/devicetree/bindings/interrupt-controller/sunplus,sp7021-intc.yaml F: Documentation/devicetree/bindings/reset/sunplus,reset.yaml +F: arch/arm/configs/sp7021_*defconfig F: arch/arm/mach-sunplus/ F: drivers/clk/clk-sp7021.c F: drivers/irqchip/irq-sp7021-intc.c
arch/arm/configs/multi_v7_defconfig +1 -0
@@ -87,6 +87,7 @@ CONFIG_MACH_SPEAR1310=y CONFIG_MACH_SPEAR1340=y CONFIG_ARCH_STI=y CONFIG_ARCH_STM32=y +CONFIG_ARCH_SUNPLUS=y CONFIG_ARCH_SUNXI=y CONFIG_ARCH_TEGRA=y CONFIG_ARCH_UNIPHIER=y
arch/arm/configs/sp7021_defconfig new file +61 -0
61 lines not on this page · raw message
Signature · 7 lines
2.33.1 _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel