]> git.sur5r.net Git - u-boot/blobdiff - include/phy.h
drivers/net/phy: introduce phy_set_supported()
[u-boot] / include / phy.h
index d117fc1634b071a6da4bd90206619840618c0dcf..e030c9ff2e2436b1a620d4bf03227e5cf320b9d9 100644 (file)
 
 #define PHY_MAX_ADDR 32
 
-#define PHY_BASIC_FEATURES     (SUPPORTED_10baseT_Half | \
-                                SUPPORTED_10baseT_Full | \
-                                SUPPORTED_100baseT_Half | \
-                                SUPPORTED_100baseT_Full | \
-                                SUPPORTED_Autoneg | \
+#define PHY_DEFAULT_FEATURES   (SUPPORTED_Autoneg | \
                                 SUPPORTED_TP | \
                                 SUPPORTED_MII)
 
-#define PHY_GBIT_FEATURES      (PHY_BASIC_FEATURES | \
-                                SUPPORTED_1000baseT_Half | \
+#define PHY_10BT_FEATURES      (SUPPORTED_10baseT_Half | \
+                                SUPPORTED_10baseT_Full)
+
+#define PHY_100BT_FEATURES     (SUPPORTED_100baseT_Half | \
+                                SUPPORTED_100baseT_Full)
+
+#define PHY_1000BT_FEATURES    (SUPPORTED_1000baseT_Half | \
                                 SUPPORTED_1000baseT_Full)
 
+#define PHY_BASIC_FEATURES     (PHY_10BT_FEATURES | \
+                                PHY_100BT_FEATURES | \
+                                PHY_DEFAULT_FEATURES)
+
+#define PHY_GBIT_FEATURES      (PHY_BASIC_FEATURES | \
+                                PHY_1000BT_FEATURES)
+
 #define PHY_10G_FEATURES       (PHY_GBIT_FEATURES | \
                                SUPPORTED_10000baseT_Full)
 
@@ -51,7 +59,9 @@ typedef enum {
        PHY_INTERFACE_MODE_RGMII_TXID,
        PHY_INTERFACE_MODE_RTBI,
        PHY_INTERFACE_MODE_XGMII,
-       PHY_INTERFACE_MODE_NONE /* Must be last */
+       PHY_INTERFACE_MODE_NONE,        /* Must be last */
+
+       PHY_INTERFACE_MODE_COUNT,
 } phy_interface_t;
 
 static const char *phy_interface_strings[] = {
@@ -142,7 +152,11 @@ struct phy_device {
        struct phy_driver *drv;
        void *priv;
 
+#ifdef CONFIG_DM_ETH
+       struct udevice *dev;
+#else
        struct eth_device *dev;
+#endif
 
        /* forced speed & duplex (no autoneg)
         * partner speed & duplex & pause (autoneg)
@@ -205,14 +219,22 @@ int phy_init(void);
 int phy_reset(struct phy_device *phydev);
 struct phy_device *phy_find_by_mask(struct mii_dev *bus, unsigned phy_mask,
                phy_interface_t interface);
+#ifdef CONFIG_DM_ETH
+void phy_connect_dev(struct phy_device *phydev, struct udevice *dev);
+struct phy_device *phy_connect(struct mii_dev *bus, int addr,
+                               struct udevice *dev,
+                               phy_interface_t interface);
+#else
 void phy_connect_dev(struct phy_device *phydev, struct eth_device *dev);
 struct phy_device *phy_connect(struct mii_dev *bus, int addr,
                                struct eth_device *dev,
                                phy_interface_t interface);
+#endif
 int phy_startup(struct phy_device *phydev);
 int phy_config(struct phy_device *phydev);
 int phy_shutdown(struct phy_device *phydev);
 int phy_register(struct phy_driver *drv);
+int phy_set_supported(struct phy_device *phydev, u32 max_speed);
 int genphy_config_aneg(struct phy_device *phydev);
 int genphy_restart_aneg(struct phy_device *phydev);
 int genphy_update_link(struct phy_device *phydev);
@@ -238,9 +260,19 @@ int phy_natsemi_init(void);
 int phy_realtek_init(void);
 int phy_smsc_init(void);
 int phy_teranetics_init(void);
+int phy_ti_init(void);
 int phy_vitesse_init(void);
 
 int board_phy_config(struct phy_device *phydev);
+int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id);
+
+/**
+ * phy_get_interface_by_name() - Look up a PHY interface name
+ *
+ * @str:       PHY interface name, e.g. "mii"
+ * @return PHY_INTERFACE_MODE_... value, or -1 if not found
+ */
+int phy_get_interface_by_name(const char *str);
 
 /* PHY UIDs for various PHYs that are referenced in external code */
 #define PHY_UID_CS4340  0x13e51002