* [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-09-29 16:39 ` Amitkumar Karwar 0 siblings, 0 replies; 34+ messages in thread From: Amitkumar Karwar @ 2016-09-29 16:39 UTC (permalink / raw) To: linux-wireless, devicetree; +Cc: rajatja, Xinming Hu, Amitkumar Karwar From: Xinming Hu <huxm@marvell.com> This patch derives device tree node from pcie bus layer framework. Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. --- .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- 3 files changed, 27 insertions(+), 4 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 063c707..f1eeb73 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!dev->of_node || + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -1; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } + /* device tree node parsing and platform specific configuration*/ + mwifiex_pcie_probe_of(&pdev->dev); + if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, MWIFIEX_PCIE)) { pr_err("%s failed\n", __func__); diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 638d30a..f2a7a13 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 1.9.1 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-09-29 16:39 ` Amitkumar Karwar 0 siblings, 0 replies; 34+ messages in thread From: Amitkumar Karwar @ 2016-09-29 16:39 UTC (permalink / raw) To: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA Cc: rajatja-hpIqsD4AKlfQT0dZR+AlfA, Xinming Hu, Amitkumar Karwar From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> This patch derives device tree node from pcie bus layer framework. Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. --- .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- 3 files changed, 27 insertions(+), 4 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 063c707..f1eeb73 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!dev->of_node || + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -1; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } + /* device tree node parsing and platform specific configuration*/ + mwifiex_pcie_probe_of(&pdev->dev); + if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, MWIFIEX_PCIE)) { pr_err("%s failed\n", __func__); diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 638d30a..f2a7a13 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-09-29 16:54 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-09-29 16:54 UTC (permalink / raw) To: Amitkumar Karwar; +Cc: linux-wireless, devicetree, Xinming Hu, Brian Norris [+brian] On Thu, Sep 29, 2016 at 9:39 AM, Amitkumar Karwar <akarwar@marvell.com> wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 063c707..f1eeb73 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!dev->of_node || > + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > + /* device tree node parsing and platform specific configuration*/ > + mwifiex_pcie_probe_of(&pdev->dev); > + > if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > MWIFIEX_PCIE)) { > pr_err("%s failed\n", __func__); > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 638d30a..f2a7a13 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 1.9.1 > ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-09-29 16:54 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-09-29 16:54 UTC (permalink / raw) To: Amitkumar Karwar Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Brian Norris [+brian] On Thu, Sep 29, 2016 at 9:39 AM, Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 063c707..f1eeb73 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!dev->of_node || > + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > + /* device tree node parsing and platform specific configuration*/ > + mwifiex_pcie_probe_of(&pdev->dev); > + > if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > MWIFIEX_PCIE)) { > pr_err("%s failed\n", __func__); > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 638d30a..f2a7a13 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 1.9.1 > ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-10-04 13:34 ` Rob Herring 0 siblings, 0 replies; 34+ messages in thread From: Rob Herring @ 2016-10-04 13:34 UTC (permalink / raw) To: Amitkumar Karwar; +Cc: linux-wireless, devicetree, rajatja, Xinming Hu On Thu, Sep 29, 2016 at 10:09:43PM +0530, Amitkumar Karwar wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. Capitalize SDIO/PCIe > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" The string is pciVVVV,DDDD. Looks like you have vendor and device swapped. Rob ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-10-04 13:34 ` Rob Herring 0 siblings, 0 replies; 34+ messages in thread From: Rob Herring @ 2016-10-04 13:34 UTC (permalink / raw) To: Amitkumar Karwar Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, rajatja-hpIqsD4AKlfQT0dZR+AlfA, Xinming Hu On Thu, Sep 29, 2016 at 10:09:43PM +0530, Amitkumar Karwar wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. Capitalize SDIO/PCIe > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" The string is pciVVVV,DDDD. Looks like you have vendor and device swapped. Rob -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-10-05 19:48 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-05 19:48 UTC (permalink / raw) To: Amitkumar Karwar; +Cc: linux-wireless, devicetree, rajatja, Xinming Hu Hi, On Thu, Sep 29, 2016 at 10:09:43PM +0530, Amitkumar Karwar wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- Why is this patch so different than the SDIO DT handling for the same driver? > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 063c707..f1eeb73 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!dev->of_node || In sdio.c, this check is done silently; that way, we don't error out (and print an error string) just because there's no DT node. And I think that makes sense. Maybe pull this condition out separately and return 0? > + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; > + } > + Just an FYI, the equivalent sdio.c code (mwifiex_sdio_probe_of()) also parses a platform-specific wakeup pin. Rajat and I were considering moving that to mwifiex_register(), so we can get the same handling in pcie.c. But I think it's probably sane to leave the compatible table here in the interface driver for now. > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > + /* device tree node parsing and platform specific configuration*/ > + mwifiex_pcie_probe_of(&pdev->dev); You aren't catching the error code here. Probably because you're wrongly returning an error above for the !of_node case. Brian > + > if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > MWIFIEX_PCIE)) { > pr_err("%s failed\n", __func__); > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 638d30a..f2a7a13 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH RESEND v3] mwifiex: parse device tree node for PCIe @ 2016-10-05 19:48 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-05 19:48 UTC (permalink / raw) To: Amitkumar Karwar Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, rajatja-hpIqsD4AKlfQT0dZR+AlfA, Xinming Hu Hi, On Thu, Sep 29, 2016 at 10:09:43PM +0530, Amitkumar Karwar wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > --- Why is this patch so different than the SDIO DT handling for the same driver? > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++++--- > drivers/net/wireless/marvell/mwifiex/pcie.c | 20 ++++++++++++++++++++ > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 ++- > 3 files changed, 27 insertions(+), 4 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 063c707..f1eeb73 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,23 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!dev->of_node || In sdio.c, this check is done silently; that way, we don't error out (and print an error string) just because there's no DT node. And I think that makes sense. Maybe pull this condition out separately and return 0? > + !of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; > + } > + Just an FYI, the equivalent sdio.c code (mwifiex_sdio_probe_of()) also parses a platform-specific wakeup pin. Rajat and I were considering moving that to mwifiex_register(), so we can get the same handling in pcie.c. But I think it's probably sane to leave the compatible table here in the interface driver for now. > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -206,6 +223,9 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > + /* device tree node parsing and platform specific configuration*/ > + mwifiex_pcie_probe_of(&pdev->dev); You aren't catching the error code here. Probably because you're wrongly returning an error above for the !of_node case. Brian > + > if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > MWIFIEX_PCIE)) { > pr_err("%s failed\n", __func__); > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 638d30a..f2a7a13 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v4] mwifiex: parse device tree node for PCIe 2016-10-05 19:48 ` Brian Norris @ 2016-10-21 0:30 ` Rajat Jain -1 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 0:30 UTC (permalink / raw) To: linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain, Rajat Jain From: Xinming Hu <huxm@marvell.com> This patch derives device tree node from pcie bus layer framework. Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Rajat Jain <rajatja@google.com> --- Since I need this patch and haven't seen updates, I thought I'll take a stab. v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 42 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..b3e6f06 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -1; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, + "required compatible string missing\n"); + goto err_free; + } } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v4] mwifiex: parse device tree node for PCIe @ 2016-10-21 0:30 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 0:30 UTC (permalink / raw) To: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain-Re5JQEeQqe8AvxtiuMwx3w, Rajat Jain From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> This patch derives device tree node from pcie bus layer framework. Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> --- Since I need this patch and haven't seen updates, I thought I'll take a stab. v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 42 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..b3e6f06 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -1; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, + "required compatible string missing\n"); + goto err_free; + } } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [PATCH v4] mwifiex: parse device tree node for PCIe @ 2016-10-21 2:06 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-21 2:06 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain On Thu, Oct 20, 2016 at 05:30:12PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > Signed-off-by: Rajat Jain <rajatja@google.com> > --- > Since I need this patch and haven't seen updates, I thought I'll take a stab. > > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 42 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) Patch looks better to me (esp. the error handling): Reviewed-by: Brian Norris <briannorris@chromium.org> > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 3c3c4f1..b3e6f06 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; Not a big fan of these '-1' error codes, instead or proper error codes. But that's preexisting. (Or at least, this matches the sdio.c version.) > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > struct pcie_service_card *card; > + int ret; > > pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", > pdev->vendor, pdev->device, pdev->revision); > @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > - MWIFIEX_PCIE)) { > - pr_err("%s failed\n", __func__); > - return -1; > + /* device tree node parsing and platform specific configuration*/ > + if (pdev->dev.of_node) { > + ret = mwifiex_pcie_probe_of(&pdev->dev); > + if (ret) { > + dev_err(&pdev->dev, > + "required compatible string missing\n"); > + goto err_free; > + } > } > > + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > + MWIFIEX_PCIE); > + if (ret) { > + pr_err("%s failed\n", __func__); > + goto err_free; > + } > return 0; > + > +err_free: > + kfree(card); Is it just me, or does this fix a memory leak too? Not a big deal IMO, but maybe worth noting. Brian > + return ret; > } > > /* > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 2a162c3..c8dccf5 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 2.8.0.rc3.226.g39d4020 > ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v4] mwifiex: parse device tree node for PCIe @ 2016-10-21 2:06 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-21 2:06 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain-Re5JQEeQqe8AvxtiuMwx3w On Thu, Oct 20, 2016 at 05:30:12PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework. > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accomodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > --- > Since I need this patch and haven't seen updates, I thought I'll take a stab. > > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 42 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) Patch looks better to me (esp. the error handling): Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 3c3c4f1..b3e6f06 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + pr_err("pcie device node not available"); > + return -1; Not a big fan of these '-1' error codes, instead or proper error codes. But that's preexisting. (Or at least, this matches the sdio.c version.) > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > struct pcie_service_card *card; > + int ret; > > pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", > pdev->vendor, pdev->device, pdev->revision); > @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > - MWIFIEX_PCIE)) { > - pr_err("%s failed\n", __func__); > - return -1; > + /* device tree node parsing and platform specific configuration*/ > + if (pdev->dev.of_node) { > + ret = mwifiex_pcie_probe_of(&pdev->dev); > + if (ret) { > + dev_err(&pdev->dev, > + "required compatible string missing\n"); > + goto err_free; > + } > } > > + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > + MWIFIEX_PCIE); > + if (ret) { > + pr_err("%s failed\n", __func__); > + goto err_free; > + } > return 0; > + > +err_free: > + kfree(card); Is it just me, or does this fix a memory leak too? Not a big deal IMO, but maybe worth noting. Brian > + return ret; > } > > /* > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 2a162c3..c8dccf5 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 2.8.0.rc3.226.g39d4020 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v5] mwifiex: parse device tree node for PCIe 2016-10-21 2:06 ` Brian Norris @ 2016-10-21 17:15 ` Rajat Jain -1 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 17:15 UTC (permalink / raw) To: linux-wireless, devicetree, rajatja, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain From: Xinming Hu <huxm@marvell.com> This patch derives device tree node from pcie bus layer framework, and fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Rajat Jain <rajatja@google.com> Reviewed-by: Brian Norris <briannorris@chromium.org> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. v5: Update commit log to include memory leak, return -EINVAL instead of -1. .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 42 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..7c44f88 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -EINVAL; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, + "required compatible string missing\n"); + goto err_free; + } } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v5] mwifiex: parse device tree node for PCIe @ 2016-10-21 17:15 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 17:15 UTC (permalink / raw) To: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, rajatja-hpIqsD4AKlfQT0dZR+AlfA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain-Re5JQEeQqe8AvxtiuMwx3w From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> This patch derives device tree node from pcie bus layer framework, and fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accomodate PCIe changes. Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. v5: Update commit log to include memory leak, return -EINVAL instead of -1. .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 39 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 42 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..7c44f88 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + pr_err("pcie device node not available"); + return -EINVAL; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,27 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) { + dev_err(&pdev->dev, + "required compatible string missing\n"); + goto err_free; + } } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-21 21:21 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 21:21 UTC (permalink / raw) To: linux-wireless, devicetree, rajatja, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain From: Xinming Hu <huxm@marvell.com> This patch derives device tree node from pcie bus layer framework, and fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accommodate PCIe changes. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Rajat Jain <rajatja@google.com> Reviewed-by: Brian Norris <briannorris@chromium.org> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. v5: Update commit log to include memory leak, return -EINVAL instead of -1. v6: Remove an unnecessary error print, fix typo in commit log .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 39 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..f7c84d3 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + dev_err(dev, "required compatible string missing\n"); + return -EINVAL; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,24 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) + goto err_free; } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-21 21:21 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-21 21:21 UTC (permalink / raw) To: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, rajatja-hpIqsD4AKlfQT0dZR+AlfA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring Cc: rajatxjain-Re5JQEeQqe8AvxtiuMwx3w From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> This patch derives device tree node from pcie bus layer framework, and fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). Device tree bindings file has been renamed(marvell-sd8xxx.txt -> marvell-8xxx.txt) to accommodate PCIe changes. Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> --- v2: Included vendor and product IDs in compatible strings for PCIe chipsets(Rob Herring) v3: Patch is created using -M option so that it will only include diff of original and renamed files(Rob Herring) Resend v3: Resending the patch because I missed to include device tree mailing while sending v3. v4: Fix error handling, also move-on even if no device tree node is present. v5: Update commit log to include memory leak, return -EINVAL instead of -1. v6: Remove an unnecessary error print, fix typo in commit log .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- 3 files changed, 39 insertions(+), 8 deletions(-) rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt similarity index 91% rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt index c421aba..dfe5f8e 100644 --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt @@ -1,8 +1,8 @@ -Marvell 8897/8997 (sd8897/sd8997) SDIO devices +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices ------ -This node provides properties for controlling the marvell sdio wireless device. -The node is expected to be specified as a child node to the SDIO controller that +This node provides properties for controlling the marvell sdio/pcie wireless device. +The node is expected to be specified as a child node to the SDIO/PCIE controller that connects the device to the system. Required properties: @@ -10,6 +10,8 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8897" * "marvell,sd8997" + * "pci11ab,2b42" + * "pci1b4b,2b42" Optional properties: diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 3c3c4f1..f7c84d3 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; static struct semaphore add_remove_card_sem; +static const struct of_device_id mwifiex_pcie_of_match_table[] = { + { .compatible = "pci11ab,2b42" }, + { .compatible = "pci1b4b,2b42" }, + { } +}; + +static int mwifiex_pcie_probe_of(struct device *dev) +{ + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { + dev_err(dev, "required compatible string missing\n"); + return -EINVAL; + } + + return 0; +} + static int mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, size_t size, int flags) @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct pcie_service_card *card; + int ret; pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", pdev->vendor, pdev->device, pdev->revision); @@ -199,13 +216,24 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, card->pcie.can_ext_scan = data->can_ext_scan; } - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, - MWIFIEX_PCIE)) { - pr_err("%s failed\n", __func__); - return -1; + /* device tree node parsing and platform specific configuration*/ + if (pdev->dev.of_node) { + ret = mwifiex_pcie_probe_of(&pdev->dev); + if (ret) + goto err_free; } + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, + MWIFIEX_PCIE); + if (ret) { + pr_err("%s failed\n", __func__); + goto err_free; + } return 0; + +err_free: + kfree(card); + return ret; } /* diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c index 2a162c3..c8dccf5 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c @@ -2218,7 +2218,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. */ - if (priv->adapter->iface_type == MWIFIEX_SDIO && + if ((priv->adapter->iface_type == MWIFIEX_SDIO || + priv->adapter->iface_type == MWIFIEX_PCIE) && adapter->dev->of_node) { adapter->dt_node = adapter->dev->of_node; if (of_property_read_u32(adapter->dt_node, -- 2.8.0.rc3.226.g39d4020 ^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 20:17 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 20:17 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain, Dmitry Torokhov Hi Rajat, On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework, and > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accommodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > Signed-off-by: Rajat Jain <rajatja@google.com> > Reviewed-by: Brian Norris <briannorris@chromium.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > v5: Update commit log to include memory leak, return -EINVAL instead of -1. I've been working on reworking some bugfixes for this driver, and I noticed we have some problems w.r.t. memory leaks, and the "memory leak" fix is not actually a fix. See below. > v6: Remove an unnecessary error print, fix typo in commit log > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 39 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 3c3c4f1..f7c84d3 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + dev_err(dev, "required compatible string missing\n"); > + return -EINVAL; > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > struct pcie_service_card *card; > + int ret; > > pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", > pdev->vendor, pdev->device, pdev->revision); > @@ -199,13 +216,24 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > - MWIFIEX_PCIE)) { > - pr_err("%s failed\n", __func__); > - return -1; > + /* device tree node parsing and platform specific configuration*/ > + if (pdev->dev.of_node) { > + ret = mwifiex_pcie_probe_of(&pdev->dev); > + if (ret) > + goto err_free; > } > > + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > + MWIFIEX_PCIE); > + if (ret) { > + pr_err("%s failed\n", __func__); > + goto err_free; For most error cases in mwifiex_add_card(), we call cleanup_if(), which currently calls kfree(card). It's currently unbalanced, so there are *some* cases that leak. But... > + } > return 0; > + > +err_free: > + kfree(card); That means that most of the time, this is actually a double-free. I'd rather have the leak than the double-free :) Anyway, I have a patch in the works (as part of some device init/teardown bugfixes) that will convert the allocation to devm_kzalloc() and drop the kfree()'ing. So that'll fix the aforementioned bug. In your next revision (sorry), please just drop this "leak" fix. Regards, Brian > + return ret; > } > > /* > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 2a162c3..c8dccf5 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 2.8.0.rc3.226.g39d4020 > ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 20:17 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 20:17 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain-Re5JQEeQqe8AvxtiuMwx3w, Dmitry Torokhov Hi Rajat, On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework, and > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accommodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > v5: Update commit log to include memory leak, return -EINVAL instead of -1. I've been working on reworking some bugfixes for this driver, and I noticed we have some problems w.r.t. memory leaks, and the "memory leak" fix is not actually a fix. See below. > v6: Remove an unnecessary error print, fix typo in commit log > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 39 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" > > Optional properties: > > diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c > index 3c3c4f1..f7c84d3 100644 > --- a/drivers/net/wireless/marvell/mwifiex/pcie.c > +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c > @@ -37,6 +37,22 @@ static struct mwifiex_if_ops pcie_ops; > > static struct semaphore add_remove_card_sem; > > +static const struct of_device_id mwifiex_pcie_of_match_table[] = { > + { .compatible = "pci11ab,2b42" }, > + { .compatible = "pci1b4b,2b42" }, > + { } > +}; > + > +static int mwifiex_pcie_probe_of(struct device *dev) > +{ > + if (!of_match_node(mwifiex_pcie_of_match_table, dev->of_node)) { > + dev_err(dev, "required compatible string missing\n"); > + return -EINVAL; > + } > + > + return 0; > +} > + > static int > mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb, > size_t size, int flags) > @@ -178,6 +194,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > struct pcie_service_card *card; > + int ret; > > pr_debug("info: vendor=0x%4.04X device=0x%4.04X rev=%d\n", > pdev->vendor, pdev->device, pdev->revision); > @@ -199,13 +216,24 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, > card->pcie.can_ext_scan = data->can_ext_scan; > } > > - if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > - MWIFIEX_PCIE)) { > - pr_err("%s failed\n", __func__); > - return -1; > + /* device tree node parsing and platform specific configuration*/ > + if (pdev->dev.of_node) { > + ret = mwifiex_pcie_probe_of(&pdev->dev); > + if (ret) > + goto err_free; > } > > + ret = mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, > + MWIFIEX_PCIE); > + if (ret) { > + pr_err("%s failed\n", __func__); > + goto err_free; For most error cases in mwifiex_add_card(), we call cleanup_if(), which currently calls kfree(card). It's currently unbalanced, so there are *some* cases that leak. But... > + } > return 0; > + > +err_free: > + kfree(card); That means that most of the time, this is actually a double-free. I'd rather have the leak than the double-free :) Anyway, I have a patch in the works (as part of some device init/teardown bugfixes) that will convert the allocation to devm_kzalloc() and drop the kfree()'ing. So that'll fix the aforementioned bug. In your next revision (sorry), please just drop this "leak" fix. Regards, Brian > + return ret; > } > > /* > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > index 2a162c3..c8dccf5 100644 > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > @@ -2218,7 +2218,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. > */ > - if (priv->adapter->iface_type == MWIFIEX_SDIO && > + if ((priv->adapter->iface_type == MWIFIEX_SDIO || > + priv->adapter->iface_type == MWIFIEX_PCIE) && > adapter->dev->of_node) { > adapter->dt_node = adapter->dev->of_node; > if (of_property_read_u32(adapter->dt_node, > -- > 2.8.0.rc3.226.g39d4020 > ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 20:17 ` Brian Norris @ 2016-10-26 20:46 ` Dmitry Torokhov -1 siblings, 0 replies; 34+ messages in thread From: Dmitry Torokhov @ 2016-10-26 20:46 UTC (permalink / raw) To: Brian Norris Cc: Rajat Jain, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > Hi Rajat, > > On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > > From: Xinming Hu <huxm@marvell.com> > > > > This patch derives device tree node from pcie bus layer framework, and > > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > > marvell-8xxx.txt) to accommodate PCIe changes. > > > > Signed-off-by: Xinming Hu <huxm@marvell.com> > > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > > Signed-off-by: Rajat Jain <rajatja@google.com> > > Reviewed-by: Brian Norris <briannorris@chromium.org> > > --- > > v2: Included vendor and product IDs in compatible strings for PCIe > > chipsets(Rob Herring) > > v3: Patch is created using -M option so that it will only include diff of > > original and renamed files(Rob Herring) > > Resend v3: Resending the patch because I missed to include device tree mailing > > while sending v3. > > v4: Fix error handling, also move-on even if no device tree node is present. > > v5: Update commit log to include memory leak, return -EINVAL instead of -1. > > I've been working on reworking some bugfixes for this driver, and I > noticed we have some problems w.r.t. memory leaks, and the "memory leak" > fix is not actually a fix. See below. Sorry, I just saw this... Why do we need devicetree data for discoverable bus (PCI)? How does the driver work on systems that do not use DT? Why do we need them to behave differently? Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 20:46 ` Dmitry Torokhov 0 siblings, 0 replies; 34+ messages in thread From: Dmitry Torokhov @ 2016-10-26 20:46 UTC (permalink / raw) To: Brian Norris Cc: Rajat Jain, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, rajatxjain-Re5JQEeQqe8AvxtiuMwx3w On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > Hi Rajat, > > On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > > > This patch derives device tree node from pcie bus layer framework, and > > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > > marvell-8xxx.txt) to accommodate PCIe changes. > > > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > > Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > > --- > > v2: Included vendor and product IDs in compatible strings for PCIe > > chipsets(Rob Herring) > > v3: Patch is created using -M option so that it will only include diff of > > original and renamed files(Rob Herring) > > Resend v3: Resending the patch because I missed to include device tree mailing > > while sending v3. > > v4: Fix error handling, also move-on even if no device tree node is present. > > v5: Update commit log to include memory leak, return -EINVAL instead of -1. > > I've been working on reworking some bugfixes for this driver, and I > noticed we have some problems w.r.t. memory leaks, and the "memory leak" > fix is not actually a fix. See below. Sorry, I just saw this... Why do we need devicetree data for discoverable bus (PCI)? How does the driver work on systems that do not use DT? Why do we need them to behave differently? Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 20:46 ` Dmitry Torokhov (?) @ 2016-10-26 20:51 ` Rajat Jain 2016-10-26 20:56 ` Brian Norris -1 siblings, 1 reply; 34+ messages in thread From: Rajat Jain @ 2016-10-26 20:51 UTC (permalink / raw) To: Dmitry Torokhov Cc: Brian Norris, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain [-- Attachment #1: Type: text/plain, Size: 2113 bytes --] On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > Hi Rajat, > > > > On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > > > From: Xinming Hu <huxm@marvell.com> > > > > > > This patch derives device tree node from pcie bus layer framework, and > > > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > > > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > > > marvell-8xxx.txt) to accommodate PCIe changes. > > > > > > Signed-off-by: Xinming Hu <huxm@marvell.com> > > > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > > > Signed-off-by: Rajat Jain <rajatja@google.com> > > > Reviewed-by: Brian Norris <briannorris@chromium.org> > > > --- > > > v2: Included vendor and product IDs in compatible strings for PCIe > > > chipsets(Rob Herring) > > > v3: Patch is created using -M option so that it will only include diff > of > > > original and renamed files(Rob Herring) > > > Resend v3: Resending the patch because I missed to include device tree > mailing > > > while sending v3. > > > v4: Fix error handling, also move-on even if no device tree node is > present. > > > v5: Update commit log to include memory leak, return -EINVAL instead > of -1. > > > > I've been working on reworking some bugfixes for this driver, and I > > noticed we have some problems w.r.t. memory leaks, and the "memory leak" > > fix is not actually a fix. See below. > > Sorry, I just saw this... Why do we need devicetree data for > discoverable bus (PCI)? How does the driver work on systems that do not > use DT? Why do we need them to behave differently? > There are a couple of out-of-band GPIO pins from Marvell chip that can serve as wake-up pins (wake up the CPU when asserted). The Marvell chip has to be told which GPIO pin is to be used as the wake-up pin. The pin to be used is system / platform dependent. (On some systems it could be GPIO13, on others it could be GPIO14 etc depending on how the marvell chip is wired up to the CPU). > > Thanks. > > -- > Dmitry > [-- Attachment #2: Type: text/html, Size: 3155 bytes --] ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 20:56 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 20:56 UTC (permalink / raw) To: Rajat Jain Cc: Dmitry Torokhov, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > <dmitry.torokhov@gmail.com> wrote: > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > Sorry, I just saw this... Why do we need devicetree data for > discoverable bus (PCI)? How does the driver work on systems that do not > use DT? Why do we need them to behave differently? > > There are a couple of out-of-band GPIO pins from Marvell chip that can > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > be used is system / platform dependent. (On some systems it could be > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > is wired up to the CPU). There's also calibration data. See "marvell,caldata*" and "marvell,wakeup-pin" properties. Currently only for SDIO, in Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but we're adding support for PCIe. Brian ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 20:56 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 20:56 UTC (permalink / raw) To: Rajat Jain Cc: Dmitry Torokhov, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > Sorry, I just saw this... Why do we need devicetree data for > discoverable bus (PCI)? How does the driver work on systems that do not > use DT? Why do we need them to behave differently? > > There are a couple of out-of-band GPIO pins from Marvell chip that can > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > be used is system / platform dependent. (On some systems it could be > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > is wired up to the CPU). There's also calibration data. See "marvell,caldata*" and "marvell,wakeup-pin" properties. Currently only for SDIO, in Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but we're adding support for PCIe. Brian ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 20:56 ` Brian Norris @ 2016-10-26 21:06 ` Dmitry Torokhov -1 siblings, 0 replies; 34+ messages in thread From: Dmitry Torokhov @ 2016-10-26 21:06 UTC (permalink / raw) To: Brian Norris Cc: Rajat Jain, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > > <dmitry.torokhov@gmail.com> wrote: > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > Sorry, I just saw this... Why do we need devicetree data for > > discoverable bus (PCI)? How does the driver work on systems that do not > > use DT? Why do we need them to behave differently? > > > > There are a couple of out-of-band GPIO pins from Marvell chip that can > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > > be used is system / platform dependent. (On some systems it could be > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > > is wired up to the CPU). So wakeup pin is not wired to PCIe WAKE? > There's also calibration data. See "marvell,caldata*" and > "marvell,wakeup-pin" properties. Currently only for SDIO, in > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but > we're adding support for PCIe. How would it all work if I moved the PCIe module from one device to another? Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 21:06 ` Dmitry Torokhov 0 siblings, 0 replies; 34+ messages in thread From: Dmitry Torokhov @ 2016-10-26 21:06 UTC (permalink / raw) To: Brian Norris Cc: Rajat Jain, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > > <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > Sorry, I just saw this... Why do we need devicetree data for > > discoverable bus (PCI)? How does the driver work on systems that do not > > use DT? Why do we need them to behave differently? > > > > There are a couple of out-of-band GPIO pins from Marvell chip that can > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > > be used is system / platform dependent. (On some systems it could be > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > > is wired up to the CPU). So wakeup pin is not wired to PCIe WAKE? > There's also calibration data. See "marvell,caldata*" and > "marvell,wakeup-pin" properties. Currently only for SDIO, in > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but > we're adding support for PCIe. How would it all work if I moved the PCIe module from one device to another? Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 21:06 ` Dmitry Torokhov @ 2016-10-26 21:08 ` Brian Norris -1 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 21:08 UTC (permalink / raw) To: Dmitry Torokhov Cc: Rajat Jain, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 02:06:48PM -0700, Dmitry Torokhov wrote: > On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: > > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > > > <dmitry.torokhov@gmail.com> wrote: > > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > > Sorry, I just saw this... Why do we need devicetree data for > > > discoverable bus (PCI)? How does the driver work on systems that do not > > > use DT? Why do we need them to behave differently? > > > > > > There are a couple of out-of-band GPIO pins from Marvell chip that can > > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > > > be used is system / platform dependent. (On some systems it could be > > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > > > is wired up to the CPU). > > So wakeup pin is not wired to PCIe WAKE? Not in our case. > > There's also calibration data. See "marvell,caldata*" and > > "marvell,wakeup-pin" properties. Currently only for SDIO, in > > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but > > we're adding support for PCIe. > > How would it all work if I moved the PCIe module from one device to > another? These boards are soldered down, at least in the case I care about. Brian ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 21:08 ` Brian Norris 0 siblings, 0 replies; 34+ messages in thread From: Brian Norris @ 2016-10-26 21:08 UTC (permalink / raw) To: Dmitry Torokhov Cc: Rajat Jain, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 02:06:48PM -0700, Dmitry Torokhov wrote: > On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: > > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > > > <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > > Sorry, I just saw this... Why do we need devicetree data for > > > discoverable bus (PCI)? How does the driver work on systems that do not > > > use DT? Why do we need them to behave differently? > > > > > > There are a couple of out-of-band GPIO pins from Marvell chip that can > > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip > > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to > > > be used is system / platform dependent. (On some systems it could be > > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip > > > is wired up to the CPU). > > So wakeup pin is not wired to PCIe WAKE? Not in our case. > > There's also calibration data. See "marvell,caldata*" and > > "marvell,wakeup-pin" properties. Currently only for SDIO, in > > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but > > we're adding support for PCIe. > > How would it all work if I moved the PCIe module from one device to > another? These boards are soldered down, at least in the case I care about. Brian ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 21:08 ` Brian Norris (?) @ 2016-10-26 21:12 ` Rajat Jain -1 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-26 21:12 UTC (permalink / raw) To: Brian Norris Cc: Dmitry Torokhov, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain [-- Attachment #1: Type: text/plain, Size: 1775 bytes --] On Wed, Oct 26, 2016 at 2:08 PM, Brian Norris <briannorris@chromium.org> wrote: > On Wed, Oct 26, 2016 at 02:06:48PM -0700, Dmitry Torokhov wrote: > > On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: > > > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: > > > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov > > > > <dmitry.torokhov@gmail.com> wrote: > > > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: > > > > Sorry, I just saw this... Why do we need devicetree data for > > > > discoverable bus (PCI)? How does the driver work on systems > that do not > > > > use DT? Why do we need them to behave differently? > > > > > > > > There are a couple of out-of-band GPIO pins from Marvell chip > that can > > > > serve as wake-up pins (wake up the CPU when asserted). The > Marvell chip > > > > has to be told which GPIO pin is to be used as the wake-up pin. > The pin to > > > > be used is system / platform dependent. (On some systems it could > be > > > > GPIO13, on others it could be GPIO14 etc depending on how the > marvell chip > > > > is wired up to the CPU). > > > > So wakeup pin is not wired to PCIe WAKE? > > Not in our case. > > > > There's also calibration data. See "marvell,caldata*" and > > > "marvell,wakeup-pin" properties. Currently only for SDIO, in > > > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but > > > we're adding support for PCIe. > > > > How would it all work if I moved the PCIe module from one device to > > another? > > These boards are soldered down, at least in the case I care about. > Correct. Since the out of band wake-up pin is not standard on the PCIe connector - this feature is for soldered chips only. > > Brian > [-- Attachment #2: Type: text/html, Size: 2703 bytes --] ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-26 21:08 ` Brian Norris @ 2016-10-26 21:16 ` Rajat Jain -1 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-26 21:16 UTC (permalink / raw) To: Brian Norris Cc: Dmitry Torokhov, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 2:08 PM, Brian Norris <briannorris@chromium.org> wrote: > On Wed, Oct 26, 2016 at 02:06:48PM -0700, Dmitry Torokhov wrote: >> On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: >> > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: >> > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov >> > > <dmitry.torokhov@gmail.com> wrote: >> > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: >> > > Sorry, I just saw this... Why do we need devicetree data for >> > > discoverable bus (PCI)? How does the driver work on systems that do not >> > > use DT? Why do we need them to behave differently? >> > > >> > > There are a couple of out-of-band GPIO pins from Marvell chip that can >> > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip >> > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to >> > > be used is system / platform dependent. (On some systems it could be >> > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip >> > > is wired up to the CPU). >> >> So wakeup pin is not wired to PCIe WAKE? > > Not in our case. > >> > There's also calibration data. See "marvell,caldata*" and >> > "marvell,wakeup-pin" properties. Currently only for SDIO, in >> > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but >> > we're adding support for PCIe. >> >> How would it all work if I moved the PCIe module from one device to >> another? > > These boards are soldered down, at least in the case I care about. That is right. Since the out of band wake-up pin is not standard on the PCIe connector - this feature is for soldered chips only. > > Brian ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-26 21:16 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-26 21:16 UTC (permalink / raw) To: Brian Norris Cc: Dmitry Torokhov, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, Rob Herring, Rajat Jain On Wed, Oct 26, 2016 at 2:08 PM, Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> wrote: > On Wed, Oct 26, 2016 at 02:06:48PM -0700, Dmitry Torokhov wrote: >> On Wed, Oct 26, 2016 at 01:56:34PM -0700, Brian Norris wrote: >> > On Wed, Oct 26, 2016 at 01:51:48PM -0700, Rajat Jain wrote: >> > > On Wed, Oct 26, 2016 at 1:46 PM, Dmitry Torokhov >> > > <dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> > > On Wed, Oct 26, 2016 at 01:17:36PM -0700, Brian Norris wrote: >> > > Sorry, I just saw this... Why do we need devicetree data for >> > > discoverable bus (PCI)? How does the driver work on systems that do not >> > > use DT? Why do we need them to behave differently? >> > > >> > > There are a couple of out-of-band GPIO pins from Marvell chip that can >> > > serve as wake-up pins (wake up the CPU when asserted). The Marvell chip >> > > has to be told which GPIO pin is to be used as the wake-up pin. The pin to >> > > be used is system / platform dependent. (On some systems it could be >> > > GPIO13, on others it could be GPIO14 etc depending on how the marvell chip >> > > is wired up to the CPU). >> >> So wakeup pin is not wired to PCIe WAKE? > > Not in our case. > >> > There's also calibration data. See "marvell,caldata*" and >> > "marvell,wakeup-pin" properties. Currently only for SDIO, in >> > Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt, but >> > we're adding support for PCIe. >> >> How would it all work if I moved the PCIe module from one device to >> another? > > These boards are soldered down, at least in the case I care about. That is right. Since the out of band wake-up pin is not standard on the PCIe connector - this feature is for soldered chips only. > > Brian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-30 20:41 ` Rob Herring 0 siblings, 0 replies; 34+ messages in thread From: Rob Herring @ 2016-10-30 20:41 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, rajatxjain On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm@marvell.com> > > This patch derives device tree node from pcie bus layer framework, and > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accommodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm@marvell.com> > Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> > Signed-off-by: Rajat Jain <rajatja@google.com> > Reviewed-by: Brian Norris <briannorris@chromium.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > v5: Update commit log to include memory leak, return -EINVAL instead of -1. > v6: Remove an unnecessary error print, fix typo in commit log > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 39 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. s/marvell/Marvell/ s/sdio\/pcie/SDIO\/PCIE/ > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" I think I already said this, but you have the vendor and product IDs reversed. Rob ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-30 20:41 ` Rob Herring 0 siblings, 0 replies; 34+ messages in thread From: Rob Herring @ 2016-10-30 20:41 UTC (permalink / raw) To: Rajat Jain Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo, rajatxjain-Re5JQEeQqe8AvxtiuMwx3w On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: > From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > > This patch derives device tree node from pcie bus layer framework, and > fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). > Device tree bindings file has been renamed(marvell-sd8xxx.txt -> > marvell-8xxx.txt) to accommodate PCIe changes. > > Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > --- > v2: Included vendor and product IDs in compatible strings for PCIe > chipsets(Rob Herring) > v3: Patch is created using -M option so that it will only include diff of > original and renamed files(Rob Herring) > Resend v3: Resending the patch because I missed to include device tree mailing > while sending v3. > v4: Fix error handling, also move-on even if no device tree node is present. > v5: Update commit log to include memory leak, return -EINVAL instead of -1. > v6: Remove an unnecessary error print, fix typo in commit log > > .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- > drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- > 3 files changed, 39 insertions(+), 8 deletions(-) > rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) > > diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > similarity index 91% > rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > index c421aba..dfe5f8e 100644 > --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt > +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt > @@ -1,8 +1,8 @@ > -Marvell 8897/8997 (sd8897/sd8997) SDIO devices > +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices > ------ > > -This node provides properties for controlling the marvell sdio wireless device. > -The node is expected to be specified as a child node to the SDIO controller that > +This node provides properties for controlling the marvell sdio/pcie wireless device. s/marvell/Marvell/ s/sdio\/pcie/SDIO\/PCIE/ > +The node is expected to be specified as a child node to the SDIO/PCIE controller that > connects the device to the system. > > Required properties: > @@ -10,6 +10,8 @@ Required properties: > - compatible : should be one of the following: > * "marvell,sd8897" > * "marvell,sd8997" > + * "pci11ab,2b42" > + * "pci1b4b,2b42" I think I already said this, but you have the vendor and product IDs reversed. Rob ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe 2016-10-30 20:41 ` Rob Herring @ 2016-10-31 17:09 ` Rajat Jain -1 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-31 17:09 UTC (permalink / raw) To: Rob Herring Cc: Rajat Jain, linux-wireless, devicetree, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo On Sun, Oct 30, 2016 at 1:41 PM, Rob Herring <robh@kernel.org> wrote: > On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: >> From: Xinming Hu <huxm@marvell.com> >> >> This patch derives device tree node from pcie bus layer framework, and >> fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). >> Device tree bindings file has been renamed(marvell-sd8xxx.txt -> >> marvell-8xxx.txt) to accommodate PCIe changes. >> >> Signed-off-by: Xinming Hu <huxm@marvell.com> >> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> >> Signed-off-by: Rajat Jain <rajatja@google.com> >> Reviewed-by: Brian Norris <briannorris@chromium.org> >> --- >> v2: Included vendor and product IDs in compatible strings for PCIe >> chipsets(Rob Herring) >> v3: Patch is created using -M option so that it will only include diff of >> original and renamed files(Rob Herring) >> Resend v3: Resending the patch because I missed to include device tree mailing >> while sending v3. >> v4: Fix error handling, also move-on even if no device tree node is present. >> v5: Update commit log to include memory leak, return -EINVAL instead of -1. >> v6: Remove an unnecessary error print, fix typo in commit log >> >> .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- >> drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- >> drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- >> 3 files changed, 39 insertions(+), 8 deletions(-) >> rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) >> >> diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> similarity index 91% >> rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt >> rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> index c421aba..dfe5f8e 100644 >> --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt >> +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> @@ -1,8 +1,8 @@ >> -Marvell 8897/8997 (sd8897/sd8997) SDIO devices >> +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices >> ------ >> >> -This node provides properties for controlling the marvell sdio wireless device. >> -The node is expected to be specified as a child node to the SDIO controller that >> +This node provides properties for controlling the marvell sdio/pcie wireless device. > > s/marvell/Marvell/ > s/sdio\/pcie/SDIO\/PCIE/ > >> +The node is expected to be specified as a child node to the SDIO/PCIE controller that >> connects the device to the system. >> >> Required properties: >> @@ -10,6 +10,8 @@ Required properties: >> - compatible : should be one of the following: >> * "marvell,sd8897" >> * "marvell,sd8997" >> + * "pci11ab,2b42" >> + * "pci1b4b,2b42" > Hi Rob, > I think I already said this, but you have the vendor and product IDs > reversed. Actually Marvell has 2 vendor IDs assigned to it. In include/linux/pci_ids.h: #define PCI_VENDOR_ID_MARVELL 0x11ab #define PCI_VENDOR_ID_MARVELL_EXT 0x1b4b So in this case the compatible property describes a single product ID, with both possible vendor IDs. Thanks, Rajat > > Rob ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6] mwifiex: parse device tree node for PCIe @ 2016-10-31 17:09 ` Rajat Jain 0 siblings, 0 replies; 34+ messages in thread From: Rajat Jain @ 2016-10-31 17:09 UTC (permalink / raw) To: Rob Herring Cc: Rajat Jain, linux-wireless-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, Xinming Hu, Amitkumar Karwar, Brian Norris, Kalle Valo On Sun, Oct 30, 2016 at 1:41 PM, Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote: > On Fri, Oct 21, 2016 at 02:21:09PM -0700, Rajat Jain wrote: >> From: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> >> >> This patch derives device tree node from pcie bus layer framework, and >> fixes a minor memory leak in mwifiex_pcie_probe() (in failure path). >> Device tree bindings file has been renamed(marvell-sd8xxx.txt -> >> marvell-8xxx.txt) to accommodate PCIe changes. >> >> Signed-off-by: Xinming Hu <huxm-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> >> Signed-off-by: Amitkumar Karwar <akarwar-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> >> Signed-off-by: Rajat Jain <rajatja-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> >> Reviewed-by: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> >> --- >> v2: Included vendor and product IDs in compatible strings for PCIe >> chipsets(Rob Herring) >> v3: Patch is created using -M option so that it will only include diff of >> original and renamed files(Rob Herring) >> Resend v3: Resending the patch because I missed to include device tree mailing >> while sending v3. >> v4: Fix error handling, also move-on even if no device tree node is present. >> v5: Update commit log to include memory leak, return -EINVAL instead of -1. >> v6: Remove an unnecessary error print, fix typo in commit log >> >> .../{marvell-sd8xxx.txt => marvell-8xxx.txt} | 8 +++-- >> drivers/net/wireless/marvell/mwifiex/pcie.c | 36 +++++++++++++++++++--- >> drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 3 +- >> 3 files changed, 39 insertions(+), 8 deletions(-) >> rename Documentation/devicetree/bindings/net/wireless/{marvell-sd8xxx.txt => marvell-8xxx.txt} (91%) >> >> diff --git a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> similarity index 91% >> rename from Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt >> rename to Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> index c421aba..dfe5f8e 100644 >> --- a/Documentation/devicetree/bindings/net/wireless/marvell-sd8xxx.txt >> +++ b/Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt >> @@ -1,8 +1,8 @@ >> -Marvell 8897/8997 (sd8897/sd8997) SDIO devices >> +Marvell 8897/8997 (sd8897/sd8997/pcie8997) SDIO/PCIE devices >> ------ >> >> -This node provides properties for controlling the marvell sdio wireless device. >> -The node is expected to be specified as a child node to the SDIO controller that >> +This node provides properties for controlling the marvell sdio/pcie wireless device. > > s/marvell/Marvell/ > s/sdio\/pcie/SDIO\/PCIE/ > >> +The node is expected to be specified as a child node to the SDIO/PCIE controller that >> connects the device to the system. >> >> Required properties: >> @@ -10,6 +10,8 @@ Required properties: >> - compatible : should be one of the following: >> * "marvell,sd8897" >> * "marvell,sd8997" >> + * "pci11ab,2b42" >> + * "pci1b4b,2b42" > Hi Rob, > I think I already said this, but you have the vendor and product IDs > reversed. Actually Marvell has 2 vendor IDs assigned to it. In include/linux/pci_ids.h: #define PCI_VENDOR_ID_MARVELL 0x11ab #define PCI_VENDOR_ID_MARVELL_EXT 0x1b4b So in this case the compatible property describes a single product ID, with both possible vendor IDs. Thanks, Rajat > > Rob ^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2016-10-31 17:09 UTC | newest] Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-09-29 16:39 [PATCH RESEND v3] mwifiex: parse device tree node for PCIe Amitkumar Karwar 2016-09-29 16:39 ` Amitkumar Karwar 2016-09-29 16:54 ` Rajat Jain 2016-09-29 16:54 ` Rajat Jain 2016-10-04 13:34 ` Rob Herring 2016-10-04 13:34 ` Rob Herring 2016-10-05 19:48 ` Brian Norris 2016-10-05 19:48 ` Brian Norris 2016-10-21 0:30 ` [PATCH v4] " Rajat Jain 2016-10-21 0:30 ` Rajat Jain 2016-10-21 2:06 ` Brian Norris 2016-10-21 2:06 ` Brian Norris 2016-10-21 17:15 ` [PATCH v5] " Rajat Jain 2016-10-21 17:15 ` Rajat Jain 2016-10-21 21:21 ` [PATCH v6] " Rajat Jain 2016-10-21 21:21 ` Rajat Jain 2016-10-26 20:17 ` Brian Norris 2016-10-26 20:17 ` Brian Norris 2016-10-26 20:46 ` Dmitry Torokhov 2016-10-26 20:46 ` Dmitry Torokhov 2016-10-26 20:51 ` Rajat Jain 2016-10-26 20:56 ` Brian Norris 2016-10-26 20:56 ` Brian Norris 2016-10-26 21:06 ` Dmitry Torokhov 2016-10-26 21:06 ` Dmitry Torokhov 2016-10-26 21:08 ` Brian Norris 2016-10-26 21:08 ` Brian Norris 2016-10-26 21:12 ` Rajat Jain 2016-10-26 21:16 ` Rajat Jain 2016-10-26 21:16 ` Rajat Jain 2016-10-30 20:41 ` Rob Herring 2016-10-30 20:41 ` Rob Herring 2016-10-31 17:09 ` Rajat Jain 2016-10-31 17:09 ` Rajat Jain
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.