summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/drivers/net/pcnet32.c6
-rw-r--r--src/drivers/net/sundance.c7
-rw-r--r--src/include/mii.h21
3 files changed, 21 insertions, 13 deletions
diff --git a/src/drivers/net/pcnet32.c b/src/drivers/net/pcnet32.c
index 2ceccbc1..223bc1e2 100644
--- a/src/drivers/net/pcnet32.c
+++ b/src/drivers/net/pcnet32.c
@@ -222,12 +222,6 @@ struct {
unsigned char rxb[RX_RING_SIZE][PKT_BUF_SZ];
} pcnet32_bufs __shared;
-/* May need to be moved to mii.h */
-struct mii_if_info {
- int phy_id;
- int advertising;
- unsigned int full_duplex:1; /* is full duplex? */
-};
/*
* The first three fields of pcnet32_private are read by the ethernet device
diff --git a/src/drivers/net/sundance.c b/src/drivers/net/sundance.c
index a5552cfc..c446ac08 100644
--- a/src/drivers/net/sundance.c
+++ b/src/drivers/net/sundance.c
@@ -59,13 +59,6 @@ FILE_LICENCE ( GPL2_OR_LATER );
#define virt_to_le32desc(addr) cpu_to_le32(virt_to_bus(addr))
#define le32desc_to_virt(addr) bus_to_virt(le32_to_cpu(addr))
-/* May need to be moved to mii.h */
-struct mii_if_info {
- int phy_id;
- int advertising;
- unsigned int full_duplex:1; /* is full duplex? */
-};
-
/* Set the mtu */
static int mtu = 1514;
diff --git a/src/include/mii.h b/src/include/mii.h
index e17ec63b..27a0b639 100644
--- a/src/include/mii.h
+++ b/src/include/mii.h
@@ -12,6 +12,9 @@
FILE_LICENCE ( GPL2_ONLY );
+#ifndef _MII_H_
+#define _MII_H_
+
/* Generic MII registers. */
#define MII_BMCR 0x00 /* Basic mode control register */
@@ -105,3 +108,21 @@ FILE_LICENCE ( GPL2_ONLY );
#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */
#define NWAYTEST_RESV2 0xfe00 /* Unused... */
+#include <gpxe/netdevice.h>
+
+struct mii_if_info {
+ int phy_id;
+ int advertising;
+ int phy_id_mask;
+ int reg_num_mask;
+
+ unsigned int full_duplex : 1; /* is full duplex? */
+ unsigned int force_media : 1; /* is autoneg. disabled? */
+ unsigned int supports_gmii : 1; /* are GMII registers supported? */
+
+ struct net_device *dev;
+ int (*mdio_read) (struct net_device *dev, int phy_id, int location);
+ void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
+};
+
+#endif