Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1335211 > unrolled thread

[PATCH v4 1/3] mwifiex: register platform specific driver

Started byAmitkumar Karwar <akarwar@marvell.com>
First post2016-02-16 10:30 +0100
Last post2016-02-18 15:40 +0100
Articles 7 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v4 1/3] mwifiex: register platform specific driver Amitkumar Karwar <akarwar@marvell.com> - 2016-02-16 10:30 +0100
    [PATCH v4 3/3] mwifiex: parse host wakeup configuration from device Amitkumar Karwar <akarwar@marvell.com> - 2016-02-16 10:30 +0100
      Re: [PATCH v4 3/3] mwifiex: parse host wakeup configuration from  device Rob Herring <robh@kernel.org> - 2016-02-18 15:40 +0100
    [PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree Amitkumar Karwar <akarwar@marvell.com> - 2016-02-16 10:30 +0100
      Re: [PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree Rob Herring <robh@kernel.org> - 2016-02-18 15:50 +0100
    Re: [PATCH v4 1/3] mwifiex: register platform specific driver Arnd Bergmann <arnd@arndb.de> - 2016-02-16 12:30 +0100
    Re: [PATCH v4 1/3] mwifiex: register platform specific driver Rob Herring <robh@kernel.org> - 2016-02-18 15:40 +0100

#1335211 — [PATCH v4 1/3] mwifiex: register platform specific driver

FromAmitkumar Karwar <akarwar@marvell.com>
Date2016-02-16 10:30 +0100
Subject[PATCH v4 1/3] mwifiex: register platform specific driver
Message-ID<r2K7g-5XK-5@gated-at.bofh.it>
From: Xinming Hu <huxm@marvell.com>

Platform device and driver provides easy way to interact with
device-tree-enabled system.

This patch registers platform driver and reorganise existing device
tree specific code. Corresponding device tree binding file is also
created.

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
---
v3: Don't update adapter->dt_node if mwifiex_plt_dev is NULL
v4: Corrected the 'name' and 'compatible' property names.(Arnd Bergmann and Rob
    Herring)
    Patch description wraped in 72 columns(Rob Herring)
    Moved DT binding file to bindings/net/wireless/(Rob Herring)
---
 .../bindings/net/wireless/marvell-sd8xxx.txt       | 29 +++++++++++
 drivers/net/wireless/marvell/mwifiex/Makefile      |  1 +
 drivers/net/wireless/marvell/mwifiex/main.c        |  2 +
 drivers/net/wireless/marvell/mwifiex/main.h        | 14 +++++
 .../net/wireless/marvell/mwifiex/platform_drv.c    | 59 ++++++++++++++++++++++
 drivers/net/wireless/marvell/mwifiex/sta_cmd.c     |  4 +-
 6 files changed, 107 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
 create mode 100644 drivers/net/wireless/marvell/mwifiex/platform_drv.c

diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
new file mode 100644
index 0000000..f7671ae
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
@@ -0,0 +1,29 @@
+Marvell Sd8xxx Wireless devices
+------
+
+Required properties:
+
+  - name : must be "wlan"
+  - compatible : must be "marvell,sd8xxx"
+
+Optional properties:
+
+  - marvell,caldata* : A series of properties with marvell,caldata prefix,
+  		      represent Calibration data downloaded to the device during
+		      initialization. This is an array of unsigned values.
+
+
+Example:
+
+Tx power limit calibration data is configured in below example.
+The calibration data is an array of unsigned values, the length
+can vary between hw versions.
+
+wlan {
+	compatible = "marvell,sd8xxx";
+
+	marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
+0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01 ...>;
+
+};
+
diff --git a/drivers/net/wireless/marvell/mwifiex/Makefile b/drivers/net/wireless/marvell/mwifiex/Makefile
index fdfd9bf..1444fd1 100644
--- a/drivers/net/wireless/marvell/mwifiex/Makefile
+++ b/drivers/net/wireless/marvell/mwifiex/Makefile
@@ -42,6 +42,7 @@ mwifiex-y += cfg80211.o
 mwifiex-y += ethtool.o
 mwifiex-y += 11h.o
 mwifiex-y += tdls.o
+mwifiex-y += platform_drv.o
 mwifiex-$(CONFIG_DEBUG_FS) += debugfs.o
 obj-$(CONFIG_MWIFIEX) += mwifiex.o
 
diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c
index 3cfa946..b93ae69 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.c
+++ b/drivers/net/wireless/marvell/mwifiex/main.c
@@ -1538,6 +1538,7 @@ EXPORT_SYMBOL_GPL(_mwifiex_dbg);
 static int
 mwifiex_init_module(void)
 {
+	mwifiex_platform_drv_init();
 #ifdef CONFIG_DEBUG_FS
 	mwifiex_debugfs_init();
 #endif
@@ -1552,6 +1553,7 @@ mwifiex_init_module(void)
 static void
 mwifiex_cleanup_module(void)
 {
+	mwifiex_platform_drv_exit();
 #ifdef CONFIG_DEBUG_FS
 	mwifiex_debugfs_remove();
 #endif
diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
index aea7aee..464d79f 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.h
+++ b/drivers/net/wireless/marvell/mwifiex/main.h
@@ -37,6 +37,16 @@
 #include <linux/idr.h>
 #include <linux/inetdevice.h>
 #include <linux/devcoredump.h>
+#include <linux/err.h>
+#include <linux/gpio.h>
+#include <linux/gfp.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
+#include <linux/of_gpio.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+#include <linux/slab.h>
 
 #include "decl.h"
 #include "ioctl.h"
@@ -47,6 +57,7 @@
 #include "sdio.h"
 
 extern const char driver_version[];
+extern struct platform_device *mwifiex_plt_dev;
 
 struct mwifiex_adapter;
 struct mwifiex_private;
@@ -1597,6 +1608,9 @@ void mwifiex_process_multi_chan_event(struct mwifiex_private *priv,
 				      struct sk_buff *event_skb);
 void mwifiex_multi_chan_resync(struct mwifiex_adapter *adapter);
 
+int mwifiex_platform_drv_init(void);
+void mwifiex_platform_drv_exit(void);
+
 #ifdef CONFIG_DEBUG_FS
 void mwifiex_debugfs_init(void);
 void mwifiex_debugfs_remove(void);
diff --git a/drivers/net/wireless/marvell/mwifiex/platform_drv.c b/drivers/net/wireless/marvell/mwifiex/platform_drv.c
new file mode 100644
index 0000000..5fd5d80
--- /dev/null
+++ b/drivers/net/wireless/marvell/mwifiex/platform_drv.c
@@ -0,0 +1,59 @@
+/* Marvell wireless LAN device driver: platform specific driver
+ *
+ * Copyright (C) 2015, Marvell International Ltd.
+ *
+ * This software file (the "File") is distributed by Marvell International
+ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
+ * (the "License").  You may use, redistribute and/or modify this File in
+ * accordance with the terms and conditions of the License, a copy of which
+ * is available on the worldwide web at
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
+ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
+ * this warranty disclaimer.
+ */
+#include "main.h"
+
+struct platform_device *mwifiex_plt_dev;
+
+static int mwifiex_plt_probe(struct platform_device *pdev)
+{
+	mwifiex_plt_dev = pdev;
+	return 0;
+}
+
+static int mwifiex_plt_remove(struct platform_device *pdev)
+{
+	mwifiex_plt_dev = NULL;
+	return 0;
+}
+
+static const struct of_device_id mwifiex_dt_match[] = {
+	{
+		.compatible = "marvell,sd8xxx",
+	},
+	{},
+};
+
+MODULE_DEVICE_TABLE(of, mwifiex_dt_match);
+
+static struct platform_driver mwifiex_platform_driver = {
+	.probe		= mwifiex_plt_probe,
+	.remove		= mwifiex_plt_remove,
+	.driver = {
+		.name	= "mwifiex_plt",
+		.of_match_table = mwifiex_dt_match,
+	}
+};
+
+int mwifiex_platform_drv_init(void)
+{
+	return platform_driver_register(&mwifiex_platform_driver);
+}
+
+void mwifiex_platform_drv_exit(void)
+{
+	platform_driver_unregister(&mwifiex_platform_driver);
+}
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
index 30f1526..238fe4f 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
@@ -2154,8 +2154,8 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
 		 * The cal-data can be read from device tree and/or
 		 * a configuration file and downloaded to firmware.
 		 */
-		adapter->dt_node =
-				of_find_node_by_name(NULL, "marvell_cfgdata");
+		adapter->dt_node = mwifiex_plt_dev ?
+				mwifiex_plt_dev->dev.of_node : NULL;
 		if (adapter->dt_node) {
 			ret = mwifiex_dnld_dt_cfgdata(priv, adapter->dt_node,
 						      "marvell,caldata");
-- 
1.8.1.4

[toc] | [next] | [standalone]


#1335212 — [PATCH v4 3/3] mwifiex: parse host wakeup configuration from device

FromAmitkumar Karwar <akarwar@marvell.com>
Date2016-02-16 10:30 +0100
Subject[PATCH v4 3/3] mwifiex: parse host wakeup configuration from device
Message-ID<r2K7g-5XK-9@gated-at.bofh.it>
In reply to#1335211
From: Xinming Hu <huxm@marvell.com>

This patch implement a framework for board specific wakeup.
driver parse irq/gpio number from device tree, corresponding
resources will be allocated, and used for host suspend/resume.
driver private binding file is also updated in the patch.

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
---
v4: Replaced #ifdef with __maybe_unused(Arnd Bergmann)
---
 .../bindings/net/wireless/marvell-sd8xxx.txt       | 10 +++
 .../net/wireless/marvell/mwifiex/platform_drv.c    | 91 ++++++++++++++++++++++
 2 files changed, 101 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
index c337fab..50138fd 100644
--- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
+++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
@@ -14,6 +14,11 @@ Optional properties:
   - marvell,wakeup-gpios : Chip's wakeup gpio pin number. This needs to be downloaded
 			to to firmware. Chip notifies wifi wakeup signal to SOC
 			through this pin.
+  - interrupt-parent: phandle of the parent interrupt controller
+  - interrupts : interrupt number to the cpu
+  - gpios: specify SOC's wakeup GPIO
+  - pinctrl-names : a pinctrl state named "default" must be defined
+  - pinctrl-0 : pin control group to be used for this controller
 
 Example:
 
@@ -27,5 +32,10 @@ wlan {
 	marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
 0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01 ...>;
 	marvell,wakeup-gpios = <3>;
+	interrupt-parent = <&pio>;
+	interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
+	gpios = <&pio 38 GPIO_ACTIVE_HIGH>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&wake_pins>;
 };
 
diff --git a/drivers/net/wireless/marvell/mwifiex/platform_drv.c b/drivers/net/wireless/marvell/mwifiex/platform_drv.c
index 5fd5d80..5ae7dc0 100644
--- a/drivers/net/wireless/marvell/mwifiex/platform_drv.c
+++ b/drivers/net/wireless/marvell/mwifiex/platform_drv.c
@@ -18,9 +18,63 @@
 
 struct platform_device *mwifiex_plt_dev;
 
+struct mwifiex_wake_dev {
+	struct device *dev;
+	int irq_wifi;
+	bool wake_by_wifi;
+};
+
+static irqreturn_t mwifiex_wake_irq_wifi(int irq, void *priv)
+{
+	struct mwifiex_wake_dev *ctx = priv;
+
+	if (ctx->irq_wifi >= 0) {
+		ctx->wake_by_wifi = true;
+		disable_irq_nosync(ctx->irq_wifi);
+	}
+
+	return IRQ_HANDLED;
+}
+
 static int mwifiex_plt_probe(struct platform_device *pdev)
 {
+	int ret;
+	struct mwifiex_wake_dev *ctx;
+	int gpio;
+
 	mwifiex_plt_dev = pdev;
+
+	ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL);
+	if (!ctx)
+		return -ENOMEM;
+
+	ctx->dev = &pdev->dev;
+	ctx->irq_wifi = platform_get_irq(pdev, 0);
+	if (ctx->irq_wifi < 0)
+		dev_err(&pdev->dev, "Failed to get irq_wifi\n");
+
+	gpio = of_get_gpio(pdev->dev.of_node, 0);
+	if (gpio_is_valid(gpio))
+		gpio_direction_input(gpio);
+	else
+		dev_err(&pdev->dev, "gpio wifi is invalid\n");
+
+	if (ctx->irq_wifi >= 0) {
+		ret = devm_request_irq(&pdev->dev, ctx->irq_wifi,
+				       mwifiex_wake_irq_wifi,
+				       IRQF_TRIGGER_LOW,
+				       "wifi_wake", ctx);
+		if (ret) {
+			dev_err(&pdev->dev,
+				"Failed to request irq_wifi %d (%d)\n",
+				ctx->irq_wifi, ret);
+			return -EINVAL;
+		}
+		disable_irq(ctx->irq_wifi);
+	}
+
+	platform_set_drvdata(pdev, ctx);
+
 	return 0;
 }
 
@@ -30,6 +84,42 @@ static int mwifiex_plt_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static int __maybe_unused mwifiex_plt_suspend(struct device *dev)
+{
+	struct mwifiex_wake_dev *ctx = dev_get_drvdata(dev);
+	int ret;
+
+	if (ctx->irq_wifi >= 0) {
+		ctx->wake_by_wifi = false;
+		enable_irq(ctx->irq_wifi);
+		ret = enable_irq_wake(ctx->irq_wifi);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
+static int __maybe_unused mwifiex_plt_resume(struct device *dev)
+{
+	struct mwifiex_wake_dev *ctx = dev_get_drvdata(dev);
+	int ret;
+
+	if (ctx->irq_wifi >= 0) {
+		ret = disable_irq_wake(ctx->irq_wifi);
+		if (!ctx->wake_by_wifi)
+			disable_irq(ctx->irq_wifi);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
+static const struct dev_pm_ops mwifiex_plt_pm_ops = {
+	SET_SYSTEM_SLEEP_PM_OPS(mwifiex_plt_suspend, mwifiex_plt_resume)
+};
+
 static const struct of_device_id mwifiex_dt_match[] = {
 	{
 		.compatible = "marvell,sd8xxx",
@@ -45,6 +135,7 @@ static struct platform_driver mwifiex_platform_driver = {
 	.driver = {
 		.name	= "mwifiex_plt",
 		.of_match_table = mwifiex_dt_match,
+		.pm = &mwifiex_plt_pm_ops,
 	}
 };
 
-- 
1.8.1.4

[toc] | [prev] | [next] | [standalone]


#1337406 — Re: [PATCH v4 3/3] mwifiex: parse host wakeup configuration from device

FromRob Herring <robh@kernel.org>
Date2016-02-18 15:40 +0100
SubjectRe: [PATCH v4 3/3] mwifiex: parse host wakeup configuration from device
Message-ID<r3xUm-716-11@gated-at.bofh.it>
In reply to#1335212
On Tue, Feb 16, 2016 at 01:14:39AM -0800, Amitkumar Karwar wrote:
> From: Xinming Hu <huxm@marvell.com>
> 
> This patch implement a framework for board specific wakeup.
> driver parse irq/gpio number from device tree, corresponding
> resources will be allocated, and used for host suspend/resume.
> driver private binding file is also updated in the patch.
> 
> Signed-off-by: Xinming Hu <huxm@marvell.com>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> ---
> v4: Replaced #ifdef with __maybe_unused(Arnd Bergmann)
> ---
>  .../bindings/net/wireless/marvell-sd8xxx.txt       | 10 +++
>  .../net/wireless/marvell/mwifiex/platform_drv.c    | 91 ++++++++++++++++++++++
>  2 files changed, 101 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> index c337fab..50138fd 100644
> --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> +++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> @@ -14,6 +14,11 @@ Optional properties:
>    - marvell,wakeup-gpios : Chip's wakeup gpio pin number. This needs to be downloaded
>  			to to firmware. Chip notifies wifi wakeup signal to SOC
>  			through this pin.
> +  - interrupt-parent: phandle of the parent interrupt controller
> +  - interrupts : interrupt number to the cpu
> +  - gpios: specify SOC's wakeup GPIO

If you define the GPIO line as an interrupt, you shouldn't need it to be 
as GPIO too. Same on the BT side.

> +  - pinctrl-names : a pinctrl state named "default" must be defined
> +  - pinctrl-0 : pin control group to be used for this controller
>  
>  Example:
>  
> @@ -27,5 +32,10 @@ wlan {
>  	marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
>  0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01 ...>;
>  	marvell,wakeup-gpios = <3>;
> +	interrupt-parent = <&pio>;
> +	interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
> +	gpios = <&pio 38 GPIO_ACTIVE_HIGH>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wake_pins>;
>  };
>  

[toc] | [prev] | [next] | [standalone]


#1335215 — [PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree

FromAmitkumar Karwar <akarwar@marvell.com>
Date2016-02-16 10:30 +0100
Subject[PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree
Message-ID<r2K7g-5XK-17@gated-at.bofh.it>
In reply to#1335211
From: Xinming Hu <huxm@marvell.com>

This patch parse chip specific gpio parameter from device
tree. Corresponding binding file is also updated.

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
---
v4: Renamed "mwifiex,chip-gpio" to "marvell,wakeup-gpios"(Rob Herring/
    Arnd Bergmann)
---
 .../devicetree/bindings/net/wireless/marvell-sd8xxx.txt          | 6 ++++--
 drivers/net/wireless/marvell/mwifiex/sta_cmd.c                   | 9 +++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
index f7671ae..c337fab 100644
--- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
+++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
@@ -11,7 +11,9 @@ Optional properties:
   - marvell,caldata* : A series of properties with marvell,caldata prefix,
   		      represent Calibration data downloaded to the device during
 		      initialization. This is an array of unsigned values.
-
+  - marvell,wakeup-gpios : Chip's wakeup gpio pin number. This needs to be downloaded
+			to to firmware. Chip notifies wifi wakeup signal to SOC
+			through this pin.
 
 Example:
 
@@ -24,6 +26,6 @@ wlan {
 
 	marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
 0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01 ...>;
-
+	marvell,wakeup-gpios = <3>;
 };
 
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
index 238fe4f..fce3f98 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
@@ -2134,6 +2134,7 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
 	enum state_11d_t state_11d;
 	struct mwifiex_ds_11n_tx_cfg tx_cfg;
 	u8 sdio_sp_rx_aggr_enable;
+	u32 data;
 
 	if (first_sta) {
 		if (priv->adapter->iface_type == MWIFIEX_PCIE) {
@@ -2157,6 +2158,14 @@ int mwifiex_sta_init_cmd(struct mwifiex_private *priv, u8 first_sta, bool init)
 		adapter->dt_node = mwifiex_plt_dev ?
 				mwifiex_plt_dev->dev.of_node : NULL;
 		if (adapter->dt_node) {
+			if (of_property_read_u32(adapter->dt_node,
+						 "marvell,wakeup-gpios",
+						 &data) == 0) {
+				mwifiex_dbg(adapter, INFO,
+					    "Wakeup gpio = 0x%x\n", data);
+				adapter->hs_cfg.gpio = data;
+			}
+
 			ret = mwifiex_dnld_dt_cfgdata(priv, adapter->dt_node,
 						      "marvell,caldata");
 			if (ret)
-- 
1.8.1.4

[toc] | [prev] | [next] | [standalone]


#1337428 — Re: [PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree

FromRob Herring <robh@kernel.org>
Date2016-02-18 15:50 +0100
SubjectRe: [PATCH v4 2/3] mwifiex: parse chip specific gpio from device tree
Message-ID<r3y42-74z-7@gated-at.bofh.it>
In reply to#1335215
On Tue, Feb 16, 2016 at 01:14:38AM -0800, Amitkumar Karwar wrote:
> From: Xinming Hu <huxm@marvell.com>
> 
> This patch parse chip specific gpio parameter from device
> tree. Corresponding binding file is also updated.
> 
> Signed-off-by: Xinming Hu <huxm@marvell.com>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> ---
> v4: Renamed "mwifiex,chip-gpio" to "marvell,wakeup-gpios"(Rob Herring/
>     Arnd Bergmann)
> ---
>  .../devicetree/bindings/net/wireless/marvell-sd8xxx.txt          | 6 ++++--

Combine this with the DT change in the next patch.

>  drivers/net/wireless/marvell/mwifiex/sta_cmd.c                   | 9 +++++++++
>  2 files changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> index f7671ae..c337fab 100644
> --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> +++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> @@ -11,7 +11,9 @@ Optional properties:
>    - marvell,caldata* : A series of properties with marvell,caldata prefix,
>    		      represent Calibration data downloaded to the device during
>  		      initialization. This is an array of unsigned values.
> -
> +  - marvell,wakeup-gpios : Chip's wakeup gpio pin number. This needs to be downloaded
> +			to to firmware. Chip notifies wifi wakeup signal to SOC
> +			through this pin.

This is still confusing that it is not a GPIO from the host. I'd suggest 
"marvell,wakeup-pin"

[toc] | [prev] | [next] | [standalone]


#1335288

FromArnd Bergmann <arnd@arndb.de>
Date2016-02-16 12:30 +0100
Message-ID<r2LZn-7bM-3@gated-at.bofh.it>
In reply to#1335211
On Tuesday 16 February 2016 01:14:37 Amitkumar Karwar wrote:
> +  - compatible : must be "marvell,sd8xxx"
> 

I think we mentioned it before, but a compatible string must not contain
wildcards of any kind, as it is very possible that there are some future
sd8xxx devices that are slightly incompatible with the first one.

Please use a specfic model name here, or a list of multiple models
if they are actually different.

	Arnd

[toc] | [prev] | [next] | [standalone]


#1337403

FromRob Herring <robh@kernel.org>
Date2016-02-18 15:40 +0100
Message-ID<r3xUl-716-7@gated-at.bofh.it>
In reply to#1335211
On Tue, Feb 16, 2016 at 01:14:37AM -0800, Amitkumar Karwar wrote:
> From: Xinming Hu <huxm@marvell.com>
> 
> Platform device and driver provides easy way to interact with
> device-tree-enabled system.
> 
> This patch registers platform driver and reorganise existing device
> tree specific code. Corresponding device tree binding file is also
> created.
> 
> Signed-off-by: Xinming Hu <huxm@marvell.com>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> ---
> v3: Don't update adapter->dt_node if mwifiex_plt_dev is NULL
> v4: Corrected the 'name' and 'compatible' property names.(Arnd Bergmann and Rob
>     Herring)
>     Patch description wraped in 72 columns(Rob Herring)
>     Moved DT binding file to bindings/net/wireless/(Rob Herring)
> ---
>  .../bindings/net/wireless/marvell-sd8xxx.txt       | 29 +++++++++++

Again, one patch for all the binding changes.

>  drivers/net/wireless/marvell/mwifiex/Makefile      |  1 +
>  drivers/net/wireless/marvell/mwifiex/main.c        |  2 +
>  drivers/net/wireless/marvell/mwifiex/main.h        | 14 +++++
>  .../net/wireless/marvell/mwifiex/platform_drv.c    | 59 ++++++++++++++++++++++
>  drivers/net/wireless/marvell/mwifiex/sta_cmd.c     |  4 +-
>  6 files changed, 107 insertions(+), 2 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
>  create mode 100644 drivers/net/wireless/marvell/mwifiex/platform_drv.c
> 
> diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> new file mode 100644
> index 0000000..f7671ae
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt
> @@ -0,0 +1,29 @@
> +Marvell Sd8xxx Wireless devices
> +------
> +
> +Required properties:
> +
> +  - name : must be "wlan"
> +  - compatible : must be "marvell,sd8xxx"

No wildcards as Arnd mentioned.

> +
> +Optional properties:
> +
> +  - marvell,caldata* : A series of properties with marvell,caldata prefix,
> +  		      represent Calibration data downloaded to the device during
> +		      initialization. This is an array of unsigned values.
> +
> +
> +Example:
> +
> +Tx power limit calibration data is configured in below example.
> +The calibration data is an array of unsigned values, the length
> +can vary between hw versions.
> +
> +wlan {

This also needs to be specified as a subnode of the SDIO controller.

> +	compatible = "marvell,sd8xxx";
> +
> +	marvell,caldata_00_txpwrlimit_2g_cfg_set = /bits/ 8 <
> +0x01 0x00 0x06 0x00 0x08 0x02 0x89 0x01 ...>;
> +
> +};
> +

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web