From 83c05515d8b428b9dd1ce6e7031048d4c1971152 Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Thu, 31 Mar 2016 19:33:12 +0000 Subject: net: Remove unused mv88e61xx switch driver No boards are using this driver. Remove in preparation for a new driver with integrated PHY support. Signed-off-by: Kevin Smith Acked-by: Joe Hershberger Cc: Prafulla Wadaskar Cc: Albert ARIBAUD Cc: Stefan Roese Cc: Marek Vasut --- include/netdev.h | 58 -------------------------------------------------------- 1 file changed, 58 deletions(-) (limited to 'include') diff --git a/include/netdev.h b/include/netdev.h index 244f23f93c..7a211bc609 100644 --- a/include/netdev.h +++ b/include/netdev.h @@ -134,64 +134,6 @@ static inline int pci_eth_init(bd_t *bis) return num; } -/* - * Boards with mv88e61xx switch can use this by defining - * CONFIG_MV88E61XX_SWITCH in respective board configheader file - * the stuct and enums here are used to specify switch configuration params - */ -#if defined(CONFIG_MV88E61XX_SWITCH) - -/* constants for any 88E61xx switch */ -#define MV88E61XX_MAX_PORTS_NUM 6 - -enum mv88e61xx_cfg_mdip { - MV88E61XX_MDIP_NOCHANGE, - MV88E61XX_MDIP_REVERSE -}; - -enum mv88e61xx_cfg_ledinit { - MV88E61XX_LED_INIT_DIS, - MV88E61XX_LED_INIT_EN -}; - -enum mv88e61xx_cfg_rgmiid { - MV88E61XX_RGMII_DELAY_DIS, - MV88E61XX_RGMII_DELAY_EN -}; - -enum mv88e61xx_cfg_prtstt { - MV88E61XX_PORTSTT_DISABLED, - MV88E61XX_PORTSTT_BLOCKING, - MV88E61XX_PORTSTT_LEARNING, - MV88E61XX_PORTSTT_FORWARDING -}; - -struct mv88e61xx_config { - char *name; - u8 vlancfg[MV88E61XX_MAX_PORTS_NUM]; - enum mv88e61xx_cfg_rgmiid rgmii_delay; - enum mv88e61xx_cfg_prtstt portstate; - enum mv88e61xx_cfg_ledinit led_init; - enum mv88e61xx_cfg_mdip mdip; - u32 ports_enabled; - u8 cpuport; -}; - -/* - * Common mappings for Internal VLANs - * These mappings consider that all ports are useable; the driver - * will mask inexistent/unused ports. - */ - -/* Switch mode : routes any port to any port */ -#define MV88E61XX_VLANCFG_SWITCH { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F } - -/* Router mode: routes only CPU port 5 to/from non-CPU ports 0-4 */ -#define MV88E61XX_VLANCFG_ROUTER { 0x20, 0x20, 0x20, 0x20, 0x20, 0x1F } - -int mv88e61xx_switch_initialize(struct mv88e61xx_config *swconfig); -#endif /* CONFIG_MV88E61XX_SWITCH */ - struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id); #ifdef CONFIG_PHYLIB struct phy_device; -- cgit From 24ae3961f811ee79e6c98474e21e07f8ce222dfc Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Thu, 31 Mar 2016 19:33:12 +0000 Subject: net: phy: Add PHY driver for mv88e61xx switches The previous mv88e61xx driver was a driver for configuring the switch, but did not integrate with the PHY/networking system, so it could not be used as a PHY by U-boot. This is a complete rework to support this device as a PHY. Signed-off-by: Kevin Smith Acked-by: Prafulla Wadaskar Cc: Albert ARIBAUD Cc: Joe Hershberger Cc: Stefan Roese Cc: Marek Vasut Acked-by: Joe Hershberger --- include/phy.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/phy.h b/include/phy.h index 21459a8c80..969992c747 100644 --- a/include/phy.h +++ b/include/phy.h @@ -249,6 +249,7 @@ int gen10g_startup(struct phy_device *phydev); int gen10g_shutdown(struct phy_device *phydev); int gen10g_discover_mmds(struct phy_device *phydev); +int phy_mv88e61xx_init(void); int phy_aquantia_init(void); int phy_atheros_init(void); int phy_broadcom_init(void); -- cgit From 73443b9e4c451b17d1e08164ea933ee6a849b2b3 Mon Sep 17 00:00:00 2001 From: Mugunthan V N Date: Thu, 28 Apr 2016 15:36:02 +0530 Subject: drivers: core: device: add support to check dt compatible for a device/machine Provide an api to check whether the given device or machine is compatible with the given compat string which helps in making decisions in drivers based on device or machine compatible. Idea taken from Linux. Signed-off-by: Mugunthan V N Reviewed-by: Joe Hershberger --- include/dm/device.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'include') diff --git a/include/dm/device.h b/include/dm/device.h index e9a8ec72c9..f03bcd3b49 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -547,6 +547,29 @@ int device_set_name(struct udevice *dev, const char *name); */ void device_set_name_alloced(struct udevice *dev); +/** + * of_device_is_compatible() - check if the device is compatible with the compat + * + * This allows to check whether the device is comaptible with the compat. + * + * @dev: udevice pointer for which compatible needs to be verified. + * @compat: Compatible string which needs to verified in the given + * device + * @return true if OK, false if the compatible is not found + */ +bool of_device_is_compatible(struct udevice *dev, const char *compat); + +/** + * of_machine_is_compatible() - check if the machine is compatible with + * the compat + * + * This allows to check whether the machine is comaptible with the compat. + * + * @compat: Compatible string which needs to verified + * @return true if OK, false if the compatible is not found + */ +bool of_machine_is_compatible(const char *compat); + /** * device_is_on_pci_bus - Test if a device is on a PCI bus * -- cgit From 3d12e804956ca996b6621cd1e04fabd39b401882 Mon Sep 17 00:00:00 2001 From: Mugunthan V N Date: Thu, 28 Apr 2016 15:36:03 +0530 Subject: ti_omap5_common: eth: do not define DM_ETH for spl Since omap's spl doesn't support DM currently, do not define DM_ETH for spl build. Signed-off-by: Mugunthan V N Reviewed-by: Simon Glass Reviewed-by: Tom Rini Acked-by: Joe Hershberger --- include/configs/ti_omap5_common.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h index b049be49ee..2135af0db7 100644 --- a/include/configs/ti_omap5_common.h +++ b/include/configs/ti_omap5_common.h @@ -153,6 +153,7 @@ #ifdef CONFIG_SPL_BUILD #undef CONFIG_DM_MMC #undef CONFIG_TIMER +#undef CONFIG_DM_ETH #endif #endif /* __CONFIG_TI_OMAP5_COMMON_H */ -- cgit From e4310566deb7533301eb0de78d3640f4f307d267 Mon Sep 17 00:00:00 2001 From: Mugunthan V N Date: Thu, 28 Apr 2016 15:36:07 +0530 Subject: drivers: net: cpsw: add support for reading mac address from efuse Different TI platforms has to read with different combination to get the mac address from efuse. So add support to read mac address based on machine/device compatibles. The code is taken from Linux drivers/net/ethernet/ti/cpsw-common.c done by Tony Lindgren. Signed-off-by: Mugunthan V N Reviewed-by: Tom Rini Acked-by: Joe Hershberger --- include/cpsw.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/cpsw.h b/include/cpsw.h index cf1d30bfdc..6255cd80ef 100644 --- a/include/cpsw.h +++ b/include/cpsw.h @@ -51,5 +51,6 @@ struct cpsw_platform_data { }; int cpsw_register(struct cpsw_platform_data *data); +int ti_cm_get_macid(struct udevice *dev, int slave, u8 *mac_addr); #endif /* _CPSW_H_ */ -- cgit From cb3862277b73b57ade3774b8fa684d3d7c324ba3 Mon Sep 17 00:00:00 2001 From: Dan Murphy Date: Mon, 2 May 2016 15:45:56 -0500 Subject: drivers: net: cpsw: Add reading of DT phy-handle node Add the ability to read the phy-handle node of the cpsw slave. Upon reading this handle the phy-id can be stored based on the reg node in the DT. The phy-handle also needs to be stored and passed to the phy to access any phy data that is available. Signed-off-by: Dan Murphy Tested-by: Mugunthan V N Acked-by: Joe Hershberger --- include/cpsw.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/cpsw.h b/include/cpsw.h index 6255cd80ef..257d12a08d 100644 --- a/include/cpsw.h +++ b/include/cpsw.h @@ -21,6 +21,7 @@ struct cpsw_slave_data { u32 sliver_reg_ofs; int phy_addr; int phy_if; + int phy_of_handle; }; enum { -- cgit From c7ba7bdc9d9940313ff5a63644ae3d74c77636cc Mon Sep 17 00:00:00 2001 From: Dan Murphy Date: Mon, 2 May 2016 15:45:58 -0500 Subject: net: phy: dp83867: Add device tree bindings and documentation Add the device tree bindings and the accompanying documentation for the TI DP83867 Giga bit ethernet phy driver. The original document was from: [commit 2a10154abcb75ad0d7b6bfea6210ac743ec60897 from the Linux kernel] Signed-off-by: Dan Murphy Reviewed-by: Mugunthan V N Tested-by: Mugunthan V N Acked-by: Joe Hershberger --- include/dt-bindings/net/ti-dp83867.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 include/dt-bindings/net/ti-dp83867.h (limited to 'include') diff --git a/include/dt-bindings/net/ti-dp83867.h b/include/dt-bindings/net/ti-dp83867.h new file mode 100644 index 0000000000..1843757a5c --- /dev/null +++ b/include/dt-bindings/net/ti-dp83867.h @@ -0,0 +1,35 @@ +/* + * TI DP83867 PHY drivers + * + * SPDX-License-Identifier: GPL-2.0 + * + */ + +#ifndef _DT_BINDINGS_TI_DP83867_H +#define _DT_BINDINGS_TI_DP83867_H + +/* PHY CTRL bits */ +#define DP83867_PHYCR_FIFO_DEPTH_3_B_NIB 0x00 +#define DP83867_PHYCR_FIFO_DEPTH_4_B_NIB 0x01 +#define DP83867_PHYCR_FIFO_DEPTH_6_B_NIB 0x02 +#define DP83867_PHYCR_FIFO_DEPTH_8_B_NIB 0x03 + +/* RGMIIDCTL internal delay for rx and tx */ +#define DP83867_RGMIIDCTL_250_PS 0x0 +#define DP83867_RGMIIDCTL_500_PS 0x1 +#define DP83867_RGMIIDCTL_750_PS 0x2 +#define DP83867_RGMIIDCTL_1_NS 0x3 +#define DP83867_RGMIIDCTL_1_25_NS 0x4 +#define DP83867_RGMIIDCTL_1_50_NS 0x5 +#define DP83867_RGMIIDCTL_1_75_NS 0x6 +#define DP83867_RGMIIDCTL_2_00_NS 0x7 +#define DP83867_RGMIIDCTL_2_25_NS 0x8 +#define DP83867_RGMIIDCTL_2_50_NS 0x9 +#define DP83867_RGMIIDCTL_2_75_NS 0xa +#define DP83867_RGMIIDCTL_3_00_NS 0xb +#define DP83867_RGMIIDCTL_3_25_NS 0xc +#define DP83867_RGMIIDCTL_3_50_NS 0xd +#define DP83867_RGMIIDCTL_3_75_NS 0xe +#define DP83867_RGMIIDCTL_4_00_NS 0xf + +#endif -- cgit From 3ab72fe8075b137c238665008c356239d1e6bc54 Mon Sep 17 00:00:00 2001 From: Dan Murphy Date: Mon, 2 May 2016 15:46:00 -0500 Subject: net: phy: Move is_rgmii helper to phy.h Move the phy_interface_is_rgmii to the phy.h file for all phy's to be able to use the API. This now aligns with the Linux kernel based on commit e463d88c36d42211aa72ed76d32fb8bf37820ef1 Signed-off-by: Dan Murphy Reviewed-by: Mugunthan V N Reviewed-by: Michal Simek Tested-by: Mugunthan V N Acked-by: Joe Hershberger --- include/phy.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/phy.h b/include/phy.h index 969992c747..7346da7cb6 100644 --- a/include/phy.h +++ b/include/phy.h @@ -278,6 +278,17 @@ int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id); */ int phy_get_interface_by_name(const char *str); +/** + * phy_interface_is_rgmii - Convenience function for testing if a PHY interface + * is RGMII (all variants) + * @phydev: the phy_device struct + */ +static inline bool phy_interface_is_rgmii(struct phy_device *phydev) +{ + return phydev->interface >= PHY_INTERFACE_MODE_RGMII && + phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID; +} + /* PHY UIDs for various PHYs that are referenced in external code */ #define PHY_UID_CS4340 0x13e51002 #define PHY_UID_TN2020 0x00a19410 -- cgit From 3c221af3c3bb4eadc0899f611c8b25bb95a1e09f Mon Sep 17 00:00:00 2001 From: Dan Murphy Date: Mon, 2 May 2016 15:46:01 -0500 Subject: net: phy: Add phy_interface_is_sgmii to phy.h Add a helper to phy.h to identify whether the phy is configured for SGMII all variables. Signed-off-by: Dan Murphy Reviewed-by: Mugunthan V N Reviewed-by: Michal Simek Tested-by: Mugunthan V N Acked-by: Joe Hershberger --- include/phy.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/phy.h b/include/phy.h index 7346da7cb6..268d9a1823 100644 --- a/include/phy.h +++ b/include/phy.h @@ -289,6 +289,17 @@ static inline bool phy_interface_is_rgmii(struct phy_device *phydev) phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID; } +/** + * phy_interface_is_sgmii - Convenience function for testing if a PHY interface + * is SGMII (all variants) + * @phydev: the phy_device struct + */ +static inline bool phy_interface_is_sgmii(struct phy_device *phydev) +{ + return phydev->interface >= PHY_INTERFACE_MODE_SGMII && + phydev->interface <= PHY_INTERFACE_MODE_QSGMII; +} + /* PHY UIDs for various PHYs that are referenced in external code */ #define PHY_UID_CS4340 0x13e51002 #define PHY_UID_TN2020 0x00a19410 -- cgit