* [PATCH 0/3] Introduce reset driver for T-HEAD th1520 SoC [not found] <CGME20230912024917epcas1p29a513dcf6019fb7c63275aa0e39b1c71@epcas1p2.samsung.com> @ 2023-09-12 2:49 ` k.son [not found] ` <CGME20230912024917epcas1p4bb4d649f97b592c3245b10b6450d32cf@epcas1p4.samsung.com> ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: k.son @ 2023-09-12 2:49 UTC (permalink / raw) To: p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv, Kwanghoon Son From: Kwanghoon Son <k.son@samsung.com> This patchset adds initial support for reset driver. Register information is from vendor kernel [1]. I sent an e-mail to get permission the original author, but there was no answer. So I upload patch since it has GPL license. This patch also can be tested with watchdog simply with ``` watchdog0: watchdog@ffefc30000 { compatible = "snps,dw-wdt"; reg = <0xff 0xefc30000 0x0 0x1000>; interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; clocks = <&osc>; resets = <&rst TH1520_RESET_WDT0>; status = "okay"; }; ``` [1] https://github.com/revyos/thead-kernel.git Changelog: rfc: https://lore.kernel.org/linux-riscv/20230904042559.2322997-1-k.son@samsung.com/ - dt_binding_check - enable reset controller default Kwanghoon Son (3): dt-bindings: reset: Document th1520 reset control reset: Add th1520 reset driver support riscv: dts: Add th1520 reset device tree .../bindings/reset/thead,th1520-reset.yaml | 47 ++++++++ arch/riscv/boot/dts/thead/th1520.dtsi | 8 ++ drivers/reset/Kconfig | 10 ++ drivers/reset/Makefile | 1 + drivers/reset/reset-th1520.c | 109 ++++++++++++++++++ include/dt-bindings/reset/th1520-reset.h | 9 ++ 6 files changed, 184 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml create mode 100644 drivers/reset/reset-th1520.c create mode 100644 include/dt-bindings/reset/th1520-reset.h -- 2.34.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <CGME20230912024917epcas1p4bb4d649f97b592c3245b10b6450d32cf@epcas1p4.samsung.com>]
* [PATCH 1/3] dt-bindings: reset: Document th1520 reset control [not found] ` <CGME20230912024917epcas1p4bb4d649f97b592c3245b10b6450d32cf@epcas1p4.samsung.com> @ 2023-09-12 2:49 ` k.son 2023-09-12 7:04 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: k.son @ 2023-09-12 2:49 UTC (permalink / raw) To: p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv, Kwanghoon Son From: Kwanghoon Son <k.son@samsung.com> Add documentation to describe th1520 reset device Signed-off-by: Kwanghoon Son <k.son@samsung.com> --- .../bindings/reset/thead,th1520-reset.yaml | 47 +++++++++++++++++++ include/dt-bindings/reset/th1520-reset.h | 9 ++++ 2 files changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml create mode 100644 include/dt-bindings/reset/th1520-reset.h diff --git a/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml new file mode 100644 index 000000000000..6724a9ccdd55 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/thead,th1520-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: T-HEAD th1520 SoC Reset Controller + +maintainers: + - Kwanghoon Son <k.son@samsung.com> + +allOf: + - $ref: /schemas/mfd/syscon.yaml# + +properties: + compatible: + items: + - const: thead,th1520-reset + - const: syscon + + reg: + maxItems: 1 + + '#reset-cells': + const: 1 + +required: + - compatible + - reg + - '#reset-cells' + +additionalProperties: false + +examples: + - | + #include <dt-bindings/reset/th1520-reset.h> + + soc { + #address-cells = <2>; + #size-cells = <2>; + + reset-controller@ffef014000 { + compatible = "thead,th1520-reset", "syscon"; + reg = <0xff 0xef014000 0x0 0x1000>; + #reset-cells = <1>; + }; + }; diff --git a/include/dt-bindings/reset/th1520-reset.h b/include/dt-bindings/reset/th1520-reset.h new file mode 100644 index 000000000000..ec10751814e5 --- /dev/null +++ b/include/dt-bindings/reset/th1520-reset.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ + +#ifndef DT_BINDING_RESET_TH1520_H +#define DT_BINDING_RESET_TH1520_H + +#define TH1520_RESET_WDT0 0 +#define TH1520_RESET_WDT1 1 + +#endif -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] dt-bindings: reset: Document th1520 reset control 2023-09-12 2:49 ` [PATCH 1/3] dt-bindings: reset: Document th1520 reset control k.son @ 2023-09-12 7:04 ` Krzysztof Kozlowski 0 siblings, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2023-09-12 7:04 UTC (permalink / raw) To: k.son, p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv On 12/09/2023 04:49, k.son@samsung.com wrote: > From: Kwanghoon Son <k.son@samsung.com> > > Add documentation to describe th1520 reset device Full stop. > > Signed-off-by: Kwanghoon Son <k.son@samsung.com> This is v2, not v1. Please provide changelog after ---. > --- > .../bindings/reset/thead,th1520-reset.yaml | 47 +++++++++++++++++++ > include/dt-bindings/reset/th1520-reset.h | 9 ++++ > 2 files changed, 56 insertions(+) > create mode 100644 Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml > create mode 100644 include/dt-bindings/reset/th1520-reset.h > > diff --git a/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml > new file mode 100644 > index 000000000000..6724a9ccdd55 > --- /dev/null > +++ b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml > @@ -0,0 +1,47 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/reset/thead,th1520-reset.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: T-HEAD th1520 SoC Reset Controller > + > +maintainers: > + - Kwanghoon Son <k.son@samsung.com> > + > +allOf: > + - $ref: /schemas/mfd/syscon.yaml# Why do you need it? Which existing file suggested such code? > + > +properties: > + compatible: > + items: > + - const: thead,th1520-reset > + - const: syscon > + > + reg: > + maxItems: 1 > + > + '#reset-cells': > + const: 1 > + > +required: > + - compatible > + - reg > + - '#reset-cells' > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/reset/th1520-reset.h> > + > + soc { > + #address-cells = <2>; Your indentation is messed up. Here two spaces, further four. Just keep one indentation for the example - 4 spaces. > + #size-cells = <2>; > + > + reset-controller@ffef014000 { > + compatible = "thead,th1520-reset", "syscon"; > + reg = <0xff 0xef014000 0x0 0x1000>; > + #reset-cells = <1>; > + }; > + }; > diff --git a/include/dt-bindings/reset/th1520-reset.h b/include/dt-bindings/reset/th1520-reset.h > new file mode 100644 > index 000000000000..ec10751814e5 > --- /dev/null > +++ b/include/dt-bindings/reset/th1520-reset.h Filename matching bindings/compatible - missing vendor prefix. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <CGME20230912024917epcas1p26c59f79ab6904823417d625d6a711d36@epcas1p2.samsung.com>]
* [PATCH 2/3] reset: Add th1520 reset driver support [not found] ` <CGME20230912024917epcas1p26c59f79ab6904823417d625d6a711d36@epcas1p2.samsung.com> @ 2023-09-12 2:49 ` k.son 0 siblings, 0 replies; 7+ messages in thread From: k.son @ 2023-09-12 2:49 UTC (permalink / raw) To: p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv, Kwanghoon Son From: Kwanghoon Son <k.son@samsung.com> This driver supports th1520 T-HEAD SoC reset platform device. Signed-off-by: Kwanghoon Son <k.son@samsung.com> --- drivers/reset/Kconfig | 10 ++++ drivers/reset/Makefile | 1 + drivers/reset/reset-th1520.c | 109 +++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 drivers/reset/reset-th1520.c diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index ccd59ddd7610..ec69e6bbba6e 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -253,6 +253,16 @@ config RESET_SUNXI help This enables the reset driver for Allwinner SoCs. +config RESET_TH1520 + bool "TH1520 Reset Driver" + depends on (ARCH_THEAD || COMPILE_TEST) && OF + select MFD_SYSCON + default ARCH_THEAD + help + Support for the T-HEAD 1520 RISC-V SoC reset controller. + Say Y if you want to control reset signals provided by this + controller. + config RESET_TI_SCI tristate "TI System Control Interface (TI-SCI) reset driver" depends on TI_SCI_PROTOCOL || (COMPILE_TEST && TI_SCI_PROTOCOL=n) diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile index 8270da8a4baa..5c858e62241a 100644 --- a/drivers/reset/Makefile +++ b/drivers/reset/Makefile @@ -33,6 +33,7 @@ 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_TH1520) += reset-th1520.o obj-$(CONFIG_RESET_TI_SCI) += reset-ti-sci.o obj-$(CONFIG_RESET_TI_SYSCON) += reset-ti-syscon.o obj-$(CONFIG_RESET_TI_TPS380X) += reset-tps380x.o diff --git a/drivers/reset/reset-th1520.c b/drivers/reset/reset-th1520.c new file mode 100644 index 000000000000..4c781377ac23 --- /dev/null +++ b/drivers/reset/reset-th1520.c @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include <linux/mfd/syscon.h> +#include <linux/of_device.h> +#include <linux/platform_device.h> +#include <linux/reset-controller.h> +#include <linux/regmap.h> +#include <dt-bindings/reset/th1520-reset.h> + +struct th1520_rst_signal { + unsigned int offset, bit; +}; + +struct th1520_rst { + struct reset_controller_dev rcdev; + struct regmap *regmap; + const struct th1520_rst_signal *signals; +}; + +enum th1520_rst_registers { + RST_WDT0 = 0x0034, + RST_WDT1 = 0x0038, +}; + +static int th1520_reset_update(struct th1520_rst *rst, unsigned long id, + unsigned int value) +{ + const struct th1520_rst_signal *signal = &rst->signals[id]; + + return regmap_update_bits(rst->regmap, signal->offset, signal->bit, + value); +} + +static const struct th1520_rst_signal th1520_rst_signals[] = { + [TH1520_RESET_WDT0] = { RST_WDT0, BIT(0) }, + [TH1520_RESET_WDT1] = { RST_WDT1, BIT(0) }, +}; + +static struct th1520_rst *to_th1520_rst(struct reset_controller_dev *rcdev) +{ + return container_of(rcdev, struct th1520_rst, rcdev); +} + +static int th1520_reset_set(struct reset_controller_dev *rcdev, + unsigned long id, bool assert) +{ + struct th1520_rst *rst = to_th1520_rst(rcdev); + const unsigned int bit = rst->signals[id].bit; + unsigned int value = assert ? bit : 0; + + return th1520_reset_update(rst, id, value); +} + +static int th1520_reset_assert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + return th1520_reset_set(rcdev, id, false); +} + +static int th1520_reset_deassert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + return th1520_reset_set(rcdev, id, true); +} + +static const struct reset_control_ops th1520_rst_ops = { + .assert = th1520_reset_assert, + .deassert = th1520_reset_deassert, +}; + +static int th1520_reset_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct th1520_rst *rst; + struct regmap_config config = { .name = "rst" }; + + rst = devm_kzalloc(dev, sizeof(*rst), GFP_KERNEL); + if (!rst) + return -ENOMEM; + + rst->signals = th1520_rst_signals; + rst->regmap = syscon_node_to_regmap(dev->of_node); + if (IS_ERR(rst->regmap)) + return PTR_ERR(rst->regmap); + + regmap_attach_dev(dev, rst->regmap, &config); + + rst->rcdev.owner = THIS_MODULE; + rst->rcdev.dev = dev; + rst->rcdev.of_node = dev->of_node; + rst->rcdev.ops = &th1520_rst_ops; + rst->rcdev.nr_resets = ARRAY_SIZE(th1520_rst_signals); + + return devm_reset_controller_register(dev, &rst->rcdev); +} + +static const struct of_device_id th1520_reset_dt_ids[] = { + { .compatible = "thead,th1520-reset" }, + { /* sentinel */ }, +}; + +static struct platform_driver th1520_reset_driver = { + .probe = th1520_reset_probe, + .driver = { + .name = "th1520-reset", + .of_match_table = th1520_reset_dt_ids, + }, +}; +builtin_platform_driver(th1520_reset_driver); -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <CGME20230912024917epcas1p2076a3a0674ae94e8c8641cc9eb617eac@epcas1p2.samsung.com>]
* [PATCH 3/3] riscv: dts: Add th1520 reset device tree [not found] ` <CGME20230912024917epcas1p2076a3a0674ae94e8c8641cc9eb617eac@epcas1p2.samsung.com> @ 2023-09-12 2:49 ` k.son 2023-09-12 7:05 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: k.son @ 2023-09-12 2:49 UTC (permalink / raw) To: p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv, Kwanghoon Son From: Kwanghoon Son <k.son@samsung.com> Add reset device tree for th1520 SoC Signed-off-by: Kwanghoon Son <k.son@samsung.com> --- arch/riscv/boot/dts/thead/th1520.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi index ce708183b6f6..7e592449b5e4 100644 --- a/arch/riscv/boot/dts/thead/th1520.dtsi +++ b/arch/riscv/boot/dts/thead/th1520.dtsi @@ -5,6 +5,7 @@ */ #include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/reset/th1520-reset.h> / { compatible = "thead,th1520"; @@ -418,5 +419,12 @@ portf: gpio-controller@0 { interrupts = <55 IRQ_TYPE_LEVEL_HIGH>; }; }; + + rst: reset-controller@ffef014000 { + compatible = "thead,th1520-reset", "syscon"; + reg = <0xff 0xef014000 0x0 0x1000>; + #reset-cells = <1>; + status = "okay"; + }; }; }; -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] riscv: dts: Add th1520 reset device tree 2023-09-12 2:49 ` [PATCH 3/3] riscv: dts: Add th1520 reset device tree k.son @ 2023-09-12 7:05 ` Krzysztof Kozlowski 0 siblings, 0 replies; 7+ messages in thread From: Krzysztof Kozlowski @ 2023-09-12 7:05 UTC (permalink / raw) To: k.son, p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv On 12/09/2023 04:49, k.son@samsung.com wrote: > From: Kwanghoon Son <k.son@samsung.com> > > Add reset device tree for th1520 SoC > > Signed-off-by: Kwanghoon Son <k.son@samsung.com> > --- > arch/riscv/boot/dts/thead/th1520.dtsi | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi > index ce708183b6f6..7e592449b5e4 100644 > --- a/arch/riscv/boot/dts/thead/th1520.dtsi > +++ b/arch/riscv/boot/dts/thead/th1520.dtsi > @@ -5,6 +5,7 @@ > */ > > #include <dt-bindings/interrupt-controller/irq.h> > +#include <dt-bindings/reset/th1520-reset.h> > > / { > compatible = "thead,th1520"; > @@ -418,5 +419,12 @@ portf: gpio-controller@0 { > interrupts = <55 IRQ_TYPE_LEVEL_HIGH>; > }; > }; > + > + rst: reset-controller@ffef014000 { > + compatible = "thead,th1520-reset", "syscon"; > + reg = <0xff 0xef014000 0x0 0x1000>; > + #reset-cells = <1>; > + status = "okay"; Drop, it's by default. Look at the other nodes - they do not have it, so neither this node should. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH 0/3] Introduce reset driver for T-HEAD th1520 SoC 2023-09-12 2:49 ` [PATCH 0/3] Introduce reset driver for T-HEAD th1520 SoC k.son ` (2 preceding siblings ...) [not found] ` <CGME20230912024917epcas1p2076a3a0674ae94e8c8641cc9eb617eac@epcas1p2.samsung.com> @ 2023-09-12 3:16 ` Kwanghoon Son 3 siblings, 0 replies; 7+ messages in thread From: Kwanghoon Son @ 2023-09-12 3:16 UTC (permalink / raw) To: p.zabel, robh+dt, krzysztof.kozlowski+dt, conor+dt, jszhang, guoren, wefu, paul.walmsley, palmer, aou, inki.dae Cc: devicetree, linux-kernel, linux-riscv > From: Kwanghoon Son <k.son@samsung.com> > Oops, my mail config has from option. Sorry, I will fix in next version after get feedback. Kwang. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-09-12 7:05 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20230912024917epcas1p29a513dcf6019fb7c63275aa0e39b1c71@epcas1p2.samsung.com>
2023-09-12 2:49 ` [PATCH 0/3] Introduce reset driver for T-HEAD th1520 SoC k.son
[not found] ` <CGME20230912024917epcas1p4bb4d649f97b592c3245b10b6450d32cf@epcas1p4.samsung.com>
2023-09-12 2:49 ` [PATCH 1/3] dt-bindings: reset: Document th1520 reset control k.son
2023-09-12 7:04 ` Krzysztof Kozlowski
[not found] ` <CGME20230912024917epcas1p26c59f79ab6904823417d625d6a711d36@epcas1p2.samsung.com>
2023-09-12 2:49 ` [PATCH 2/3] reset: Add th1520 reset driver support k.son
[not found] ` <CGME20230912024917epcas1p2076a3a0674ae94e8c8641cc9eb617eac@epcas1p2.samsung.com>
2023-09-12 2:49 ` [PATCH 3/3] riscv: dts: Add th1520 reset device tree k.son
2023-09-12 7:05 ` Krzysztof Kozlowski
2023-09-12 3:16 ` [PATCH 0/3] Introduce reset driver for T-HEAD th1520 SoC Kwanghoon Son
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).