All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add new binding regulator-fixed-clock to regulator-fixed
@ 2019-09-10  6:21 ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker,
	Fabio Estevam, linux-arm-kernel, Pengutronix Kernel Team,
	NXP Linux Team


Our hardware has a FET that is switching power rail of the ethernet PHY
on and off. This switching enable signal is a clock from the SoC.

There is no possibility in regulator subsystem to have this hardware
reflected in software.

I already discussed with Mark Brown about possible solutions and he
suggested to create at least a new compatible. [1]
This discussion includes also a better explanation of our circuit as
well as schematics. So please refer to that link if you have questions
about that.

In this first attempt I created a new binding "regulator-fixed-clock"
that can take a clock from devicetree. This is a simple addition to
regulator-fixed. If the binding regulator-fixed-clock is given, the
clock is simply enabled on regulator enable and disabled on regulator
disable.
To be able to have multiple consumers a counter variable is also given
that tells how many consumers need power from this regulator.

Best regards,
Philippe

[1] https://lkml.org/lkml/2019/8/7/78


Changes in v2:
- return priv->clk_enable_counter > 0 directly.
- Change select: to if:
- Change items: to enum:
- Defined how many clocks should be given

Philippe Schenker (3):
  regulator: fixed: add possibility to enable by clock
  ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
  dt-bindings: regulator: add regulator-fixed-clock binding

 .../bindings/regulator/fixed-regulator.yaml   | 19 ++++-
 arch/arm/boot/dts/imx6ull-colibri.dtsi        | 12 +++
 drivers/regulator/fixed.c                     | 83 ++++++++++++++++++-
 3 files changed, 110 insertions(+), 4 deletions(-)

-- 
2.23.0


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

* [PATCH v2 0/3] Add new binding regulator-fixed-clock to regulator-fixed
@ 2019-09-10  6:21 ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker,
	Fabio Estevam, linux-arm-kernel, Pengutronix Kernel Team,
	NXP Linux Team


Our hardware has a FET that is switching power rail of the ethernet PHY
on and off. This switching enable signal is a clock from the SoC.

There is no possibility in regulator subsystem to have this hardware
reflected in software.

I already discussed with Mark Brown about possible solutions and he
suggested to create at least a new compatible. [1]
This discussion includes also a better explanation of our circuit as
well as schematics. So please refer to that link if you have questions
about that.

In this first attempt I created a new binding "regulator-fixed-clock"
that can take a clock from devicetree. This is a simple addition to
regulator-fixed. If the binding regulator-fixed-clock is given, the
clock is simply enabled on regulator enable and disabled on regulator
disable.
To be able to have multiple consumers a counter variable is also given
that tells how many consumers need power from this regulator.

Best regards,
Philippe

[1] https://lkml.org/lkml/2019/8/7/78


Changes in v2:
- return priv->clk_enable_counter > 0 directly.
- Change select: to if:
- Change items: to enum:
- Defined how many clocks should be given

Philippe Schenker (3):
  regulator: fixed: add possibility to enable by clock
  ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
  dt-bindings: regulator: add regulator-fixed-clock binding

 .../bindings/regulator/fixed-regulator.yaml   | 19 ++++-
 arch/arm/boot/dts/imx6ull-colibri.dtsi        | 12 +++
 drivers/regulator/fixed.c                     | 83 ++++++++++++++++++-
 3 files changed, 110 insertions(+), 4 deletions(-)

-- 
2.23.0

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

* [PATCH v2 0/3] Add new binding regulator-fixed-clock to regulator-fixed
@ 2019-09-10  6:21 ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: Mark Rutland, devicetree, Luka Pivk, Stefan Agner,
	Marcel Ziswiler, Philippe Schenker, Rob Herring, NXP Linux Team,
	Max Krummenacher, Fabio Estevam, Pengutronix Kernel Team,
	linux-arm-kernel


Our hardware has a FET that is switching power rail of the ethernet PHY
on and off. This switching enable signal is a clock from the SoC.

There is no possibility in regulator subsystem to have this hardware
reflected in software.

I already discussed with Mark Brown about possible solutions and he
suggested to create at least a new compatible. [1]
This discussion includes also a better explanation of our circuit as
well as schematics. So please refer to that link if you have questions
about that.

In this first attempt I created a new binding "regulator-fixed-clock"
that can take a clock from devicetree. This is a simple addition to
regulator-fixed. If the binding regulator-fixed-clock is given, the
clock is simply enabled on regulator enable and disabled on regulator
disable.
To be able to have multiple consumers a counter variable is also given
that tells how many consumers need power from this regulator.

Best regards,
Philippe

[1] https://lkml.org/lkml/2019/8/7/78


Changes in v2:
- return priv->clk_enable_counter > 0 directly.
- Change select: to if:
- Change items: to enum:
- Defined how many clocks should be given

Philippe Schenker (3):
  regulator: fixed: add possibility to enable by clock
  ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
  dt-bindings: regulator: add regulator-fixed-clock binding

 .../bindings/regulator/fixed-regulator.yaml   | 19 ++++-
 arch/arm/boot/dts/imx6ull-colibri.dtsi        | 12 +++
 drivers/regulator/fixed.c                     | 83 ++++++++++++++++++-
 3 files changed, 110 insertions(+), 4 deletions(-)

-- 
2.23.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock
  2019-09-10  6:21 ` Philippe Schenker
  (?)
  (?)
@ 2019-09-10  6:21 ` Philippe Schenker
  2019-10-07 13:29   ` Guenter Roeck
  -1 siblings, 1 reply; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker

This commit adds the possibility to choose the compatible
"regulator-fixed-clock" in devicetree.

This is a special regulator-fixed that has to have a clock, from which
the regulator gets switched on and off.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

---

Changes in v2:
- return priv->clk_enable_counter > 0 directly.

 drivers/regulator/fixed.c | 83 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 80 insertions(+), 3 deletions(-)

diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 999547dde99d..d90a6fd8cbc7 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -23,14 +23,63 @@
 #include <linux/gpio/consumer.h>
 #include <linux/slab.h>
 #include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/regulator/of_regulator.h>
 #include <linux/regulator/machine.h>
+#include <linux/clk.h>
+
 
 struct fixed_voltage_data {
 	struct regulator_desc desc;
 	struct regulator_dev *dev;
+
+	struct clk *enable_clock;
+	unsigned int clk_enable_counter;
 };
 
+struct fixed_dev_type {
+	bool has_enable_clock;
+};
+
+static const struct fixed_dev_type fixed_voltage_data = {
+	.has_enable_clock = false,
+};
+
+static const struct fixed_dev_type fixed_clkenable_data = {
+	.has_enable_clock = true,
+};
+
+static int reg_clock_enable(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *priv = rdev_get_drvdata(rdev);
+	int ret = 0;
+
+	ret = clk_prepare_enable(priv->enable_clock);
+	if (ret)
+		return ret;
+
+	priv->clk_enable_counter++;
+
+	return ret;
+}
+
+static int reg_clock_disable(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *priv = rdev_get_drvdata(rdev);
+
+	clk_disable_unprepare(priv->enable_clock);
+	priv->clk_enable_counter--;
+
+	return 0;
+}
+
+static int reg_clock_is_enabled(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *priv = rdev_get_drvdata(rdev);
+
+	return priv->clk_enable_counter > 0;
+}
+
 
 /**
  * of_get_fixed_voltage_config - extract fixed_voltage_config structure info
@@ -84,10 +133,19 @@ of_get_fixed_voltage_config(struct device *dev,
 static struct regulator_ops fixed_voltage_ops = {
 };
 
+static struct regulator_ops fixed_voltage_clkenabled_ops = {
+	.enable = reg_clock_enable,
+	.disable = reg_clock_disable,
+	.is_enabled = reg_clock_is_enabled,
+};
+
 static int reg_fixed_voltage_probe(struct platform_device *pdev)
 {
+	struct device *dev = &pdev->dev;
 	struct fixed_voltage_config *config;
 	struct fixed_voltage_data *drvdata;
+	const struct fixed_dev_type *drvtype =
+		of_match_device(dev->driver->of_match_table, dev)->data;
 	struct regulator_config cfg = { };
 	enum gpiod_flags gflags;
 	int ret;
@@ -118,7 +176,18 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
 	}
 	drvdata->desc.type = REGULATOR_VOLTAGE;
 	drvdata->desc.owner = THIS_MODULE;
-	drvdata->desc.ops = &fixed_voltage_ops;
+
+	if (drvtype->has_enable_clock) {
+		drvdata->desc.ops = &fixed_voltage_clkenabled_ops;
+
+		drvdata->enable_clock = devm_clk_get(dev, NULL);
+		if (IS_ERR(drvdata->enable_clock)) {
+			dev_err(dev, "Cant get enable-clock from devicetree\n");
+			return -ENOENT;
+		}
+	} else {
+		drvdata->desc.ops = &fixed_voltage_ops;
+	}
 
 	drvdata->desc.enable_time = config->startup_delay;
 
@@ -191,8 +260,16 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
 
 #if defined(CONFIG_OF)
 static const struct of_device_id fixed_of_match[] = {
-	{ .compatible = "regulator-fixed", },
-	{},
+	{
+		.compatible = "regulator-fixed",
+		.data = &fixed_voltage_data,
+	},
+	{
+		.compatible = "regulator-fixed-clock",
+		.data = &fixed_clkenable_data,
+	},
+	{
+	},
 };
 MODULE_DEVICE_TABLE(of, fixed_of_match);
 #endif
-- 
2.23.0


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

* [PATCH v2 2/3] ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
  2019-09-10  6:21 ` Philippe Schenker
  (?)
@ 2019-09-10  6:21   ` Philippe Schenker
  -1 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker,
	Fabio Estevam, linux-arm-kernel, Pengutronix Kernel Team,
	NXP Linux Team

This adds regulator-fixed-clock, a fixed-regulator that turns on and
off with a clock and add it to the phy.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---

Changes in v2: None

 arch/arm/boot/dts/imx6ull-colibri.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index d56728f03c35..76021b842a97 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -47,6 +47,17 @@
 		states = <1800000 0x1 3300000 0x0>;
 		vin-supply = <&reg_module_3v3>;
 	};
+
+	reg_eth_phy: regulator-eth-phy {
+		compatible = "regulator-fixed-clock";
+		regulator-boot-on;
+		regulator-name = "eth_phy";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		clocks = <&clks IMX6UL_CLK_ENET2_REF_125M>;
+		startup-delay-us = <150000>;
+		vin-supply = <&reg_module_3v3>;
+	};
 };
 
 &adc1 {
@@ -66,6 +77,7 @@
 	pinctrl-0 = <&pinctrl_enet2>;
 	phy-mode = "rmii";
 	phy-handle = <&ethphy1>;
+	phy-supply = <&reg_eth_phy>;
 	status = "okay";
 
 	mdio {
-- 
2.23.0


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

* [PATCH v2 2/3] ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
@ 2019-09-10  6:21   ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker,
	Fabio Estevam, linux-arm-kernel, Pengutronix Kernel Team,
	NXP Linux Team

This adds regulator-fixed-clock, a fixed-regulator that turns on and
off with a clock and add it to the phy.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---

Changes in v2: None

 arch/arm/boot/dts/imx6ull-colibri.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index d56728f03c35..76021b842a97 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -47,6 +47,17 @@
 		states = <1800000 0x1 3300000 0x0>;
 		vin-supply = <&reg_module_3v3>;
 	};
+
+	reg_eth_phy: regulator-eth-phy {
+		compatible = "regulator-fixed-clock";
+		regulator-boot-on;
+		regulator-name = "eth_phy";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		clocks = <&clks IMX6UL_CLK_ENET2_REF_125M>;
+		startup-delay-us = <150000>;
+		vin-supply = <&reg_module_3v3>;
+	};
 };
 
 &adc1 {
@@ -66,6 +77,7 @@
 	pinctrl-0 = <&pinctrl_enet2>;
 	phy-mode = "rmii";
 	phy-handle = <&ethphy1>;
+	phy-supply = <&reg_eth_phy>;
 	status = "okay";
 
 	mdio {
-- 
2.23.0

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

* [PATCH v2 2/3] ARM: dts: imx6ull-colibri: add phy-supply and respective regulator
@ 2019-09-10  6:21   ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: Mark Rutland, devicetree, Luka Pivk, Stefan Agner,
	Marcel Ziswiler, Philippe Schenker, Rob Herring, NXP Linux Team,
	Max Krummenacher, Fabio Estevam, Pengutronix Kernel Team,
	linux-arm-kernel

This adds regulator-fixed-clock, a fixed-regulator that turns on and
off with a clock and add it to the phy.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---

Changes in v2: None

 arch/arm/boot/dts/imx6ull-colibri.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index d56728f03c35..76021b842a97 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -47,6 +47,17 @@
 		states = <1800000 0x1 3300000 0x0>;
 		vin-supply = <&reg_module_3v3>;
 	};
+
+	reg_eth_phy: regulator-eth-phy {
+		compatible = "regulator-fixed-clock";
+		regulator-boot-on;
+		regulator-name = "eth_phy";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		clocks = <&clks IMX6UL_CLK_ENET2_REF_125M>;
+		startup-delay-us = <150000>;
+		vin-supply = <&reg_module_3v3>;
+	};
 };
 
 &adc1 {
@@ -66,6 +77,7 @@
 	pinctrl-0 = <&pinctrl_enet2>;
 	phy-mode = "rmii";
 	phy-handle = <&ethphy1>;
+	phy-supply = <&reg_eth_phy>;
 	status = "okay";
 
 	mdio {
-- 
2.23.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding
  2019-09-10  6:21 ` Philippe Schenker
                   ` (3 preceding siblings ...)
  (?)
@ 2019-09-10  6:21 ` Philippe Schenker
  2019-09-10  8:35   ` Rob Herring
  2019-09-17 20:13   ` Rob Herring
  -1 siblings, 2 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-10  6:21 UTC (permalink / raw)
  To: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood
  Cc: devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk, Philippe Schenker

This adds the documentation to the compatible regulator-fixed-clock.
This binding is a special binding of regulator-fixed and adds the
ability to add a clock to regulator-fixed, so the regulator can be
enabled and disabled with that clock. If the special compatible
regulator-fixed-clock is used it is mandatory to supply a clock.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

---

Changes in v2:
- Change select: to if:
- Change items: to enum:
- Defined how many clocks should be given

 .../bindings/regulator/fixed-regulator.yaml   | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml b/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
index a650b457085d..a78150c47aa2 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
@@ -19,9 +19,19 @@ description:
 allOf:
   - $ref: "regulator.yaml#"
 
+if:
+  properties:
+    compatible:
+      contains:
+        const: regulator-fixed-clock
+  required:
+    - clocks
+
 properties:
   compatible:
-    const: regulator-fixed
+    enum:
+      - const: regulator-fixed
+      - const: regulator-fixed-clock
 
   regulator-name: true
 
@@ -29,6 +39,13 @@ properties:
     description: gpio to use for enable control
     maxItems: 1
 
+  clocks:
+    description:
+      clock to use for enable control. This binding is only available if
+      the compatible is chosen to regulator-fixed-clock. The clock binding
+      is mandatory if compatible is chosen to regulator-fixed-clock.
+    maxItems: 1
+
   startup-delay-us:
     description: startup time in microseconds
     $ref: /schemas/types.yaml#/definitions/uint32
-- 
2.23.0


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

* Re: [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding
  2019-09-10  6:21 ` [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding Philippe Schenker
@ 2019-09-10  8:35   ` Rob Herring
  2019-09-17 20:13   ` Rob Herring
  1 sibling, 0 replies; 14+ messages in thread
From: Rob Herring @ 2019-09-10  8:35 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood,
	devicetree, Max Krummenacher, Stefan Agner, Marcel Ziswiler,
	Mark Rutland, Luka Pivk

On Tue, Sep 10, 2019 at 7:21 AM Philippe Schenker
<philippe.schenker@toradex.com> wrote:
>
> This adds the documentation to the compatible regulator-fixed-clock.
> This binding is a special binding of regulator-fixed and adds the
> ability to add a clock to regulator-fixed, so the regulator can be
> enabled and disabled with that clock. If the special compatible
> regulator-fixed-clock is used it is mandatory to supply a clock.
>
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
>
> ---
>
> Changes in v2:
> - Change select: to if:
> - Change items: to enum:
> - Defined how many clocks should be given
>
>  .../bindings/regulator/fixed-regulator.yaml   | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding
  2019-09-10  6:21 ` [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding Philippe Schenker
  2019-09-10  8:35   ` Rob Herring
@ 2019-09-17 20:13   ` Rob Herring
  2019-09-23  6:58     ` Philippe Schenker
  1 sibling, 1 reply; 14+ messages in thread
From: Rob Herring @ 2019-09-17 20:13 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood,
	devicetree, Max Krummenacher, Stefan Agner, Marcel Ziswiler,
	Mark Rutland, Luka Pivk

On Tue, Sep 10, 2019 at 1:21 AM Philippe Schenker
<philippe.schenker@toradex.com> wrote:
>
> This adds the documentation to the compatible regulator-fixed-clock.
> This binding is a special binding of regulator-fixed and adds the
> ability to add a clock to regulator-fixed, so the regulator can be
> enabled and disabled with that clock. If the special compatible
> regulator-fixed-clock is used it is mandatory to supply a clock.
>
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
>
> ---
>
> Changes in v2:
> - Change select: to if:
> - Change items: to enum:
> - Defined how many clocks should be given
>
>  .../bindings/regulator/fixed-regulator.yaml   | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml b/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
> index a650b457085d..a78150c47aa2 100644
> --- a/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
> +++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
> @@ -19,9 +19,19 @@ description:
>  allOf:
>    - $ref: "regulator.yaml#"
>
> +if:
> +  properties:
> +    compatible:
> +      contains:
> +        const: regulator-fixed-clock
> +  required:
> +    - clocks
> +
>  properties:
>    compatible:
> -    const: regulator-fixed
> +    enum:
> +      - const: regulator-fixed
> +      - const: regulator-fixed-clock

'make dt_binding_check' is failing. You need to drop 'const: '. Please
send a patch to fix this.

Rob

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

* Re: [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding
  2019-09-17 20:13   ` Rob Herring
@ 2019-09-23  6:58     ` Philippe Schenker
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Schenker @ 2019-09-23  6:58 UTC (permalink / raw)
  To: robh+dt
  Cc: Max Krummenacher, Marcel Ziswiler, Luka Pivk, s.hauer, broonie,
	devicetree, linux-kernel, shawnguo, Stefan Agner, lgirdwood,
	mark.rutland

On Tue, 2019-09-17 at 15:13 -0500, Rob Herring wrote:
> On Tue, Sep 10, 2019 at 1:21 AM Philippe Schenker
> <philippe.schenker@toradex.com> wrote:
> > This adds the documentation to the compatible regulator-fixed-clock.
> > This binding is a special binding of regulator-fixed and adds the
> > ability to add a clock to regulator-fixed, so the regulator can be
> > enabled and disabled with that clock. If the special compatible
> > regulator-fixed-clock is used it is mandatory to supply a clock.
> > 
> > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> > 
> > ---
> > 
> > Changes in v2:
> > - Change select: to if:
> > - Change items: to enum:
> > - Defined how many clocks should be given
> > 
> >  .../bindings/regulator/fixed-regulator.yaml   | 19
> > ++++++++++++++++++-
> >  1 file changed, 18 insertions(+), 1 deletion(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/regulator/fixed-
> > regulator.yaml b/Documentation/devicetree/bindings/regulator/fixed-
> > regulator.yaml
> > index a650b457085d..a78150c47aa2 100644
> > --- a/Documentation/devicetree/bindings/regulator/fixed-
> > regulator.yaml
> > +++ b/Documentation/devicetree/bindings/regulator/fixed-
> > regulator.yaml
> > @@ -19,9 +19,19 @@ description:
> >  allOf:
> >    - $ref: "regulator.yaml#"
> > 
> > +if:
> > +  properties:
> > +    compatible:
> > +      contains:
> > +        const: regulator-fixed-clock
> > +  required:
> > +    - clocks
> > +
> >  properties:
> >    compatible:
> > -    const: regulator-fixed
> > +    enum:
> > +      - const: regulator-fixed
> > +      - const: regulator-fixed-clock
> 
> 'make dt_binding_check' is failing. You need to drop 'const: '. Please
> send a patch to fix this.
> 
> Rob

Hi Rob, 

Thanks for pointing this out, I wasn't aware of that and of 'make
dt_binding_check'. I was searching for it, but not finding that one,
thanks for mentioning it. I will immediately patch that and send it
right away.

Philippe

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

* Re: [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock
  2019-09-10  6:21 ` [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock Philippe Schenker
@ 2019-10-07 13:29   ` Guenter Roeck
  2019-10-07 13:57     ` Philippe Schenker
  0 siblings, 1 reply; 14+ messages in thread
From: Guenter Roeck @ 2019-10-07 13:29 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: linux-kernel, Mark Brown, Shawn Guo, Sascha Hauer, Liam Girdwood,
	devicetree, Max Krummenacher, Rob Herring, Stefan Agner,
	Marcel Ziswiler, Mark Rutland, Luka Pivk

On Tue, Sep 10, 2019 at 06:21:15AM +0000, Philippe Schenker wrote:
> This commit adds the possibility to choose the compatible
> "regulator-fixed-clock" in devicetree.
> 
> This is a special regulator-fixed that has to have a clock, from which
> the regulator gets switched on and off.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

This patch causes a crash in one of my qemu tests (kzm machine with
imx_v6_v7_defconfig). Reverting this patch fixes the problem.
Crash backtrace and bisect log attached below.

Guenter

---
[   24.718451] Unable to handle kernel NULL pointer dereference at virtual address 000000c0
[   24.718774] pgd = (ptrval)
[   24.718946] [000000c0] *pgd=00000000
[   24.719688] Internal error: Oops: 5 [#1] SMP ARM
[   24.720007] Modules linked in:
[   24.720356] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.0-rc1-00258-g2d00aee21a5d #1
[   24.720522] Hardware name: Kyoto Microcomputer Co., Ltd. KZM-ARM11-01
[   24.721143] PC is at reg_fixed_voltage_probe+0x38/0x2f4
[   24.721279] LR is at reg_fixed_voltage_probe+0x2c/0x2f4
[   24.721407] pc : [<c070c740>]    lr : [<c070c734>]    psr: 60000053
[   24.721551] sp : c20a9d60  ip : 00000000  fp : c13bf34c
[   24.721677] r10: 00000000  r9 : c1479348  r8 : c30208d0
[   24.721805] r7 : c1408b08  r6 : c30208e0  r5 : 00000000  r4 : c30208e0
[   24.721958] r3 : 00000000  r2 : 00000dc0  r1 : 000000e8  r0 : 00000000
[   24.722145] Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none
[   24.722273] Control: 00c5387d  Table: 80004008  DAC: 00000051
[   24.722435] Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
[   24.722616] Stack: (0xc20a9d60 to 0xc20aa000)
[   24.723031] 9d60: c3019d90 c033ff9c 00000000 c301b380 c21c2700 00000000 c21c2700 c301b380
[   24.723407] 9d80: c3019d90 61093934 00000001 c30208e0 00000000 c1479348 00000000 00000000
[   24.723767] 9da0: c1479348 00000000 c13bf34c c07ae608 c30208e0 c1b63da0 c1b63da4 00000000
[   24.724120] 9dc0: 00000000 c07ac34c c30208e0 c1479348 c07ac7a0 c1408b08 00000001 00000000
[   24.724485] 9de0: c1300584 c07ac5e0 c1479348 c20a9e44 c30208e0 00000000 c20a9e44 c07ac7a0
[   24.724862] 9e00: c1408b08 00000001 00000000 c1300584 c13bf34c c07aa4fc fffffff3 c20904d4
[   24.725215] 9e20: c21a1dd4 61093934 c30208e0 c30208e0 c3020968 c1408b08 c1408b08 c07ac0a4
[   24.725575] 9e40: c209c000 c30208e0 00000001 61093934 c30208e0 c30208e0 c1488db8 c1408b08
[   24.725963] 9e60: 00000000 c07ab3b4 c30208e0 c1488b00 00000000 c07a7ab8 c1300584 c0dd7b04
[   24.726347] 9e80: c1408b08 c30208d0 c30208d0 61093934 c20a9ea8 c3020800 00000000 c30208d0
[   24.726744] 9ea0: c30208e0 c14146d8 c14f93cc c07ae3d4 c3020800 c30208d0 00000000 00000002
[   24.727127] 9ec0: c14146d8 c14f93cc c1300584 c070a4a8 c14146d8 c1408b28 c1408b08 c1303c60
[   24.727504] 9ee0: 00000000 c130d094 00000000 c01aa5a4 c14fa7a0 c1303c7c c14fa7a0 c01031d8
[   24.727894] 9f00: 0000019e 00000000 c7ffccec c7ffccda c12b19ac 0000019e 0000019e c01513b8
[   24.728277] 9f20: c1408b08 c018ab84 c1408b08 c14fa7a0 c1408b28 c1500700 c139f850 0000019e
[   24.728662] 9f40: c1300584 c01aa5a4 00000000 61093934 c139f874 c1500700 00000008 c1500700
[   24.729041] 9f60: c139f854 0000019e c1300584 c1301028 00000007 00000007 00000000 c1300584
[   24.729410] 9f80: 00000000 00000000 c0decf18 00000000 00000000 00000000 00000000 00000000
[   24.729788] 9fa0: 00000000 c0decf20 00000000 c01010b4 00000000 00000000 00000000 00000000
[   24.730167] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   24.730544] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[   24.730948] [<c070c740>] (reg_fixed_voltage_probe) from [<c07ae608>] (platform_drv_probe+0x48/0x98)
[   24.731194] [<c07ae608>] (platform_drv_probe) from [<c07ac34c>] (really_probe+0x22c/0x34c)
[   24.731404] [<c07ac34c>] (really_probe) from [<c07ac5e0>] (driver_probe_device+0x5c/0x16c)
[   24.731606] [<c07ac5e0>] (driver_probe_device) from [<c07aa4fc>] (bus_for_each_drv+0x54/0xb8)
[   24.731810] [<c07aa4fc>] (bus_for_each_drv) from [<c07ac0a4>] (__device_attach+0xcc/0x140)
[   24.732010] [<c07ac0a4>] (__device_attach) from [<c07ab3b4>] (bus_probe_device+0x88/0x90)
[   24.732210] [<c07ab3b4>] (bus_probe_device) from [<c07a7ab8>] (device_add+0x388/0x608)
[   24.732406] [<c07a7ab8>] (device_add) from [<c07ae3d4>] (platform_device_add+0x100/0x210)
[   24.732612] [<c07ae3d4>] (platform_device_add) from [<c070a4a8>] (regulator_register_always_on+0xa0/0xc8)
[   24.732847] [<c070a4a8>] (regulator_register_always_on) from [<c130d094>] (kzm_late_init+0x48/0x88)
[   24.733069] [<c130d094>] (kzm_late_init) from [<c1303c7c>] (init_machine_late+0x1c/0x8c)
[   24.733292] [<c1303c7c>] (init_machine_late) from [<c01031d8>] (do_one_initcall+0x80/0x3ac)
[   24.733500] [<c01031d8>] (do_one_initcall) from [<c1301028>] (kernel_init_freeable+0x120/0x1e8)
[   24.733710] [<c1301028>] (kernel_init_freeable) from [<c0decf20>] (kernel_init+0x8/0x118)
[   24.733909] [<c0decf20>] (kernel_init) from [<c01010b4>] (ret_from_fork+0x14/0x20)
[   24.734111] Exception stack(0xc20a9fb0 to 0xc20a9ff8)
[   24.734355] 9fa0:                                     00000000 00000000 00000000 00000000
[   24.734758] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[   24.735101] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[   24.735650] Code: eb0d74e5 e3a03000 e3a02d37 e3a010e8 (e59090c0)
[   24.737370] ---[ end trace d0f5e68eb88278a8 ]---
[   24.739335] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

---
# bad: [ad062195731bea1624ce7160e79e0fcdaa25c1b5] Merge tag 'platform-drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-x86
# good: [4d856f72c10ecb060868ed10ff1b1453943fc6c8] Linux 5.3
git bisect start 'ad062195731b' '4d856f72c10e'
# bad: [d47ebd684229f0048be5def6027bfcfbfe2db0d6] Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
git bisect bad d47ebd684229f0048be5def6027bfcfbfe2db0d6
# bad: [52a5525214d0d612160154d902956eca0558b7c0] Merge tag 'iommu-updates-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
git bisect bad 52a5525214d0d612160154d902956eca0558b7c0
# bad: [aa62325dc38de2be8b1c27eb180ad3751b3f58ec] Merge tag 'spi-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
git bisect bad aa62325dc38de2be8b1c27eb180ad3751b3f58ec
# bad: [c4d11ccb2b5cec6cdef7aeeb0017473d23031d96] Merge tag 'regulator-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
git bisect bad c4d11ccb2b5cec6cdef7aeeb0017473d23031d96
# good: [6729fb666a3b5a9a5ffa1bb6589127f7e4d35c38] Merge tag 'hwmon-for-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
git bisect good 6729fb666a3b5a9a5ffa1bb6589127f7e4d35c38
# good: [92fd0db2cd414c5c78f8f959ed7325e2b24f9445] regulator: sy8824x: add SY20276 support
git bisect good 92fd0db2cd414c5c78f8f959ed7325e2b24f9445
# good: [c0b913447b75538c3cf4b8016fd2e06509895020] regulator: slg51000: use devm_gpiod_get_optional() in probe
git bisect good c0b913447b75538c3cf4b8016fd2e06509895020
# bad: [c82f27df07573ec7b124efe176d2ac6c038787a5] regulator: core: Fix error return for /sys access
git bisect bad c82f27df07573ec7b124efe176d2ac6c038787a5
# bad: [9c86d003d62030e064f5670fb6172b65afd21e86] dt-bindings: regulator: add regulator-fixed-clock binding
git bisect bad 9c86d003d62030e064f5670fb6172b65afd21e86
# good: [d57d90f4443bd725b3facdc6130a1940af4560c4] regulator: s2mps11: Consistently use local variable
git bisect good d57d90f4443bd725b3facdc6130a1940af4560c4
# bad: [8959e5324485ace9bedc33ce1e760b759d4dd2ac] regulator: fixed: add possibility to enable by clock
git bisect bad 8959e5324485ace9bedc33ce1e760b759d4dd2ac
# first bad commit: [8959e5324485ace9bedc33ce1e760b759d4dd2ac] regulator: fixed: add possibility to enable by clock

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

* Re: [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock
  2019-10-07 13:29   ` Guenter Roeck
@ 2019-10-07 13:57     ` Philippe Schenker
  2019-10-07 14:25       ` Guenter Roeck
  0 siblings, 1 reply; 14+ messages in thread
From: Philippe Schenker @ 2019-10-07 13:57 UTC (permalink / raw)
  To: linux
  Cc: Max Krummenacher, Marcel Ziswiler, Luka Pivk, s.hauer, broonie,
	devicetree, linux-kernel, shawnguo, Stefan Agner, lgirdwood,
	robh+dt, mark.rutland

On Mon, 2019-10-07 at 06:29 -0700, Guenter Roeck wrote:
> On Tue, Sep 10, 2019 at 06:21:15AM +0000, Philippe Schenker wrote:
> > This commit adds the possibility to choose the compatible
> > "regulator-fixed-clock" in devicetree.
> > 
> > This is a special regulator-fixed that has to have a clock, from
> > which
> > the regulator gets switched on and off.
> > 
> > Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> 
> This patch causes a crash in one of my qemu tests (kzm machine with
> imx_v6_v7_defconfig). Reverting this patch fixes the problem.
> Crash backtrace and bisect log attached below.
> 
> Guenter

Axel Lin sent a patch to fix this NULL pointer issue with my patch
(Thanks by the way :)). I guess it will help for your issue. Could you
please test if this patch solves your issue?

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git/commit/?h=for-5.4&id=1d6db22ff7d67a17c571543c69c63b1d261249b0

https://lkml.org/lkml/2019/9/21/199

Mark Brown queued this patch already in his git-repo.

Philippe

> 
> ---
> [   24.718451] Unable to handle kernel NULL pointer dereference at
> virtual address 000000c0
> [   24.718774] pgd = (ptrval)
> [   24.718946] [000000c0] *pgd=00000000
> [   24.719688] Internal error: Oops: 5 [#1] SMP ARM
> [   24.720007] Modules linked in:
> [   24.720356] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.0-rc1-
> 00258-g2d00aee21a5d #1
> [   24.720522] Hardware name: Kyoto Microcomputer Co., Ltd. KZM-ARM11-
> 01
> [   24.721143] PC is at reg_fixed_voltage_probe+0x38/0x2f4
> [   24.721279] LR is at reg_fixed_voltage_probe+0x2c/0x2f4
> [   24.721407] pc : [<c070c740>]    lr : [<c070c734>]    psr: 60000053
> [   24.721551] sp : c20a9d60  ip : 00000000  fp : c13bf34c
> [   24.721677] r10: 00000000  r9 : c1479348  r8 : c30208d0
> [   24.721805] r7 : c1408b08  r6 : c30208e0  r5 : 00000000  r4 :
> c30208e0
> [   24.721958] r3 : 00000000  r2 : 00000dc0  r1 : 000000e8  r0 :
> 00000000
> [   24.722145] Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA
> ARM  Segment none
> [   24.722273] Control: 00c5387d  Table: 80004008  DAC: 00000051
> [   24.722435] Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
> [   24.722616] Stack: (0xc20a9d60 to 0xc20aa000)
> [   24.723031] 9d60: c3019d90 c033ff9c 00000000 c301b380 c21c2700
> 00000000 c21c2700 c301b380
> [   24.723407] 9d80: c3019d90 61093934 00000001 c30208e0 00000000
> c1479348 00000000 00000000
> [   24.723767] 9da0: c1479348 00000000 c13bf34c c07ae608 c30208e0
> c1b63da0 c1b63da4 00000000
> [   24.724120] 9dc0: 00000000 c07ac34c c30208e0 c1479348 c07ac7a0
> c1408b08 00000001 00000000
> [   24.724485] 9de0: c1300584 c07ac5e0 c1479348 c20a9e44 c30208e0
> 00000000 c20a9e44 c07ac7a0
> [   24.724862] 9e00: c1408b08 00000001 00000000 c1300584 c13bf34c
> c07aa4fc fffffff3 c20904d4
> [   24.725215] 9e20: c21a1dd4 61093934 c30208e0 c30208e0 c3020968
> c1408b08 c1408b08 c07ac0a4
> [   24.725575] 9e40: c209c000 c30208e0 00000001 61093934 c30208e0
> c30208e0 c1488db8 c1408b08
> [   24.725963] 9e60: 00000000 c07ab3b4 c30208e0 c1488b00 00000000
> c07a7ab8 c1300584 c0dd7b04
> [   24.726347] 9e80: c1408b08 c30208d0 c30208d0 61093934 c20a9ea8
> c3020800 00000000 c30208d0
> [   24.726744] 9ea0: c30208e0 c14146d8 c14f93cc c07ae3d4 c3020800
> c30208d0 00000000 00000002
> [   24.727127] 9ec0: c14146d8 c14f93cc c1300584 c070a4a8 c14146d8
> c1408b28 c1408b08 c1303c60
> [   24.727504] 9ee0: 00000000 c130d094 00000000 c01aa5a4 c14fa7a0
> c1303c7c c14fa7a0 c01031d8
> [   24.727894] 9f00: 0000019e 00000000 c7ffccec c7ffccda c12b19ac
> 0000019e 0000019e c01513b8
> [   24.728277] 9f20: c1408b08 c018ab84 c1408b08 c14fa7a0 c1408b28
> c1500700 c139f850 0000019e
> [   24.728662] 9f40: c1300584 c01aa5a4 00000000 61093934 c139f874
> c1500700 00000008 c1500700
> [   24.729041] 9f60: c139f854 0000019e c1300584 c1301028 00000007
> 00000007 00000000 c1300584
> [   24.729410] 9f80: 00000000 00000000 c0decf18 00000000 00000000
> 00000000 00000000 00000000
> [   24.729788] 9fa0: 00000000 c0decf20 00000000 c01010b4 00000000
> 00000000 00000000 00000000
> [   24.730167] 9fc0: 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
> [   24.730544] 9fe0: 00000000 00000000 00000000 00000000 00000013
> 00000000 00000000 00000000
> [   24.730948] [<c070c740>] (reg_fixed_voltage_probe) from
> [<c07ae608>] (platform_drv_probe+0x48/0x98)
> [   24.731194] [<c07ae608>] (platform_drv_probe) from [<c07ac34c>]
> (really_probe+0x22c/0x34c)
> [   24.731404] [<c07ac34c>] (really_probe) from [<c07ac5e0>]
> (driver_probe_device+0x5c/0x16c)
> [   24.731606] [<c07ac5e0>] (driver_probe_device) from [<c07aa4fc>]
> (bus_for_each_drv+0x54/0xb8)
> [   24.731810] [<c07aa4fc>] (bus_for_each_drv) from [<c07ac0a4>]
> (__device_attach+0xcc/0x140)
> [   24.732010] [<c07ac0a4>] (__device_attach) from [<c07ab3b4>]
> (bus_probe_device+0x88/0x90)
> [   24.732210] [<c07ab3b4>] (bus_probe_device) from [<c07a7ab8>]
> (device_add+0x388/0x608)
> [   24.732406] [<c07a7ab8>] (device_add) from [<c07ae3d4>]
> (platform_device_add+0x100/0x210)
> [   24.732612] [<c07ae3d4>] (platform_device_add) from [<c070a4a8>]
> (regulator_register_always_on+0xa0/0xc8)
> [   24.732847] [<c070a4a8>] (regulator_register_always_on) from
> [<c130d094>] (kzm_late_init+0x48/0x88)
> [   24.733069] [<c130d094>] (kzm_late_init) from [<c1303c7c>]
> (init_machine_late+0x1c/0x8c)
> [   24.733292] [<c1303c7c>] (init_machine_late) from [<c01031d8>]
> (do_one_initcall+0x80/0x3ac)
> [   24.733500] [<c01031d8>] (do_one_initcall) from [<c1301028>]
> (kernel_init_freeable+0x120/0x1e8)
> [   24.733710] [<c1301028>] (kernel_init_freeable) from [<c0decf20>]
> (kernel_init+0x8/0x118)
> [   24.733909] [<c0decf20>] (kernel_init) from [<c01010b4>]
> (ret_from_fork+0x14/0x20)
> [   24.734111] Exception stack(0xc20a9fb0 to 0xc20a9ff8)
> [   24.734355] 9fa0:                                     00000000
> 00000000 00000000 00000000
> [   24.734758] 9fc0: 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
> [   24.735101] 9fe0: 00000000 00000000 00000000 00000000 00000013
> 00000000
> [   24.735650] Code: eb0d74e5 e3a03000 e3a02d37 e3a010e8 (e59090c0)
> [   24.737370] ---[ end trace d0f5e68eb88278a8 ]---
> [   24.739335] Kernel panic - not syncing: Attempted to kill init!
> exitcode=0x0000000b
> 
> ---
> # bad: [ad062195731bea1624ce7160e79e0fcdaa25c1b5] Merge tag 'platform-
> drivers-x86-v5.4-1' of git://git.infradead.org/linux-platform-drivers-
> x86
> # good: [4d856f72c10ecb060868ed10ff1b1453943fc6c8] Linux 5.3
> git bisect start 'ad062195731b' '4d856f72c10e'
> # bad: [d47ebd684229f0048be5def6027bfcfbfe2db0d6] Merge tag 'armsoc-
> defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> git bisect bad d47ebd684229f0048be5def6027bfcfbfe2db0d6
> # bad: [52a5525214d0d612160154d902956eca0558b7c0] Merge tag 'iommu-
> updates-v5.4' of
> git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
> git bisect bad 52a5525214d0d612160154d902956eca0558b7c0
> # bad: [aa62325dc38de2be8b1c27eb180ad3751b3f58ec] Merge tag 'spi-v5.4' 
> of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
> git bisect bad aa62325dc38de2be8b1c27eb180ad3751b3f58ec
> # bad: [c4d11ccb2b5cec6cdef7aeeb0017473d23031d96] Merge tag
> 'regulator-v5.4' of
> git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
> git bisect bad c4d11ccb2b5cec6cdef7aeeb0017473d23031d96
> # good: [6729fb666a3b5a9a5ffa1bb6589127f7e4d35c38] Merge tag 'hwmon-
> for-v5.4' of
> git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
> git bisect good 6729fb666a3b5a9a5ffa1bb6589127f7e4d35c38
> # good: [92fd0db2cd414c5c78f8f959ed7325e2b24f9445] regulator: sy8824x:
> add SY20276 support
> git bisect good 92fd0db2cd414c5c78f8f959ed7325e2b24f9445
> # good: [c0b913447b75538c3cf4b8016fd2e06509895020] regulator:
> slg51000: use devm_gpiod_get_optional() in probe
> git bisect good c0b913447b75538c3cf4b8016fd2e06509895020
> # bad: [c82f27df07573ec7b124efe176d2ac6c038787a5] regulator: core: Fix
> error return for /sys access
> git bisect bad c82f27df07573ec7b124efe176d2ac6c038787a5
> # bad: [9c86d003d62030e064f5670fb6172b65afd21e86] dt-bindings:
> regulator: add regulator-fixed-clock binding
> git bisect bad 9c86d003d62030e064f5670fb6172b65afd21e86
> # good: [d57d90f4443bd725b3facdc6130a1940af4560c4] regulator: s2mps11:
> Consistently use local variable
> git bisect good d57d90f4443bd725b3facdc6130a1940af4560c4
> # bad: [8959e5324485ace9bedc33ce1e760b759d4dd2ac] regulator: fixed:
> add possibility to enable by clock
> git bisect bad 8959e5324485ace9bedc33ce1e760b759d4dd2ac
> # first bad commit: [8959e5324485ace9bedc33ce1e760b759d4dd2ac]
> regulator: fixed: add possibility to enable by clock

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

* Re: [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock
  2019-10-07 13:57     ` Philippe Schenker
@ 2019-10-07 14:25       ` Guenter Roeck
  0 siblings, 0 replies; 14+ messages in thread
From: Guenter Roeck @ 2019-10-07 14:25 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: Max Krummenacher, Marcel Ziswiler, Luka Pivk, s.hauer, broonie,
	devicetree, linux-kernel, shawnguo, Stefan Agner, lgirdwood,
	robh+dt, mark.rutland

On 10/7/19 6:57 AM, Philippe Schenker wrote:
> On Mon, 2019-10-07 at 06:29 -0700, Guenter Roeck wrote:
>> On Tue, Sep 10, 2019 at 06:21:15AM +0000, Philippe Schenker wrote:
>>> This commit adds the possibility to choose the compatible
>>> "regulator-fixed-clock" in devicetree.
>>>
>>> This is a special regulator-fixed that has to have a clock, from
>>> which
>>> the regulator gets switched on and off.
>>>
>>> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
>>
>> This patch causes a crash in one of my qemu tests (kzm machine with
>> imx_v6_v7_defconfig). Reverting this patch fixes the problem.
>> Crash backtrace and bisect log attached below.
>>
>> Guenter
> 
> Axel Lin sent a patch to fix this NULL pointer issue with my patch
> (Thanks by the way :)). I guess it will help for your issue. Could you
> please test if this patch solves your issue?
> 

Yes, it does. I replied with Tested-by: on the fixup patch.

Thanks,
Guenter

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

end of thread, other threads:[~2019-10-07 14:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-10  6:21 [PATCH v2 0/3] Add new binding regulator-fixed-clock to regulator-fixed Philippe Schenker
2019-09-10  6:21 ` Philippe Schenker
2019-09-10  6:21 ` Philippe Schenker
2019-09-10  6:21 ` [PATCH v2 1/3] regulator: fixed: add possibility to enable by clock Philippe Schenker
2019-10-07 13:29   ` Guenter Roeck
2019-10-07 13:57     ` Philippe Schenker
2019-10-07 14:25       ` Guenter Roeck
2019-09-10  6:21 ` [PATCH v2 2/3] ARM: dts: imx6ull-colibri: add phy-supply and respective regulator Philippe Schenker
2019-09-10  6:21   ` Philippe Schenker
2019-09-10  6:21   ` Philippe Schenker
2019-09-10  6:21 ` [PATCH v2 3/3] dt-bindings: regulator: add regulator-fixed-clock binding Philippe Schenker
2019-09-10  8:35   ` Rob Herring
2019-09-17 20:13   ` Rob Herring
2019-09-23  6:58     ` Philippe Schenker

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.