* [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver
@ 2021-07-01 3:01 Qing Zhang
2021-07-01 3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Qing Zhang @ 2021-07-01 3:01 UTC (permalink / raw)
To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
Cc: devicetree, linux-mips, linux-kernel
Add power management register operations to support reboot and poweroff.
Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---
v6-v7:
No Change
---
drivers/platform/mips/Kconfig | 6 ++++
drivers/platform/mips/Makefile | 1 +
drivers/platform/mips/ls2k-reset.c | 53 ++++++++++++++++++++++++++++++
3 files changed, 60 insertions(+)
create mode 100644 drivers/platform/mips/ls2k-reset.c
diff --git a/drivers/platform/mips/Kconfig b/drivers/platform/mips/Kconfig
index 8ac149173c64..d421e1482395 100644
--- a/drivers/platform/mips/Kconfig
+++ b/drivers/platform/mips/Kconfig
@@ -30,4 +30,10 @@ config RS780E_ACPI
help
Loongson RS780E PCH ACPI Controller driver.
+config LS2K_RESET
+ bool "Loongson-2K1000 Reset Controller"
+ depends on MACH_LOONGSON64 || COMPILE_TEST
+ help
+ Loongson-2K1000 Reset Controller driver.
+
endif # MIPS_PLATFORM_DEVICES
diff --git a/drivers/platform/mips/Makefile b/drivers/platform/mips/Makefile
index 178149098777..4c71444e453a 100644
--- a/drivers/platform/mips/Makefile
+++ b/drivers/platform/mips/Makefile
@@ -1,3 +1,4 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_CPU_HWMON) += cpu_hwmon.o
obj-$(CONFIG_RS780E_ACPI) += rs780e-acpi.o
+obj-$(CONFIG_LS2K_RESET) += ls2k-reset.o
diff --git a/drivers/platform/mips/ls2k-reset.c b/drivers/platform/mips/ls2k-reset.c
new file mode 100644
index 000000000000..286d47bf6964
--- /dev/null
+++ b/drivers/platform/mips/ls2k-reset.c
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021, Qing Zhang <zhangqing@loongson.cn>
+ * Loongson-2K1000 reset support
+ */
+
+#include <linux/of_address.h>
+#include <linux/pm.h>
+#include <asm/reboot.h>
+
+#define PM1_STS 0x0c /* Power Management1 Status Register */
+#define PM1_CNT 0x14 /* Power Management 1 Control Register */
+#define RST_CNT 0x30 /* Reset Control Register */
+
+static void __iomem *base;
+
+static void ls2k_restart(char *command)
+{
+ writel(0x1, (void *)base + RST_CNT);
+}
+
+static void ls2k_poweroff(void)
+{
+ /* Clear */
+ writel((readl((void *)base + PM1_STS) & 0xffffffff), (void *)base + PM1_STS);
+ /* Sleep Enable | Soft Off*/
+ writel(GENMASK(12, 10)|BIT(13), (void *)base + PM1_CNT);
+}
+
+static int ls2k_reset_init(void)
+{
+ struct device_node *np;
+
+ np = of_find_compatible_node(NULL, NULL, "loongson,ls2k-pm");
+ if (!np) {
+ pr_info("Failed to get PM node\n");
+ return -ENODEV;
+ }
+
+ base = of_iomap(np, 0);
+ if (!base) {
+ pr_info("Failed to map PM register base address\n");
+ return -ENOMEM;
+ }
+
+ _machine_restart = ls2k_restart;
+ pm_power_off = ls2k_poweroff;
+
+ of_node_put(np);
+ return 0;
+}
+
+arch_initcall(ls2k_reset_init);
--
2.31.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000
2021-07-01 3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
@ 2021-07-01 3:01 ` Qing Zhang
2021-07-01 3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
2021-07-01 9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov
2 siblings, 0 replies; 5+ messages in thread
From: Qing Zhang @ 2021-07-01 3:01 UTC (permalink / raw)
To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
Cc: devicetree, linux-mips, linux-kernel
The module is now supported, enable it.
Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---
v6-v7:
No change
---
arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
index 5747f171de29..6004400bb689 100644
--- a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
@@ -52,6 +52,11 @@ package0: bus@10000000 {
0 0x40000000 0 0x40000000 0 0x40000000
0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
+ pm: power-controller@1fe07000 {
+ compatible = "loongson,ls2k-pm";
+ reg = <0 0x1fe07000 0 0x422>;
+ };
+
liointc0: interrupt-controller@1fe11400 {
compatible = "loongson,liointc-2.0";
reg = <0 0x1fe11400 0 0x40>,
--
2.31.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support
2021-07-01 3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
2021-07-01 3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
@ 2021-07-01 3:01 ` Qing Zhang
2021-07-01 14:02 ` Rob Herring
2021-07-01 9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov
2 siblings, 1 reply; 5+ messages in thread
From: Qing Zhang @ 2021-07-01 3:01 UTC (permalink / raw)
To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
Cc: devicetree, linux-mips, linux-kernel
Switch the DT binding to a YAML schema to enable the DT validation.
Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---
v6-v7:
Add yaml file
---
.../bindings/mips/loongson/ls2k-reset.yaml | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
diff --git a/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml b/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
new file mode 100644
index 000000000000..6016ea756ccd
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mips/loongson/ls2k-reset.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Loongson 2K1000 PM Controller
+
+maintainers:
+ - Qing Zhang <zhangqing@loongson.cn>
+
+description: |
+ This controller can be found in Loongson-2K1000 Soc systems.
+
+properties:
+ compatible:
+ const: loongson,ls2k-pm
+
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ bus {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ pm: power-controller@1fe07000 {
+ compatible = "loongson,ls2k-pm";
+ reg = <0 0x1fe07000 0 0x422>;
+ };
+ };
+...
--
2.31.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver
2021-07-01 3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
2021-07-01 3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
2021-07-01 3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
@ 2021-07-01 9:04 ` Sergei Shtylyov
2 siblings, 0 replies; 5+ messages in thread
From: Sergei Shtylyov @ 2021-07-01 9:04 UTC (permalink / raw)
To: Qing Zhang, Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
Cc: devicetree, linux-mips, linux-kernel
Hello!
On 01.07.2021 6:01, Qing Zhang wrote:
> Add power management register operations to support reboot and poweroff.
>
> Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
[...]
> diff --git a/drivers/platform/mips/ls2k-reset.c b/drivers/platform/mips/ls2k-reset.c
> new file mode 100644
> index 000000000000..286d47bf6964
> --- /dev/null
> +++ b/drivers/platform/mips/ls2k-reset.c
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2021, Qing Zhang <zhangqing@loongson.cn>
> + * Loongson-2K1000 reset support
> + */
> +
> +#include <linux/of_address.h>
> +#include <linux/pm.h>
> +#include <asm/reboot.h>
> +
> +#define PM1_STS 0x0c /* Power Management1 Status Register */
^ space missing?
> +#define PM1_CNT 0x14 /* Power Management 1 Control Register */
> +#define RST_CNT 0x30 /* Reset Control Register */
> +
> +static void __iomem *base;
> +
> +static void ls2k_restart(char *command)
> +{
> + writel(0x1, (void *)base + RST_CNT);
> +}
> +
> +static void ls2k_poweroff(void)
> +{
> + /* Clear */
> + writel((readl((void *)base + PM1_STS) & 0xffffffff), (void *)base + PM1_STS);
Are the pointer casts really necessary above?
> + /* Sleep Enable | Soft Off*/
> + writel(GENMASK(12, 10)|BIT(13), (void *)base + PM1_CNT);
Spaces around that | are needed.
[...]
MBR, Sergei
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support
2021-07-01 3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
@ 2021-07-01 14:02 ` Rob Herring
0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2021-07-01 14:02 UTC (permalink / raw)
To: Qing Zhang
Cc: Thomas Bogendoerfer, linux-mips, Rob Herring, Jiaxun Yang,
linux-kernel, devicetree
On Thu, 01 Jul 2021 11:01:37 +0800, Qing Zhang wrote:
> Switch the DT binding to a YAML schema to enable the DT validation.
>
> Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
> ---
>
> v6-v7:
> Add yaml file
> ---
> .../bindings/mips/loongson/ls2k-reset.yaml | 38 +++++++++++++++++++
> 1 file changed, 38 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
>
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:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.example.dt.yaml: power-controller@1fe07000: '#power-domain-cells' is a required property
From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/power/power-domain.yaml
\ndoc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/1499207
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.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-07-01 14:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-01 3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
2021-07-01 3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
2021-07-01 3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
2021-07-01 14:02 ` Rob Herring
2021-07-01 9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.