* [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips
@ 2024-04-02 7:58 Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller Binbin Zhou
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:58 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou
Hi all:
This patchset introduce a generic PWM framework driver for Loongson family.
Each PWM has one pulse width output signal and one pulse input signal to be measured.
It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
Thanks.
Binbin Zhou (5):
dt-bindings: pwm: Add Loongson PWM controller
pwm: Add Loongson PWM controller support
LoongArch: dts: Add PWM support to Loongson-2K0500
LoongArch: dts: Add PWM support to Loongson-2K1000
LoongArch: dts: Add PWM support to Loongson-2K2000
.../devicetree/bindings/pwm/pwm-loongson.yaml | 64 ++++
MAINTAINERS | 7 +
arch/loongarch/boot/dts/loongson-2k0500.dtsi | 20 ++
.../boot/dts/loongson-2k1000-ref.dts | 24 ++
arch/loongarch/boot/dts/loongson-2k1000.dtsi | 42 ++-
arch/loongarch/boot/dts/loongson-2k2000.dtsi | 60 ++++
drivers/pwm/Kconfig | 10 +
drivers/pwm/Makefile | 1 +
drivers/pwm/pwm-loongson.c | 300 ++++++++++++++++++
9 files changed, 527 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
create mode 100644 drivers/pwm/pwm-loongson.c
--
2.43.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
@ 2024-04-02 7:58 ` Binbin Zhou
2024-04-02 17:40 ` Rob Herring
2024-04-02 7:58 ` [PATCH v1 2/5] pwm: Add Loongson PWM controller support Binbin Zhou
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:58 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou
Add Loongson PWM controller binding with DT schema format using
json-schema.
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
MAINTAINERS | 6 ++
2 files changed, 70 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
diff --git a/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
new file mode 100644
index 000000000000..d25904468353
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/pwm-loongson.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson PWM Controller
+
+maintainers:
+ - Binbin Zhou <zhoubinbin@loongson.cn>
+
+description:
+ It is the generic PWM framework driver for Loongson family.
+ Each PWM has one pulse width output signal and one pulse input
+ signal to be measured.
+ It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
+
+allOf:
+ - $ref: pwm.yaml#
+
+properties:
+ compatible:
+ oneOf:
+ - const: loongson,ls7a-pwm
+ - items:
+ - enum:
+ - loongson,ls2k0500-pwm
+ - loongson,ls2k1000-pwm
+ - loongson,ls2k2000-pwm
+ - const: loongson,ls7a-pwm
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ '#pwm-cells':
+ const: 3
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - '#pwm-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/clock/loongson,ls2k-clk.h>
+ pwm@1fe22000 {
+ compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+ reg = <0x1fe22000 0x10>;
+ interrupt-parent = <&liointc0>;
+ interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 96496dbcae6d..9c4f3186e7f4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12753,6 +12753,12 @@ S: Maintained
F: Documentation/devicetree/bindings/i2c/loongson,ls2x-i2c.yaml
F: drivers/i2c/busses/i2c-ls2x.c
+LOONGSON PWM DRIVER
+M: Binbin Zhou <zhoubinbin@loongson.cn>
+L: linux-pwm@vger.kernel.org
+S: Maintained
+F: Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
+
LOONGSON-2 SOC SERIES CLOCK DRIVER
M: Yinbo Zhu <zhuyinbo@loongson.cn>
L: linux-clk@vger.kernel.org
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 2/5] pwm: Add Loongson PWM controller support
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller Binbin Zhou
@ 2024-04-02 7:58 ` Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 3/5] LoongArch: dts: Add PWM support to Loongson-2K0500 Binbin Zhou
` (2 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:58 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou, Juxin Gao
This commit adds a generic PWM framework driver for the PWM controller
found on Loongson family chips.
Signed-off-by: Juxin Gao <gaojuxin@loongson.com>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
MAINTAINERS | 1 +
drivers/pwm/Kconfig | 10 ++
drivers/pwm/Makefile | 1 +
drivers/pwm/pwm-loongson.c | 300 +++++++++++++++++++++++++++++++++++++
4 files changed, 312 insertions(+)
create mode 100644 drivers/pwm/pwm-loongson.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 9c4f3186e7f4..66946f4cc3db 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12758,6 +12758,7 @@ M: Binbin Zhou <zhoubinbin@loongson.cn>
L: linux-pwm@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
+F: drivers/pwm/pwm-loongson.c
LOONGSON-2 SOC SERIES CLOCK DRIVER
M: Yinbo Zhu <zhuyinbo@loongson.cn>
diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index 4b956d661755..bb163c65e5ae 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -324,6 +324,16 @@ config PWM_KEEMBAY
To compile this driver as a module, choose M here: the module
will be called pwm-keembay.
+config PWM_LOONGSON
+ tristate "Loongson PWM support"
+ depends on MACH_LOONGSON64
+ help
+ Generic PWM framework driver for Loongson family.
+ It can be found on Loongson-2K series cpu and Loongson LS7A bridge chips.
+
+ To compile this driver as a module, choose M here: the module
+ will be called pwm-loongson.
+
config PWM_LP3943
tristate "TI/National Semiconductor LP3943 PWM support"
depends on MFD_LP3943
diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
index c5ec9e168ee7..bffa49500277 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -28,6 +28,7 @@ obj-$(CONFIG_PWM_INTEL_LGM) += pwm-intel-lgm.o
obj-$(CONFIG_PWM_IQS620A) += pwm-iqs620a.o
obj-$(CONFIG_PWM_JZ4740) += pwm-jz4740.o
obj-$(CONFIG_PWM_KEEMBAY) += pwm-keembay.o
+obj-$(CONFIG_PWM_LOONGSON) += pwm-loongson.o
obj-$(CONFIG_PWM_LP3943) += pwm-lp3943.o
obj-$(CONFIG_PWM_LPC18XX_SCT) += pwm-lpc18xx-sct.o
obj-$(CONFIG_PWM_LPC32XX) += pwm-lpc32xx.o
diff --git a/drivers/pwm/pwm-loongson.c b/drivers/pwm/pwm-loongson.c
new file mode 100644
index 000000000000..0afae42113a5
--- /dev/null
+++ b/drivers/pwm/pwm-loongson.c
@@ -0,0 +1,300 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Loongson PWM driver
+ *
+ * Author: Juxin Gao <gaojuxin@loongson.cn>
+ * Further cleanup and restructuring by:
+ * Binbin Zhou <zhoubinbin@loongson.cn>
+ *
+ * Copyright (C) 2017-2024 Loongson Technology Corporation Limited.
+ */
+
+#include <linux/acpi.h>
+#include <linux/clk.h>
+#include <linux/device.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/pwm.h>
+#include <linux/units.h>
+
+/* Loongson PWM registers */
+#define PWM_DUTY 0x4 /* Low Pulse Buffer Register */
+#define PWM_PERIOD 0x8 /* Pulse Period Buffer Register */
+#define PWM_CTRL 0xc /* Control Register */
+
+/* Control register bits */
+#define PWM_CTRL_EN BIT(0) /* Counter Enable Bit */
+#define PWM_CTRL_OE BIT(3) /* Pulse Output Enable Control Bit, Valid Low */
+#define PWM_CTRL_SINGLE BIT(4) /* Single Pulse Control Bit */
+#define PWM_CTRL_INTE BIT(5) /* Interrupt Enable Bit */
+#define PWM_CTRL_INT BIT(6) /* Interrupt Bit */
+#define PWM_CTRL_RST BIT(7) /* Counter Reset Bit */
+#define PWM_CTRL_CAPTE BIT(8) /* Measurement Pulse Enable Bit */
+#define PWM_CTRL_INVERT BIT(9) /* Output flip-flop Enable Bit */
+#define PWM_CTRL_DZONE BIT(10) /* Anti-dead Zone Enable Bit */
+
+#define PWM_FREQ_STD (50 * HZ_PER_KHZ)
+
+struct pwm_loongson_ddata {
+ struct pwm_chip chip;
+ struct clk *clk;
+ void __iomem *base;
+ /* The following for PM */
+ u32 ctrl;
+ u32 duty;
+ u32 period;
+};
+
+static inline struct pwm_loongson_ddata *to_pwm_loongson_ddata(struct pwm_chip *chip)
+{
+ return container_of(chip, struct pwm_loongson_ddata, chip);
+}
+
+static inline u32 pwm_loongson_readl(struct pwm_loongson_ddata *ddata, u64 offset)
+{
+ return readl(ddata->base + offset);
+}
+
+static inline void pwm_loongson_writel(struct pwm_loongson_ddata *ddata,
+ u32 val, u64 offset)
+{
+ writel(val, ddata->base + offset);
+}
+
+static int pwm_loongson_set_polarity(struct pwm_chip *chip, struct pwm_device *pwm,
+ enum pwm_polarity polarity)
+{
+ struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
+ u16 val;
+
+ val = pwm_loongson_readl(ddata, PWM_CTRL);
+
+ if (polarity == PWM_POLARITY_INVERSED)
+ /* Duty cycle defines LOW period of PWM */
+ val |= PWM_CTRL_INVERT;
+ else
+ /* Duty cycle defines HIGH period of PWM */
+ val &= ~PWM_CTRL_INVERT;
+
+ pwm_loongson_writel(ddata, val, PWM_CTRL);
+ return 0;
+}
+
+static void pwm_loongson_disable(struct pwm_chip *chip, struct pwm_device *pwm)
+{
+ struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
+ u32 val;
+
+ if (pwm->state.polarity == PWM_POLARITY_NORMAL)
+ pwm_loongson_writel(ddata, ddata->period, PWM_DUTY);
+ else if (pwm->state.polarity == PWM_POLARITY_INVERSED)
+ pwm_loongson_writel(ddata, 0, PWM_DUTY);
+
+ val = pwm_loongson_readl(ddata, PWM_CTRL);
+ val &= ~PWM_CTRL_EN;
+ pwm_loongson_writel(ddata, val, PWM_CTRL);
+}
+
+static int pwm_loongson_enable(struct pwm_chip *chip, struct pwm_device *pwm)
+{
+ struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
+ u32 val;
+
+ pwm_loongson_writel(ddata, ddata->duty, PWM_DUTY);
+ pwm_loongson_writel(ddata, ddata->period, PWM_PERIOD);
+
+ val = pwm_loongson_readl(ddata, PWM_CTRL);
+ val |= PWM_CTRL_EN;
+ pwm_loongson_writel(ddata, val, PWM_CTRL);
+
+ return 0;
+}
+
+static u32 pwm_loongson_set_config(struct pwm_loongson_ddata *ddata, int ns,
+ u64 clk_rate, u64 offset)
+{
+ u32 val;
+ u64 c;
+
+ c = clk_rate * ns;
+ do_div(c, NSEC_PER_SEC);
+ val = c < 1 ? 1 : c;
+
+ pwm_loongson_writel(ddata, val, offset);
+
+ return val;
+}
+
+static int pwm_loongson_config(struct pwm_chip *chip, struct pwm_device *pwm,
+ int duty_ns, int period_ns)
+{
+ struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
+ struct device *dev = chip->dev;
+ u64 clk_rate;
+
+ if (period_ns > NANOHZ_PER_HZ || duty_ns > NANOHZ_PER_HZ)
+ return -ERANGE;
+
+ clk_rate = has_acpi_companion(dev) ? PWM_FREQ_STD
+ : clk_get_rate(ddata->clk);
+
+ ddata->period = pwm_loongson_set_config(ddata, period_ns,
+ clk_rate, PWM_PERIOD);
+ ddata->duty = pwm_loongson_set_config(ddata, duty_ns, clk_rate, PWM_DUTY);
+
+ return 0;
+}
+
+static int pwm_loongson_apply(struct pwm_chip *chip, struct pwm_device *pwm,
+ const struct pwm_state *state)
+{
+ int err;
+ bool enabled = pwm->state.enabled;
+
+ if (state->polarity != pwm->state.polarity) {
+ if (enabled) {
+ pwm_loongson_disable(chip, pwm);
+ enabled = false;
+ }
+
+ err = pwm_loongson_set_polarity(chip, pwm, state->polarity);
+ if (err)
+ return err;
+ }
+
+ if (!state->enabled) {
+ if (enabled)
+ pwm_loongson_disable(chip, pwm);
+ return 0;
+ }
+
+ err = pwm_loongson_config(chip, pwm, state->duty_cycle, state->period);
+ if (err)
+ return err;
+
+ if (!enabled)
+ err = pwm_loongson_enable(chip, pwm);
+
+ return err;
+}
+
+static int pwm_loongson_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
+ struct pwm_state *state)
+{
+ struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip);
+ u32 period, duty, ctrl;
+ u64 ns;
+
+ period = pwm_loongson_readl(ddata, PWM_PERIOD);
+ ns = period * NSEC_PER_SEC;
+ state->period = do_div(ns, period);
+
+ duty = pwm_loongson_readl(ddata, PWM_DUTY);
+ ns = duty * NSEC_PER_SEC;
+ state->duty_cycle = do_div(ns, duty);
+
+ ctrl = pwm_loongson_readl(ddata, PWM_CTRL);
+ state->polarity = (ctrl & PWM_CTRL_INVERT) ? PWM_POLARITY_INVERSED
+ : PWM_POLARITY_NORMAL;
+ state->enabled = (ctrl & PWM_CTRL_EN) ? true : false;
+
+ ddata->ctrl = ctrl;
+ ddata->duty = pwm_loongson_readl(ddata, PWM_DUTY);
+ ddata->period = pwm_loongson_readl(ddata, PWM_PERIOD);
+
+ return 0;
+}
+
+static const struct pwm_ops pwm_loongson_ops = {
+ .apply = pwm_loongson_apply,
+ .get_state = pwm_loongson_get_state,
+};
+
+static int pwm_loongson_probe(struct platform_device *pdev)
+{
+ struct pwm_loongson_ddata *ddata;
+ struct device *dev = &pdev->dev;
+
+ ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
+ if (!ddata)
+ return -ENOMEM;
+
+ ddata->base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(ddata->base))
+ return PTR_ERR(ddata->base);
+
+ if (!has_acpi_companion(dev)) {
+ ddata->clk = devm_clk_get_enabled(dev, NULL);
+ if (IS_ERR(ddata->clk))
+ return PTR_ERR(ddata->clk);
+ }
+
+ ddata->chip.dev = dev;
+ ddata->chip.ops = &pwm_loongson_ops;
+ ddata->chip.npwm = 1;
+ platform_set_drvdata(pdev, ddata);
+
+ return devm_pwmchip_add(dev, &ddata->chip);
+}
+
+static int pwm_loongson_suspend(struct device *dev)
+{
+ struct pwm_loongson_ddata *ddata = dev_get_drvdata(dev);
+
+ ddata->ctrl = pwm_loongson_readl(ddata, PWM_CTRL);
+ ddata->duty = pwm_loongson_readl(ddata, PWM_DUTY);
+ ddata->period = pwm_loongson_readl(ddata, PWM_PERIOD);
+
+ clk_disable_unprepare(ddata->clk);
+
+ return 0;
+}
+
+static int pwm_loongson_resume(struct device *dev)
+{
+ struct pwm_loongson_ddata *ddata = dev_get_drvdata(dev);
+ int ret;
+
+ ret = clk_prepare_enable(ddata->clk);
+ if (ret)
+ return ret;
+
+ pwm_loongson_writel(ddata, ddata->ctrl, PWM_CTRL);
+ pwm_loongson_writel(ddata, ddata->duty, PWM_DUTY);
+ pwm_loongson_writel(ddata, ddata->period, PWM_PERIOD);
+
+ return 0;
+}
+
+static DEFINE_SIMPLE_DEV_PM_OPS(pwm_loongson_pm_ops, pwm_loongson_suspend,
+ pwm_loongson_resume);
+
+static const struct acpi_device_id pwm_loongson_acpi_ids[] = {
+ { "LOON0006" },
+ { }
+};
+MODULE_DEVICE_TABLE(acpi, pwm_loongson_acpi_ids);
+
+static const struct of_device_id pwm_loongson_of_ids[] = {
+ { .compatible = "loongson,ls7a-pwm" },
+ { /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, pwm_loongson_of_ids);
+
+static struct platform_driver pwm_loongson_driver = {
+ .probe = pwm_loongson_probe,
+ .driver = {
+ .name = "loongson-pwm",
+ .pm = pm_ptr(&pwm_loongson_pm_ops),
+ .of_match_table = pwm_loongson_of_ids,
+ .acpi_match_table = pwm_loongson_acpi_ids,
+ },
+};
+module_platform_driver(pwm_loongson_driver);
+
+MODULE_DESCRIPTION("Loongson PWM driver");
+MODULE_AUTHOR("Loongson Technology Corporation Limited");
+MODULE_LICENSE("GPL");
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 3/5] LoongArch: dts: Add PWM support to Loongson-2K0500
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 2/5] pwm: Add Loongson PWM controller support Binbin Zhou
@ 2024-04-02 7:58 ` Binbin Zhou
2024-04-02 7:59 ` [PATCH v1 4/5] LoongArch: dts: Add PWM support to Loongson-2K1000 Binbin Zhou
2024-04-02 7:59 ` [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000 Binbin Zhou
4 siblings, 0 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:58 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou
The module is supported, enable it.
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
arch/loongarch/boot/dts/loongson-2k0500.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/loongarch/boot/dts/loongson-2k0500.dtsi b/arch/loongarch/boot/dts/loongson-2k0500.dtsi
index 413b83366367..86e86a267779 100644
--- a/arch/loongarch/boot/dts/loongson-2k0500.dtsi
+++ b/arch/loongarch/boot/dts/loongson-2k0500.dtsi
@@ -148,6 +148,26 @@ eiointc: interrupt-controller@1fe11600 {
interrupts = <3>;
};
+ pwm@1ff5c000 {
+ compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1ff5c000 0x0 0x10>;
+ interrupt-parent = <&eiointc>;
+ interrupts = <20>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@1ff5c010 {
+ compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1ff5c010 0x0 0x10>;
+ interrupt-parent = <&eiointc>;
+ interrupts = <21>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
gmac0: ethernet@1f020000 {
compatible = "snps,dwmac-3.70a";
reg = <0x0 0x1f020000 0x0 0x10000>;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 4/5] LoongArch: dts: Add PWM support to Loongson-2K1000
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
` (2 preceding siblings ...)
2024-04-02 7:58 ` [PATCH v1 3/5] LoongArch: dts: Add PWM support to Loongson-2K0500 Binbin Zhou
@ 2024-04-02 7:59 ` Binbin Zhou
2024-04-02 7:59 ` [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000 Binbin Zhou
4 siblings, 0 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:59 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou
The module is supported, enable it.
Also, add the pwm-fan and cooling-maps associated with it.
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
.../boot/dts/loongson-2k1000-ref.dts | 24 +++++++++++
arch/loongarch/boot/dts/loongson-2k1000.dtsi | 42 ++++++++++++++++++-
2 files changed, 65 insertions(+), 1 deletion(-)
diff --git a/arch/loongarch/boot/dts/loongson-2k1000-ref.dts b/arch/loongarch/boot/dts/loongson-2k1000-ref.dts
index ed4d32434041..a7cd3912f30d 100644
--- a/arch/loongarch/boot/dts/loongson-2k1000-ref.dts
+++ b/arch/loongarch/boot/dts/loongson-2k1000-ref.dts
@@ -5,6 +5,7 @@
/dts-v1/;
+#include "dt-bindings/thermal/thermal.h"
#include "loongson-2k1000.dtsi"
/ {
@@ -38,6 +39,13 @@ linux,cma {
linux,cma-default;
};
};
+
+ fan0: pwm-fan {
+ compatible = "pwm-fan";
+ cooling-levels = <255 153 85 25>;
+ pwms = <&pwm1 1 100000 0>;
+ #cooling-cells = <2>;
+ };
};
&gmac0 {
@@ -97,6 +105,22 @@ spidev@0 {
};
};
+&pwm1 {
+ status = "okay";
+
+ pinctrl-0 = <&pwm1_pins_default>;
+ pinctrl-names = "default";
+};
+
+&cpu_thermal {
+ cooling-maps {
+ map0 {
+ trip = <&cpu_alert>;
+ cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
&ehci0 {
status = "okay";
};
diff --git a/arch/loongarch/boot/dts/loongson-2k1000.dtsi b/arch/loongarch/boot/dts/loongson-2k1000.dtsi
index 49a70f8c3cab..0ebaace3214b 100644
--- a/arch/loongarch/boot/dts/loongson-2k1000.dtsi
+++ b/arch/loongarch/boot/dts/loongson-2k1000.dtsi
@@ -68,7 +68,7 @@ i2c-gpio-1 {
};
thermal-zones {
- cpu-thermal {
+ cpu_thermal: cpu-thermal {
polling-delay-passive = <1000>;
polling-delay = <5000>;
thermal-sensors = <&tsensor 0>;
@@ -316,6 +316,46 @@ i2c3: i2c@1fe21800 {
status = "disabled";
};
+ pwm@1fe22000 {
+ compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1fe22000 0x0 0x10>;
+ interrupt-parent = <&liointc0>;
+ interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm1: pwm@1fe22010 {
+ compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1fe22010 0x0 0x10>;
+ interrupt-parent = <&liointc0>;
+ interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@1fe22020 {
+ compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1fe22020 0x0 0x10>;
+ interrupt-parent = <&liointc0>;
+ interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@1fe22030 {
+ compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x1fe22030 0x0 0x10>;
+ interrupt-parent = <&liointc0>;
+ interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_APB_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
pmc: power-management@1fe27000 {
compatible = "loongson,ls2k1000-pmc", "loongson,ls2k0500-pmc", "syscon";
reg = <0x0 0x1fe27000 0x0 0x58>;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
` (3 preceding siblings ...)
2024-04-02 7:59 ` [PATCH v1 4/5] LoongArch: dts: Add PWM support to Loongson-2K1000 Binbin Zhou
@ 2024-04-02 7:59 ` Binbin Zhou
2024-04-02 17:34 ` kernel test robot
4 siblings, 1 reply; 12+ messages in thread
From: Binbin Zhou @ 2024-04-02 7:59 UTC (permalink / raw
To: Binbin Zhou, Huacai Chen, Uwe Kleine-König, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: Huacai Chen, loongson-kernel, linux-pwm, devicetree, Xuerui Wang,
loongarch, Binbin Zhou
The module is supported, enable it.
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
arch/loongarch/boot/dts/loongson-2k2000.dtsi | 60 ++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/arch/loongarch/boot/dts/loongson-2k2000.dtsi b/arch/loongarch/boot/dts/loongson-2k2000.dtsi
index 605efaba7292..278cbc27d19b 100644
--- a/arch/loongarch/boot/dts/loongson-2k2000.dtsi
+++ b/arch/loongarch/boot/dts/loongson-2k2000.dtsi
@@ -126,6 +126,66 @@ msi: msi-controller@1fe01140 {
interrupt-parent = <&eiointc>;
};
+ pwm@100a0000 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0000 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@100a0100 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0100 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@100a0200 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0200 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@100a0300 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0300 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@100a0400 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0400 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
+ pwm@100a0500 {
+ compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+ reg = <0x0 0x100a0500 0x0 0x10>;
+ interrupt-parent = <&pic>;
+ interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clk LOONGSON2_MISC_CLK>;
+ #pwm-cells = <3>;
+ status = "disabled";
+ };
+
rtc0: rtc@100d0100 {
compatible = "loongson,ls2k2000-rtc", "loongson,ls7a-rtc";
reg = <0x0 0x100d0100 0x0 0x100>;
--
2.43.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000
2024-04-02 7:59 ` [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000 Binbin Zhou
@ 2024-04-02 17:34 ` kernel test robot
0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2024-04-02 17:34 UTC (permalink / raw
To: Binbin Zhou, Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: oe-kbuild-all, loongson-kernel, linux-pwm, devicetree,
Xuerui Wang, loongarch
Hi Binbin,
kernel test robot noticed the following build errors:
[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.9-rc2 next-20240402]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Binbin-Zhou/dt-bindings-pwm-Add-Loongson-PWM-controller/20240402-160109
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/7214b933ce85f9d030828e9efab7fbeb57eb712b.1711953223.git.zhoubinbin%40loongson.cn
patch subject: [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000
config: loongarch-allnoconfig (https://download.01.org/0day-ci/archive/20240403/202404030108.rzArK10u-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240403/202404030108.rzArK10u-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404030108.rzArK10u-lkp@intel.com/
All errors (new ones prefixed by >>):
>> Error: arch/loongarch/boot/dts/loongson-2k2000.dtsi:123.19-20 syntax error
FATAL ERROR: Unable to parse input tree
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-02 7:58 ` [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller Binbin Zhou
@ 2024-04-02 17:40 ` Rob Herring
2024-04-03 2:37 ` Binbin Zhou
0 siblings, 1 reply; 12+ messages in thread
From: Rob Herring @ 2024-04-02 17:40 UTC (permalink / raw
To: Binbin Zhou
Cc: Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Krzysztof Kozlowski, Conor Dooley, Huacai Chen, loongson-kernel,
linux-pwm, devicetree, Xuerui Wang, loongarch
On Tue, Apr 02, 2024 at 03:58:38PM +0800, Binbin Zhou wrote:
> Add Loongson PWM controller binding with DT schema format using
> json-schema.
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> ---
> .../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
Filename should match compatible.
> MAINTAINERS | 6 ++
> 2 files changed, 70 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
>
> diff --git a/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> new file mode 100644
> index 000000000000..d25904468353
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> @@ -0,0 +1,64 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/pwm/pwm-loongson.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Loongson PWM Controller
> +
> +maintainers:
> + - Binbin Zhou <zhoubinbin@loongson.cn>
> +
> +description:
> + It is the generic PWM framework driver for Loongson family.
That's describing the driver. Not really relevant to the binding.
> + Each PWM has one pulse width output signal and one pulse input
> + signal to be measured.
> + It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
> +
> +allOf:
> + - $ref: pwm.yaml#
> +
> +properties:
> + compatible:
> + oneOf:
> + - const: loongson,ls7a-pwm
> + - items:
> + - enum:
> + - loongson,ls2k0500-pwm
> + - loongson,ls2k1000-pwm
> + - loongson,ls2k2000-pwm
> + - const: loongson,ls7a-pwm
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> +
> + '#pwm-cells':
> + const: 3
Please define what is in each cell. If there's only 2 signals, then the
first cell defines the output or input (what value for which one?).
Really, the PWM binding is only for outputs, so is a cell even needed? I
suppose we could use it for inputs too, but that's really "input
capture" type operation that timers often have. I'll defer to the PWM
maintainers...
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - '#pwm-cells'
pwm.yaml makes this required already.
Rob
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-02 17:40 ` Rob Herring
@ 2024-04-03 2:37 ` Binbin Zhou
2024-04-03 3:16 ` Binbin Zhou
2024-04-03 7:00 ` Krzysztof Kozlowski
0 siblings, 2 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-03 2:37 UTC (permalink / raw
To: Rob Herring
Cc: Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Krzysztof Kozlowski, Conor Dooley, Huacai Chen, loongson-kernel,
linux-pwm, devicetree, Xuerui Wang, loongarch
Hi Rob:
Thanks for your reply.
On Tue, Apr 2, 2024 at 11:40 PM Rob Herring <robh@kernel.org> wrote:
>
> On Tue, Apr 02, 2024 at 03:58:38PM +0800, Binbin Zhou wrote:
> > Add Loongson PWM controller binding with DT schema format using
> > json-schema.
> >
> > Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> > ---
> > .../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
>
> Filename should match compatible.
Emm... How about renaming it as loongson, pwm.yaml?
>
> > MAINTAINERS | 6 ++
> > 2 files changed, 70 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> > new file mode 100644
> > index 000000000000..d25904468353
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> > @@ -0,0 +1,64 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/pwm/pwm-loongson.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Loongson PWM Controller
> > +
> > +maintainers:
> > + - Binbin Zhou <zhoubinbin@loongson.cn>
> > +
> > +description:
> > + It is the generic PWM framework driver for Loongson family.
>
> That's describing the driver. Not really relevant to the binding.
>
Ok ,I will rewrite this part.
>
> > + Each PWM has one pulse width output signal and one pulse input
> > + signal to be measured.
> > + It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
> > +
> > +allOf:
> > + - $ref: pwm.yaml#
> > +
> > +properties:
> > + compatible:
> > + oneOf:
> > + - const: loongson,ls7a-pwm
> > + - items:
> > + - enum:
> > + - loongson,ls2k0500-pwm
> > + - loongson,ls2k1000-pwm
> > + - loongson,ls2k2000-pwm
> > + - const: loongson,ls7a-pwm
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > + clocks:
> > + maxItems: 1
> > +
> > + '#pwm-cells':
> > + const: 3
>
> Please define what is in each cell. If there's only 2 signals, then the
> first cell defines the output or input (what value for which one?).
>
> Really, the PWM binding is only for outputs, so is a cell even needed? I
> suppose we could use it for inputs too, but that's really "input
> capture" type operation that timers often have. I'll defer to the PWM
> maintainers...
Ok, I will try to add some description about it.
If I understand correctly, the meaning of each cell in "#pwm-cells"is
determined.
The first cell specifies the per-chip index of the PWM to use, the
second cell is the period in nanoseconds and the third cell is the
polarity.
>
> > +
> > +required:
> > + - compatible
> > + - reg
> > + - interrupts
> > + - clocks
> > + - '#pwm-cells'
>
> pwm.yaml makes this required already.
>
Yes, this is unnecessary. I will drop it in the next version.
Thanks.
Binbin
> Rob
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-03 2:37 ` Binbin Zhou
@ 2024-04-03 3:16 ` Binbin Zhou
2024-04-03 7:00 ` Krzysztof Kozlowski
1 sibling, 0 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-03 3:16 UTC (permalink / raw
To: Rob Herring
Cc: Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Krzysztof Kozlowski, Conor Dooley, Huacai Chen, loongson-kernel,
linux-pwm, devicetree, Xuerui Wang, loongarch
On Wed, Apr 3, 2024 at 8:37 AM Binbin Zhou <zhoubb.aaron@gmail.com> wrote:
>
> Hi Rob:
>
> Thanks for your reply.
>
> On Tue, Apr 2, 2024 at 11:40 PM Rob Herring <robh@kernel.org> wrote:
> >
> > On Tue, Apr 02, 2024 at 03:58:38PM +0800, Binbin Zhou wrote:
> > > Add Loongson PWM controller binding with DT schema format using
> > > json-schema.
> > >
> > > Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> > > ---
> > > .../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
> >
> > Filename should match compatible.
>
> Emm... How about renaming it as loongson, pwm.yaml?
>
> >
> > > MAINTAINERS | 6 ++
> > > 2 files changed, 70 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> > > new file mode 100644
> > > index 000000000000..d25904468353
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/pwm/pwm-loongson.yaml
> > > @@ -0,0 +1,64 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/pwm/pwm-loongson.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Loongson PWM Controller
> > > +
> > > +maintainers:
> > > + - Binbin Zhou <zhoubinbin@loongson.cn>
> > > +
> > > +description:
> > > + It is the generic PWM framework driver for Loongson family.
> >
> > That's describing the driver. Not really relevant to the binding.
> >
> Ok ,I will rewrite this part.
>
> >
> > > + Each PWM has one pulse width output signal and one pulse input
> > > + signal to be measured.
> > > + It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
> > > +
> > > +allOf:
> > > + - $ref: pwm.yaml#
> > > +
> > > +properties:
> > > + compatible:
> > > + oneOf:
> > > + - const: loongson,ls7a-pwm
> > > + - items:
> > > + - enum:
> > > + - loongson,ls2k0500-pwm
> > > + - loongson,ls2k1000-pwm
> > > + - loongson,ls2k2000-pwm
> > > + - const: loongson,ls7a-pwm
> > > +
> > > + reg:
> > > + maxItems: 1
> > > +
> > > + interrupts:
> > > + maxItems: 1
> > > +
> > > + clocks:
> > > + maxItems: 1
> > > +
> > > + '#pwm-cells':
> > > + const: 3
> >
> > Please define what is in each cell. If there's only 2 signals, then the
> > first cell defines the output or input (what value for which one?).
Hi Rob:
Sorry, the previous email did not answer this question.
The first cell defines the output signal, and its value is 0.
Thanks.
Binbin
> >
> > Really, the PWM binding is only for outputs, so is a cell even needed? I
> > suppose we could use it for inputs too, but that's really "input
> > capture" type operation that timers often have. I'll defer to the PWM
> > maintainers...
>
> Ok, I will try to add some description about it.
>
> If I understand correctly, the meaning of each cell in "#pwm-cells"is
> determined.
> The first cell specifies the per-chip index of the PWM to use, the
> second cell is the period in nanoseconds and the third cell is the
> polarity.
>
> >
> > > +
> > > +required:
> > > + - compatible
> > > + - reg
> > > + - interrupts
> > > + - clocks
> > > + - '#pwm-cells'
> >
> > pwm.yaml makes this required already.
> >
> Yes, this is unnecessary. I will drop it in the next version.
>
> Thanks.
> Binbin
> > Rob
> >
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-03 2:37 ` Binbin Zhou
2024-04-03 3:16 ` Binbin Zhou
@ 2024-04-03 7:00 ` Krzysztof Kozlowski
2024-04-03 7:22 ` Binbin Zhou
1 sibling, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-03 7:00 UTC (permalink / raw
To: Binbin Zhou, Rob Herring
Cc: Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Krzysztof Kozlowski, Conor Dooley, Huacai Chen, loongson-kernel,
linux-pwm, devicetree, Xuerui Wang, loongarch
On 03/04/2024 04:37, Binbin Zhou wrote:
> Hi Rob:
>
> Thanks for your reply.
>
> On Tue, Apr 2, 2024 at 11:40 PM Rob Herring <robh@kernel.org> wrote:
>>
>> On Tue, Apr 02, 2024 at 03:58:38PM +0800, Binbin Zhou wrote:
>>> Add Loongson PWM controller binding with DT schema format using
>>> json-schema.
>>>
>>> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
>>> ---
>>> .../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
>>
>> Filename should match compatible.
>
> Emm... How about renaming it as loongson, pwm.yaml?
Use the fallback, so loongson,ls7a-pwm.yaml
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller
2024-04-03 7:00 ` Krzysztof Kozlowski
@ 2024-04-03 7:22 ` Binbin Zhou
0 siblings, 0 replies; 12+ messages in thread
From: Binbin Zhou @ 2024-04-03 7:22 UTC (permalink / raw
To: Krzysztof Kozlowski
Cc: Rob Herring, Binbin Zhou, Huacai Chen, Uwe Kleine-König,
Krzysztof Kozlowski, Conor Dooley, Huacai Chen, loongson-kernel,
linux-pwm, devicetree, Xuerui Wang, loongarch
On Wed, Apr 3, 2024 at 1:00 PM Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 03/04/2024 04:37, Binbin Zhou wrote:
> > Hi Rob:
> >
> > Thanks for your reply.
> >
> > On Tue, Apr 2, 2024 at 11:40 PM Rob Herring <robh@kernel.org> wrote:
> >>
> >> On Tue, Apr 02, 2024 at 03:58:38PM +0800, Binbin Zhou wrote:
> >>> Add Loongson PWM controller binding with DT schema format using
> >>> json-schema.
> >>>
> >>> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> >>> ---
> >>> .../devicetree/bindings/pwm/pwm-loongson.yaml | 64 +++++++++++++++++++
> >>
> >> Filename should match compatible.
> >
> > Emm... How about renaming it as loongson, pwm.yaml?
>
> Use the fallback, so loongson,ls7a-pwm.yaml
Ok, I got it.
Thanks.
Binbin
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-04-03 7:22 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-02 7:58 [PATCH v1 0/5] pwm: Introduce pwm driver for the Loongson family chips Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 1/5] dt-bindings: pwm: Add Loongson PWM controller Binbin Zhou
2024-04-02 17:40 ` Rob Herring
2024-04-03 2:37 ` Binbin Zhou
2024-04-03 3:16 ` Binbin Zhou
2024-04-03 7:00 ` Krzysztof Kozlowski
2024-04-03 7:22 ` Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 2/5] pwm: Add Loongson PWM controller support Binbin Zhou
2024-04-02 7:58 ` [PATCH v1 3/5] LoongArch: dts: Add PWM support to Loongson-2K0500 Binbin Zhou
2024-04-02 7:59 ` [PATCH v1 4/5] LoongArch: dts: Add PWM support to Loongson-2K1000 Binbin Zhou
2024-04-02 7:59 ` [PATCH v1 5/5] LoongArch: dts: Add PWM support to Loongson-2K2000 Binbin Zhou
2024-04-02 17:34 ` kernel test robot
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 read-only IMAP folder(s) and NNTP newsgroup(s).