[PATCH v2 0/2] net: davinci_mdio: reuse for keystone2 arch

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH v2 0/2] net: davinci_mdio: reuse for keystone2 arch

Grygorii Strashko
The similar MDIO HW blocks is used by keystone 2 SoCs as
in Davinci SoCs:
- one in Gigabit Ethernet (GbE) Switch Subsystem
  See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
- one in 10 Gigabit Ethernet Subsystem
  See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf

Hence, reuse Davinci MDIO driver for Keystone 2 and
enable TI networking for Keystone 2 devices.

Also, as part of this series, enable PHY's creation from DT, because
Keystone 2 supports DT boot mode only.

Changes in v2:
- review comments applied.
  Keystone 2 compatibility string changed to "ti,keystone_mdio".

Grygorii Strashko (2):
  net: davinci_mdio: reuse for keystone2 arch
  net: davinci_mdio: allow to create phys from dt

 .../devicetree/bindings/net/davinci-mdio.txt       |    8 ++++----
 drivers/net/ethernet/ti/Kconfig                    |    4 ++--
 drivers/net/ethernet/ti/davinci_mdio.c             |   21 ++++++++++++++++++--
 3 files changed, 25 insertions(+), 8 deletions(-)

--
1.7.9.5

_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH v2 1/2] net: davinci_mdio: reuse for keystone2 arch

Grygorii Strashko
The similar MDIO HW blocks is used by keystone 2 SoCs as
in Davinci SoCs:
- one in Gigabit Ethernet (GbE) Switch Subsystem
  See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
- one in 10 Gigabit Ethernet Subsystem
  See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf

Hence, reuse Davinci MDIO driver for Keystone 2 and
enable TI networking for Keystone 2 devices

Reviewed-by: Santosh Shilimkar <[hidden email]>
Acked-by: Mugunthan V N <[hidden email]>
Signed-off-by: Grygorii Strashko <[hidden email]>
---
 .../devicetree/bindings/net/davinci-mdio.txt       |    8 ++++----
 drivers/net/ethernet/ti/Kconfig                    |    4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/davinci-mdio.txt b/Documentation/devicetree/bindings/net/davinci-mdio.txt
index 72efaaf..0369e25 100644
--- a/Documentation/devicetree/bindings/net/davinci-mdio.txt
+++ b/Documentation/devicetree/bindings/net/davinci-mdio.txt
@@ -1,8 +1,8 @@
-TI SoC Davinci MDIO Controller Device Tree Bindings
+TI SoC Davinci/Keystone2 MDIO Controller Device Tree Bindings
 ---------------------------------------------------
 
 Required properties:
-- compatible : Should be "ti,davinci_mdio"
+- compatible : Should be "ti,davinci_mdio" or "ti,keystone_mdio"
 - reg : physical base address and size of the davinci mdio
   registers map
 - bus_freq : Mdio Bus frequency
@@ -19,7 +19,7 @@ file.
 Examples:
 
  mdio: davinci_mdio@4A101000 {
- compatible = "ti,cpsw";
+ compatible = "ti,davinci_mdio";
  reg = <0x4A101000 0x1000>;
  bus_freq = <1000000>;
  };
@@ -27,7 +27,7 @@ Examples:
 (or)
 
  mdio: davinci_mdio@4A101000 {
- compatible = "ti,cpsw";
+ compatible = "ti,davinci_mdio";
  ti,hwmods = "davinci_mdio";
  bus_freq = <1000000>;
  };
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 53150c2..1769700 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -5,7 +5,7 @@
 config NET_VENDOR_TI
  bool "Texas Instruments (TI) devices"
  default y
- depends on PCI || EISA || AR7 || (ARM && (ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX))
+ depends on PCI || EISA || AR7 || (ARM && (ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX || ARCH_KEYSTONE))
  ---help---
   If you have a network (Ethernet) card belonging to this class, say Y
   and read the Ethernet-HOWTO, available from
@@ -32,7 +32,7 @@ config TI_DAVINCI_EMAC
 
 config TI_DAVINCI_MDIO
  tristate "TI DaVinci MDIO Support"
- depends on ARM && ( ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX )
+ depends on ARM && ( ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX || ARCH_KEYSTONE )
  select PHYLIB
  ---help---
   This driver supports TI's DaVinci MDIO module.
--
1.7.9.5

_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PATCH v2 2/2] net: davinci_mdio: allow to create phys from dt

Grygorii Strashko
In reply to this post by Grygorii Strashko
This patch allows to create PHYs from DT in case
if they are explicitly defined. The of_mdiobus_register() is
used for such purposes.

For backward compatibility, call  of_mdiobus_register() only in case
if at least one PHY's child is defined in DT, otherwise rollback to
mdiobus_register().

Reviewed-by: Santosh Shilimkar <[hidden email]>
Acked-by: Mugunthan V N <[hidden email]>
Signed-off-by: Grygorii Strashko <[hidden email]>
---
Hi Santosh,

I haven't changed style for long-comments, because Networking subsystem
requires first line of comment not to be empty:
WARNING:NETWORKING_BLOCK_COMMENT_STYLE: networking block comments don't use an empty /* line, use /* Comment...

 drivers/net/ethernet/ti/davinci_mdio.c |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c
index 735dc53..2791f6f 100644
--- a/drivers/net/ethernet/ti/davinci_mdio.c
+++ b/drivers/net/ethernet/ti/davinci_mdio.c
@@ -38,6 +38,7 @@
 #include <linux/davinci_emac.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/of_mdio.h>
 #include <linux/pinctrl/consumer.h>
 
 /*
@@ -95,6 +96,10 @@ struct davinci_mdio_data {
  struct mii_bus *bus;
  bool suspended;
  unsigned long access_time; /* jiffies */
+ /* Indicates that driver shouldn't modify phy_mask in case
+ * if MDIO bus is registered from DT.
+ */
+ bool skip_scan;
 };
 
 static void __davinci_mdio_reset(struct davinci_mdio_data *data)
@@ -144,6 +149,9 @@ static int davinci_mdio_reset(struct mii_bus *bus)
  dev_info(data->dev, "davinci mdio revision %d.%d\n",
  (ver >> 8) & 0xff, ver & 0xff);
 
+ if (data->skip_scan)
+ return 0;
+
  /* get phy mask from the alive register */
  phy_mask = __raw_readl(&data->regs->alive);
  if (phy_mask) {
@@ -369,8 +377,17 @@ static int davinci_mdio_probe(struct platform_device *pdev)
  goto bail_out;
  }
 
- /* register the mii bus */
- ret = mdiobus_register(data->bus);
+ /* register the mii bus
+ * Create PHYs from DT only in case if PHY child nodes are explicitly
+ * defined to support backward compatibility with DTs which assume that
+ * Davinci MDIO will always scan the bus for PHYs detection.
+ */
+ if (dev->of_node && of_get_child_count(dev->of_node)) {
+ data->skip_scan = true;
+ ret = of_mdiobus_register(data->bus, dev->of_node);
+ } else {
+ ret = mdiobus_register(data->bus);
+ }
  if (ret)
  goto bail_out;
 
--
1.7.9.5

_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH v2 1/2] net: davinci_mdio: reuse for keystone2 arch

Lad, Prabhakar
In reply to this post by Grygorii Strashko
On Wed, Jul 16, 2014 at 1:13 PM, Grygorii Strashko
<[hidden email]> wrote:

> The similar MDIO HW blocks is used by keystone 2 SoCs as
> in Davinci SoCs:
> - one in Gigabit Ethernet (GbE) Switch Subsystem
>   See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
> - one in 10 Gigabit Ethernet Subsystem
>   See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf
>
> Hence, reuse Davinci MDIO driver for Keystone 2 and
> enable TI networking for Keystone 2 devices
>
> Reviewed-by: Santosh Shilimkar <[hidden email]>
> Acked-by: Mugunthan V N <[hidden email]>
> Signed-off-by: Grygorii Strashko <[hidden email]>

Reviewed-by: Lad, Prabhakar <[hidden email]>

Thanks,
--Prabhakar Lad

> ---
>  .../devicetree/bindings/net/davinci-mdio.txt       |    8 ++++----
>  drivers/net/ethernet/ti/Kconfig                    |    4 ++--
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/davinci-mdio.txt b/Documentation/devicetree/bindings/net/davinci-mdio.txt
> index 72efaaf..0369e25 100644
> --- a/Documentation/devicetree/bindings/net/davinci-mdio.txt
> +++ b/Documentation/devicetree/bindings/net/davinci-mdio.txt
> @@ -1,8 +1,8 @@
> -TI SoC Davinci MDIO Controller Device Tree Bindings
> +TI SoC Davinci/Keystone2 MDIO Controller Device Tree Bindings
>  ---------------------------------------------------
>
>  Required properties:
> -- compatible           : Should be "ti,davinci_mdio"
> +- compatible           : Should be "ti,davinci_mdio" or "ti,keystone_mdio"
>  - reg                  : physical base address and size of the davinci mdio
>                           registers map
>  - bus_freq             : Mdio Bus frequency
> @@ -19,7 +19,7 @@ file.
>  Examples:
>
>         mdio: davinci_mdio@4A101000 {
> -               compatible = "ti,cpsw";
> +               compatible = "ti,davinci_mdio";
>                 reg = <0x4A101000 0x1000>;
>                 bus_freq = <1000000>;
>         };
> @@ -27,7 +27,7 @@ Examples:
>  (or)
>
>         mdio: davinci_mdio@4A101000 {
> -               compatible = "ti,cpsw";
> +               compatible = "ti,davinci_mdio";
>                 ti,hwmods = "davinci_mdio";
>                 bus_freq = <1000000>;
>         };
> diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
> index 53150c2..1769700 100644
> --- a/drivers/net/ethernet/ti/Kconfig
> +++ b/drivers/net/ethernet/ti/Kconfig
> @@ -5,7 +5,7 @@
>  config NET_VENDOR_TI
>         bool "Texas Instruments (TI) devices"
>         default y
> -       depends on PCI || EISA || AR7 || (ARM && (ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX))
> +       depends on PCI || EISA || AR7 || (ARM && (ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX || ARCH_KEYSTONE))
>         ---help---
>           If you have a network (Ethernet) card belonging to this class, say Y
>           and read the Ethernet-HOWTO, available from
> @@ -32,7 +32,7 @@ config TI_DAVINCI_EMAC
>
>  config TI_DAVINCI_MDIO
>         tristate "TI DaVinci MDIO Support"
> -       depends on ARM && ( ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX )
> +       depends on ARM && ( ARCH_DAVINCI || ARCH_OMAP3 || SOC_AM33XX || ARCH_KEYSTONE )
>         select PHYLIB
>         ---help---
>           This driver supports TI's DaVinci MDIO module.
> --
> 1.7.9.5
>
_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH v2 2/2] net: davinci_mdio: allow to create phys from dt

Lad, Prabhakar
In reply to this post by Grygorii Strashko
On Wed, Jul 16, 2014 at 1:13 PM, Grygorii Strashko
<[hidden email]> wrote:

> This patch allows to create PHYs from DT in case
> if they are explicitly defined. The of_mdiobus_register() is
> used for such purposes.
>
> For backward compatibility, call  of_mdiobus_register() only in case
> if at least one PHY's child is defined in DT, otherwise rollback to
> mdiobus_register().
>
> Reviewed-by: Santosh Shilimkar <[hidden email]>
> Acked-by: Mugunthan V N <[hidden email]>
> Signed-off-by: Grygorii Strashko <[hidden email]>

Reviewed-by: Lad, Prabhakar <[hidden email]>

Thanks,
--Prabhakar Lad

> ---
> Hi Santosh,
>
> I haven't changed style for long-comments, because Networking subsystem
> requires first line of comment not to be empty:
> WARNING:NETWORKING_BLOCK_COMMENT_STYLE: networking block comments don't use an empty /* line, use /* Comment...
>
>  drivers/net/ethernet/ti/davinci_mdio.c |   21 +++++++++++++++++++--
>  1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c
> index 735dc53..2791f6f 100644
> --- a/drivers/net/ethernet/ti/davinci_mdio.c
> +++ b/drivers/net/ethernet/ti/davinci_mdio.c
> @@ -38,6 +38,7 @@
>  #include <linux/davinci_emac.h>
>  #include <linux/of.h>
>  #include <linux/of_device.h>
> +#include <linux/of_mdio.h>
>  #include <linux/pinctrl/consumer.h>
>
>  /*
> @@ -95,6 +96,10 @@ struct davinci_mdio_data {
>         struct mii_bus  *bus;
>         bool            suspended;
>         unsigned long   access_time; /* jiffies */
> +       /* Indicates that driver shouldn't modify phy_mask in case
> +        * if MDIO bus is registered from DT.
> +        */
> +       bool            skip_scan;
>  };
>
>  static void __davinci_mdio_reset(struct davinci_mdio_data *data)
> @@ -144,6 +149,9 @@ static int davinci_mdio_reset(struct mii_bus *bus)
>         dev_info(data->dev, "davinci mdio revision %d.%d\n",
>                  (ver >> 8) & 0xff, ver & 0xff);
>
> +       if (data->skip_scan)
> +               return 0;
> +
>         /* get phy mask from the alive register */
>         phy_mask = __raw_readl(&data->regs->alive);
>         if (phy_mask) {
> @@ -369,8 +377,17 @@ static int davinci_mdio_probe(struct platform_device *pdev)
>                 goto bail_out;
>         }
>
> -       /* register the mii bus */
> -       ret = mdiobus_register(data->bus);
> +       /* register the mii bus
> +        * Create PHYs from DT only in case if PHY child nodes are explicitly
> +        * defined to support backward compatibility with DTs which assume that
> +        * Davinci MDIO will always scan the bus for PHYs detection.
> +        */
> +       if (dev->of_node && of_get_child_count(dev->of_node)) {
> +               data->skip_scan = true;
> +               ret = of_mdiobus_register(data->bus, dev->of_node);
> +       } else {
> +               ret = mdiobus_register(data->bus);
> +       }
>         if (ret)
>                 goto bail_out;
>
> --
> 1.7.9.5
>
_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [PATCH v2 0/2] net: davinci_mdio: reuse for keystone2 arch

David Miller-13
In reply to this post by Grygorii Strashko
From: Grygorii Strashko <[hidden email]>
Date: Wed, 16 Jul 2014 15:13:01 +0300

> The similar MDIO HW blocks is used by keystone 2 SoCs as
> in Davinci SoCs:
> - one in Gigabit Ethernet (GbE) Switch Subsystem
>   See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
> - one in 10 Gigabit Ethernet Subsystem
>   See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf
>
> Hence, reuse Davinci MDIO driver for Keystone 2 and
> enable TI networking for Keystone 2 devices.
>
> Also, as part of this series, enable PHY's creation from DT, because
> Keystone 2 supports DT boot mode only.
>
> Changes in v2:
> - review comments applied.
>   Keystone 2 compatibility string changed to "ti,keystone_mdio".

Series applied to net-next, thanks.
_______________________________________________
Davinci-linux-open-source mailing list
[hidden email]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Loading...