mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-08 23:55:14 +00:00
Merge branch 'davinci_mdio'
Grygorii Strashko says: ==================== net: davinci_mdio: reuse for keystone2 arch 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". ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
f7be2cba90
3 changed files with 25 additions and 8 deletions
|
@ -1,8 +1,8 @@
|
||||||
TI SoC Davinci MDIO Controller Device Tree Bindings
|
TI SoC Davinci/Keystone2 MDIO Controller Device Tree Bindings
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
Required properties:
|
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
|
- reg : physical base address and size of the davinci mdio
|
||||||
registers map
|
registers map
|
||||||
- bus_freq : Mdio Bus frequency
|
- bus_freq : Mdio Bus frequency
|
||||||
|
@ -19,7 +19,7 @@ file.
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
mdio: davinci_mdio@4A101000 {
|
mdio: davinci_mdio@4A101000 {
|
||||||
compatible = "ti,cpsw";
|
compatible = "ti,davinci_mdio";
|
||||||
reg = <0x4A101000 0x1000>;
|
reg = <0x4A101000 0x1000>;
|
||||||
bus_freq = <1000000>;
|
bus_freq = <1000000>;
|
||||||
};
|
};
|
||||||
|
@ -27,7 +27,7 @@ Examples:
|
||||||
(or)
|
(or)
|
||||||
|
|
||||||
mdio: davinci_mdio@4A101000 {
|
mdio: davinci_mdio@4A101000 {
|
||||||
compatible = "ti,cpsw";
|
compatible = "ti,davinci_mdio";
|
||||||
ti,hwmods = "davinci_mdio";
|
ti,hwmods = "davinci_mdio";
|
||||||
bus_freq = <1000000>;
|
bus_freq = <1000000>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
config NET_VENDOR_TI
|
config NET_VENDOR_TI
|
||||||
bool "Texas Instruments (TI) devices"
|
bool "Texas Instruments (TI) devices"
|
||||||
default y
|
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---
|
---help---
|
||||||
If you have a network (Ethernet) card belonging to this class, say Y
|
If you have a network (Ethernet) card belonging to this class, say Y
|
||||||
and read the Ethernet-HOWTO, available from
|
and read the Ethernet-HOWTO, available from
|
||||||
|
@ -32,7 +32,7 @@ config TI_DAVINCI_EMAC
|
||||||
|
|
||||||
config TI_DAVINCI_MDIO
|
config TI_DAVINCI_MDIO
|
||||||
tristate "TI DaVinci MDIO Support"
|
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
|
select PHYLIB
|
||||||
---help---
|
---help---
|
||||||
This driver supports TI's DaVinci MDIO module.
|
This driver supports TI's DaVinci MDIO module.
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <linux/davinci_emac.h>
|
#include <linux/davinci_emac.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
|
#include <linux/of_mdio.h>
|
||||||
#include <linux/pinctrl/consumer.h>
|
#include <linux/pinctrl/consumer.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -95,6 +96,10 @@ struct davinci_mdio_data {
|
||||||
struct mii_bus *bus;
|
struct mii_bus *bus;
|
||||||
bool suspended;
|
bool suspended;
|
||||||
unsigned long access_time; /* jiffies */
|
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)
|
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",
|
dev_info(data->dev, "davinci mdio revision %d.%d\n",
|
||||||
(ver >> 8) & 0xff, ver & 0xff);
|
(ver >> 8) & 0xff, ver & 0xff);
|
||||||
|
|
||||||
|
if (data->skip_scan)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* get phy mask from the alive register */
|
/* get phy mask from the alive register */
|
||||||
phy_mask = __raw_readl(&data->regs->alive);
|
phy_mask = __raw_readl(&data->regs->alive);
|
||||||
if (phy_mask) {
|
if (phy_mask) {
|
||||||
|
@ -369,8 +377,17 @@ static int davinci_mdio_probe(struct platform_device *pdev)
|
||||||
goto bail_out;
|
goto bail_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register the mii bus */
|
/* register the mii bus
|
||||||
ret = mdiobus_register(data->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)
|
if (ret)
|
||||||
goto bail_out;
|
goto bail_out;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue