|
@@ -122,6 +122,15 @@ struct mii_bus {
|
|
|
};
|
|
|
#define to_mii_bus(d) container_of(d, struct mii_bus, dev)
|
|
|
|
|
|
+struct mii_bus *mdiobus_alloc(void);
|
|
|
+int mdiobus_register(struct mii_bus *bus);
|
|
|
+void mdiobus_unregister(struct mii_bus *bus);
|
|
|
+void mdiobus_free(struct mii_bus *bus);
|
|
|
+struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr);
|
|
|
+int mdiobus_read(struct mii_bus *bus, int addr, u16 regnum);
|
|
|
+int mdiobus_write(struct mii_bus *bus, int addr, u16 regnum, u16 val);
|
|
|
+
|
|
|
+
|
|
|
#define PHY_INTERRUPT_DISABLED 0x0
|
|
|
#define PHY_INTERRUPT_ENABLED 0x80000000
|
|
|
|
|
@@ -399,8 +408,35 @@ struct phy_fixup {
|
|
|
int (*run)(struct phy_device *phydev);
|
|
|
};
|
|
|
|
|
|
-int phy_read(struct phy_device *phydev, u16 regnum);
|
|
|
-int phy_write(struct phy_device *phydev, u16 regnum, u16 val);
|
|
|
+/**
|
|
|
+ * phy_read - Convenience function for reading a given PHY register
|
|
|
+ * @phydev: the phy_device struct
|
|
|
+ * @regnum: register number to read
|
|
|
+ *
|
|
|
+ * NOTE: MUST NOT be called from interrupt context,
|
|
|
+ * because the bus read/write functions may wait for an interrupt
|
|
|
+ * to conclude the operation.
|
|
|
+ */
|
|
|
+static inline int phy_read(struct phy_device *phydev, u16 regnum)
|
|
|
+{
|
|
|
+ return mdiobus_read(phydev->bus, phydev->addr, regnum);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * phy_write - Convenience function for writing a given PHY register
|
|
|
+ * @phydev: the phy_device struct
|
|
|
+ * @regnum: register number to write
|
|
|
+ * @val: value to write to @regnum
|
|
|
+ *
|
|
|
+ * NOTE: MUST NOT be called from interrupt context,
|
|
|
+ * because the bus read/write functions may wait for an interrupt
|
|
|
+ * to conclude the operation.
|
|
|
+ */
|
|
|
+static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
|
|
|
+{
|
|
|
+ return mdiobus_write(phydev->bus, phydev->addr, regnum, val);
|
|
|
+}
|
|
|
+
|
|
|
int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id);
|
|
|
struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
|
|
|
int phy_clear_interrupt(struct phy_device *phydev);
|
|
@@ -416,12 +452,6 @@ void phy_start(struct phy_device *phydev);
|
|
|
void phy_stop(struct phy_device *phydev);
|
|
|
int phy_start_aneg(struct phy_device *phydev);
|
|
|
|
|
|
-struct mii_bus *mdiobus_alloc(void);
|
|
|
-int mdiobus_register(struct mii_bus *bus);
|
|
|
-void mdiobus_unregister(struct mii_bus *bus);
|
|
|
-void mdiobus_free(struct mii_bus *bus);
|
|
|
-struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr);
|
|
|
-
|
|
|
void phy_sanitize_settings(struct phy_device *phydev);
|
|
|
int phy_stop_interrupts(struct phy_device *phydev);
|
|
|
int phy_enable_interrupts(struct phy_device *phydev);
|