stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3
       [not found] <cover.1571510481.git.hns@goldelico.com>
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-30 16:44   ` Ulf Hansson
  2019-10-19 18:41 ` [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card H. Nikolaus Schaller
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

Since v4.7 the dma initialization requires that there is a
device tree property for "rx" and "tx" channels which is
not provided by the pdata-quirks initialization.

By conversion of the mmc3 setup to device tree this will
finally allows to remove the OpenPandora wlan specific omap3
data-quirks.

Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Cc: <stable@vger.kernel.org> # 4.7.0
---
 arch/arm/boot/dts/omap3-pandora-common.dtsi | 37 +++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi b/arch/arm/boot/dts/omap3-pandora-common.dtsi
index ec5891718ae6..c595b3eb314d 100644
--- a/arch/arm/boot/dts/omap3-pandora-common.dtsi
+++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
@@ -226,6 +226,18 @@
 		gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;	/* GPIO_164 */
 	};
 
+	/* wl1251 wifi+bt module */
+	wlan_en: fixed-regulator-wg7210_en {
+		compatible = "regulator-fixed";
+		regulator-name = "vwlan";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		startup-delay-us = <50000>;
+		regulator-always-on;
+		enable-active-high;
+		gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+	};
+
 	/* wg7210 (wifi+bt module) 32k clock buffer */
 	wg7210_32k: fixed-regulator-wg7210_32k {
 		compatible = "regulator-fixed";
@@ -522,9 +534,30 @@
 	/*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/	/* GPIO_127 */
 };
 
-/* mmc3 is probed using pdata-quirks to pass wl1251 card data */
 &mmc3 {
-	status = "disabled";
+	vmmc-supply = <&wlan_en>;
+
+	bus-width = <4>;
+	non-removable;
+	ti,non-removable;
+	cap-power-off-card;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc3_pins>;
+
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	wlan: wl1251@1 {
+		compatible = "ti,wl1251";
+
+		reg = <1>;
+
+		interrupt-parent = <&gpio1>;
+		interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;	/* GPIO_21 */
+
+		ti,wl1251-has-eeprom;
+	};
 };
 
 /* bluetooth*/
-- 
2.19.1


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

* [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card
       [not found] <cover.1571510481.git.hns@goldelico.com>
  2019-10-19 18:41 ` [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3 H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-30 15:51   ` Ulf Hansson
  2019-10-19 18:41 ` [PATCH v2 06/11] omap: pdata-quirks: remove openpandora quirks for mmc3 and wl1251 H. Nikolaus Schaller
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

Pandora_wl1251_init_card was used to do special pdata based
setup of the sdio mmc interface. This does no longer work with
v4.7 and later. A fix requires a device tree based mmc3 setup.

Therefore we move the special setup to omap_hsmmc.c instead
of calling some pdata supplied init_card function.

The new code checks for a DT child node compatible to wl1251
so it will not affect other MMC3 use cases.

Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Cc: <stable@vger.kernel.org> # 4.7.0
---
 drivers/mmc/host/omap_hsmmc.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 952fa4063ff8..03ba80bcf319 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1512,6 +1512,27 @@ static void omap_hsmmc_init_card(struct mmc_host *mmc, struct mmc_card *card)
 
 	if (mmc_pdata(host)->init_card)
 		mmc_pdata(host)->init_card(card);
+	else if (card->type == MMC_TYPE_SDIO || card->type == MMC_TYPE_SD_COMBO) {
+		struct device_node *np = mmc_dev(mmc)->of_node;
+
+		np = of_get_compatible_child(np, "ti,wl1251");
+		if (np) {
+			/*
+			 * We have TI wl1251 attached to MMC3. Pass this information to
+			 * SDIO core because it can't be probed by normal methods.
+			 */
+
+			dev_info(host->dev, "found wl1251\n");
+			card->quirks |= MMC_QUIRK_NONSTD_SDIO;
+			card->cccr.wide_bus = 1;
+			card->cis.vendor = 0x104c;
+			card->cis.device = 0x9066;
+			card->cis.blksize = 512;
+			card->cis.max_dtr = 24000000;
+			card->ocr = 0x80;
+			of_node_put(np);
+		}
+	}
 }
 
 static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
-- 
2.19.1


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

* [PATCH v2 06/11] omap: pdata-quirks: remove openpandora quirks for mmc3 and wl1251
       [not found] <cover.1571510481.git.hns@goldelico.com>
  2019-10-19 18:41 ` [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3 H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 08/11] mmc: sdio: fix wl1251 vendor id H. Nikolaus Schaller
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

With a wl1251 child node of mmc3 in the device tree decoded
in omap_hsmmc.c to handle special wl1251 initialization, we do
no longer need to instantiate the mmc3 through pdata quirks.

We also can remove the wlan regulator and reset/interrupt definitions
and do them through device tree.

Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Cc: <stable@vger.kernel.org> # 4.7.0
---
 arch/arm/mach-omap2/pdata-quirks.c | 93 ------------------------------
 1 file changed, 93 deletions(-)

diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index 89734ef9ab1e..ecc1ef632951 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -303,108 +303,15 @@ static void __init omap3_logicpd_torpedo_init(void)
 }
 
 /* omap3pandora legacy devices */
-#define PANDORA_WIFI_IRQ_GPIO		21
-#define PANDORA_WIFI_NRESET_GPIO	23
 
 static struct platform_device pandora_backlight = {
 	.name	= "pandora-backlight",
 	.id	= -1,
 };
 
-static struct regulator_consumer_supply pandora_vmmc3_supply[] = {
-	REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"),
-};
-
-static struct regulator_init_data pandora_vmmc3 = {
-	.constraints = {
-		.valid_ops_mask		= REGULATOR_CHANGE_STATUS,
-	},
-	.num_consumer_supplies	= ARRAY_SIZE(pandora_vmmc3_supply),
-	.consumer_supplies	= pandora_vmmc3_supply,
-};
-
-static struct fixed_voltage_config pandora_vwlan = {
-	.supply_name		= "vwlan",
-	.microvolts		= 1800000, /* 1.8V */
-	.gpio			= PANDORA_WIFI_NRESET_GPIO,
-	.startup_delay		= 50000, /* 50ms */
-	.enable_high		= 1,
-	.init_data		= &pandora_vmmc3,
-};
-
-static struct platform_device pandora_vwlan_device = {
-	.name		= "reg-fixed-voltage",
-	.id		= 1,
-	.dev = {
-		.platform_data = &pandora_vwlan,
-	},
-};
-
-static void pandora_wl1251_init_card(struct mmc_card *card)
-{
-	/*
-	 * We have TI wl1251 attached to MMC3. Pass this information to
-	 * SDIO core because it can't be probed by normal methods.
-	 */
-	if (card->type == MMC_TYPE_SDIO || card->type == MMC_TYPE_SD_COMBO) {
-		card->quirks |= MMC_QUIRK_NONSTD_SDIO;
-		card->cccr.wide_bus = 1;
-		card->cis.vendor = 0x104c;
-		card->cis.device = 0x9066;
-		card->cis.blksize = 512;
-		card->cis.max_dtr = 24000000;
-		card->ocr = 0x80;
-	}
-}
-
-static struct omap2_hsmmc_info pandora_mmc3[] = {
-	{
-		.mmc		= 3,
-		.caps		= MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
-		.gpio_cd	= -EINVAL,
-		.gpio_wp	= -EINVAL,
-		.init_card	= pandora_wl1251_init_card,
-	},
-	{}	/* Terminator */
-};
-
-static void __init pandora_wl1251_init(void)
-{
-	struct wl1251_platform_data pandora_wl1251_pdata;
-	int ret;
-
-	memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata));
-
-	pandora_wl1251_pdata.power_gpio = -1;
-
-	ret = gpio_request_one(PANDORA_WIFI_IRQ_GPIO, GPIOF_IN, "wl1251 irq");
-	if (ret < 0)
-		goto fail;
-
-	pandora_wl1251_pdata.irq = gpio_to_irq(PANDORA_WIFI_IRQ_GPIO);
-	if (pandora_wl1251_pdata.irq < 0)
-		goto fail_irq;
-
-	pandora_wl1251_pdata.use_eeprom = true;
-	ret = wl1251_set_platform_data(&pandora_wl1251_pdata);
-	if (ret < 0)
-		goto fail_irq;
-
-	return;
-
-fail_irq:
-	gpio_free(PANDORA_WIFI_IRQ_GPIO);
-fail:
-	pr_err("wl1251 board initialisation failed\n");
-}
-
 static void __init omap3_pandora_legacy_init(void)
 {
 	platform_device_register(&pandora_backlight);
-	platform_device_register(&pandora_vwlan_device);
-	omap_hsmmc_init(pandora_mmc3);
-	omap_hsmmc_late_init(pandora_mmc3);
-	pandora_wl1251_init();
 }
 #endif /* CONFIG_ARCH_OMAP3 */
 
-- 
2.19.1


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

* [PATCH v2 08/11] mmc: sdio: fix wl1251 vendor id
       [not found] <cover.1571510481.git.hns@goldelico.com>
                   ` (2 preceding siblings ...)
  2019-10-19 18:41 ` [PATCH v2 06/11] omap: pdata-quirks: remove openpandora quirks for mmc3 and wl1251 H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 09/11] mmc: core: fix wl1251 sdio quirks H. Nikolaus Schaller
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

v4.11-rc1 did introduce a patch series that rearranged the
sdio quirks into a header file. Unfortunately this did forget
to handle SDIO_VENDOR_ID_TI differently between wl1251 and
wl1271 with the result that although the wl1251 was found on
the sdio bus, the firmware did not load any more and there was
no interface registration.

This patch defines separate constants to be used by sdio quirks
and drivers.

Fixes: 884f38607897 ("mmc: core: move some sdio IDs out of quirks file")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Cc: <stable@vger.kernel.org> # 4.11.0
---
 include/linux/mmc/sdio_ids.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index d1a5d5df02f5..08b25c02b5a1 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -71,6 +71,8 @@
 
 #define SDIO_VENDOR_ID_TI			0x0097
 #define SDIO_DEVICE_ID_TI_WL1271		0x4076
+#define SDIO_VENDOR_ID_TI_WL1251		0x104c
+#define SDIO_DEVICE_ID_TI_WL1251		0x9066
 
 #define SDIO_VENDOR_ID_STE			0x0020
 #define SDIO_DEVICE_ID_STE_CW1200		0x2280
-- 
2.19.1


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

* [PATCH v2 09/11] mmc: core: fix wl1251 sdio quirks
       [not found] <cover.1571510481.git.hns@goldelico.com>
                   ` (3 preceding siblings ...)
  2019-10-19 18:41 ` [PATCH v2 08/11] mmc: sdio: fix wl1251 vendor id H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 10/11] net: wireless: ti: wl1251 use new SDIO_VENDOR_ID_TI_WL1251 definition H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 11/11] net: wireless: ti: remove local VENDOR_ID and DEVICE_ID definitions H. Nikolaus Schaller
  6 siblings, 0 replies; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

wl1251 and wl1271 have different vendor id and device id.
So we need to handle both with sdio quirks.

Fixes: 884f38607897 ("mmc: core: move some sdio IDs out of quirks file")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Cc: <stable@vger.kernel.org> # 4.11.0
---
 drivers/mmc/core/quirks.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
index 2d2d9ea8be4f..3dba15bccce2 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
@@ -119,7 +119,14 @@ static const struct mmc_fixup mmc_ext_csd_fixups[] = {
 	END_FIXUP
 };
 
+
 static const struct mmc_fixup sdio_fixup_methods[] = {
+	SDIO_FIXUP(SDIO_VENDOR_ID_TI_WL1251, SDIO_DEVICE_ID_TI_WL1251,
+		   add_quirk, MMC_QUIRK_NONSTD_FUNC_IF),
+
+	SDIO_FIXUP(SDIO_VENDOR_ID_TI_WL1251, SDIO_DEVICE_ID_TI_WL1251,
+		   add_quirk, MMC_QUIRK_DISABLE_CD),
+
 	SDIO_FIXUP(SDIO_VENDOR_ID_TI, SDIO_DEVICE_ID_TI_WL1271,
 		   add_quirk, MMC_QUIRK_NONSTD_FUNC_IF),
 
-- 
2.19.1


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

* [PATCH v2 10/11] net: wireless: ti: wl1251 use new SDIO_VENDOR_ID_TI_WL1251 definition
       [not found] <cover.1571510481.git.hns@goldelico.com>
                   ` (4 preceding siblings ...)
  2019-10-19 18:41 ` [PATCH v2 09/11] mmc: core: fix wl1251 sdio quirks H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  2019-10-19 18:41 ` [PATCH v2 11/11] net: wireless: ti: remove local VENDOR_ID and DEVICE_ID definitions H. Nikolaus Schaller
  6 siblings, 0 replies; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

SDIO_VENDOR_ID_TI_WL1251 is now defined in mmc/sdio_ids.h separately
from SDIO_VENDOR_ID_TI for wl1271.

Fixes: 884f38607897 ("mmc: core: move some sdio IDs out of quirks file")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Acked-by: Kalle Valo <kvalo@codeaurora.org>
Cc: <stable@vger.kernel.org> # 4.11.0
---
 drivers/net/wireless/ti/wl1251/sdio.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ti/wl1251/sdio.c b/drivers/net/wireless/ti/wl1251/sdio.c
index c54a273713ed..42b55f3a50df 100644
--- a/drivers/net/wireless/ti/wl1251/sdio.c
+++ b/drivers/net/wireless/ti/wl1251/sdio.c
@@ -52,7 +52,7 @@ static void wl1251_sdio_interrupt(struct sdio_func *func)
 }
 
 static const struct sdio_device_id wl1251_devices[] = {
-	{ SDIO_DEVICE(SDIO_VENDOR_ID_TI, SDIO_DEVICE_ID_TI_WL1251) },
+	{ SDIO_DEVICE(SDIO_VENDOR_ID_TI_WL1251, SDIO_DEVICE_ID_TI_WL1251) },
 	{}
 };
 MODULE_DEVICE_TABLE(sdio, wl1251_devices);
-- 
2.19.1


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

* [PATCH v2 11/11] net: wireless: ti: remove local VENDOR_ID and DEVICE_ID definitions
       [not found] <cover.1571510481.git.hns@goldelico.com>
                   ` (5 preceding siblings ...)
  2019-10-19 18:41 ` [PATCH v2 10/11] net: wireless: ti: wl1251 use new SDIO_VENDOR_ID_TI_WL1251 definition H. Nikolaus Schaller
@ 2019-10-19 18:41 ` H. Nikolaus Schaller
  6 siblings, 0 replies; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-19 18:41 UTC (permalink / raw)
  To: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Ulf Hansson, Kalle Valo, Mike Rapoport,
	David Sterba, Rafael J. Wysocki, Petr Mladek, Sakari Ailus,
	H. Nikolaus Schaller, Kefeng Wang, Yangtao Li, Alexios Zavras,
	Thomas Gleixner, Allison Randal, Greg Kroah-Hartman, John Stultz,
	Bjorn Helgaas
  Cc: linux-omap, devicetree, linux-kernel, linux-arm-kernel,
	linux-mmc, linux-wireless, netdev, letux-kernel, kernel, stable

They are already included from mmc/sdio_ids.h and do not need
a local definition.

Fixes: 884f38607897 ("mmc: core: move some sdio IDs out of quirks file")

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Acked-by: Kalle Valo <kvalo@codeaurora.org>
Cc: <stable@vger.kernel.org> # 4.11.0
---
 drivers/net/wireless/ti/wl1251/sdio.c | 8 --------
 drivers/net/wireless/ti/wlcore/sdio.c | 8 --------
 2 files changed, 16 deletions(-)

diff --git a/drivers/net/wireless/ti/wl1251/sdio.c b/drivers/net/wireless/ti/wl1251/sdio.c
index 42b55f3a50df..3c4d5e38c66c 100644
--- a/drivers/net/wireless/ti/wl1251/sdio.c
+++ b/drivers/net/wireless/ti/wl1251/sdio.c
@@ -22,14 +22,6 @@
 
 #include "wl1251.h"
 
-#ifndef SDIO_VENDOR_ID_TI
-#define SDIO_VENDOR_ID_TI		0x104c
-#endif
-
-#ifndef SDIO_DEVICE_ID_TI_WL1251
-#define SDIO_DEVICE_ID_TI_WL1251	0x9066
-#endif
-
 struct wl1251_sdio {
 	struct sdio_func *func;
 	u32 elp_val;
diff --git a/drivers/net/wireless/ti/wlcore/sdio.c b/drivers/net/wireless/ti/wlcore/sdio.c
index 7afaf35f2453..9fd8cf2d270c 100644
--- a/drivers/net/wireless/ti/wlcore/sdio.c
+++ b/drivers/net/wireless/ti/wlcore/sdio.c
@@ -26,14 +26,6 @@
 #include "wl12xx_80211.h"
 #include "io.h"
 
-#ifndef SDIO_VENDOR_ID_TI
-#define SDIO_VENDOR_ID_TI		0x0097
-#endif
-
-#ifndef SDIO_DEVICE_ID_TI_WL1271
-#define SDIO_DEVICE_ID_TI_WL1271	0x4076
-#endif
-
 static bool dump = false;
 
 struct wl12xx_sdio_glue {
-- 
2.19.1


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

* Re: [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card
  2019-10-19 18:41 ` [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card H. Nikolaus Schaller
@ 2019-10-30 15:51   ` Ulf Hansson
  2019-10-30 17:24     ` H. Nikolaus Schaller
  0 siblings, 1 reply; 13+ messages in thread
From: Ulf Hansson @ 2019-10-30 15:51 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+

On Sat, 19 Oct 2019 at 20:42, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
> Pandora_wl1251_init_card was used to do special pdata based
> setup of the sdio mmc interface. This does no longer work with
> v4.7 and later. A fix requires a device tree based mmc3 setup.
>
> Therefore we move the special setup to omap_hsmmc.c instead
> of calling some pdata supplied init_card function.
>
> The new code checks for a DT child node compatible to wl1251
> so it will not affect other MMC3 use cases.
>
> Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")
>
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> Cc: <stable@vger.kernel.org> # 4.7.0
> ---
>  drivers/mmc/host/omap_hsmmc.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 952fa4063ff8..03ba80bcf319 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1512,6 +1512,27 @@ static void omap_hsmmc_init_card(struct mmc_host *mmc, struct mmc_card *card)
>
>         if (mmc_pdata(host)->init_card)
>                 mmc_pdata(host)->init_card(card);
> +       else if (card->type == MMC_TYPE_SDIO || card->type == MMC_TYPE_SD_COMBO) {
> +               struct device_node *np = mmc_dev(mmc)->of_node;
> +
> +               np = of_get_compatible_child(np, "ti,wl1251");
> +               if (np) {
> +                       /*
> +                        * We have TI wl1251 attached to MMC3. Pass this information to
> +                        * SDIO core because it can't be probed by normal methods.
> +                        */
> +
> +                       dev_info(host->dev, "found wl1251\n");
> +                       card->quirks |= MMC_QUIRK_NONSTD_SDIO;
> +                       card->cccr.wide_bus = 1;
> +                       card->cis.vendor = 0x104c;
> +                       card->cis.device = 0x9066;
> +                       card->cis.blksize = 512;
> +                       card->cis.max_dtr = 24000000;
> +                       card->ocr = 0x80;

These things should really be figured out by the mmc core during SDIO
card initialization itself, not via the host ops ->init_card()
callback. That is just poor hack, which in the long run should go
away.

Moreover, I think we should add a subnode to the host node in the DT,
to describe the embedded SDIO card, rather than parsing the subnode
for the SDIO func - as that seems wrong to me.

To add a subnode for the SDIO card, we already have a binding that I
think we should extend. Please have a look at
Documentation/devicetree/bindings/mmc/mmc-card.txt.

If you want an example of how to implement this for your case, do a
git grep "broken-hpi" in the driver/mmc/core/, I think it will tell
you more of what I have in mind.

> +                       of_node_put(np);
> +               }
> +       }
>  }
>
>  static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
> --
> 2.19.1
>

Kind regards
Uffe

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

* Re: [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3
  2019-10-19 18:41 ` [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3 H. Nikolaus Schaller
@ 2019-10-30 16:44   ` Ulf Hansson
  2019-10-30 17:24     ` H. Nikolaus Schaller
  0 siblings, 1 reply; 13+ messages in thread
From: Ulf Hansson @ 2019-10-30 16:44 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+

On Sat, 19 Oct 2019 at 20:42, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
> Since v4.7 the dma initialization requires that there is a
> device tree property for "rx" and "tx" channels which is
> not provided by the pdata-quirks initialization.
>
> By conversion of the mmc3 setup to device tree this will
> finally allows to remove the OpenPandora wlan specific omap3
> data-quirks.
>
> Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")
>
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> Cc: <stable@vger.kernel.org> # 4.7.0
> ---
>  arch/arm/boot/dts/omap3-pandora-common.dtsi | 37 +++++++++++++++++++--
>  1 file changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> index ec5891718ae6..c595b3eb314d 100644
> --- a/arch/arm/boot/dts/omap3-pandora-common.dtsi
> +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> @@ -226,6 +226,18 @@
>                 gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;     /* GPIO_164 */
>         };
>
> +       /* wl1251 wifi+bt module */
> +       wlan_en: fixed-regulator-wg7210_en {
> +               compatible = "regulator-fixed";
> +               regulator-name = "vwlan";
> +               regulator-min-microvolt = <1800000>;
> +               regulator-max-microvolt = <1800000>;

I doubt these are correct.

I guess this should be in the range of 2.7V-3.6V.

> +               startup-delay-us = <50000>;
> +               regulator-always-on;

Always on?

> +               enable-active-high;
> +               gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;
> +       };
> +
>         /* wg7210 (wifi+bt module) 32k clock buffer */
>         wg7210_32k: fixed-regulator-wg7210_32k {
>                 compatible = "regulator-fixed";
> @@ -522,9 +534,30 @@
>         /*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/    /* GPIO_127 */
>  };
>
> -/* mmc3 is probed using pdata-quirks to pass wl1251 card data */
>  &mmc3 {
> -       status = "disabled";
> +       vmmc-supply = <&wlan_en>;
> +
> +       bus-width = <4>;
> +       non-removable;
> +       ti,non-removable;
> +       cap-power-off-card;
> +
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&mmc3_pins>;
> +
> +       #address-cells = <1>;
> +       #size-cells = <0>;
> +
> +       wlan: wl1251@1 {
> +               compatible = "ti,wl1251";
> +
> +               reg = <1>;
> +
> +               interrupt-parent = <&gpio1>;
> +               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;  /* GPIO_21 */
> +
> +               ti,wl1251-has-eeprom;
> +       };
>  };
>
>  /* bluetooth*/
> --
> 2.19.1
>

Kind regards
Uffe

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

* Re: [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card
  2019-10-30 15:51   ` Ulf Hansson
@ 2019-10-30 17:24     ` H. Nikolaus Schaller
  2019-10-31 16:23       ` Ulf Hansson
  0 siblings, 1 reply; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-30 17:24 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+

Hi Ulf,

> Am 30.10.2019 um 16:51 schrieb Ulf Hansson <ulf.hansson@linaro.org>:
> 
>> +
>> +               np = of_get_compatible_child(np, "ti,wl1251");
>> +               if (np) {
>> +                       /*
>> +                        * We have TI wl1251 attached to MMC3. Pass this information to
>> +                        * SDIO core because it can't be probed by normal methods.
>> +                        */
>> +
>> +                       dev_info(host->dev, "found wl1251\n");
>> +                       card->quirks |= MMC_QUIRK_NONSTD_SDIO;
>> +                       card->cccr.wide_bus = 1;
>> +                       card->cis.vendor = 0x104c;
>> +                       card->cis.device = 0x9066;
>> +                       card->cis.blksize = 512;
>> +                       card->cis.max_dtr = 24000000;
>> +                       card->ocr = 0x80;
> 
> These things should really be figured out by the mmc core during SDIO
> card initialization itself, not via the host ops ->init_card()
> callback. That is just poor hack, which in the long run should go
> away.

Yes, I agree.

But I am just the poor guy who is trying to fix really broken code with
as low effort as possible.

I don't even have a significant clue what this code is exactly doing and what
the magic values mean. They were setup by pandora_wl1251_init_card() in the
same way so that I have just moved the code here and make it called in (almost)
the same situation.

> Moreover, I think we should add a subnode to the host node in the DT,
> to describe the embedded SDIO card, rather than parsing the subnode
> for the SDIO func - as that seems wrong to me.

You mean a second subnode?

The wl1251 is the child node of the mmc node and describes the SDIO card.
We just check if it is a wl1251 or e.g. wl1837 or something else or even
no child.

> To add a subnode for the SDIO card, we already have a binding that I
> think we should extend. Please have a look at
> Documentation/devicetree/bindings/mmc/mmc-card.txt.
> 
> If you want an example of how to implement this for your case, do a
> git grep "broken-hpi" in the driver/mmc/core/, I think it will tell
> you more of what I have in mind.

So while I agree that it should be improved in the long run, we should
IMHO fix the hack first (broken since v4.9!), even if it remains a hack
for now. Improving this part seems to be quite independent and focussed
on the mmc subsystem, while the other patches involve other subsystems.

Maybe should we make a REVISIT note in the code? Or add something to
the commit message about the idea how it should be done right?

> 
>> +                       of_node_put(np);
>> +               }
>> +       }
>> }
>> 
>> static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
>> --
>> 2.19.1
>> 
> 
> Kind regards
> Uffe


BR and thanks,
Nikolaus


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

* Re: [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3
  2019-10-30 16:44   ` Ulf Hansson
@ 2019-10-30 17:24     ` H. Nikolaus Schaller
  2019-10-31 16:59       ` Ulf Hansson
  0 siblings, 1 reply; 13+ messages in thread
From: H. Nikolaus Schaller @ 2019-10-30 17:24 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+


> Am 30.10.2019 um 17:44 schrieb Ulf Hansson <ulf.hansson@linaro.org>:
> 
> On Sat, 19 Oct 2019 at 20:42, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>> 
>> Since v4.7 the dma initialization requires that there is a
>> device tree property for "rx" and "tx" channels which is
>> not provided by the pdata-quirks initialization.
>> 
>> By conversion of the mmc3 setup to device tree this will
>> finally allows to remove the OpenPandora wlan specific omap3
>> data-quirks.
>> 
>> Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")
>> 
>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>> Cc: <stable@vger.kernel.org> # 4.7.0
>> ---
>> arch/arm/boot/dts/omap3-pandora-common.dtsi | 37 +++++++++++++++++++--
>> 1 file changed, 35 insertions(+), 2 deletions(-)
>> 
>> diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi b/arch/arm/boot/dts/omap3-pandora-common.dtsi
>> index ec5891718ae6..c595b3eb314d 100644
>> --- a/arch/arm/boot/dts/omap3-pandora-common.dtsi
>> +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
>> @@ -226,6 +226,18 @@
>>                gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;     /* GPIO_164 */
>>        };
>> 
>> +       /* wl1251 wifi+bt module */
>> +       wlan_en: fixed-regulator-wg7210_en {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "vwlan";
>> +               regulator-min-microvolt = <1800000>;
>> +               regulator-max-microvolt = <1800000>;
> 
> I doubt these are correct.
> 
> I guess this should be in the range of 2.7V-3.6V.

Well, it is a gpio which enables some LDO inside the
wifi chip. We do not really know the voltage it produces
and it does not matter. The gpio voltage is 1.8V.

Basically we use a fixed-regulator to "translate" a
regulator into a control gpio because the mmc interface
wants to see a vmmc-supply.

> 
>> +               startup-delay-us = <50000>;
>> +               regulator-always-on;
> 
> Always on?

Oops. Yes, that is something to check!

> 
>> +               enable-active-high;
>> +               gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;
>> +       };
>> +
>>        /* wg7210 (wifi+bt module) 32k clock buffer */
>>        wg7210_32k: fixed-regulator-wg7210_32k {
>>                compatible = "regulator-fixed";
>> @@ -522,9 +534,30 @@
>>        /*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/    /* GPIO_127 */
>> };
>> 
>> -/* mmc3 is probed using pdata-quirks to pass wl1251 card data */
>> &mmc3 {
>> -       status = "disabled";
>> +       vmmc-supply = <&wlan_en>;
>> +
>> +       bus-width = <4>;
>> +       non-removable;
>> +       ti,non-removable;
>> +       cap-power-off-card;
>> +
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&mmc3_pins>;
>> +
>> +       #address-cells = <1>;
>> +       #size-cells = <0>;
>> +
>> +       wlan: wl1251@1 {
>> +               compatible = "ti,wl1251";
>> +
>> +               reg = <1>;
>> +
>> +               interrupt-parent = <&gpio1>;
>> +               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;  /* GPIO_21 */
>> +
>> +               ti,wl1251-has-eeprom;
>> +       };
>> };
>> 
>> /* bluetooth*/
>> --
>> 2.19.1
>> 

BR and thanks,
Nikolaus


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

* Re: [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card
  2019-10-30 17:24     ` H. Nikolaus Schaller
@ 2019-10-31 16:23       ` Ulf Hansson
  0 siblings, 0 replies; 13+ messages in thread
From: Ulf Hansson @ 2019-10-31 16:23 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+

On Wed, 30 Oct 2019 at 18:25, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
> Hi Ulf,
>
> > Am 30.10.2019 um 16:51 schrieb Ulf Hansson <ulf.hansson@linaro.org>:
> >
> >> +
> >> +               np = of_get_compatible_child(np, "ti,wl1251");
> >> +               if (np) {
> >> +                       /*
> >> +                        * We have TI wl1251 attached to MMC3. Pass this information to
> >> +                        * SDIO core because it can't be probed by normal methods.
> >> +                        */
> >> +
> >> +                       dev_info(host->dev, "found wl1251\n");
> >> +                       card->quirks |= MMC_QUIRK_NONSTD_SDIO;
> >> +                       card->cccr.wide_bus = 1;
> >> +                       card->cis.vendor = 0x104c;
> >> +                       card->cis.device = 0x9066;
> >> +                       card->cis.blksize = 512;
> >> +                       card->cis.max_dtr = 24000000;
> >> +                       card->ocr = 0x80;
> >
> > These things should really be figured out by the mmc core during SDIO
> > card initialization itself, not via the host ops ->init_card()
> > callback. That is just poor hack, which in the long run should go
> > away.
>
> Yes, I agree.
>
> But I am just the poor guy who is trying to fix really broken code with
> as low effort as possible.

I see. Thanks for looking at this mess!

In general, as long as we improve the code, I am happy to move forward.

However, my main concern at this point, is to make sure we get the DT
bindings and the DTS files updated correctly. We don't want to come
back to this again.

>
> I don't even have a significant clue what this code is exactly doing and what
> the magic values mean. They were setup by pandora_wl1251_init_card() in the
> same way so that I have just moved the code here and make it called in (almost)
> the same situation.

Okay!

>
> > Moreover, I think we should add a subnode to the host node in the DT,
> > to describe the embedded SDIO card, rather than parsing the subnode
> > for the SDIO func - as that seems wrong to me.
>
> You mean a second subnode?
>
> The wl1251 is the child node of the mmc node and describes the SDIO card.
> We just check if it is a wl1251 or e.g. wl1837 or something else or even
> no child.

The reason why I brought this up, was because there are sometimes
cases where an SDIO card is shared between more than one SDIO func.
WiFi+Bluetooth for example, but if I am correct, that is not the case
for wl1251?

That said, I am happy to continue with your approach.

>
> > To add a subnode for the SDIO card, we already have a binding that I
> > think we should extend. Please have a look at
> > Documentation/devicetree/bindings/mmc/mmc-card.txt.
> >
> > If you want an example of how to implement this for your case, do a
> > git grep "broken-hpi" in the driver/mmc/core/, I think it will tell
> > you more of what I have in mind.
>
> So while I agree that it should be improved in the long run, we should
> IMHO fix the hack first (broken since v4.9!), even if it remains a hack
> for now. Improving this part seems to be quite independent and focussed
> on the mmc subsystem, while the other patches involve other subsystems.

I agree.

>
> Maybe should we make a REVISIT note in the code? Or add something to
> the commit message about the idea how it should be done right?

Just add a note that we should move this DT parsing of the subnode to
the mmc core, but that we are leaving that as a future improvement.
That's good enough. Then I can have a look as a second step, and when
I get some time, to move this to the mmc core.

However, there is one thing I would like you to add to the series. That is:

In the struct omap_hsmmc_platform_data, there is an ->init_card()
callback. Beyond the changes of this series, there is no longer any
users of that, unless I am mistaken. Going forward, let's make sure it
doesn't get used again, so can you please remove it!?

[...]

Kind regards
Uffe

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

* Re: [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3
  2019-10-30 17:24     ` H. Nikolaus Schaller
@ 2019-10-31 16:59       ` Ulf Hansson
  0 siblings, 0 replies; 13+ messages in thread
From: Ulf Hansson @ 2019-10-31 16:59 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Benoît Cousson, Tony Lindgren, Rob Herring, Mark Rutland,
	Russell King, Kalle Valo, Mike Rapoport, David Sterba,
	Rafael J. Wysocki, Petr Mladek, Sakari Ailus, Kefeng Wang,
	Yangtao Li, Alexios Zavras, Thomas Gleixner, Allison Randal,
	Greg Kroah-Hartman, John Stultz, Bjorn Helgaas, linux-omap, DTML,
	Linux Kernel Mailing List, Linux ARM, linux-mmc, linux-wireless,
	netdev, Discussions about the Letux Kernel, kernel, # 4.0+

On Wed, 30 Oct 2019 at 18:25, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
>
> > Am 30.10.2019 um 17:44 schrieb Ulf Hansson <ulf.hansson@linaro.org>:
> >
> > On Sat, 19 Oct 2019 at 20:42, H. Nikolaus Schaller <hns@goldelico.com> wrote:
> >>
> >> Since v4.7 the dma initialization requires that there is a
> >> device tree property for "rx" and "tx" channels which is
> >> not provided by the pdata-quirks initialization.
> >>
> >> By conversion of the mmc3 setup to device tree this will
> >> finally allows to remove the OpenPandora wlan specific omap3
> >> data-quirks.
> >>
> >> Fixes: 81eef6ca9201 ("mmc: omap_hsmmc: Use dma_request_chan() for requesting DMA channel")
> >>
> >> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> >> Cc: <stable@vger.kernel.org> # 4.7.0
> >> ---
> >> arch/arm/boot/dts/omap3-pandora-common.dtsi | 37 +++++++++++++++++++--
> >> 1 file changed, 35 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> >> index ec5891718ae6..c595b3eb314d 100644
> >> --- a/arch/arm/boot/dts/omap3-pandora-common.dtsi
> >> +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi
> >> @@ -226,6 +226,18 @@
> >>                gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;     /* GPIO_164 */
> >>        };
> >>
> >> +       /* wl1251 wifi+bt module */
> >> +       wlan_en: fixed-regulator-wg7210_en {
> >> +               compatible = "regulator-fixed";
> >> +               regulator-name = "vwlan";
> >> +               regulator-min-microvolt = <1800000>;
> >> +               regulator-max-microvolt = <1800000>;
> >
> > I doubt these are correct.
> >
> > I guess this should be in the range of 2.7V-3.6V.
>
> Well, it is a gpio which enables some LDO inside the
> wifi chip. We do not really know the voltage it produces
> and it does not matter. The gpio voltage is 1.8V.
>
> Basically we use a fixed-regulator to "translate" a
> regulator into a control gpio because the mmc interface
> wants to see a vmmc-supply.

The vmmc supply represent the core power to the SDIO card (or
SD/(e)MMC). Depending on what voltage range the vmmc supply supports,
the so called OCR mask is created by the mmc core. The mask is then
used to let the core negotiate the voltage level with the SDIO card,
during the card initialization. This is not to confuse with the I/O
voltage level, which is a different regulator.

Anyway, according to the TI WiLink series specifications, it looks
like vmmc should be a regulator supporting 3-3.3V (in many schematics
it's called VBAT).

Furthermore I decided to dig into various DTS files that specifies the
vmmc regulator, of course for mmc nodes having a subnode specifying an
SDIO card for a TI WiLink. In most cases a 1.8V fixed GPIO regulator
is used. This looks wrong to me. The fixed GPIO regulator isn't really
the one that should model vmmc.

The proper solution, would rather be to use separate regulator for
vmmc and instead use a so called mmc-pwrseq node to manage the GPIO.

To conclude from my side, as we have lots of DTS that are wrong, I
don't really care if we add another one in the way you suggest above.
But feel free to look into the mmc-pwrseq option.

>
> >
> >> +               startup-delay-us = <50000>;
> >> +               regulator-always-on;
> >
> > Always on?
>
> Oops. Yes, that is something to check!

As it's a GPIO regulator, for sure it's not always on.

>
> >
> >> +               enable-active-high;
> >> +               gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;
> >> +       };
> >> +
> >>        /* wg7210 (wifi+bt module) 32k clock buffer */
> >>        wg7210_32k: fixed-regulator-wg7210_32k {
> >>                compatible = "regulator-fixed";
> >> @@ -522,9 +534,30 @@
> >>        /*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/    /* GPIO_127 */
> >> };
> >>
> >> -/* mmc3 is probed using pdata-quirks to pass wl1251 card data */
> >> &mmc3 {
> >> -       status = "disabled";
> >> +       vmmc-supply = <&wlan_en>;
> >> +
> >> +       bus-width = <4>;
> >> +       non-removable;
> >> +       ti,non-removable;
> >> +       cap-power-off-card;
> >> +
> >> +       pinctrl-names = "default";
> >> +       pinctrl-0 = <&mmc3_pins>;
> >> +
> >> +       #address-cells = <1>;
> >> +       #size-cells = <0>;
> >> +
> >> +       wlan: wl1251@1 {
> >> +               compatible = "ti,wl1251";
> >> +
> >> +               reg = <1>;
> >> +
> >> +               interrupt-parent = <&gpio1>;
> >> +               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;  /* GPIO_21 */
> >> +
> >> +               ti,wl1251-has-eeprom;
> >> +       };
> >> };
> >>
> >> /* bluetooth*/
> >> --
> >> 2.19.1
> >>
>
> BR and thanks,
> Nikolaus
>

Kind regards
Uffe

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

end of thread, other threads:[~2019-10-31 16:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1571510481.git.hns@goldelico.com>
2019-10-19 18:41 ` [PATCH v2 03/11] DTS: ARM: pandora-common: define wl1251 as child node of mmc3 H. Nikolaus Schaller
2019-10-30 16:44   ` Ulf Hansson
2019-10-30 17:24     ` H. Nikolaus Schaller
2019-10-31 16:59       ` Ulf Hansson
2019-10-19 18:41 ` [PATCH v2 04/11] mmc: host: omap_hsmmc: add code for special init of wl1251 to get rid of pandora_wl1251_init_card H. Nikolaus Schaller
2019-10-30 15:51   ` Ulf Hansson
2019-10-30 17:24     ` H. Nikolaus Schaller
2019-10-31 16:23       ` Ulf Hansson
2019-10-19 18:41 ` [PATCH v2 06/11] omap: pdata-quirks: remove openpandora quirks for mmc3 and wl1251 H. Nikolaus Schaller
2019-10-19 18:41 ` [PATCH v2 08/11] mmc: sdio: fix wl1251 vendor id H. Nikolaus Schaller
2019-10-19 18:41 ` [PATCH v2 09/11] mmc: core: fix wl1251 sdio quirks H. Nikolaus Schaller
2019-10-19 18:41 ` [PATCH v2 10/11] net: wireless: ti: wl1251 use new SDIO_VENDOR_ID_TI_WL1251 definition H. Nikolaus Schaller
2019-10-19 18:41 ` [PATCH v2 11/11] net: wireless: ti: remove local VENDOR_ID and DEVICE_ID definitions H. Nikolaus Schaller

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).