* [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
* [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
* [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
* [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 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
* 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
* 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
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).