|
|
@@ -105,18 +105,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|
105
|
105
|
#define SMSCUSB_MII_DATA_GET(mii_data) \
|
|
106
|
106
|
( ( (mii_data) >> 0 ) & 0xffff ) /**< Get data */
|
|
107
|
107
|
|
|
108
|
|
-/** PHY interrupt source MII register */
|
|
109
|
|
-#define SMSCUSB_MII_PHY_INTR_SOURCE 29
|
|
110
|
|
-
|
|
111
|
|
-/** PHY interrupt mask MII register */
|
|
112
|
|
-#define SMSCUSB_MII_PHY_INTR_MASK 30
|
|
113
|
|
-
|
|
114
|
|
-/** PHY interrupt: auto-negotiation complete */
|
|
115
|
|
-#define SMSCUSB_PHY_INTR_ANEG_DONE 0x0040
|
|
116
|
|
-
|
|
117
|
|
-/** PHY interrupt: link down */
|
|
118
|
|
-#define SMSCUSB_PHY_INTR_LINK_DOWN 0x0010
|
|
119
|
|
-
|
|
120
|
108
|
/** Maximum time to wait for MII (in milliseconds) */
|
|
121
|
109
|
#define SMSCUSB_MII_MAX_WAIT_MS 100
|
|
122
|
110
|
|
|
|
@@ -166,6 +154,8 @@ struct smscusb_device {
|
|
166
|
154
|
struct mii_interface mii;
|
|
167
|
155
|
/** MII register base */
|
|
168
|
156
|
uint16_t mii_base;
|
|
|
157
|
+ /** PHY interrupt source register */
|
|
|
158
|
+ uint16_t phy_source;
|
|
169
|
159
|
/** Interrupt status */
|
|
170
|
160
|
uint32_t int_sts;
|
|
171
|
161
|
};
|
|
|
@@ -279,12 +269,15 @@ smscusb_init ( struct smscusb_device *smscusb, struct net_device *netdev,
|
|
279
|
269
|
*
|
|
280
|
270
|
* @v smscusb SMSC USB device
|
|
281
|
271
|
* @v mii_base MII register base
|
|
|
272
|
+ * @v phy_source Interrupt source PHY register
|
|
282
|
273
|
*/
|
|
283
|
274
|
static inline __attribute__ (( always_inline )) void
|
|
284
|
|
-smscusb_mii_init ( struct smscusb_device *smscusb, unsigned int mii_base ) {
|
|
|
275
|
+smscusb_mii_init ( struct smscusb_device *smscusb, unsigned int mii_base,
|
|
|
276
|
+ unsigned int phy_source ) {
|
|
285
|
277
|
|
|
286
|
278
|
mii_init ( &smscusb->mii, &smscusb_mii_operations );
|
|
287
|
279
|
smscusb->mii_base = mii_base;
|
|
|
280
|
+ smscusb->phy_source = phy_source;
|
|
288
|
281
|
}
|
|
289
|
282
|
|
|
290
|
283
|
extern int smscusb_eeprom_fetch_mac ( struct smscusb_device *smscusb,
|
|
|
@@ -292,7 +285,8 @@ extern int smscusb_eeprom_fetch_mac ( struct smscusb_device *smscusb,
|
|
292
|
285
|
extern int smscusb_otp_fetch_mac ( struct smscusb_device *smscusb,
|
|
293
|
286
|
unsigned int otp_base );
|
|
294
|
287
|
extern int smscusb_mii_check_link ( struct smscusb_device *smscusb );
|
|
295
|
|
-extern int smscusb_mii_open ( struct smscusb_device *smscusb );
|
|
|
288
|
+extern int smscusb_mii_open ( struct smscusb_device *smscusb,
|
|
|
289
|
+ unsigned int phy_mask, unsigned int intrs );
|
|
296
|
290
|
extern int smscusb_set_address ( struct smscusb_device *smscusb,
|
|
297
|
291
|
unsigned int addr_base );
|
|
298
|
292
|
extern int smscusb_set_filter ( struct smscusb_device *smscusb,
|