linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN
@ 2023-09-16 10:05 Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 1/5] dt-bindings: mfd: convert twl-family.txt to json-schema Andreas Kemnade
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk

To have WLAN working properly, enable a 32K clock of the TWL6032.
In earlier tests, it was still enabled from a previous boot into
the vendor system.

Changes in V4:
- use dev_err_probe in clk probe()
- R-by

Changes in V3:
- maintainer change in binding doc
- fix references to binding doc
- additionalProperties: false
- remove subdevices also from examples until
  subdevices are referenced/added

Changes in V2:
- no separate device node for the clock
- converted toplevel node of TWL

Andreas Kemnade (5):
  dt-bindings: mfd: convert twl-family.txt to json-schema
  dt-bindings: mfd: ti,twl: Add clock provider properties
  mfd: twl-core: Add a clock subdevice for the TWL6032
  clk: twl: add clock driver for TWL6032
  ARM: dts: omap4-embt2ws: enable 32K clock on WLAN

 .../bindings/input/twl4030-pwrbutton.txt      |   2 +-
 .../devicetree/bindings/mfd/ti,twl.yaml       |  67 ++++++
 .../devicetree/bindings/mfd/twl-family.txt    |  46 ----
 .../boot/dts/ti/omap/omap4-epson-embt2ws.dts  |   8 +
 drivers/clk/Kconfig                           |   9 +
 drivers/clk/Makefile                          |   1 +
 drivers/clk/clk-twl.c                         | 197 ++++++++++++++++++
 drivers/mfd/twl-core.c                        |  16 ++
 8 files changed, 299 insertions(+), 47 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/ti,twl.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/twl-family.txt
 create mode 100644 drivers/clk/clk-twl.c

-- 
2.39.2


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

* [PATCH v4 1/5] dt-bindings: mfd: convert twl-family.txt to json-schema
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
@ 2023-09-16 10:05 ` Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties Andreas Kemnade
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk
  Cc: Conor Dooley

Convert the TWL[46]030 binding to DT schema format. To do it as a step by
step work, do not include / handle nodes for subdevices yet, just convert
things with minimal corrections. There are already some bindings for its
subdevices in the tree.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
---
 .../bindings/input/twl4030-pwrbutton.txt      |  2 +-
 .../devicetree/bindings/mfd/ti,twl.yaml       | 64 +++++++++++++++++++
 .../devicetree/bindings/mfd/twl-family.txt    | 46 -------------
 3 files changed, 65 insertions(+), 47 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/ti,twl.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/twl-family.txt

diff --git a/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt
index f5021214edecb..6c201a2ba8acf 100644
--- a/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt
+++ b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt
@@ -1,7 +1,7 @@
 Texas Instruments TWL family (twl4030) pwrbutton module
 
 This module is part of the TWL4030. For more details about the whole
-chip see Documentation/devicetree/bindings/mfd/twl-family.txt.
+chip see Documentation/devicetree/bindings/mfd/ti,twl.yaml.
 
 This module provides a simple power button event via an Interrupt.
 
diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
new file mode 100644
index 0000000000000..f125b254a4b93
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/ti,twl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments TWL family
+
+maintainers:
+  - Andreas Kemnade <andreas@kemnade.info>
+
+description: |
+  The TWLs are Integrated Power Management Chips.
+  Some version might contain much more analog function like
+  USB transceiver or Audio amplifier.
+  These chips are connected to an i2c bus.
+
+properties:
+  compatible:
+    description:
+      TWL4030 for integrated power-management/audio CODEC device used in OMAP3
+      based boards
+      TWL6030/32 for integrated power-management used in OMAP4 based boards
+    enum:
+      - ti,twl4030
+      - ti,twl6030
+      - ti,twl6032
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 1
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      pmic@48 {
+        compatible = "ti,twl6030";
+        reg = <0x48>;
+        interrupts = <39>; /* IRQ_SYS_1N cascaded to gic */
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupt-parent = <&gic>;
+      };
+    };
+
diff --git a/Documentation/devicetree/bindings/mfd/twl-family.txt b/Documentation/devicetree/bindings/mfd/twl-family.txt
deleted file mode 100644
index c2f9302965dea..0000000000000
--- a/Documentation/devicetree/bindings/mfd/twl-family.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-Texas Instruments TWL family
-
-The TWLs are Integrated Power Management Chips.
-Some version might contain much more analog function like
-USB transceiver or Audio amplifier.
-These chips are connected to an i2c bus.
-
-
-Required properties:
-- compatible : Must be "ti,twl4030";
-  For Integrated power-management/audio CODEC device used in OMAP3
-  based boards
-- compatible : Must be "ti,twl6030";
-  For Integrated power-management used in OMAP4 based boards
-- interrupts : This i2c device has an IRQ line connected to the main SoC
-- interrupt-controller : Since the twl support several interrupts internally,
-  it is considered as an interrupt controller cascaded to the SoC one.
-- #interrupt-cells = <1>;
-
-Optional node:
-- Child nodes contain in the twl. The twl family is made of several variants
-  that support a different number of features.
-  The children nodes will thus depend of the capability of the variant.
-
-
-Example:
-/*
- * Integrated Power Management Chip
- * https://www.ti.com/lit/ds/symlink/twl6030.pdf
- */
-twl@48 {
-    compatible = "ti,twl6030";
-    reg = <0x48>;
-    interrupts = <39>; /* IRQ_SYS_1N cascaded to gic */
-    interrupt-controller;
-    #interrupt-cells = <1>;
-    interrupt-parent = <&gic>;
-    #address-cells = <1>;
-    #size-cells = <0>;
-
-    twl_rtc {
-        compatible = "ti,twl_rtc";
-        interrupts = <11>;
-        reg = <0>;
-    };
-};
-- 
2.39.2


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

* [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 1/5] dt-bindings: mfd: convert twl-family.txt to json-schema Andreas Kemnade
@ 2023-09-16 10:05 ` Andreas Kemnade
  2023-10-19  1:22   ` Stephen Boyd
  2023-09-16 10:05 ` [PATCH v4 3/5] mfd: twl-core: Add a clock subdevice for the TWL6032 Andreas Kemnade
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk
  Cc: Conor Dooley

Since these devices provide clock outputs, add the corresponding
property.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
---
 Documentation/devicetree/bindings/mfd/ti,twl.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
index f125b254a4b93..c04d57ba22b49 100644
--- a/Documentation/devicetree/bindings/mfd/ti,twl.yaml
+++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
@@ -37,6 +37,9 @@ properties:
   "#interrupt-cells":
     const: 1
 
+  "#clock-cells":
+    const: 1
+
 additionalProperties: false
 
 required:
-- 
2.39.2


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

* [PATCH v4 3/5] mfd: twl-core: Add a clock subdevice for the TWL6032
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 1/5] dt-bindings: mfd: convert twl-family.txt to json-schema Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties Andreas Kemnade
@ 2023-09-16 10:05 ` Andreas Kemnade
  2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk

Clock device needs no separate devicetree node, so add it as
a platform device. Other devices in the family also have controllable
clocks, but due to the lack of testing, just add it for the TWL6032
now.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
 drivers/mfd/twl-core.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
index ce01a87f8dc39..234500b2e53fc 100644
--- a/drivers/mfd/twl-core.c
+++ b/drivers/mfd/twl-core.c
@@ -31,6 +31,8 @@
 #include <linux/regulator/machine.h>
 
 #include <linux/i2c.h>
+
+#include <linux/mfd/core.h>
 #include <linux/mfd/twl.h>
 
 /* Register descriptions for audio */
@@ -690,6 +692,10 @@ static struct of_dev_auxdata twl_auxdata_lookup[] = {
 	{ /* sentinel */ },
 };
 
+static const struct mfd_cell twl6032_cells[] = {
+	{ .name = "twl6032-clk" },
+};
+
 /* NOTE: This driver only handles a single twl4030/tps659x0 chip */
 static int
 twl_probe(struct i2c_client *client)
@@ -836,6 +842,16 @@ twl_probe(struct i2c_client *client)
 				 TWL4030_DCDC_GLOBAL_CFG);
 	}
 
+	if (id->driver_data == (TWL6030_CLASS | TWL6032_SUBCLASS)) {
+		status = devm_mfd_add_devices(&client->dev,
+					      PLATFORM_DEVID_NONE,
+					      twl6032_cells,
+					      ARRAY_SIZE(twl6032_cells),
+					      NULL, 0, NULL);
+		if (status < 0)
+			goto free;
+	}
+
 	status = of_platform_populate(node, NULL, twl_auxdata_lookup,
 				      &client->dev);
 
-- 
2.39.2


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

* [PATCH v4 4/5] clk: twl: add clock driver for TWL6032
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
                   ` (2 preceding siblings ...)
  2023-09-16 10:05 ` [PATCH v4 3/5] mfd: twl-core: Add a clock subdevice for the TWL6032 Andreas Kemnade
@ 2023-09-16 10:05 ` Andreas Kemnade
  2023-10-13  6:08   ` Andreas Kemnade
                     ` (2 more replies)
  2023-09-16 10:05 ` [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN Andreas Kemnade
  2023-09-20 13:45 ` (subset) [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Lee Jones
  5 siblings, 3 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk

The TWL6032 has some clock outputs which are controlled like
fixed-voltage regulators, in some drivers for these chips
found in the wild, just the regulator api is abused for controlling
them, so simply use something similar to the regulator functions.
Due to a lack of hardware available for testing, leave out the
TWL6030-specific part of those functions.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
 drivers/clk/Kconfig   |   9 ++
 drivers/clk/Makefile  |   1 +
 drivers/clk/clk-twl.c | 197 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 207 insertions(+)
 create mode 100644 drivers/clk/clk-twl.c

diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index c30099866174d..3944f081ebade 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -277,6 +277,15 @@ config COMMON_CLK_S2MPS11
 	  clock. These multi-function devices have two (S2MPS14) or three
 	  (S2MPS11, S5M8767) fixed-rate oscillators, clocked at 32KHz each.
 
+config CLK_TWL
+	tristate "Clock driver for the TWL PMIC family"
+	depends on TWL4030_CORE
+	help
+	  Enable support for controlling the clock resources on TWL family
+	  PMICs. These devices have some 32K clock outputs which can be
+	  controlled by software. For now, only the TWL6032 clocks are
+	  supported.
+
 config CLK_TWL6040
 	tristate "External McPDM functional clock from twl6040"
 	depends on TWL6040_CORE
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index 18969cbd4bb1e..86e46adcb619c 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -72,6 +72,7 @@ obj-$(CONFIG_COMMON_CLK_STM32H7)	+= clk-stm32h7.o
 obj-$(CONFIG_COMMON_CLK_STM32MP157)	+= clk-stm32mp1.o
 obj-$(CONFIG_COMMON_CLK_TPS68470)      += clk-tps68470.o
 obj-$(CONFIG_CLK_TWL6040)		+= clk-twl6040.o
+obj-$(CONFIG_CLK_TWL)			+= clk-twl.o
 obj-$(CONFIG_ARCH_VT8500)		+= clk-vt8500.o
 obj-$(CONFIG_COMMON_CLK_RS9_PCIE)	+= clk-renesas-pcie.o
 obj-$(CONFIG_COMMON_CLK_SI521XX)	+= clk-si521xx.o
diff --git a/drivers/clk/clk-twl.c b/drivers/clk/clk-twl.c
new file mode 100644
index 0000000000000..eab9d3c8ed8ae
--- /dev/null
+++ b/drivers/clk/clk-twl.c
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Clock driver for twl device.
+ *
+ * inspired by the driver for the Palmas device
+ */
+
+#include <linux/clk-provider.h>
+#include <linux/mfd/twl.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+
+#define VREG_STATE              2
+#define TWL6030_CFG_STATE_OFF   0x00
+#define TWL6030_CFG_STATE_ON    0x01
+#define TWL6030_CFG_STATE_MASK  0x03
+
+struct twl_clock_info {
+	struct device *dev;
+	u8 base;
+	struct clk_hw hw;
+};
+
+static inline int
+twlclk_read(struct twl_clock_info *info, unsigned int slave_subgp,
+	    unsigned int offset)
+{
+	u8 value;
+	int status;
+
+	status = twl_i2c_read_u8(slave_subgp, &value,
+				 info->base + offset);
+	return (status < 0) ? status : value;
+}
+
+static inline int
+twlclk_write(struct twl_clock_info *info, unsigned int slave_subgp,
+	     unsigned int offset, u8 value)
+{
+	return twl_i2c_write_u8(slave_subgp, value,
+				info->base + offset);
+}
+
+static inline struct twl_clock_info *to_twl_clks_info(struct clk_hw *hw)
+{
+	return container_of(hw, struct twl_clock_info, hw);
+}
+
+static unsigned long twl_clks_recalc_rate(struct clk_hw *hw,
+					  unsigned long parent_rate)
+{
+	return 32768;
+}
+
+static int twl6032_clks_prepare(struct clk_hw *hw)
+{
+	struct twl_clock_info *cinfo = to_twl_clks_info(hw);
+	int ret;
+
+	ret = twlclk_write(cinfo, TWL_MODULE_PM_RECEIVER, VREG_STATE,
+			   TWL6030_CFG_STATE_ON);
+	if (ret < 0)
+		dev_err(cinfo->dev, "clk prepare failed\n");
+
+	return ret;
+}
+
+static void twl6032_clks_unprepare(struct clk_hw *hw)
+{
+	struct twl_clock_info *cinfo = to_twl_clks_info(hw);
+	int ret;
+
+	ret = twlclk_write(cinfo, TWL_MODULE_PM_RECEIVER, VREG_STATE,
+			   TWL6030_CFG_STATE_OFF);
+	if (ret < 0)
+		dev_err(cinfo->dev, "clk unprepare failed\n");
+}
+
+static int twl6032_clks_is_prepared(struct clk_hw *hw)
+{
+	struct twl_clock_info *cinfo = to_twl_clks_info(hw);
+	int val;
+
+	val = twlclk_read(cinfo, TWL_MODULE_PM_RECEIVER, VREG_STATE);
+	if (val < 0) {
+		dev_err(cinfo->dev, "clk read failed\n");
+		return val;
+	}
+
+	val &= TWL6030_CFG_STATE_MASK;
+
+	return val == TWL6030_CFG_STATE_ON;
+}
+
+static const struct clk_ops twl6032_clks_ops = {
+	.prepare	= twl6032_clks_prepare,
+	.unprepare	= twl6032_clks_unprepare,
+	.is_prepared	= twl6032_clks_is_prepared,
+	.recalc_rate	= twl_clks_recalc_rate,
+};
+
+struct twl_clks_data {
+	struct clk_init_data init;
+	u8 base;
+};
+
+static const struct twl_clks_data twl6032_clks[] = {
+	{
+		.init = {
+			.name = "clk32kg",
+			.ops = &twl6032_clks_ops,
+			.flags = CLK_IGNORE_UNUSED,
+		},
+		.base = 0x8C,
+	},
+	{
+		.init = {
+			.name = "clk32kaudio",
+			.ops = &twl6032_clks_ops,
+			.flags = CLK_IGNORE_UNUSED,
+		},
+		.base = 0x8F,
+	},
+	{
+		/* sentinel */
+	}
+};
+
+static int twl_clks_probe(struct platform_device *pdev)
+{
+	struct clk_hw_onecell_data *clk_data;
+	const struct twl_clks_data *hw_data;
+
+	struct twl_clock_info *cinfo;
+	int ret;
+	int i;
+	int count;
+
+	hw_data = twl6032_clks;
+	for (count = 0; hw_data[count].init.name; count++)
+		;
+
+	clk_data = devm_kzalloc(&pdev->dev,
+				struct_size(clk_data, hws, count),
+				GFP_KERNEL);
+	if (!clk_data)
+		return -ENOMEM;
+
+	clk_data->num = count;
+	cinfo = devm_kcalloc(&pdev->dev, count, sizeof(*cinfo), GFP_KERNEL);
+	if (!cinfo)
+		return -ENOMEM;
+
+	for (i = 0; i < count; i++) {
+		cinfo[i].base = hw_data[i].base;
+		cinfo[i].dev = &pdev->dev;
+		cinfo[i].hw.init = &hw_data[i].init;
+		ret = devm_clk_hw_register(&pdev->dev, &cinfo[i].hw);
+		if (ret) {
+			return dev_err_probe(&pdev->dev, ret,
+					     "Fail to register clock %s\n",
+					     hw_data[i].init.name);
+		}
+		clk_data->hws[i] = &cinfo[i].hw;
+	}
+
+	ret = devm_of_clk_add_hw_provider(&pdev->dev,
+					  of_clk_hw_onecell_get, clk_data);
+	if (ret < 0)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Fail to add clock driver\n");
+
+	return 0;
+}
+
+static const struct platform_device_id twl_clks_id[] = {
+	{
+		.name = "twl6032-clk",
+	}, {
+		/* sentinel */
+	}
+};
+MODULE_DEVICE_TABLE(platform, twl_clks_id);
+
+static struct platform_driver twl_clks_driver = {
+	.driver = {
+		.name = "twl-clk",
+	},
+	.probe = twl_clks_probe,
+	.id_table = twl_clks_id,
+};
+
+module_platform_driver(twl_clks_driver);
+
+MODULE_DESCRIPTION("Clock driver for TWL Series Devices");
+MODULE_LICENSE("GPL");
-- 
2.39.2


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

* [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
                   ` (3 preceding siblings ...)
  2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
@ 2023-09-16 10:05 ` Andreas Kemnade
  2023-10-07  6:53   ` Tony Lindgren
  2023-09-20 13:45 ` (subset) [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Lee Jones
  5 siblings, 1 reply; 14+ messages in thread
From: Andreas Kemnade @ 2023-09-16 10:05 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk

WLAN did only work if clock was left enabled by the original system,
so make it fully enable the needed resources itself.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
 arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts b/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts
index ee86981b2e448..9d2f2d8639496 100644
--- a/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts
+++ b/arch/arm/boot/dts/ti/omap/omap4-epson-embt2ws.dts
@@ -69,6 +69,12 @@ unknown_supply: unknown-supply {
 		regulator-name = "unknown";
 	};
 
+	wl12xx_pwrseq: wl12xx-pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		clocks = <&twl 1>;
+		clock-names = "ext_clock";
+	};
+
        /* regulator for wl12xx on sdio2 */
 	wl12xx_vmmc: wl12xx-vmmc {
 		pinctrl-names = "default";
@@ -92,6 +98,7 @@ &i2c1 {
 	twl: pmic@48 {
 		compatible = "ti,twl6032";
 		reg = <0x48>;
+		#clock-cells = <1>;
 		/* IRQ# = 7 */
 		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */
 		interrupt-controller;
@@ -316,6 +323,7 @@ &mmc3 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&wl12xx_pins>;
 	vmmc-supply = <&wl12xx_vmmc>;
+	mmc-pwrseq = <&wl12xx_pwrseq>;
 	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
 			       &omap4_pmx_core 0x12e>;
 	non-removable;
-- 
2.39.2


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

* Re: (subset) [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN
  2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
                   ` (4 preceding siblings ...)
  2023-09-16 10:05 ` [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN Andreas Kemnade
@ 2023-09-20 13:45 ` Lee Jones
  5 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2023-09-20 13:45 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, linux-input, devicetree,
	linux-kernel, linux-omap, linux-clk, Andreas Kemnade

On Sat, 16 Sep 2023 12:05:10 +0200, Andreas Kemnade wrote:
> To have WLAN working properly, enable a 32K clock of the TWL6032.
> In earlier tests, it was still enabled from a previous boot into
> the vendor system.
> 
> Changes in V4:
> - use dev_err_probe in clk probe()
> - R-by
> 
> [...]

Applied, thanks!

[1/5] dt-bindings: mfd: convert twl-family.txt to json-schema
      commit: 098e2d6fd72fc99097af33e6e8cb4cd0921a26ac
[2/5] dt-bindings: mfd: ti,twl: Add clock provider properties
      commit: eb9fba08e386ff98818de12b40a5ee1443129229
[3/5] mfd: twl-core: Add a clock subdevice for the TWL6032
      commit: 3e359099b245227c6729dd5f81f2757dea5d4656

--
Lee Jones [李琼斯]


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

* Re: [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN
  2023-09-16 10:05 ` [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN Andreas Kemnade
@ 2023-10-07  6:53   ` Tony Lindgren
  2023-11-30 12:03     ` Tony Lindgren
  0 siblings, 1 reply; 14+ messages in thread
From: Tony Lindgren @ 2023-10-07  6:53 UTC (permalink / raw)
  To: Andreas Kemnade
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, mturquette, sboyd, linux-input, devicetree,
	linux-kernel, linux-omap, linux-clk

* Andreas Kemnade <andreas@kemnade.info> [230916 13:05]:
> WLAN did only work if clock was left enabled by the original system,
> so make it fully enable the needed resources itself.

Seems applying this dts change before the clock patch is applied
would break wlan so please let me know when this is safe to apply.

Regards,

Tony

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

* Re: [PATCH v4 4/5] clk: twl: add clock driver for TWL6032
  2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
@ 2023-10-13  6:08   ` Andreas Kemnade
  2023-10-19  1:20   ` Stephen Boyd
  2023-10-19 23:43   ` Stephen Boyd
  2 siblings, 0 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-10-13  6:08 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, tony, mturquette, sboyd, andreas, linux-input,
	devicetree, linux-kernel, linux-omap, linux-clk

On Sat, 16 Sep 2023 12:05:14 +0200
Andreas Kemnade <andreas@kemnade.info> wrote:

> The TWL6032 has some clock outputs which are controlled like
> fixed-voltage regulators, in some drivers for these chips
> found in the wild, just the regulator api is abused for controlling
> them, so simply use something similar to the regulator functions.
> Due to a lack of hardware available for testing, leave out the
> TWL6030-specific part of those functions.
> 
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> ---
ping...

anything left to do here?

Regards,
Andreas

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

* Re: [PATCH v4 4/5] clk: twl: add clock driver for TWL6032
  2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
  2023-10-13  6:08   ` Andreas Kemnade
@ 2023-10-19  1:20   ` Stephen Boyd
  2023-10-19  7:18     ` Andreas Kemnade
  2023-10-19 23:43   ` Stephen Boyd
  2 siblings, 1 reply; 14+ messages in thread
From: Stephen Boyd @ 2023-10-19  1:20 UTC (permalink / raw)
  To: andreas, bcousson, conor+dt, devicetree, dmitry.torokhov,
	krzysztof.kozlowski+dt, lee, linux-clk, linux-input,
	linux-kernel, linux-omap, mturquette, robh+dt, tony

Quoting Andreas Kemnade (2023-09-16 03:05:14)
> The TWL6032 has some clock outputs which are controlled like
> fixed-voltage regulators, in some drivers for these chips
> found in the wild, just the regulator api is abused for controlling
> them, so simply use something similar to the regulator functions.
> Due to a lack of hardware available for testing, leave out the
> TWL6030-specific part of those functions.
> 
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> ---

Did you want me to pick this up in clk tree?

Acked-by: Stephen Boyd <sboyd@kernel.org>

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

* Re: [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties
  2023-09-16 10:05 ` [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties Andreas Kemnade
@ 2023-10-19  1:22   ` Stephen Boyd
  0 siblings, 0 replies; 14+ messages in thread
From: Stephen Boyd @ 2023-10-19  1:22 UTC (permalink / raw)
  To: andreas, bcousson, conor+dt, devicetree, dmitry.torokhov,
	krzysztof.kozlowski+dt, lee, linux-clk, linux-input,
	linux-kernel, linux-omap, mturquette, robh+dt, tony
  Cc: Conor Dooley

Quoting Andreas Kemnade (2023-09-16 03:05:12)
> Since these devices provide clock outputs, add the corresponding
> property.
> 
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
> ---

Acked-by: Stephen Boyd <sboyd@kernel.org>

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

* Re: [PATCH v4 4/5] clk: twl: add clock driver for TWL6032
  2023-10-19  1:20   ` Stephen Boyd
@ 2023-10-19  7:18     ` Andreas Kemnade
  0 siblings, 0 replies; 14+ messages in thread
From: Andreas Kemnade @ 2023-10-19  7:18 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: bcousson, conor+dt, devicetree, dmitry.torokhov,
	krzysztof.kozlowski+dt, lee, linux-clk, linux-input,
	linux-kernel, linux-omap, mturquette, robh+dt, tony

Am Wed, 18 Oct 2023 18:20:22 -0700
schrieb Stephen Boyd <sboyd@kernel.org>:

> Quoting Andreas Kemnade (2023-09-16 03:05:14)
> > The TWL6032 has some clock outputs which are controlled like
> > fixed-voltage regulators, in some drivers for these chips
> > found in the wild, just the regulator api is abused for controlling
> > them, so simply use something similar to the regulator functions.
> > Due to a lack of hardware available for testing, leave out the
> > TWL6030-specific part of those functions.
> > 
> > Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> > ---  
> 
> Did you want me to pick this up in clk tree?
> 
> Acked-by: Stephen Boyd <sboyd@kernel.org>
> 
Well, Lee has picked up 1-3 of this series, so I think it is a good idea
if you take it. I do not think it will make things any easier if it goes
through Tony's tree because part 5 is a bit tricky.
If picked up independently (of the whole set and not only part 4), there
will be a range of commits were WLAN will not work at all instead of
basically working randomly by the clock is enabled for some reason (can
happen if warm-booted from the vendor kernel).

So IMHO for part 5 we have to decide wether to decide if above is
considered to break bisectability and take the patch for 6.8 or
ignore that and take it for 6.7.

But no matter how we decide, that should not affect the route for this
part 4. So it is a good idea to have it through the clk tree.

Regrads,
Andreas

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

* Re: [PATCH v4 4/5] clk: twl: add clock driver for TWL6032
  2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
  2023-10-13  6:08   ` Andreas Kemnade
  2023-10-19  1:20   ` Stephen Boyd
@ 2023-10-19 23:43   ` Stephen Boyd
  2 siblings, 0 replies; 14+ messages in thread
From: Stephen Boyd @ 2023-10-19 23:43 UTC (permalink / raw)
  To: andreas, bcousson, conor+dt, devicetree, dmitry.torokhov,
	krzysztof.kozlowski+dt, lee, linux-clk, linux-input,
	linux-kernel, linux-omap, mturquette, robh+dt, tony

Quoting Andreas Kemnade (2023-09-16 03:05:14)
> The TWL6032 has some clock outputs which are controlled like
> fixed-voltage regulators, in some drivers for these chips
> found in the wild, just the regulator api is abused for controlling
> them, so simply use something similar to the regulator functions.
> Due to a lack of hardware available for testing, leave out the
> TWL6030-specific part of those functions.
> 
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> ---

Applied to clk-next

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

* Re: [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN
  2023-10-07  6:53   ` Tony Lindgren
@ 2023-11-30 12:03     ` Tony Lindgren
  0 siblings, 0 replies; 14+ messages in thread
From: Tony Lindgren @ 2023-11-30 12:03 UTC (permalink / raw)
  To: Andreas Kemnade
  Cc: dmitry.torokhov, robh+dt, krzysztof.kozlowski+dt, conor+dt, lee,
	bcousson, mturquette, sboyd, linux-input, devicetree,
	linux-kernel, linux-omap, linux-clk

* Tony Lindgren <tony@atomide.com> [231007 06:53]:
> * Andreas Kemnade <andreas@kemnade.info> [230916 13:05]:
> > WLAN did only work if clock was left enabled by the original system,
> > so make it fully enable the needed resources itself.
> 
> Seems applying this dts change before the clock patch is applied
> would break wlan so please let me know when this is safe to apply.

Applying into omap-for-v6.8/dt thanks.

Tony

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

end of thread, other threads:[~2023-11-30 12:03 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-16 10:05 [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Andreas Kemnade
2023-09-16 10:05 ` [PATCH v4 1/5] dt-bindings: mfd: convert twl-family.txt to json-schema Andreas Kemnade
2023-09-16 10:05 ` [PATCH v4 2/5] dt-bindings: mfd: ti,twl: Add clock provider properties Andreas Kemnade
2023-10-19  1:22   ` Stephen Boyd
2023-09-16 10:05 ` [PATCH v4 3/5] mfd: twl-core: Add a clock subdevice for the TWL6032 Andreas Kemnade
2023-09-16 10:05 ` [PATCH v4 4/5] clk: twl: add clock driver for TWL6032 Andreas Kemnade
2023-10-13  6:08   ` Andreas Kemnade
2023-10-19  1:20   ` Stephen Boyd
2023-10-19  7:18     ` Andreas Kemnade
2023-10-19 23:43   ` Stephen Boyd
2023-09-16 10:05 ` [PATCH v4 5/5] ARM: dts: omap4-embt2ws: enable 32K clock on WLAN Andreas Kemnade
2023-10-07  6:53   ` Tony Lindgren
2023-11-30 12:03     ` Tony Lindgren
2023-09-20 13:45 ` (subset) [PATCH v4 0/5] ARM: omap: omap4-embt2ws: 32K clock for WLAN Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).