All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support
@ 2024-04-15  2:31 Binbin Zhou
  2024-04-15  2:31 ` [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment Binbin Zhou
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Binbin Zhou @ 2024-04-15  2:31 UTC (permalink / raw)
  To: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch, Binbin Zhou

Hi all:

This patchset introduce the Loongson-2K0500 and Loongson-2K2000
temperature sensors.

The temperature sensors of Loongson-2K series CPUs are similar, except
that the temperature reading method of the Loongson-2K2000 is
different.

Specifically, the temperature output register of the Loongson-2K2000 is
defined in the chip configuration domain. We need to define it in dts
and calculate it using different calculation methods.

Thanks.

---
V2:
patch(2/4):
 - Add Acked-by tag from Rob, Thanks.
patch(3/4):
 - Add "minItems: 2" to the reg attribute of Loongson-2K2000.

Link to V1:
https://lore.kernel.org/all/cover.1712733065.git.zhoubinbin@loongson.cn/

Binbin Zhou (4):
  thermal: loongson2: Trivial code style adjustment
  dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500
    compaible
  dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible
    definition
  thermal: loongson2: Add Loongson-2K2000 support

 .../thermal/loongson,ls2k-thermal.yaml        |  24 +++-
 drivers/thermal/loongson2_thermal.c           | 111 +++++++++++-------
 2 files changed, 93 insertions(+), 42 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment
  2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
@ 2024-04-15  2:31 ` Binbin Zhou
  2024-04-19  2:30   ` Huacai Chen
  2024-04-15  2:31 ` [PATCH v2 2/4] dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500 compaible Binbin Zhou
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Binbin Zhou @ 2024-04-15  2:31 UTC (permalink / raw)
  To: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch, Binbin Zhou

Here are some minor code style adjustment. Such as fix whitespace code
style; align function call arguments to opening parenthesis, and add
devm_thermal_add_hwmon_sysfs() return value checking.

Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
 drivers/thermal/loongson2_thermal.c | 69 +++++++++++++++--------------
 1 file changed, 35 insertions(+), 34 deletions(-)

diff --git a/drivers/thermal/loongson2_thermal.c b/drivers/thermal/loongson2_thermal.c
index 0f475fe46bc9..d77d829c8b55 100644
--- a/drivers/thermal/loongson2_thermal.c
+++ b/drivers/thermal/loongson2_thermal.c
@@ -16,45 +16,49 @@
 #include <linux/units.h>
 #include "thermal_hwmon.h"
 
-#define LOONGSON2_MAX_SENSOR_SEL_NUM			3
+#define LOONGSON2_MAX_SENSOR_SEL_NUM	3
 
-#define LOONGSON2_THSENS_CTRL_HI_REG			0x0
-#define LOONGSON2_THSENS_CTRL_LOW_REG			0x8
-#define LOONGSON2_THSENS_STATUS_REG			0x10
-#define LOONGSON2_THSENS_OUT_REG			0x14
+#define LOONGSON2_THSENS_CTRL_HI_REG	0x0
+#define LOONGSON2_THSENS_CTRL_LOW_REG	0x8
+#define LOONGSON2_THSENS_STATUS_REG	0x10
+#define LOONGSON2_THSENS_OUT_REG	0x14
 
-#define LOONGSON2_THSENS_INT_LO				BIT(0)
-#define LOONGSON2_THSENS_INT_HIGH			BIT(1)
-#define LOONGSON2_THSENS_OUT_MASK			0xFF
+#define LOONGSON2_THSENS_INT_LO		BIT(0)
+#define LOONGSON2_THSENS_INT_HIGH	BIT(1)
+#define LOONGSON2_THSENS_INT_EN		(LOONGSON2_THSENS_INT_LO | \
+					 LOONGSON2_THSENS_INT_HIGH)
+#define LOONGSON2_THSENS_OUT_MASK	0xFF
 
 struct loongson2_thermal_chip_data {
-	unsigned int	thermal_sensor_sel;
+	unsigned int thermal_sensor_sel;
 };
 
 struct loongson2_thermal_data {
-	void __iomem	*regs;
+	void __iomem *regs;
 	const struct loongson2_thermal_chip_data *chip_data;
 };
 
-static int loongson2_thermal_set(struct loongson2_thermal_data *data,
-					int low, int high, bool enable)
+static void loongson2_set_ctrl_regs(struct loongson2_thermal_data *data,
+				    int ctrl_data, bool low, bool enable)
 {
-	u64 reg_ctrl = 0;
-	int reg_off = data->chip_data->thermal_sensor_sel * 2;
+	int reg_ctrl = 0;
+	int reg_off  = data->chip_data->thermal_sensor_sel * 2;
+	int ctrl_reg = low ? LOONGSON2_THSENS_CTRL_LOW_REG :
+		       LOONGSON2_THSENS_CTRL_HI_REG;
+
+	reg_ctrl = ctrl_data + HECTO;
+	reg_ctrl |= enable ? 0x100 : 0;
+	writew(reg_ctrl, data->regs + ctrl_reg + reg_off);
+}
 
+static int loongson2_thermal_set(struct loongson2_thermal_data *data,
+				 int low, int high, bool enable)
+{
 	low = clamp(-40, low, high);
 	high = clamp(125, low, high);
 
-	low += HECTO;
-	high += HECTO;
-
-	reg_ctrl = low;
-	reg_ctrl |= enable ? 0x100 : 0;
-	writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_LOW_REG + reg_off);
-
-	reg_ctrl = high;
-	reg_ctrl |= enable ? 0x100 : 0;
-	writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_HI_REG + reg_off);
+	loongson2_set_ctrl_regs(data, low, true, enable);
+	loongson2_set_ctrl_regs(data, high, false, enable);
 
 	return 0;
 }
@@ -75,15 +79,15 @@ static irqreturn_t loongson2_thermal_irq_thread(int irq, void *dev)
 	struct thermal_zone_device *tzd = dev;
 	struct loongson2_thermal_data *data = thermal_zone_device_priv(tzd);
 
-	writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
-		LOONGSON2_THSENS_STATUS_REG);
+	writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
 
 	thermal_zone_device_update(tzd, THERMAL_EVENT_UNSPECIFIED);
 
 	return IRQ_HANDLED;
 }
 
-static int loongson2_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
+static int loongson2_thermal_set_trips(struct thermal_zone_device *tz,
+				       int low, int high)
 {
 	struct loongson2_thermal_data *data = thermal_zone_device_priv(tz);
 
@@ -116,14 +120,13 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
 	if (irq < 0)
 		return irq;
 
-	writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
-		LOONGSON2_THSENS_STATUS_REG);
+	writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
 
 	loongson2_thermal_set(data, 0, 0, false);
 
 	for (i = 0; i <= LOONGSON2_MAX_SENSOR_SEL_NUM; i++) {
 		tzd = devm_thermal_of_zone_register(dev, i, data,
-			&loongson2_of_thermal_ops);
+						    &loongson2_of_thermal_ops);
 
 		if (!IS_ERR(tzd))
 			break;
@@ -135,13 +138,11 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
 	}
 
 	ret = devm_request_threaded_irq(dev, irq, NULL, loongson2_thermal_irq_thread,
-			IRQF_ONESHOT, "loongson2_thermal", tzd);
+					IRQF_ONESHOT, "loongson2_thermal", tzd);
 	if (ret < 0)
 		return dev_err_probe(dev, ret, "failed to request alarm irq\n");
 
-	devm_thermal_add_hwmon_sysfs(dev, tzd);
-
-	return 0;
+	return devm_thermal_add_hwmon_sysfs(dev, tzd);
 }
 
 static const struct loongson2_thermal_chip_data loongson2_thermal_ls2k1000_data = {
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 2/4] dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500 compaible
  2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
  2024-04-15  2:31 ` [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment Binbin Zhou
@ 2024-04-15  2:31 ` Binbin Zhou
  2024-04-15  2:31 ` [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition Binbin Zhou
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Binbin Zhou @ 2024-04-15  2:31 UTC (permalink / raw)
  To: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch, Binbin Zhou, Rob Herring

The thermal on the Loongson-2K0500 shares the design with the
Loongson-2K1000. Define corresponding compatible string, having the
loongson,ls2k1000-thermal as a fallback.

Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/thermal/loongson,ls2k-thermal.yaml       | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
index b634f57cd011..9748a479dcd4 100644
--- a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
+++ b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
@@ -20,6 +20,7 @@ properties:
           - loongson,ls2k1000-thermal
       - items:
           - enum:
+              - loongson,ls2k0500-thermal
               - loongson,ls2k2000-thermal
           - const: loongson,ls2k1000-thermal
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition
  2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
  2024-04-15  2:31 ` [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment Binbin Zhou
  2024-04-15  2:31 ` [PATCH v2 2/4] dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500 compaible Binbin Zhou
@ 2024-04-15  2:31 ` Binbin Zhou
  2024-04-15  8:04   ` Krzysztof Kozlowski
  2024-04-15  2:31 ` [PATCH v2 4/4] thermal: loongson2: Add Loongson-2K2000 support Binbin Zhou
  2024-04-19  2:38 ` [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Huacai Chen
  4 siblings, 1 reply; 10+ messages in thread
From: Binbin Zhou @ 2024-04-15  2:31 UTC (permalink / raw)
  To: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch, Binbin Zhou

The temperature output register of the Loongson-2K2000 is defined in the
chip configuration domain, which is different from the Loongson-2K1000,
so it can't be fallbacked.

We need to use two groups of registers to describe it: the first group
is the high and low temperature threshold setting register; the second
group is the temperature output register.

It is true that this fix will cause ABI corruption, but it is necessary
otherwise the Loongson-2K2000 temperature sensor will not work properly.

Fixes: 72684d99a854 ("thermal: dt-bindings: add loongson-2 thermal")
Cc: Yinbo Zhu <zhuyinbo@loongson.cn>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
 .../thermal/loongson,ls2k-thermal.yaml        | 23 +++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
index 9748a479dcd4..fac6f64d6c67 100644
--- a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
+++ b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
@@ -18,14 +18,15 @@ properties:
     oneOf:
       - enum:
           - loongson,ls2k1000-thermal
+          - loongson,ls2k2000-thermal
       - items:
           - enum:
               - loongson,ls2k0500-thermal
-              - loongson,ls2k2000-thermal
           - const: loongson,ls2k1000-thermal
 
   reg:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
 
   interrupts:
     maxItems: 1
@@ -41,6 +42,24 @@ required:
 
 unevaluatedProperties: false
 
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - loongson,ls2k2000-thermal
+
+then:
+  properties:
+    reg:
+      minItems: 2
+      maxItems: 2
+
+else:
+  properties:
+    reg:
+      maxItems: 1
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 4/4] thermal: loongson2: Add Loongson-2K2000 support
  2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
                   ` (2 preceding siblings ...)
  2024-04-15  2:31 ` [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition Binbin Zhou
@ 2024-04-15  2:31 ` Binbin Zhou
  2024-04-19  2:38 ` [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Huacai Chen
  4 siblings, 0 replies; 10+ messages in thread
From: Binbin Zhou @ 2024-04-15  2:31 UTC (permalink / raw)
  To: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch, Binbin Zhou

The Loongson-2K2000 and Loongson-2K1000 have similar thermal sensors,
except that the temperature is read differently.

In particular, the temperature output registers of the Loongson-2K2000
are defined in the chip configuration domain and are read in a different
way.

Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
---
 drivers/thermal/loongson2_thermal.c | 50 +++++++++++++++++++++++------
 1 file changed, 40 insertions(+), 10 deletions(-)

diff --git a/drivers/thermal/loongson2_thermal.c b/drivers/thermal/loongson2_thermal.c
index d77d829c8b55..d803b6bc35b7 100644
--- a/drivers/thermal/loongson2_thermal.c
+++ b/drivers/thermal/loongson2_thermal.c
@@ -29,12 +29,20 @@
 					 LOONGSON2_THSENS_INT_HIGH)
 #define LOONGSON2_THSENS_OUT_MASK	0xFF
 
+/*
+ * This flag is used to indicate the temperature reading
+ * method of the Loongson-2K2000
+ */
+#define LS2K2000_THSENS_OUT_FLAG	BIT(0)
+
 struct loongson2_thermal_chip_data {
 	unsigned int thermal_sensor_sel;
+	unsigned int flags;
 };
 
 struct loongson2_thermal_data {
-	void __iomem *regs;
+	void __iomem *ctrl_reg;
+	void __iomem *temp_reg;
 	const struct loongson2_thermal_chip_data *chip_data;
 };
 
@@ -48,7 +56,7 @@ static void loongson2_set_ctrl_regs(struct loongson2_thermal_data *data,
 
 	reg_ctrl = ctrl_data + HECTO;
 	reg_ctrl |= enable ? 0x100 : 0;
-	writew(reg_ctrl, data->regs + ctrl_reg + reg_off);
+	writew(reg_ctrl, data->ctrl_reg + ctrl_reg + reg_off);
 }
 
 static int loongson2_thermal_set(struct loongson2_thermal_data *data,
@@ -65,11 +73,16 @@ static int loongson2_thermal_set(struct loongson2_thermal_data *data,
 
 static int loongson2_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-	u32 reg_val;
+	int val;
 	struct loongson2_thermal_data *data = thermal_zone_device_priv(tz);
 
-	reg_val = readl(data->regs + LOONGSON2_THSENS_OUT_REG);
-	*temp = ((reg_val & LOONGSON2_THSENS_OUT_MASK) - HECTO) * KILO;
+	if (data->chip_data->flags) {
+		val = readl(data->temp_reg);
+		*temp = ((val & 0xffff) * 820 / 0x4000 - 311) * KILO;
+	} else {
+		val = readl(data->ctrl_reg + LOONGSON2_THSENS_OUT_REG);
+		*temp = ((val & LOONGSON2_THSENS_OUT_MASK) - HECTO) * KILO;
+	}
 
 	return 0;
 }
@@ -79,7 +92,7 @@ static irqreturn_t loongson2_thermal_irq_thread(int irq, void *dev)
 	struct thermal_zone_device *tzd = dev;
 	struct loongson2_thermal_data *data = thermal_zone_device_priv(tzd);
 
-	writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
+	writeb(LOONGSON2_THSENS_INT_EN, data->ctrl_reg + LOONGSON2_THSENS_STATUS_REG);
 
 	thermal_zone_device_update(tzd, THERMAL_EVENT_UNSPECIFIED);
 
@@ -112,15 +125,22 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
 
 	data->chip_data = device_get_match_data(dev);
 
-	data->regs = devm_platform_ioremap_resource(pdev, 0);
-	if (IS_ERR(data->regs))
-		return PTR_ERR(data->regs);
+	data->ctrl_reg = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(data->ctrl_reg))
+		return PTR_ERR(data->ctrl_reg);
+
+	/* The temperature output register is separate for Loongson-2K2000 */
+	if (data->chip_data->flags) {
+		data->temp_reg = devm_platform_ioremap_resource(pdev, 1);
+		if (IS_ERR(data->temp_reg))
+			return PTR_ERR(data->temp_reg);
+	}
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0)
 		return irq;
 
-	writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
+	writeb(LOONGSON2_THSENS_INT_EN, data->ctrl_reg + LOONGSON2_THSENS_STATUS_REG);
 
 	loongson2_thermal_set(data, 0, 0, false);
 
@@ -147,6 +167,12 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
 
 static const struct loongson2_thermal_chip_data loongson2_thermal_ls2k1000_data = {
 	.thermal_sensor_sel = 0,
+	.flags = 0,
+};
+
+static const struct loongson2_thermal_chip_data loongson2_thermal_ls2k2000_data = {
+	.thermal_sensor_sel = 0,
+	.flags = LS2K2000_THSENS_OUT_FLAG,
 };
 
 static const struct of_device_id of_loongson2_thermal_match[] = {
@@ -154,6 +180,10 @@ static const struct of_device_id of_loongson2_thermal_match[] = {
 		.compatible = "loongson,ls2k1000-thermal",
 		.data = &loongson2_thermal_ls2k1000_data,
 	},
+	{
+		.compatible = "loongson,ls2k2000-thermal",
+		.data = &loongson2_thermal_ls2k2000_data,
+	},
 	{ /* end */ }
 };
 MODULE_DEVICE_TABLE(of, of_loongson2_thermal_match);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition
  2024-04-15  2:31 ` [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition Binbin Zhou
@ 2024-04-15  8:04   ` Krzysztof Kozlowski
  2024-04-19  4:37     ` Binbin Zhou
  0 siblings, 1 reply; 10+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-15  8:04 UTC (permalink / raw)
  To: Binbin Zhou, Binbin Zhou, Huacai Chen, Rafael J . Wysocki,
	Daniel Lezcano, Amit Kucheria, Zhang Rui, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley
  Cc: Huacai Chen, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch

On 15/04/2024 04:31, Binbin Zhou wrote:
> The temperature output register of the Loongson-2K2000 is defined in the
> chip configuration domain, which is different from the Loongson-2K1000,
> so it can't be fallbacked.
> 
> We need to use two groups of registers to describe it: the first group
> is the high and low temperature threshold setting register; the second
> group is the temperature output register.
> 
> It is true that this fix will cause ABI corruption, but it is necessary
> otherwise the Loongson-2K2000 temperature sensor will not work properly.
> 
> Fixes: 72684d99a854 ("thermal: dt-bindings: add loongson-2 thermal")
> Cc: Yinbo Zhu <zhuyinbo@loongson.cn>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> ---
>  .../thermal/loongson,ls2k-thermal.yaml        | 23 +++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> index 9748a479dcd4..fac6f64d6c67 100644
> --- a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> +++ b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> @@ -18,14 +18,15 @@ properties:
>      oneOf:
>        - enum:
>            - loongson,ls2k1000-thermal
> +          - loongson,ls2k2000-thermal
>        - items:
>            - enum:
>                - loongson,ls2k0500-thermal
> -              - loongson,ls2k2000-thermal
>            - const: loongson,ls2k1000-thermal
>  
>    reg:
> -    maxItems: 1
> +    minItems: 1
> +    maxItems: 2
>  
>    interrupts:
>      maxItems: 1
> @@ -41,6 +42,24 @@ required:
>  
>  unevaluatedProperties: false
>  
> +if:

This goes before unevaluatedProperties, just like in example schema.


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment
  2024-04-15  2:31 ` [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment Binbin Zhou
@ 2024-04-19  2:30   ` Huacai Chen
  2024-04-19  4:33     ` Binbin Zhou
  0 siblings, 1 reply; 10+ messages in thread
From: Huacai Chen @ 2024-04-19  2:30 UTC (permalink / raw)
  To: Binbin Zhou
  Cc: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch

Hi, Binbin,

On Mon, Apr 15, 2024 at 10:31 AM Binbin Zhou <zhoubinbin@loongson.cn> wrote:
>
> Here are some minor code style adjustment. Such as fix whitespace code
> style; align function call arguments to opening parenthesis, and add
> devm_thermal_add_hwmon_sysfs() return value checking.
>
> Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> ---
>  drivers/thermal/loongson2_thermal.c | 69 +++++++++++++++--------------
>  1 file changed, 35 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/thermal/loongson2_thermal.c b/drivers/thermal/loongson2_thermal.c
> index 0f475fe46bc9..d77d829c8b55 100644
> --- a/drivers/thermal/loongson2_thermal.c
> +++ b/drivers/thermal/loongson2_thermal.c
> @@ -16,45 +16,49 @@
>  #include <linux/units.h>
>  #include "thermal_hwmon.h"
>
> -#define LOONGSON2_MAX_SENSOR_SEL_NUM                   3
> +#define LOONGSON2_MAX_SENSOR_SEL_NUM   3
>
> -#define LOONGSON2_THSENS_CTRL_HI_REG                   0x0
> -#define LOONGSON2_THSENS_CTRL_LOW_REG                  0x8
> -#define LOONGSON2_THSENS_STATUS_REG                    0x10
> -#define LOONGSON2_THSENS_OUT_REG                       0x14
> +#define LOONGSON2_THSENS_CTRL_HI_REG   0x0
> +#define LOONGSON2_THSENS_CTRL_LOW_REG  0x8
> +#define LOONGSON2_THSENS_STATUS_REG    0x10
> +#define LOONGSON2_THSENS_OUT_REG       0x14
>
> -#define LOONGSON2_THSENS_INT_LO                                BIT(0)
> -#define LOONGSON2_THSENS_INT_HIGH                      BIT(1)
> -#define LOONGSON2_THSENS_OUT_MASK                      0xFF
> +#define LOONGSON2_THSENS_INT_LO                BIT(0)
> +#define LOONGSON2_THSENS_INT_HIGH      BIT(1)
> +#define LOONGSON2_THSENS_INT_EN                (LOONGSON2_THSENS_INT_LO | \
> +                                        LOONGSON2_THSENS_INT_HIGH)
> +#define LOONGSON2_THSENS_OUT_MASK      0xFF
>
>  struct loongson2_thermal_chip_data {
> -       unsigned int    thermal_sensor_sel;
> +       unsigned int thermal_sensor_sel;
>  };
>
>  struct loongson2_thermal_data {
> -       void __iomem    *regs;
> +       void __iomem *regs;
>         const struct loongson2_thermal_chip_data *chip_data;
>  };
>
> -static int loongson2_thermal_set(struct loongson2_thermal_data *data,
> -                                       int low, int high, bool enable)
> +static void loongson2_set_ctrl_regs(struct loongson2_thermal_data *data,
> +                                   int ctrl_data, bool low, bool enable)
>  {
> -       u64 reg_ctrl = 0;
> -       int reg_off = data->chip_data->thermal_sensor_sel * 2;
> +       int reg_ctrl = 0;
> +       int reg_off  = data->chip_data->thermal_sensor_sel * 2;
> +       int ctrl_reg = low ? LOONGSON2_THSENS_CTRL_LOW_REG :
> +                      LOONGSON2_THSENS_CTRL_HI_REG;
Line break is unnecessary, because long lines is acceptable now.

> +
> +       reg_ctrl = ctrl_data + HECTO;
> +       reg_ctrl |= enable ? 0x100 : 0;
> +       writew(reg_ctrl, data->regs + ctrl_reg + reg_off);
> +}
>
> +static int loongson2_thermal_set(struct loongson2_thermal_data *data,
> +                                int low, int high, bool enable)
> +{
>         low = clamp(-40, low, high);
>         high = clamp(125, low, high);
>
> -       low += HECTO;
> -       high += HECTO;
> -
> -       reg_ctrl = low;
> -       reg_ctrl |= enable ? 0x100 : 0;
> -       writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_LOW_REG + reg_off);
> -
> -       reg_ctrl = high;
> -       reg_ctrl |= enable ? 0x100 : 0;
> -       writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_HI_REG + reg_off);
> +       loongson2_set_ctrl_regs(data, low, true, enable);
> +       loongson2_set_ctrl_regs(data, high, false, enable);
>
>         return 0;
>  }
> @@ -75,15 +79,15 @@ static irqreturn_t loongson2_thermal_irq_thread(int irq, void *dev)
>         struct thermal_zone_device *tzd = dev;
>         struct loongson2_thermal_data *data = thermal_zone_device_priv(tzd);
>
> -       writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
> -               LOONGSON2_THSENS_STATUS_REG);
> +       writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
>
>         thermal_zone_device_update(tzd, THERMAL_EVENT_UNSPECIFIED);
>
>         return IRQ_HANDLED;
>  }
>
> -static int loongson2_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
> +static int loongson2_thermal_set_trips(struct thermal_zone_device *tz,
> +                                      int low, int high)
The same as above.

Huacai

>  {
>         struct loongson2_thermal_data *data = thermal_zone_device_priv(tz);
>
> @@ -116,14 +120,13 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
>         if (irq < 0)
>                 return irq;
>
> -       writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
> -               LOONGSON2_THSENS_STATUS_REG);
> +       writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
>
>         loongson2_thermal_set(data, 0, 0, false);
>
>         for (i = 0; i <= LOONGSON2_MAX_SENSOR_SEL_NUM; i++) {
>                 tzd = devm_thermal_of_zone_register(dev, i, data,
> -                       &loongson2_of_thermal_ops);
> +                                                   &loongson2_of_thermal_ops);
>
>                 if (!IS_ERR(tzd))
>                         break;
> @@ -135,13 +138,11 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
>         }
>
>         ret = devm_request_threaded_irq(dev, irq, NULL, loongson2_thermal_irq_thread,
> -                       IRQF_ONESHOT, "loongson2_thermal", tzd);
> +                                       IRQF_ONESHOT, "loongson2_thermal", tzd);
>         if (ret < 0)
>                 return dev_err_probe(dev, ret, "failed to request alarm irq\n");
>
> -       devm_thermal_add_hwmon_sysfs(dev, tzd);
> -
> -       return 0;
> +       return devm_thermal_add_hwmon_sysfs(dev, tzd);
>  }
>
>  static const struct loongson2_thermal_chip_data loongson2_thermal_ls2k1000_data = {
> --
> 2.43.0
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support
  2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
                   ` (3 preceding siblings ...)
  2024-04-15  2:31 ` [PATCH v2 4/4] thermal: loongson2: Add Loongson-2K2000 support Binbin Zhou
@ 2024-04-19  2:38 ` Huacai Chen
  4 siblings, 0 replies; 10+ messages in thread
From: Huacai Chen @ 2024-04-19  2:38 UTC (permalink / raw)
  To: Binbin Zhou
  Cc: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch

For the whole series,
Acked-by: Huacai Chen <chenhuacai@loongson.cn>

On Mon, Apr 15, 2024 at 10:31 AM Binbin Zhou <zhoubinbin@loongson.cn> wrote:
>
> Hi all:
>
> This patchset introduce the Loongson-2K0500 and Loongson-2K2000
> temperature sensors.
>
> The temperature sensors of Loongson-2K series CPUs are similar, except
> that the temperature reading method of the Loongson-2K2000 is
> different.
>
> Specifically, the temperature output register of the Loongson-2K2000 is
> defined in the chip configuration domain. We need to define it in dts
> and calculate it using different calculation methods.
>
> Thanks.
>
> ---
> V2:
> patch(2/4):
>  - Add Acked-by tag from Rob, Thanks.
> patch(3/4):
>  - Add "minItems: 2" to the reg attribute of Loongson-2K2000.
>
> Link to V1:
> https://lore.kernel.org/all/cover.1712733065.git.zhoubinbin@loongson.cn/
>
> Binbin Zhou (4):
>   thermal: loongson2: Trivial code style adjustment
>   dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500
>     compaible
>   dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible
>     definition
>   thermal: loongson2: Add Loongson-2K2000 support
>
>  .../thermal/loongson,ls2k-thermal.yaml        |  24 +++-
>  drivers/thermal/loongson2_thermal.c           | 111 +++++++++++-------
>  2 files changed, 93 insertions(+), 42 deletions(-)
>
> --
> 2.43.0
>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment
  2024-04-19  2:30   ` Huacai Chen
@ 2024-04-19  4:33     ` Binbin Zhou
  0 siblings, 0 replies; 10+ messages in thread
From: Binbin Zhou @ 2024-04-19  4:33 UTC (permalink / raw)
  To: Huacai Chen
  Cc: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, loongson-kernel, linux-pm, devicetree, Yinbo Zhu,
	WANG Xuerui, loongarch

On Fri, Apr 19, 2024 at 8:30 AM Huacai Chen <chenhuacai@kernel.org> wrote:
>
> Hi, Binbin,
>
> On Mon, Apr 15, 2024 at 10:31 AM Binbin Zhou <zhoubinbin@loongson.cn> wrote:
> >
> > Here are some minor code style adjustment. Such as fix whitespace code
> > style; align function call arguments to opening parenthesis, and add
> > devm_thermal_add_hwmon_sysfs() return value checking.
> >
> > Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> > ---
> >  drivers/thermal/loongson2_thermal.c | 69 +++++++++++++++--------------
> >  1 file changed, 35 insertions(+), 34 deletions(-)
> >
> > diff --git a/drivers/thermal/loongson2_thermal.c b/drivers/thermal/loongson2_thermal.c
> > index 0f475fe46bc9..d77d829c8b55 100644
> > --- a/drivers/thermal/loongson2_thermal.c
> > +++ b/drivers/thermal/loongson2_thermal.c
> > @@ -16,45 +16,49 @@
> >  #include <linux/units.h>
> >  #include "thermal_hwmon.h"
> >
> > -#define LOONGSON2_MAX_SENSOR_SEL_NUM                   3
> > +#define LOONGSON2_MAX_SENSOR_SEL_NUM   3
> >
> > -#define LOONGSON2_THSENS_CTRL_HI_REG                   0x0
> > -#define LOONGSON2_THSENS_CTRL_LOW_REG                  0x8
> > -#define LOONGSON2_THSENS_STATUS_REG                    0x10
> > -#define LOONGSON2_THSENS_OUT_REG                       0x14
> > +#define LOONGSON2_THSENS_CTRL_HI_REG   0x0
> > +#define LOONGSON2_THSENS_CTRL_LOW_REG  0x8
> > +#define LOONGSON2_THSENS_STATUS_REG    0x10
> > +#define LOONGSON2_THSENS_OUT_REG       0x14
> >
> > -#define LOONGSON2_THSENS_INT_LO                                BIT(0)
> > -#define LOONGSON2_THSENS_INT_HIGH                      BIT(1)
> > -#define LOONGSON2_THSENS_OUT_MASK                      0xFF
> > +#define LOONGSON2_THSENS_INT_LO                BIT(0)
> > +#define LOONGSON2_THSENS_INT_HIGH      BIT(1)
> > +#define LOONGSON2_THSENS_INT_EN                (LOONGSON2_THSENS_INT_LO | \
> > +                                        LOONGSON2_THSENS_INT_HIGH)
> > +#define LOONGSON2_THSENS_OUT_MASK      0xFF
> >
> >  struct loongson2_thermal_chip_data {
> > -       unsigned int    thermal_sensor_sel;
> > +       unsigned int thermal_sensor_sel;
> >  };
> >
> >  struct loongson2_thermal_data {
> > -       void __iomem    *regs;
> > +       void __iomem *regs;
> >         const struct loongson2_thermal_chip_data *chip_data;
> >  };
> >
> > -static int loongson2_thermal_set(struct loongson2_thermal_data *data,
> > -                                       int low, int high, bool enable)
> > +static void loongson2_set_ctrl_regs(struct loongson2_thermal_data *data,
> > +                                   int ctrl_data, bool low, bool enable)
> >  {
> > -       u64 reg_ctrl = 0;
> > -       int reg_off = data->chip_data->thermal_sensor_sel * 2;
> > +       int reg_ctrl = 0;
> > +       int reg_off  = data->chip_data->thermal_sensor_sel * 2;
> > +       int ctrl_reg = low ? LOONGSON2_THSENS_CTRL_LOW_REG :
> > +                      LOONGSON2_THSENS_CTRL_HI_REG;
> Line break is unnecessary, because long lines is acceptable now.
>
OK, I would check the entire code again and fix it in the next version.


Thanks.
Binbin

> > +
> > +       reg_ctrl = ctrl_data + HECTO;
> > +       reg_ctrl |= enable ? 0x100 : 0;
> > +       writew(reg_ctrl, data->regs + ctrl_reg + reg_off);
> > +}
> >
> > +static int loongson2_thermal_set(struct loongson2_thermal_data *data,
> > +                                int low, int high, bool enable)
> > +{
> >         low = clamp(-40, low, high);
> >         high = clamp(125, low, high);
> >
> > -       low += HECTO;
> > -       high += HECTO;
> > -
> > -       reg_ctrl = low;
> > -       reg_ctrl |= enable ? 0x100 : 0;
> > -       writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_LOW_REG + reg_off);
> > -
> > -       reg_ctrl = high;
> > -       reg_ctrl |= enable ? 0x100 : 0;
> > -       writew(reg_ctrl, data->regs + LOONGSON2_THSENS_CTRL_HI_REG + reg_off);
> > +       loongson2_set_ctrl_regs(data, low, true, enable);
> > +       loongson2_set_ctrl_regs(data, high, false, enable);
> >
> >         return 0;
> >  }
> > @@ -75,15 +79,15 @@ static irqreturn_t loongson2_thermal_irq_thread(int irq, void *dev)
> >         struct thermal_zone_device *tzd = dev;
> >         struct loongson2_thermal_data *data = thermal_zone_device_priv(tzd);
> >
> > -       writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
> > -               LOONGSON2_THSENS_STATUS_REG);
> > +       writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
> >
> >         thermal_zone_device_update(tzd, THERMAL_EVENT_UNSPECIFIED);
> >
> >         return IRQ_HANDLED;
> >  }
> >
> > -static int loongson2_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
> > +static int loongson2_thermal_set_trips(struct thermal_zone_device *tz,
> > +                                      int low, int high)
> The same as above.
>
> Huacai
>
> >  {
> >         struct loongson2_thermal_data *data = thermal_zone_device_priv(tz);
> >
> > @@ -116,14 +120,13 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
> >         if (irq < 0)
> >                 return irq;
> >
> > -       writeb(LOONGSON2_THSENS_INT_LO | LOONGSON2_THSENS_INT_HIGH, data->regs +
> > -               LOONGSON2_THSENS_STATUS_REG);
> > +       writeb(LOONGSON2_THSENS_INT_EN, data->regs + LOONGSON2_THSENS_STATUS_REG);
> >
> >         loongson2_thermal_set(data, 0, 0, false);
> >
> >         for (i = 0; i <= LOONGSON2_MAX_SENSOR_SEL_NUM; i++) {
> >                 tzd = devm_thermal_of_zone_register(dev, i, data,
> > -                       &loongson2_of_thermal_ops);
> > +                                                   &loongson2_of_thermal_ops);
> >
> >                 if (!IS_ERR(tzd))
> >                         break;
> > @@ -135,13 +138,11 @@ static int loongson2_thermal_probe(struct platform_device *pdev)
> >         }
> >
> >         ret = devm_request_threaded_irq(dev, irq, NULL, loongson2_thermal_irq_thread,
> > -                       IRQF_ONESHOT, "loongson2_thermal", tzd);
> > +                                       IRQF_ONESHOT, "loongson2_thermal", tzd);
> >         if (ret < 0)
> >                 return dev_err_probe(dev, ret, "failed to request alarm irq\n");
> >
> > -       devm_thermal_add_hwmon_sysfs(dev, tzd);
> > -
> > -       return 0;
> > +       return devm_thermal_add_hwmon_sysfs(dev, tzd);
> >  }
> >
> >  static const struct loongson2_thermal_chip_data loongson2_thermal_ls2k1000_data = {
> > --
> > 2.43.0
> >

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition
  2024-04-15  8:04   ` Krzysztof Kozlowski
@ 2024-04-19  4:37     ` Binbin Zhou
  0 siblings, 0 replies; 10+ messages in thread
From: Binbin Zhou @ 2024-04-19  4:37 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Binbin Zhou, Huacai Chen, Rafael J . Wysocki, Daniel Lezcano,
	Amit Kucheria, Zhang Rui, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Huacai Chen, loongson-kernel, linux-pm, devicetree,
	Yinbo Zhu, WANG Xuerui, loongarch

On Mon, Apr 15, 2024 at 2:04 PM Krzysztof Kozlowski
<krzysztof.kozlowski@linaro.org> wrote:
>
> On 15/04/2024 04:31, Binbin Zhou wrote:
> > The temperature output register of the Loongson-2K2000 is defined in the
> > chip configuration domain, which is different from the Loongson-2K1000,
> > so it can't be fallbacked.
> >
> > We need to use two groups of registers to describe it: the first group
> > is the high and low temperature threshold setting register; the second
> > group is the temperature output register.
> >
> > It is true that this fix will cause ABI corruption, but it is necessary
> > otherwise the Loongson-2K2000 temperature sensor will not work properly.
> >
> > Fixes: 72684d99a854 ("thermal: dt-bindings: add loongson-2 thermal")
> > Cc: Yinbo Zhu <zhuyinbo@loongson.cn>
> > Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
> > ---
> >  .../thermal/loongson,ls2k-thermal.yaml        | 23 +++++++++++++++++--
> >  1 file changed, 21 insertions(+), 2 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> > index 9748a479dcd4..fac6f64d6c67 100644
> > --- a/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> > +++ b/Documentation/devicetree/bindings/thermal/loongson,ls2k-thermal.yaml
> > @@ -18,14 +18,15 @@ properties:
> >      oneOf:
> >        - enum:
> >            - loongson,ls2k1000-thermal
> > +          - loongson,ls2k2000-thermal
> >        - items:
> >            - enum:
> >                - loongson,ls2k0500-thermal
> > -              - loongson,ls2k2000-thermal
> >            - const: loongson,ls2k1000-thermal
> >
> >    reg:
> > -    maxItems: 1
> > +    minItems: 1
> > +    maxItems: 2
> >
> >    interrupts:
> >      maxItems: 1
> > @@ -41,6 +42,24 @@ required:
> >
> >  unevaluatedProperties: false
> >
> > +if:
>
> This goes before unevaluatedProperties, just like in example schema.
>
Hi Krzysztof:

Thanks for your reply.
I will adjust the position of this part in the next version.

Thanks.
Binbin
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Best regards,
> Krzysztof
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-04-19  4:37 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-15  2:31 [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Binbin Zhou
2024-04-15  2:31 ` [PATCH v2 1/4] thermal: loongson2: Trivial code style adjustment Binbin Zhou
2024-04-19  2:30   ` Huacai Chen
2024-04-19  4:33     ` Binbin Zhou
2024-04-15  2:31 ` [PATCH v2 2/4] dt-bindings: thermal: loongson,ls2k-thermal: Add Loongson-2K0500 compaible Binbin Zhou
2024-04-15  2:31 ` [PATCH v2 3/4] dt-bindings: thermal: loongson,ls2k-thermal: Fix incorrect compatible definition Binbin Zhou
2024-04-15  8:04   ` Krzysztof Kozlowski
2024-04-19  4:37     ` Binbin Zhou
2024-04-15  2:31 ` [PATCH v2 4/4] thermal: loongson2: Add Loongson-2K2000 support Binbin Zhou
2024-04-19  2:38 ` [PATCH v2 0/4] thermal: loongson2: Add Loongson-2K0500 and Loongson-2K2000 thermal support Huacai Chen

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.