]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
inmates: e1000-demo: Hard-wire PHY address
authorJan Kiszka <jan.kiszka@siemens.com>
Wed, 3 Feb 2016 16:44:11 +0000 (17:44 +0100)
committerJan Kiszka <jan.kiszka@siemens.com>
Wed, 3 Feb 2016 16:44:11 +0000 (17:44 +0100)
All known e1000-compatible cards have their PHYs at address 1. Searching
for them does not work reliably, so simply hard-wire the address.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
inmates/demos/x86/e1000-demo.c

index 7273f36c49eeeee1c5da9292941de920a36ae75a..6aaa102cd5a256512996dbb014551c4d0fe03857 100644 (file)
@@ -40,7 +40,7 @@
 # define E1000_EERD_DATA_SHIFT 16
 #define E1000_REG_MDIC         0x0020
 # define E1000_MDIC_REGADD_SHFT        16
-# define E1000_MDIC_PHYADD_SHFT        21
+# define E1000_MDIC_PHYADD     (0x1 << 21)
 # define E1000_MDIC_OP_WRITE   (0x1 << 26)
 # define E1000_MDIC_OP_READ    (0x2 << 26)
 # define E1000_MDIC_READY      (0x1 << 28)
 #define E1000_REG_RAH          0x5404
 # define E1000_RAH_AV          (1 << 31)
 
-#define E1000_MAX_PHYADD       7
-
 #define E1000_PHY_CTRL         0
 # define E1000_PHYC_POWER_DOWN (1 << 11)
-#define E1000_PHY_PSTATUS      1
-#define E1000_PHY_ID1          2
 
 struct eth_header {
        u8      dst[6];
@@ -140,7 +136,6 @@ static struct e1000_rxd rx_ring[RX_DESCRIPTORS] __attribute__((aligned(128)));
 static struct e1000_txd tx_ring[TX_DESCRIPTORS] __attribute__((aligned(128)));
 static unsigned int rx_idx, tx_idx;
 static struct eth_header tx_packet;
-static unsigned int phyadd;
 
 static u16 phy_read(unsigned int reg)
 {
@@ -148,7 +143,7 @@ static u16 phy_read(unsigned int reg)
 
        mmio_write32(mmiobar + E1000_REG_MDIC,
                     (reg << E1000_MDIC_REGADD_SHFT) |
-                    (phyadd << E1000_MDIC_PHYADD_SHFT) | E1000_MDIC_OP_READ);
+                    E1000_MDIC_PHYADD | E1000_MDIC_OP_READ);
        do {
                val = mmio_read32(mmiobar + E1000_REG_MDIC);
                cpu_relax();
@@ -161,7 +156,7 @@ static void phy_write(unsigned int reg, u16 val)
 {
        mmio_write32(mmiobar + E1000_REG_MDIC,
                     val | (reg << E1000_MDIC_REGADD_SHFT) |
-                    (phyadd << E1000_MDIC_PHYADD_SHFT) | E1000_MDIC_OP_WRITE);
+                    E1000_MDIC_PHYADD | E1000_MDIC_OP_WRITE);
        while (!(mmio_read32(mmiobar + E1000_REG_MDIC) & E1000_MDIC_READY))
                cpu_relax();
 }
@@ -245,10 +240,6 @@ void inmate_main(void)
        val |= E1000_CTRL_ASDE | E1000_CTRL_SLU;
        mmio_write32(mmiobar + E1000_REG_CTRL, val);
 
-       for (phyadd = 0; phyadd <= E1000_MAX_PHYADD; phyadd++)
-               if (phy_read(E1000_PHY_ID1) != 0)
-                       break;
-       printk("PHY address: %d\n", phyadd);
        /* power up again in case the previous user turned it off */
        phy_write(E1000_PHY_CTRL,
                  phy_read(E1000_PHY_CTRL) & ~E1000_PHYC_POWER_DOWN);