E1000_*_REG don't bring any value by being macros and implicit appending of "E1000_" prefix to the constant name only makes thing harder to grep or understand. Replace those macros with functions. Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> --- drivers/net/Makefile | 2 +- drivers/net/e1000/e1000.h | 22 ++- drivers/net/e1000/eeprom.c | 102 ++++++------ drivers/net/e1000/main.c | 404 ++++++++++++++++++++++----------------------- drivers/net/e1000/regio.c | 29 ++++ 5 files changed, 293 insertions(+), 266 deletions(-) create mode 100644 drivers/net/e1000/regio.c diff --git a/drivers/net/Makefile b/drivers/net/Makefile index 08166d2..42ea208 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -10,7 +10,7 @@ obj-$(CONFIG_DRIVER_NET_CPSW) += cpsw.o obj-$(CONFIG_DRIVER_NET_DAVINCI_EMAC) += davinci_emac.o obj-$(CONFIG_DRIVER_NET_DESIGNWARE) += designware.o obj-$(CONFIG_DRIVER_NET_DM9K) += dm9k.o -obj-$(CONFIG_DRIVER_NET_E1000) += e1000/main.o e1000/eeprom.o +obj-$(CONFIG_DRIVER_NET_E1000) += e1000/regio.o e1000/main.o e1000/eeprom.o obj-$(CONFIG_DRIVER_NET_ENC28J60) += enc28j60.o obj-$(CONFIG_DRIVER_NET_EP93XX) += ep93xx.o obj-$(CONFIG_DRIVER_NET_ETHOC) += ethoc.o diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h index 19faf0b..7c5c98b 100644 --- a/drivers/net/e1000/e1000.h +++ b/drivers/net/e1000/e1000.h @@ -28,18 +28,6 @@ #define DEBUGFUNC() do { } while (0) #endif -/* I/O wrapper functions */ -#define E1000_WRITE_REG(a, reg, value) \ - writel((value), ((a)->hw_addr + E1000_##reg)) -#define E1000_READ_REG(a, reg) \ - readl((a)->hw_addr + E1000_##reg) -#define E1000_WRITE_REG_ARRAY(a, reg, offset, value) \ - writel((value), ((a)->hw_addr + E1000_##reg + ((offset) << 2))) -#define E1000_READ_REG_ARRAY(a, reg, offset) \ - readl((a)->hw_addr + E1000_##reg + ((offset) << 2)) -#define E1000_WRITE_FLUSH(a) \ - do { E1000_READ_REG(a, STATUS); } while (0) - /* Enumerated types specific to the e1000 hardware */ /* Media Access Controlers */ typedef enum { @@ -2128,6 +2116,16 @@ struct e1000_hw { int rx_tail, rx_last; }; +void e1000_write_reg(struct e1000_hw *hw, uint32_t reg, + uint32_t value); +uint32_t e1000_read_reg(struct e1000_hw *hw, uint32_t reg); +uint32_t e1000_read_reg_array(struct e1000_hw *hw, + uint32_t base, uint32_t idx); +void e1000_write_reg_array(struct e1000_hw *hw, uint32_t base, + uint32_t idx, uint32_t value); + +void e1000_write_flush(struct e1000_hw *hw); + int32_t e1000_init_eeprom_params(struct e1000_hw *hw); int e1000_validate_eeprom_checksum(struct e1000_hw *hw); int32_t e1000_read_eeprom(struct e1000_hw *hw, uint16_t offset, diff --git a/drivers/net/e1000/eeprom.c b/drivers/net/e1000/eeprom.c index cc9199b..c16f69a 100644 --- a/drivers/net/e1000/eeprom.c +++ b/drivers/net/e1000/eeprom.c @@ -18,8 +18,8 @@ static void e1000_raise_ee_clk(struct e1000_hw *hw, uint32_t *eecd) * wait 50 microseconds. */ *eecd = *eecd | E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, *eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, *eecd); + e1000_write_flush(hw); udelay(50); } @@ -35,8 +35,8 @@ static void e1000_lower_ee_clk(struct e1000_hw *hw, uint32_t *eecd) * wait 50 microseconds. */ *eecd = *eecd & ~E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, *eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, *eecd); + e1000_write_flush(hw); udelay(50); } @@ -57,7 +57,7 @@ static void e1000_shift_out_ee_bits(struct e1000_hw *hw, uint16_t data, uint16_t * In order to do this, "data" must be broken down into bits. */ mask = 0x01 << (count - 1); - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); eecd &= ~(E1000_EECD_DO | E1000_EECD_DI); do { /* A "1" is shifted out to the EEPROM by setting bit "DI" to a "1", @@ -70,8 +70,8 @@ static void e1000_shift_out_ee_bits(struct e1000_hw *hw, uint16_t data, uint16_t if (data & mask) eecd |= E1000_EECD_DI; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(50); @@ -84,7 +84,7 @@ static void e1000_shift_out_ee_bits(struct e1000_hw *hw, uint16_t data, uint16_t /* We leave the "DI" bit set to "0" when we leave this routine. */ eecd &= ~E1000_EECD_DI; - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); } /****************************************************************************** @@ -105,7 +105,7 @@ static uint16_t e1000_shift_in_ee_bits(struct e1000_hw *hw, uint16_t count) * "DI" bit should always be clear. */ - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); eecd &= ~(E1000_EECD_DO | E1000_EECD_DI); data = 0; @@ -114,7 +114,7 @@ static uint16_t e1000_shift_in_ee_bits(struct e1000_hw *hw, uint16_t count) data = data << 1; e1000_raise_ee_clk(hw, &eecd); - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); eecd &= ~(E1000_EECD_DI); if (eecd & E1000_EECD_DO) @@ -136,40 +136,40 @@ static void e1000_standby_eeprom(struct e1000_hw *hw) struct e1000_eeprom_info *eeprom = &hw->eeprom; uint32_t eecd; - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); if (eeprom->type == e1000_eeprom_microwire) { eecd &= ~(E1000_EECD_CS | E1000_EECD_SK); - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); /* Clock high */ eecd |= E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); /* Select EEPROM */ eecd |= E1000_EECD_CS; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); /* Clock low */ eecd &= ~E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); } else if (eeprom->type == e1000_eeprom_spi) { /* Toggle CS to flush commands */ eecd |= E1000_EECD_CS; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); eecd &= ~E1000_EECD_CS; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(eeprom->delay_usec); } } @@ -189,7 +189,7 @@ static bool e1000_is_onboard_nvm_eeprom(struct e1000_hw *hw) return false; if (hw->mac_type == e1000_82573 || hw->mac_type == e1000_82574) { - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); /* Isolate bits 15 & 16 */ eecd = ((eecd >> 15) & 0x03); @@ -218,23 +218,23 @@ static int32_t e1000_acquire_eeprom(struct e1000_hw *hw) if (e1000_swfw_sync_acquire(hw, E1000_SWFW_EEP_SM)) return -E1000_ERR_SWFW_SYNC; - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); /* Request EEPROM Access */ if (hw->mac_type > e1000_82544 && hw->mac_type != e1000_82573 && hw->mac_type != e1000_82574) { eecd |= E1000_EECD_REQ; - E1000_WRITE_REG(hw, EECD, eecd); - eecd = E1000_READ_REG(hw, EECD); + e1000_write_reg(hw, E1000_EECD, eecd); + eecd = e1000_read_reg(hw, E1000_EECD); while ((!(eecd & E1000_EECD_GNT)) && (i < E1000_EEPROM_GRANT_ATTEMPTS)) { i++; udelay(5); - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); } if (!(eecd & E1000_EECD_GNT)) { eecd &= ~E1000_EECD_REQ; - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); dev_dbg(hw->dev, "Could not acquire EEPROM grant\n"); return -E1000_ERR_EEPROM; } @@ -245,15 +245,15 @@ static int32_t e1000_acquire_eeprom(struct e1000_hw *hw) if (eeprom->type == e1000_eeprom_microwire) { /* Clear SK and DI */ eecd &= ~(E1000_EECD_DI | E1000_EECD_SK); - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); /* Set CS */ eecd |= E1000_EECD_CS; - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); } else if (eeprom->type == e1000_eeprom_spi) { /* Clear SK and CS */ eecd &= ~(E1000_EECD_CS | E1000_EECD_SK); - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); udelay(1); } @@ -275,9 +275,9 @@ int32_t e1000_init_eeprom_params(struct e1000_hw *hw) uint16_t eeprom_size; if (hw->mac_type == e1000_igb) - eecd = E1000_READ_REG(hw, I210_EECD); + eecd = e1000_read_reg(hw, E1000_I210_EECD); else - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); DEBUGFUNC(); @@ -379,7 +379,7 @@ int32_t e1000_init_eeprom_params(struct e1000_hw *hw) /* Ensure that the Autonomous FLASH update bit is cleared due to * Flash update issue on parts which use a FLASH for NVM. */ eecd &= ~E1000_EECD_AUPDEN; - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); } break; case e1000_80003es2lan: @@ -456,14 +456,14 @@ static int32_t e1000_poll_eerd_eewr_done(struct e1000_hw *hw, int eerd) for (i = 0; i < attempts; i++) { if (eerd == E1000_EEPROM_POLL_READ) { if (hw->mac_type == e1000_igb) - reg = E1000_READ_REG(hw, I210_EERD); + reg = e1000_read_reg(hw, E1000_I210_EERD); else - reg = E1000_READ_REG(hw, EERD); + reg = e1000_read_reg(hw, E1000_EERD); } else { if (hw->mac_type == e1000_igb) - reg = E1000_READ_REG(hw, I210_EEWR); + reg = e1000_read_reg(hw, E1000_I210_EEWR); else - reg = E1000_READ_REG(hw, EEWR); + reg = e1000_read_reg(hw, E1000_EEWR); } if (reg & E1000_EEPROM_RW_REG_DONE) { @@ -497,9 +497,9 @@ static int32_t e1000_read_eeprom_eerd(struct e1000_hw *hw, E1000_EEPROM_RW_REG_START; if (hw->mac_type == e1000_igb) - E1000_WRITE_REG(hw, I210_EERD, eerd); + e1000_write_reg(hw, E1000_I210_EERD, eerd); else - E1000_WRITE_REG(hw, EERD, eerd); + e1000_write_reg(hw, E1000_EERD, eerd); error = e1000_poll_eerd_eewr_done(hw, E1000_EEPROM_POLL_READ); @@ -507,10 +507,10 @@ static int32_t e1000_read_eeprom_eerd(struct e1000_hw *hw, break; if (hw->mac_type == e1000_igb) { - data[i] = (E1000_READ_REG(hw, I210_EERD) >> + data[i] = (e1000_read_reg(hw, E1000_I210_EERD) >> E1000_EEPROM_RW_REG_DATA); } else { - data[i] = (E1000_READ_REG(hw, EERD) >> + data[i] = (e1000_read_reg(hw, E1000_EERD) >> E1000_EEPROM_RW_REG_DATA); } @@ -525,13 +525,13 @@ static void e1000_release_eeprom(struct e1000_hw *hw) DEBUGFUNC(); - eecd = E1000_READ_REG(hw, EECD); + eecd = e1000_read_reg(hw, E1000_EECD); if (hw->eeprom.type == e1000_eeprom_spi) { eecd |= E1000_EECD_CS; /* Pull CS high */ eecd &= ~E1000_EECD_SK; /* Lower SCK */ - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); udelay(hw->eeprom.delay_usec); } else if (hw->eeprom.type == e1000_eeprom_microwire) { @@ -540,25 +540,25 @@ static void e1000_release_eeprom(struct e1000_hw *hw) /* CS on Microwire is active-high */ eecd &= ~(E1000_EECD_CS | E1000_EECD_DI); - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); /* Rising edge of clock */ eecd |= E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(hw->eeprom.delay_usec); /* Falling edge of clock */ eecd &= ~E1000_EECD_SK; - E1000_WRITE_REG(hw, EECD, eecd); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_EECD, eecd); + e1000_write_flush(hw); udelay(hw->eeprom.delay_usec); } /* Stop requesting EEPROM access */ if (hw->mac_type > e1000_82544) { eecd &= ~E1000_EECD_REQ; - E1000_WRITE_REG(hw, EECD, eecd); + e1000_write_reg(hw, E1000_EECD, eecd); } } /****************************************************************************** diff --git a/drivers/net/e1000/main.c b/drivers/net/e1000/main.c index f5eb086..f3c0ed8 100644 --- a/drivers/net/e1000/main.c +++ b/drivers/net/e1000/main.c @@ -147,15 +147,15 @@ static int32_t e1000_get_software_semaphore(struct e1000_hw *hw) DEBUGFUNC(); - swsm = E1000_READ_REG(hw, SWSM); + swsm = e1000_read_reg(hw, E1000_SWSM); swsm &= ~E1000_SWSM_SMBI; - E1000_WRITE_REG(hw, SWSM, swsm); + e1000_write_reg(hw, E1000_SWSM, swsm); if (hw->mac_type != e1000_80003es2lan) return E1000_SUCCESS; while (timeout) { - swsm = E1000_READ_REG(hw, SWSM); + swsm = e1000_read_reg(hw, E1000_SWSM); /* If SMBI bit cleared, it is now set and we hold * the semaphore */ if (!(swsm & E1000_SWSM_SMBI)) @@ -180,7 +180,7 @@ static void e1000_put_hw_eeprom_semaphore(struct e1000_hw *hw) { uint32_t swsm; - swsm = E1000_READ_REG(hw, SWSM); + swsm = e1000_read_reg(hw, E1000_SWSM); if (hw->mac_type == e1000_80003es2lan) /* Release both semaphores. */ @@ -188,7 +188,7 @@ static void e1000_put_hw_eeprom_semaphore(struct e1000_hw *hw) else swsm &= ~(E1000_SWSM_SWESMBI); - E1000_WRITE_REG(hw, SWSM, swsm); + e1000_write_reg(hw, E1000_SWSM, swsm); } /*************************************************************************** @@ -216,11 +216,11 @@ static int32_t e1000_get_hw_eeprom_semaphore(struct e1000_hw *hw) /* Get the FW semaphore. */ timeout = hw->eeprom.word_size + 1; while (timeout) { - swsm = E1000_READ_REG(hw, SWSM); + swsm = e1000_read_reg(hw, E1000_SWSM); swsm |= E1000_SWSM_SWESMBI; - E1000_WRITE_REG(hw, SWSM, swsm); + e1000_write_reg(hw, E1000_SWSM, swsm); /* if we managed to set the bit we got the semaphore. */ - swsm = E1000_READ_REG(hw, SWSM); + swsm = e1000_read_reg(hw, E1000_SWSM); if (swsm & E1000_SWSM_SWESMBI) break; @@ -250,7 +250,7 @@ int32_t e1000_swfw_sync_acquire(struct e1000_hw *hw, uint16_t mask) if (e1000_get_hw_eeprom_semaphore(hw)) return -E1000_ERR_SWFW_SYNC; - swfw_sync = E1000_READ_REG(hw, SW_FW_SYNC); + swfw_sync = e1000_read_reg(hw, E1000_SW_FW_SYNC); if (!(swfw_sync & (fwmask | swmask))) break; @@ -267,7 +267,7 @@ int32_t e1000_swfw_sync_acquire(struct e1000_hw *hw, uint16_t mask) } swfw_sync |= swmask; - E1000_WRITE_REG(hw, SW_FW_SYNC, swfw_sync); + e1000_write_reg(hw, E1000_SW_FW_SYNC, swfw_sync); e1000_put_hw_eeprom_semaphore(hw); return E1000_SUCCESS; @@ -279,7 +279,7 @@ static bool e1000_is_second_port(struct e1000_hw *hw) case e1000_80003es2lan: case e1000_82546: case e1000_82571: - if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1) + if (e1000_read_reg(hw, E1000_STATUS) & E1000_STATUS_FUNC_1) return true; /* Fallthrough */ default: @@ -304,12 +304,12 @@ static int e1000_get_ethaddr(struct eth_device *edev, unsigned char *adr) if (hw->mac_type == e1000_igb) { /* i210 preloads MAC address into RAL/RAH registers */ - reg_data = E1000_READ_REG_ARRAY(hw, RA, 0); + reg_data = e1000_read_reg_array(hw, E1000_RA, 0); adr[0] = reg_data & 0xff; adr[1] = (reg_data >> 8) & 0xff; adr[2] = (reg_data >> 16) & 0xff; adr[3] = (reg_data >> 24) & 0xff; - reg_data = E1000_READ_REG_ARRAY(hw, RA, 1); + reg_data = e1000_read_reg_array(hw, E1000_RA, 1); adr[4] = reg_data & 0xff; adr[5] = (reg_data >> 8) & 0xff; return 0; @@ -344,8 +344,8 @@ static int e1000_set_ethaddr(struct eth_device *edev, const unsigned char *adr) addr_low = (adr[0] | (adr[1] << 8) | (adr[2] << 16) | (adr[3] << 24)); addr_high = (adr[4] | (adr[5] << 8) | E1000_RAH_AV); - E1000_WRITE_REG_ARRAY(hw, RA, 0, addr_low); - E1000_WRITE_REG_ARRAY(hw, RA, 1, addr_high); + e1000_write_reg_array(hw, E1000_RA, 0, addr_low); + e1000_write_reg_array(hw, E1000_RA, 1, addr_high); return 0; } @@ -360,7 +360,7 @@ static void e1000_clear_vfta(struct e1000_hw *hw) uint32_t offset; for (offset = 0; offset < E1000_VLAN_FILTER_TBL_SIZE; offset++) - E1000_WRITE_REG_ARRAY(hw, VFTA, offset, 0); + e1000_write_reg_array(hw, E1000_VFTA, offset, 0); } /****************************************************************************** @@ -524,9 +524,9 @@ static void e1000_reset_hw(struct e1000_hw *hw) * any pending transactions to complete before we hit the MAC with * the global reset. */ - E1000_WRITE_REG(hw, RCTL, 0); - E1000_WRITE_REG(hw, TCTL, E1000_TCTL_PSP); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_RCTL, 0); + e1000_write_reg(hw, E1000_TCTL, E1000_TCTL_PSP); + e1000_write_flush(hw); /* Delay to allow any outstanding PCI transactions to complete before * resetting the device @@ -539,17 +539,17 @@ static void e1000_reset_hw(struct e1000_hw *hw) * clearing, and should clear within a microsecond. */ dev_dbg(hw->dev, "Issuing a global reset to MAC\n"); - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); - E1000_WRITE_REG(hw, CTRL, (ctrl | E1000_CTRL_RST)); + e1000_write_reg(hw, E1000_CTRL, (ctrl | E1000_CTRL_RST)); /* Force a reload from the EEPROM if necessary */ if (hw->mac_type == e1000_igb) { mdelay(20); - reg = E1000_READ_REG(hw, STATUS); + reg = e1000_read_reg(hw, E1000_STATUS); if (reg & E1000_STATUS_PF_RST_DONE) dev_dbg(hw->dev, "PF OK\n"); - reg = E1000_READ_REG(hw, I210_EECD); + reg = e1000_read_reg(hw, E1000_I210_EECD); if (reg & E1000_EECD_AUTO_RD) dev_dbg(hw->dev, "EEC OK\n"); } else if (hw->mac_type < e1000_82540) { @@ -557,10 +557,10 @@ static void e1000_reset_hw(struct e1000_hw *hw) /* Wait for reset to complete */ udelay(10); - ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); ctrl_ext |= E1000_CTRL_EXT_EE_RST; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); + e1000_write_flush(hw); /* Wait for EEPROM reload */ mdelay(2); } else { @@ -569,19 +569,19 @@ static void e1000_reset_hw(struct e1000_hw *hw) /* Wait for EEPROM reload (it happens automatically) */ mdelay(4); /* Dissable HW ARPs on ASF enabled adapters */ - manc = E1000_READ_REG(hw, MANC); + manc = e1000_read_reg(hw, E1000_MANC); manc &= ~(E1000_MANC_ARP_EN); - E1000_WRITE_REG(hw, MANC, manc); + e1000_write_reg(hw, E1000_MANC, manc); } /* Clear interrupt mask to stop board from generating interrupts */ if (hw->mac_type == e1000_igb) - E1000_WRITE_REG(hw, I210_IAM, 0); + e1000_write_reg(hw, E1000_I210_IAM, 0); - E1000_WRITE_REG(hw, IMC, 0xffffffff); + e1000_write_reg(hw, E1000_IMC, 0xffffffff); /* Clear any pending interrupt events. */ - E1000_READ_REG(hw, ICR); + e1000_read_reg(hw, E1000_ICR); /* If MWI was previously enabled, reenable it. */ if (hw->mac_type == e1000_82542_rev2_0) @@ -589,9 +589,9 @@ static void e1000_reset_hw(struct e1000_hw *hw) if (hw->mac_type != e1000_igb) { if (hw->mac_type < e1000_82571) - E1000_WRITE_REG(hw, PBA, 0x00000030); + e1000_write_reg(hw, E1000_PBA, 0x00000030); else - E1000_WRITE_REG(hw, PBA, 0x000a0026); + e1000_write_reg(hw, E1000_PBA, 0x000a0026); } } @@ -616,23 +616,23 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) /* Settings common to all PCI-express silicon */ /* link autonegotiation/sync workarounds */ - reg_tarc0 = E1000_READ_REG(hw, TARC0); + reg_tarc0 = e1000_read_reg(hw, E1000_TARC0); reg_tarc0 &= ~((1 << 30) | (1 << 29) | (1 << 28) | (1 << 27)); /* Enable not-done TX descriptor counting */ - reg_txdctl = E1000_READ_REG(hw, TXDCTL); + reg_txdctl = e1000_read_reg(hw, E1000_TXDCTL); reg_txdctl |= E1000_TXDCTL_COUNT_DESC; - E1000_WRITE_REG(hw, TXDCTL, reg_txdctl); + e1000_write_reg(hw, E1000_TXDCTL, reg_txdctl); - reg_txdctl1 = E1000_READ_REG(hw, TXDCTL1); + reg_txdctl1 = e1000_read_reg(hw, E1000_TXDCTL1); reg_txdctl1 |= E1000_TXDCTL_COUNT_DESC; - E1000_WRITE_REG(hw, TXDCTL1, reg_txdctl1); + e1000_write_reg(hw, E1000_TXDCTL1, reg_txdctl1); switch (hw->mac_type) { case e1000_82571: case e1000_82572: /* Clear PHY TX compatible mode bits */ - reg_tarc1 = E1000_READ_REG(hw, TARC1); + reg_tarc1 = e1000_read_reg(hw, E1000_TARC1); reg_tarc1 &= ~((1 << 30) | (1 << 29)); /* link autonegotiation/sync workarounds */ @@ -642,25 +642,25 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) reg_tarc1 |= (1 << 26) | (1 << 25) | (1 << 24); /* Multiple read bit is reversed polarity */ - if (E1000_READ_REG(hw, TCTL) & E1000_TCTL_MULR) + if (e1000_read_reg(hw, E1000_TCTL) & E1000_TCTL_MULR) reg_tarc1 &= ~(1 << 28); else reg_tarc1 |= (1 << 28); - E1000_WRITE_REG(hw, TARC1, reg_tarc1); + e1000_write_reg(hw, E1000_TARC1, reg_tarc1); break; case e1000_82573: case e1000_82574: - reg_ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + reg_ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); reg_ctrl_ext &= ~(1 << 23); reg_ctrl_ext |= (1 << 22); /* TX byte count fix */ - reg_ctrl = E1000_READ_REG(hw, CTRL); + reg_ctrl = e1000_read_reg(hw, E1000_CTRL); reg_ctrl &= ~(1 << 29); - E1000_WRITE_REG(hw, CTRL_EXT, reg_ctrl_ext); - E1000_WRITE_REG(hw, CTRL, reg_ctrl); + e1000_write_reg(hw, E1000_CTRL_EXT, reg_ctrl_ext); + e1000_write_reg(hw, E1000_CTRL, reg_ctrl); break; case e1000_80003es2lan: /* improve small packet performace for fiber/serdes */ @@ -668,13 +668,13 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) reg_tarc0 &= ~(1 << 20); /* Multiple read bit is reversed polarity */ - reg_tarc1 = E1000_READ_REG(hw, TARC1); - if (E1000_READ_REG(hw, TCTL) & E1000_TCTL_MULR) + reg_tarc1 = e1000_read_reg(hw, E1000_TARC1); + if (e1000_read_reg(hw, E1000_TCTL) & E1000_TCTL_MULR) reg_tarc1 &= ~(1 << 28); else reg_tarc1 |= (1 << 28); - E1000_WRITE_REG(hw, TARC1, reg_tarc1); + e1000_write_reg(hw, E1000_TARC1, reg_tarc1); break; case e1000_ich8lan: /* Reduce concurrent DMA requests to 3 from 4 */ @@ -683,16 +683,16 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) (hw->device_id != E1000_DEV_ID_ICH8_IGP_M))) reg_tarc0 |= (1 << 29) | (1 << 28); - reg_ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + reg_ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); reg_ctrl_ext |= (1 << 22); - E1000_WRITE_REG(hw, CTRL_EXT, reg_ctrl_ext); + e1000_write_reg(hw, E1000_CTRL_EXT, reg_ctrl_ext); /* workaround TX hang with TSO=on */ reg_tarc0 |= (1 << 27) | (1 << 26) | (1 << 24) | (1 << 23); /* Multiple read bit is reversed polarity */ - reg_tarc1 = E1000_READ_REG(hw, TARC1); - if (E1000_READ_REG(hw, TCTL) & E1000_TCTL_MULR) + reg_tarc1 = e1000_read_reg(hw, E1000_TARC1); + if (e1000_read_reg(hw, E1000_TCTL) & E1000_TCTL_MULR) reg_tarc1 &= ~(1 << 28); else reg_tarc1 |= (1 << 28); @@ -700,7 +700,7 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) /* workaround TX hang with TSO=on */ reg_tarc1 |= (1 << 30) | (1 << 26) | (1 << 24); - E1000_WRITE_REG(hw, TARC1, reg_tarc1); + e1000_write_reg(hw, E1000_TARC1, reg_tarc1); break; case e1000_igb: return; @@ -708,7 +708,7 @@ static void e1000_initialize_hardware_bits(struct e1000_hw *hw) break; } - E1000_WRITE_REG(hw, TARC0, reg_tarc0); + e1000_write_reg(hw, E1000_TARC0, reg_tarc0); } static int e1000_open(struct eth_device *edev) @@ -726,56 +726,56 @@ static int e1000_open(struct eth_device *edev) /* Set the transmit descriptor write-back policy */ if (hw->mac_type > e1000_82544) { - ctrl = E1000_READ_REG(hw, TXDCTL); + ctrl = e1000_read_reg(hw, E1000_TXDCTL); ctrl &= ~E1000_TXDCTL_WTHRESH; ctrl |= E1000_TXDCTL_FULL_TX_DESC_WB; - E1000_WRITE_REG(hw, TXDCTL, ctrl); + e1000_write_reg(hw, E1000_TXDCTL, ctrl); } /* Set the receive descriptor write back policy */ if (hw->mac_type >= e1000_82571) { - ctrl = E1000_READ_REG(hw, RXDCTL); + ctrl = e1000_read_reg(hw, E1000_RXDCTL); ctrl &= ~E1000_RXDCTL_WTHRESH; ctrl |= E1000_RXDCTL_FULL_RX_DESC_WB; - E1000_WRITE_REG(hw, RXDCTL, ctrl); + e1000_write_reg(hw, E1000_RXDCTL, ctrl); } switch (hw->mac_type) { case e1000_80003es2lan: /* Enable retransmit on late collisions */ - reg_data = E1000_READ_REG(hw, TCTL); + reg_data = e1000_read_reg(hw, E1000_TCTL); reg_data |= E1000_TCTL_RTLC; - E1000_WRITE_REG(hw, TCTL, reg_data); + e1000_write_reg(hw, E1000_TCTL, reg_data); /* Configure Gigabit Carry Extend Padding */ - reg_data = E1000_READ_REG(hw, TCTL_EXT); + reg_data = e1000_read_reg(hw, E1000_TCTL_EXT); reg_data &= ~E1000_TCTL_EXT_GCEX_MASK; reg_data |= DEFAULT_80003ES2LAN_TCTL_EXT_GCEX; - E1000_WRITE_REG(hw, TCTL_EXT, reg_data); + e1000_write_reg(hw, E1000_TCTL_EXT, reg_data); /* Configure Transmit Inter-Packet Gap */ - reg_data = E1000_READ_REG(hw, TIPG); + reg_data = e1000_read_reg(hw, E1000_TIPG); reg_data &= ~E1000_TIPG_IPGT_MASK; reg_data |= DEFAULT_80003ES2LAN_TIPG_IPGT_1000; - E1000_WRITE_REG(hw, TIPG, reg_data); + e1000_write_reg(hw, E1000_TIPG, reg_data); - reg_data = E1000_READ_REG_ARRAY(hw, FFLT, 0x0001); + reg_data = e1000_read_reg_array(hw, E1000_FFLT, 1); reg_data &= ~0x00100000; - E1000_WRITE_REG_ARRAY(hw, FFLT, 0x0001, reg_data); + e1000_write_reg_array(hw, E1000_FFLT, 1, reg_data); /* Fall through */ case e1000_82571: case e1000_82572: case e1000_ich8lan: - ctrl = E1000_READ_REG(hw, TXDCTL1); + ctrl = e1000_read_reg(hw, E1000_TXDCTL1); ctrl &= ~E1000_TXDCTL_WTHRESH; ctrl |= E1000_TXDCTL_FULL_TX_DESC_WB; - E1000_WRITE_REG(hw, TXDCTL1, ctrl); + e1000_write_reg(hw, E1000_TXDCTL1, ctrl); break; case e1000_82573: case e1000_82574: - reg_data = E1000_READ_REG(hw, GCR); + reg_data = e1000_read_reg(hw, E1000_GCR); reg_data |= E1000_GCR_L1_ACT_WITHOUT_L0S_RX; - E1000_WRITE_REG(hw, GCR, reg_data); + e1000_write_reg(hw, E1000_GCR, reg_data); case e1000_igb: default: break; @@ -783,11 +783,11 @@ static int e1000_open(struct eth_device *edev) if (hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER || hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3) { - ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); /* Relaxed ordering must be disabled to avoid a parity * error crash in a PCI slot. */ ctrl_ext |= E1000_CTRL_EXT_RO_DIS; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); } return 0; @@ -875,7 +875,7 @@ static int e1000_setup_link(struct e1000_hw *hw) if (hw->mac_type == e1000_82543) { ctrl_ext = ((eeprom_data & EEPROM_WORD0F_SWPDIO_EXT) << SWDPIO__EXT_SHIFT); - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); } /* Call the necessary subroutine to configure the link. */ @@ -896,12 +896,12 @@ static int e1000_setup_link(struct e1000_hw *hw) /* FCAL/H and FCT are hardcoded to standard values in e1000_ich8lan. */ if (hw->mac_type != e1000_ich8lan) { - E1000_WRITE_REG(hw, FCT, FLOW_CONTROL_TYPE); - E1000_WRITE_REG(hw, FCAH, FLOW_CONTROL_ADDRESS_HIGH); - E1000_WRITE_REG(hw, FCAL, FLOW_CONTROL_ADDRESS_LOW); + e1000_write_reg(hw, E1000_FCT, FLOW_CONTROL_TYPE); + e1000_write_reg(hw, E1000_FCAH, FLOW_CONTROL_ADDRESS_HIGH); + e1000_write_reg(hw, E1000_FCAL, FLOW_CONTROL_ADDRESS_LOW); } - E1000_WRITE_REG(hw, FCTTV, E1000_FC_PAUSE_TIME); + e1000_write_reg(hw, E1000_FCTTV, E1000_FC_PAUSE_TIME); /* Set the flow control receive threshold registers. Normally, * these registers will be set to a default threshold that may be @@ -913,11 +913,11 @@ static int e1000_setup_link(struct e1000_hw *hw) /* We need to set up the Receive Threshold high and low water marks * as well as (optionally) enabling the transmission of XON frames. */ - E1000_WRITE_REG(hw, FCRTL, E1000_FC_LOW_THRESH | E1000_FCRTL_XONE); - E1000_WRITE_REG(hw, FCRTH, E1000_FC_HIGH_THRESH); + e1000_write_reg(hw, E1000_FCRTL, E1000_FC_LOW_THRESH | E1000_FCRTL_XONE); + e1000_write_reg(hw, E1000_FCRTH, E1000_FC_HIGH_THRESH); } else { - E1000_WRITE_REG(hw, FCRTL, 0); - E1000_WRITE_REG(hw, FCRTH, 0); + e1000_write_reg(hw, E1000_FCRTL, 0); + e1000_write_reg(hw, E1000_FCRTH, 0); } return ret_val; @@ -946,7 +946,7 @@ static int e1000_setup_fiber_link(struct e1000_hw *hw) * set when the optics detect a signal. On older adapters, it will be * cleared when there is a signal */ - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); if ((hw->mac_type > e1000_82544) && !(ctrl & E1000_CTRL_ILOS)) signal = E1000_CTRL_SWDPIN1; else @@ -1010,9 +1010,9 @@ static int e1000_setup_fiber_link(struct e1000_hw *hw) */ dev_dbg(hw->dev, "Auto-negotiation enabled (%#x)\n", txcw); - E1000_WRITE_REG(hw, TXCW, txcw); - E1000_WRITE_REG(hw, CTRL, ctrl); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_TXCW, txcw); + e1000_write_reg(hw, E1000_CTRL, ctrl); + e1000_write_flush(hw); mdelay(1); @@ -1021,11 +1021,11 @@ static int e1000_setup_fiber_link(struct e1000_hw *hw) * seen in 500 milliseconds seconds (Auto-negotiation should complete in * less than 500 milliseconds even if the other end is doing it in SW). */ - if ((E1000_READ_REG(hw, CTRL) & E1000_CTRL_SWDPIN1) == signal) { + if ((e1000_read_reg(hw, E1000_CTRL) & E1000_CTRL_SWDPIN1) == signal) { dev_dbg(hw->dev, "Looking for Link\n"); for (i = 0; i < (LINK_UP_TIMEOUT / 10); i++) { mdelay(10); - status = E1000_READ_REG(hw, STATUS); + status = e1000_read_reg(hw, E1000_STATUS); if (status & E1000_STATUS_LU) break; } @@ -1062,7 +1062,7 @@ static int32_t e1000_copper_link_preconfig(struct e1000_hw *hw) DEBUGFUNC(); - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); /* With 82543, we need to force speed and duplex on the MAC equal to what * the PHY speed and duplex configuration is. In addition, we need to * perform a hardware reset on the PHY to take it out of reset. @@ -1070,11 +1070,11 @@ static int32_t e1000_copper_link_preconfig(struct e1000_hw *hw) if (hw->mac_type > e1000_82543) { ctrl |= E1000_CTRL_SLU; ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX); - E1000_WRITE_REG(hw, CTRL, ctrl); + e1000_write_reg(hw, E1000_CTRL, ctrl); } else { ctrl |= (E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX | E1000_CTRL_SLU); - E1000_WRITE_REG(hw, CTRL, ctrl); + e1000_write_reg(hw, E1000_CTRL, ctrl); ret_val = e1000_phy_hw_reset(hw); if (ret_val) return ret_val; @@ -1137,7 +1137,7 @@ static int32_t e1000_set_d3_lplu_state_off(struct e1000_hw *hw) /* MAC writes into PHY register based on the state transition * and start auto-negotiation. SW driver can overwrite the * settings in CSR PHY power control E1000_PHY_CTRL register. */ - phy_ctrl = E1000_READ_REG(hw, PHY_CTRL); + phy_ctrl = e1000_read_reg(hw, E1000_PHY_CTRL); } else { ret_val = e1000_read_phy_reg(hw, IGP02E1000_PHY_POWER_MGMT, &phy_data); if (ret_val) @@ -1153,7 +1153,7 @@ static int32_t e1000_set_d3_lplu_state_off(struct e1000_hw *hw) } else { if (hw->mac_type == e1000_ich8lan) { phy_ctrl &= ~E1000_PHY_CTRL_NOND0A_LPLU; - E1000_WRITE_REG(hw, PHY_CTRL, phy_ctrl); + e1000_write_reg(hw, E1000_PHY_CTRL, phy_ctrl); } else { phy_data &= ~IGP02E1000_PM_D3_LPLU; ret_val = e1000_write_phy_reg(hw, @@ -1191,13 +1191,13 @@ static int32_t e1000_set_d0_lplu_state_off(struct e1000_hw *hw) return E1000_SUCCESS; if (hw->mac_type == e1000_ich8lan) { - phy_ctrl = E1000_READ_REG(hw, PHY_CTRL); + phy_ctrl = e1000_read_reg(hw, E1000_PHY_CTRL); phy_ctrl &= ~E1000_PHY_CTRL_D0A_LPLU; - E1000_WRITE_REG(hw, PHY_CTRL, phy_ctrl); + e1000_write_reg(hw, E1000_PHY_CTRL, phy_ctrl); } else if (hw->mac_type == e1000_igb) { - phy_ctrl = E1000_READ_REG(hw, I210_PHY_CTRL); + phy_ctrl = e1000_read_reg(hw, E1000_I210_PHY_CTRL); phy_ctrl &= ~E1000_PHY_CTRL_D0A_LPLU; - E1000_WRITE_REG(hw, I210_PHY_CTRL, phy_ctrl); + e1000_write_reg(hw, E1000_I210_PHY_CTRL, phy_ctrl); } else { ret_val = e1000_read_phy_reg(hw, IGP02E1000_PHY_POWER_MGMT, &phy_data); @@ -1238,10 +1238,10 @@ static int32_t e1000_copper_link_igp_setup(struct e1000_hw *hw) mdelay(15); if (hw->mac_type != e1000_ich8lan) { /* Configure activity LED after PHY reset */ - led_ctrl = E1000_READ_REG(hw, LEDCTL); + led_ctrl = e1000_read_reg(hw, E1000_LEDCTL); led_ctrl &= IGP_ACTIVITY_LED_MASK; led_ctrl |= (IGP_ACTIVITY_LED_ENABLE | IGP_LED3_MODE); - E1000_WRITE_REG(hw, LEDCTL, led_ctrl); + e1000_write_reg(hw, E1000_LEDCTL, led_ctrl); } /* The NVM settings will configure LPLU in D3 for IGP2 and IGP3 PHYs */ @@ -1326,7 +1326,7 @@ static bool e1000_check_mng_mode(struct e1000_hw *hw) DEBUGFUNC(); - fwsm = E1000_READ_REG(hw, FWSM); + fwsm = e1000_read_reg(hw, E1000_FWSM); if (hw->mac_type == e1000_ich8lan) { if ((fwsm & E1000_FWSM_MODE_MASK) == @@ -1353,7 +1353,7 @@ static int32_t e1000_write_kmrn_reg(struct e1000_hw *hw, uint32_t reg_addr, uint reg_val = ((reg_addr << E1000_KUMCTRLSTA_OFFSET_SHIFT) & E1000_KUMCTRLSTA_OFFSET) | data; - E1000_WRITE_REG(hw, KUMCTRLSTA, reg_val); + e1000_write_reg(hw, E1000_KUMCTRLSTA, reg_val); udelay(2); return E1000_SUCCESS; @@ -1376,11 +1376,11 @@ static int32_t e1000_read_kmrn_reg(struct e1000_hw *hw, uint32_t reg_addr, uint1 /* Write register address */ reg_val = ((reg_addr << E1000_KUMCTRLSTA_OFFSET_SHIFT) & E1000_KUMCTRLSTA_OFFSET) | E1000_KUMCTRLSTA_REN; - E1000_WRITE_REG(hw, KUMCTRLSTA, reg_val); + e1000_write_reg(hw, E1000_KUMCTRLSTA, reg_val); udelay(2); /* Read the data returned */ - reg_val = E1000_READ_REG(hw, KUMCTRLSTA); + reg_val = e1000_read_reg(hw, E1000_KUMCTRLSTA); *data = (uint16_t)reg_val; return E1000_SUCCESS; @@ -1462,9 +1462,9 @@ static int32_t e1000_copper_link_ggp_setup(struct e1000_hw *hw) if (ret_val) return ret_val; - reg_data = E1000_READ_REG(hw, CTRL_EXT); + reg_data = e1000_read_reg(hw, E1000_CTRL_EXT); reg_data &= ~(E1000_CTRL_EXT_LINK_MODE_MASK); - E1000_WRITE_REG(hw, CTRL_EXT, reg_data); + e1000_write_reg(hw, E1000_CTRL_EXT, reg_data); ret_val = e1000_read_phy_reg(hw, GG82563_PHY_PWR_MGMT_CTRL, &phy_data); if (ret_val) @@ -1930,13 +1930,13 @@ static void e1000_config_collision_dist(struct e1000_hw *hw) else coll_dist = E1000_COLLISION_DISTANCE; - tctl = E1000_READ_REG(hw, TCTL); + tctl = e1000_read_reg(hw, E1000_TCTL); tctl &= ~E1000_TCTL_COLD; tctl |= coll_dist << E1000_COLD_SHIFT; - E1000_WRITE_REG(hw, TCTL, tctl); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_TCTL, tctl); + e1000_write_flush(hw); } /****************************************************************************** @@ -1958,7 +1958,7 @@ static int e1000_config_mac_to_phy(struct e1000_hw *hw) /* Read the Device Control Register and set the bits to Force Speed * and Duplex. */ - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); ctrl |= (E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX); ctrl &= ~(E1000_CTRL_ILOS); ctrl |= (E1000_CTRL_SPD_SEL); @@ -1985,7 +1985,7 @@ static int e1000_config_mac_to_phy(struct e1000_hw *hw) else if ((phy_data & M88E1000_PSSR_SPEED) == M88E1000_PSSR_100MBS) ctrl |= E1000_CTRL_SPD_100; /* Write the configured values back to the Device Control Reg. */ - E1000_WRITE_REG(hw, CTRL, ctrl); + e1000_write_reg(hw, E1000_CTRL, ctrl); return 0; } @@ -2007,7 +2007,7 @@ static int e1000_force_mac_fc(struct e1000_hw *hw) DEBUGFUNC(); /* Get the current configuration of the Device Control Register */ - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); /* Because we didn't get link via the internal auto-negotiation * mechanism (we either forced link or we got link via PHY @@ -2051,7 +2051,7 @@ static int e1000_force_mac_fc(struct e1000_hw *hw) if (hw->mac_type == e1000_82542_rev2_0) ctrl &= (~E1000_CTRL_TFCE); - E1000_WRITE_REG(hw, CTRL, ctrl); + e1000_write_reg(hw, E1000_CTRL, ctrl); return 0; } @@ -2261,10 +2261,10 @@ static int32_t e1000_configure_kmrn_for_10_100(struct e1000_hw *hw, uint16_t dup return ret_val; /* Configure Transmit Inter-Packet Gap */ - tipg = E1000_READ_REG(hw, TIPG); + tipg = e1000_read_reg(hw, E1000_TIPG); tipg &= ~E1000_TIPG_IPGT_MASK; tipg |= DEFAULT_80003ES2LAN_TIPG_IPGT_10_100; - E1000_WRITE_REG(hw, TIPG, tipg); + e1000_write_reg(hw, E1000_TIPG, tipg); ret_val = e1000_read_phy_reg(hw, GG82563_PHY_KMRN_MODE_CTRL, ®_data); @@ -2296,10 +2296,10 @@ static int32_t e1000_configure_kmrn_for_1000(struct e1000_hw *hw) return ret_val; /* Configure Transmit Inter-Packet Gap */ - tipg = E1000_READ_REG(hw, TIPG); + tipg = e1000_read_reg(hw, E1000_TIPG); tipg &= ~E1000_TIPG_IPGT_MASK; tipg |= DEFAULT_80003ES2LAN_TIPG_IPGT_1000; - E1000_WRITE_REG(hw, TIPG, tipg); + e1000_write_reg(hw, E1000_TIPG, tipg); ret_val = e1000_read_phy_reg(hw, GG82563_PHY_KMRN_MODE_CTRL, ®_data); @@ -2328,7 +2328,7 @@ static int e1000_get_speed_and_duplex(struct e1000_hw *hw, uint16_t *speed, DEBUGFUNC(); if (hw->mac_type >= e1000_82543) { - status = E1000_READ_REG(hw, STATUS); + status = e1000_read_reg(hw, E1000_STATUS); if (status & E1000_STATUS_SPEED_1000) { *speed = SPEED_1000; dev_dbg(hw->dev, "1000 Mbs, "); @@ -2411,8 +2411,8 @@ static void e1000_raise_mdi_clk(struct e1000_hw *hw, uint32_t * ctrl) /* Raise the clock input to the Management Data Clock (by setting the MDC * bit), and then delay 2 microseconds. */ - E1000_WRITE_REG(hw, CTRL, (*ctrl | E1000_CTRL_MDC)); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL, (*ctrl | E1000_CTRL_MDC)); + e1000_write_flush(hw); udelay(2); } @@ -2427,8 +2427,8 @@ static void e1000_lower_mdi_clk(struct e1000_hw *hw, uint32_t * ctrl) /* Lower the clock input to the Management Data Clock (by clearing the MDC * bit), and then delay 2 microseconds. */ - E1000_WRITE_REG(hw, CTRL, (*ctrl & ~E1000_CTRL_MDC)); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL, (*ctrl & ~E1000_CTRL_MDC)); + e1000_write_flush(hw); udelay(2); } @@ -2454,7 +2454,7 @@ static void e1000_shift_out_mdi_bits(struct e1000_hw *hw, uint32_t data, mask = 0x01; mask <<= (count - 1); - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); /* Set MDIO_DIR and MDC_DIR direction bits to be used as output pins. */ ctrl |= (E1000_CTRL_MDIO_DIR | E1000_CTRL_MDC_DIR); @@ -2470,8 +2470,8 @@ static void e1000_shift_out_mdi_bits(struct e1000_hw *hw, uint32_t data, else ctrl &= ~E1000_CTRL_MDIO; - E1000_WRITE_REG(hw, CTRL, ctrl); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL, ctrl); + e1000_write_flush(hw); udelay(2); @@ -2502,14 +2502,14 @@ static uint16_t e1000_shift_in_mdi_bits(struct e1000_hw *hw) * by raising the input to the Management Data Clock (setting the MDC bit), * and then reading the value of the MDIO bit. */ - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); /* Clear MDIO_DIR (SWDPIO1) to indicate this bit is to be used as input. */ ctrl &= ~E1000_CTRL_MDIO_DIR; ctrl &= ~E1000_CTRL_MDIO; - E1000_WRITE_REG(hw, CTRL, ctrl); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL, ctrl); + e1000_write_flush(hw); /* Raise and Lower the clock before reading in the data. This accounts for * the turnaround bits. The first clock occurred when we clocked out the @@ -2521,7 +2521,7 @@ static uint16_t e1000_shift_in_mdi_bits(struct e1000_hw *hw) for (data = 0, i = 0; i < 16; i++) { data = data << 1; e1000_raise_mdi_clk(hw, &ctrl); - ctrl = E1000_READ_REG(hw, CTRL); + ctrl = e1000_read_reg(hw, E1000_CTRL); /* Check to see if we shifted in a "1". */ if (ctrl & E1000_CTRL_MDIO) data |= 1; @@ -2552,12 +2552,12 @@ static int e1000_phy_read(struct mii_bus *bus, int phy_addr, int reg_addr) (phy_addr << E1000_MDIC_PHY_SHIFT) | (E1000_MDIC_OP_READ)); - E1000_WRITE_REG(hw, MDIC, mdic); + e1000_write_reg(hw, E1000_MDIC, mdic); /* Poll the ready bit to see if the MDI read completed */ for (i = 0; i < 64; i++) { udelay(10); - mdic = E1000_READ_REG(hw, MDIC); + mdic = e1000_read_reg(hw, E1000_MDIC); if (mdic & E1000_MDIC_READY) break; } @@ -2641,12 +2641,12 @@ static int e1000_phy_write(struct mii_bus *bus, int phy_addr, (phy_addr << E1000_MDIC_PHY_SHIFT) | (E1000_MDIC_OP_WRITE)); - E1000_WRITE_REG(hw, MDIC, mdic); + e1000_write_reg(hw, E1000_MDIC, mdic); /* Poll the ready bit to see if the MDI read completed */ for (i = 0; i < 64; i++) { udelay(10); - mdic = E1000_READ_REG(hw, MDIC); + mdic = e1000_read_reg(hw, E1000_MDIC); if (mdic & E1000_MDIC_READY) break; } @@ -2704,14 +2704,14 @@ static int e1000_write_phy_reg(struct e1000_hw *hw, uint32_t reg_addr, uint16_t static int32_t e1000_check_phy_reset_block(struct e1000_hw *hw) { if (hw->mac_type == e1000_ich8lan) { - if (E1000_READ_REG(hw, FWSM) & E1000_FWSM_RSPCIPHY) + if (e1000_read_reg(hw, E1000_FWSM) & E1000_FWSM_RSPCIPHY) return E1000_SUCCESS; else return E1000_BLK_PHY_RESET; } if (hw->mac_type > e1000_82547_rev_2) { - if (E1000_READ_REG(hw, MANC) & E1000_MANC_BLK_PHY_RST_ON_IDE) + if (e1000_read_reg(hw, E1000_MANC) & E1000_MANC_BLK_PHY_RST_ON_IDE) return E1000_BLK_PHY_RESET; else return E1000_SUCCESS; @@ -2752,10 +2752,10 @@ static int32_t e1000_get_phy_cfg_done(struct e1000_hw *hw) case e1000_igb: while (timeout) { if (hw->mac_type == e1000_igb) { - if (E1000_READ_REG(hw, I210_EEMNGCTL) & cfg_mask) + if (e1000_read_reg(hw, E1000_I210_EEMNGCTL) & cfg_mask) break; } else { - if (E1000_READ_REG(hw, EEMNGCTL) & cfg_mask) + if (e1000_read_reg(hw, E1000_EEMNGCTL) & cfg_mask) break; } mdelay(1); @@ -2805,14 +2805,14 @@ static int32_t e1000_phy_hw_reset(struct e1000_hw *hw) /* Read the device control register and assert the E1000_CTRL_PHY_RST * bit. Then, take it out of reset. */ - ctrl = E1000_READ_REG(hw, CTRL); - E1000_WRITE_REG(hw, CTRL, ctrl | E1000_CTRL_PHY_RST); - E1000_WRITE_FLUSH(hw); + ctrl = e1000_read_reg(hw, E1000_CTRL); + e1000_write_reg(hw, E1000_CTRL, ctrl | E1000_CTRL_PHY_RST); + e1000_write_flush(hw); udelay(100); - E1000_WRITE_REG(hw, CTRL, ctrl); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL, ctrl); + e1000_write_flush(hw); if (hw->mac_type >= e1000_82571) mdelay(10); @@ -2820,24 +2820,24 @@ static int32_t e1000_phy_hw_reset(struct e1000_hw *hw) /* Read the Extended Device Control Register, assert the PHY_RESET_DIR * bit to put the PHY into reset. Then, take it out of reset. */ - ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); ctrl_ext |= E1000_CTRL_EXT_SDP4_DIR; ctrl_ext &= ~E1000_CTRL_EXT_SDP4_DATA; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); + e1000_write_flush(hw); mdelay(10); ctrl_ext |= E1000_CTRL_EXT_SDP4_DATA; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); + e1000_write_flush(hw); } udelay(150); if ((hw->mac_type == e1000_82541) || (hw->mac_type == e1000_82547)) { /* Configure activity LED after PHY reset */ - led_ctrl = E1000_READ_REG(hw, LEDCTL); + led_ctrl = e1000_read_reg(hw, E1000_LEDCTL); led_ctrl &= IGP_ACTIVITY_LED_MASK; led_ctrl |= (IGP_ACTIVITY_LED_ENABLE | IGP_LED3_MODE); - E1000_WRITE_REG(hw, LEDCTL, led_ctrl); + e1000_write_reg(hw, E1000_LEDCTL, led_ctrl); } /* Wait for FW to finish PHY configuration. */ @@ -3147,7 +3147,7 @@ static void e1000_set_media_type(struct e1000_hw *hw) break; } - if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_TBIMODE) + if (e1000_read_reg(hw, E1000_STATUS) & E1000_STATUS_TBIMODE) hw->media_type = e1000_media_type_fiber; else hw->media_type = e1000_media_type_copper; @@ -3198,7 +3198,7 @@ static void fill_rx(struct e1000_hw *hw) rd->buffer_addr = cpu_to_le64((unsigned long)hw->packet); - E1000_WRITE_REG(hw, RDT, hw->rx_tail); + e1000_write_reg(hw, E1000_RDT, hw->rx_tail); } /** @@ -3214,14 +3214,14 @@ static void e1000_configure_tx(struct e1000_hw *hw) unsigned long tipg, tarc; uint32_t ipgr1, ipgr2; - E1000_WRITE_REG(hw, TDBAL, (unsigned long)hw->tx_base); - E1000_WRITE_REG(hw, TDBAH, 0); + e1000_write_reg(hw, E1000_TDBAL, (unsigned long)hw->tx_base); + e1000_write_reg(hw, E1000_TDBAH, 0); - E1000_WRITE_REG(hw, TDLEN, 128); + e1000_write_reg(hw, E1000_TDLEN, 128); /* Setup the HW Tx Head and Tail descriptor pointers */ - E1000_WRITE_REG(hw, TDH, 0); - E1000_WRITE_REG(hw, TDT, 0); + e1000_write_reg(hw, E1000_TDH, 0); + e1000_write_reg(hw, E1000_TDT, 0); hw->tx_tail = 0; /* Set the default values for the Tx Inter Packet Gap timer */ @@ -3251,25 +3251,25 @@ static void e1000_configure_tx(struct e1000_hw *hw) } tipg |= ipgr1 << E1000_TIPG_IPGR1_SHIFT; tipg |= ipgr2 << E1000_TIPG_IPGR2_SHIFT; - E1000_WRITE_REG(hw, TIPG, tipg); + e1000_write_reg(hw, E1000_TIPG, tipg); /* Program the Transmit Control Register */ - tctl = E1000_READ_REG(hw, TCTL); + tctl = e1000_read_reg(hw, E1000_TCTL); tctl &= ~E1000_TCTL_CT; tctl |= E1000_TCTL_EN | E1000_TCTL_PSP | (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT); if (hw->mac_type == e1000_82571 || hw->mac_type == e1000_82572) { - tarc = E1000_READ_REG(hw, TARC0); + tarc = e1000_read_reg(hw, E1000_TARC0); /* set the speed mode bit, we'll clear it if we're not at * gigabit link later */ /* git bit can be set to 1*/ } else if (hw->mac_type == e1000_80003es2lan) { - tarc = E1000_READ_REG(hw, TARC0); + tarc = e1000_read_reg(hw, E1000_TARC0); tarc |= 1; - E1000_WRITE_REG(hw, TARC0, tarc); - tarc = E1000_READ_REG(hw, TARC1); + e1000_write_reg(hw, E1000_TARC0, tarc); + tarc = e1000_read_reg(hw, E1000_TARC1); tarc |= 1; - E1000_WRITE_REG(hw, TARC1, tarc); + e1000_write_reg(hw, E1000_TARC1, tarc); } @@ -3287,15 +3287,15 @@ static void e1000_configure_tx(struct e1000_hw *hw) if (hw->mac_type == e1000_igb) { uint32_t reg_txdctl; - E1000_WRITE_REG(hw, TCTL_EXT, 0x42 << 10); + e1000_write_reg(hw, E1000_TCTL_EXT, 0x42 << 10); - reg_txdctl = E1000_READ_REG(hw, TXDCTL); + reg_txdctl = e1000_read_reg(hw, E1000_TXDCTL); reg_txdctl |= 1 << 25; - E1000_WRITE_REG(hw, TXDCTL, reg_txdctl); + e1000_write_reg(hw, E1000_TXDCTL, reg_txdctl); mdelay(20); } - E1000_WRITE_REG(hw, TCTL, tctl); + e1000_write_reg(hw, E1000_TCTL, tctl); } /** @@ -3306,7 +3306,7 @@ static void e1000_setup_rctl(struct e1000_hw *hw) { uint32_t rctl; - rctl = E1000_READ_REG(hw, RCTL); + rctl = e1000_read_reg(hw, E1000_RCTL); rctl &= ~(3 << E1000_RCTL_MO_SHIFT); @@ -3319,7 +3319,7 @@ static void e1000_setup_rctl(struct e1000_hw *hw) rctl &= ~(E1000_RCTL_SZ_4096); rctl |= E1000_RCTL_SZ_2048; rctl &= ~(E1000_RCTL_BSEX | E1000_RCTL_LPE); - E1000_WRITE_REG(hw, RCTL, rctl); + e1000_write_reg(hw, E1000_RCTL, rctl); } /** @@ -3334,42 +3334,42 @@ static void e1000_configure_rx(struct e1000_hw *hw) hw->rx_tail = 0; /* make sure receives are disabled while setting up the descriptors */ - rctl = E1000_READ_REG(hw, RCTL); - E1000_WRITE_REG(hw, RCTL, rctl & ~E1000_RCTL_EN); + rctl = e1000_read_reg(hw, E1000_RCTL); + e1000_write_reg(hw, E1000_RCTL, rctl & ~E1000_RCTL_EN); if (hw->mac_type >= e1000_82540) { /* Set the interrupt throttling rate. Value is calculated * as DEFAULT_ITR = 1/(MAX_INTS_PER_SEC * 256ns) */ #define MAX_INTS_PER_SEC 8000 #define DEFAULT_ITR 1000000000/(MAX_INTS_PER_SEC * 256) - E1000_WRITE_REG(hw, ITR, DEFAULT_ITR); + e1000_write_reg(hw, E1000_ITR, DEFAULT_ITR); } if (hw->mac_type >= e1000_82571) { - ctrl_ext = E1000_READ_REG(hw, CTRL_EXT); + ctrl_ext = e1000_read_reg(hw, E1000_CTRL_EXT); /* Reset delay timers after every interrupt */ ctrl_ext |= E1000_CTRL_EXT_INT_TIMER_CLR; - E1000_WRITE_REG(hw, CTRL_EXT, ctrl_ext); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_CTRL_EXT, ctrl_ext); + e1000_write_flush(hw); } /* Setup the Base and Length of the Rx Descriptor Ring */ - E1000_WRITE_REG(hw, RDBAL, (unsigned long)hw->rx_base); - E1000_WRITE_REG(hw, RDBAH, 0); + e1000_write_reg(hw, E1000_RDBAL, (unsigned long)hw->rx_base); + e1000_write_reg(hw, E1000_RDBAH, 0); - E1000_WRITE_REG(hw, RDLEN, 128); + e1000_write_reg(hw, E1000_RDLEN, 128); /* Setup the HW Rx Head and Tail Descriptor Pointers */ - E1000_WRITE_REG(hw, RDH, 0); - E1000_WRITE_REG(hw, RDT, 0); + e1000_write_reg(hw, E1000_RDH, 0); + e1000_write_reg(hw, E1000_RDT, 0); /* Enable Receives */ if (hw->mac_type == e1000_igb) { - uint32_t reg_rxdctl = E1000_READ_REG(hw, RXDCTL); + uint32_t reg_rxdctl = e1000_read_reg(hw, E1000_RXDCTL); reg_rxdctl |= 1 << 25; - E1000_WRITE_REG(hw, RXDCTL, reg_rxdctl); + e1000_write_reg(hw, E1000_RXDCTL, reg_rxdctl); mdelay(20); } - E1000_WRITE_REG(hw, RCTL, rctl); + e1000_write_reg(hw, E1000_RCTL, rctl); fill_rx(hw); } @@ -3410,9 +3410,9 @@ static int e1000_transmit(struct eth_device *edev, void *txpacket, int length) dma_sync_single_for_device((unsigned long)txpacket, length, DMA_TO_DEVICE); - E1000_WRITE_REG(hw, TDT, hw->tx_tail); + e1000_write_reg(hw, E1000_TDT, hw->tx_tail); - E1000_WRITE_FLUSH(hw); + e1000_write_flush(hw); to = get_time_ns(); while (1) { @@ -3432,16 +3432,16 @@ static void e1000_disable(struct eth_device *edev) struct e1000_hw *hw = edev->priv; /* Turn off the ethernet interface */ - E1000_WRITE_REG(hw, RCTL, 0); - E1000_WRITE_REG(hw, TCTL, 0); + e1000_write_reg(hw, E1000_RCTL, 0); + e1000_write_reg(hw, E1000_TCTL, 0); /* Clear the transmit ring */ - E1000_WRITE_REG(hw, TDH, 0); - E1000_WRITE_REG(hw, TDT, 0); + e1000_write_reg(hw, E1000_TDH, 0); + e1000_write_reg(hw, E1000_TDT, 0); /* Clear the receive ring */ - E1000_WRITE_REG(hw, RDH, 0); - E1000_WRITE_REG(hw, RDT, 0); + e1000_write_reg(hw, E1000_RDH, 0); + e1000_write_reg(hw, E1000_RDT, 0); mdelay(10); } @@ -3456,15 +3456,15 @@ static int e1000_init(struct eth_device *edev) DEBUGFUNC(); if (hw->mac_type >= e1000_82544) - E1000_WRITE_REG(hw, WUC, 0); + e1000_write_reg(hw, E1000_WUC, 0); /* force full DMA clock frequency for 10/100 on ICH8 A0-B0 */ if ((hw->mac_type == e1000_ich8lan) && ((hw->revision_id < 3) || ((hw->device_id != E1000_DEV_ID_ICH8_IGP_M_AMT) && (hw->device_id != E1000_DEV_ID_ICH8_IGP_M)))) { - reg_data = E1000_READ_REG(hw, STATUS); + reg_data = e1000_read_reg(hw, E1000_STATUS); reg_data &= ~0x80000000; - E1000_WRITE_REG(hw, STATUS, reg_data); + e1000_write_reg(hw, E1000_STATUS, reg_data); } /* Set the media type and TBI compatibility */ @@ -3478,7 +3478,7 @@ static int e1000_init(struct eth_device *edev) /* VET hardcoded to standard value and VFTA removed in ICH8 LAN */ if (hw->mac_type != e1000_ich8lan) { if (hw->mac_type < e1000_82545_rev_3) - E1000_WRITE_REG(hw, VET, 0); + e1000_write_reg(hw, E1000_VET, 0); e1000_clear_vfta(hw); } @@ -3487,20 +3487,20 @@ static int e1000_init(struct eth_device *edev) dev_dbg(hw->dev, "Disabling MWI on 82542 rev 2.0\n"); pci_write_config_word(hw->pdev, PCI_COMMAND, hw->pci_cmd_word & ~PCI_COMMAND_INVALIDATE); - E1000_WRITE_REG(hw, RCTL, E1000_RCTL_RST); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_RCTL, E1000_RCTL_RST); + e1000_write_flush(hw); mdelay(5); } for (i = 1; i < E1000_RAR_ENTRIES; i++) { - E1000_WRITE_REG_ARRAY(hw, RA, (i << 1), 0); - E1000_WRITE_REG_ARRAY(hw, RA, ((i << 1) + 1), 0); + e1000_write_reg_array(hw, E1000_RA, (i << 1), 0); + e1000_write_reg_array(hw, E1000_RA, (i << 1) + 1, 0); } /* For 82542 (rev 2.0), take the receiver out of reset and enable MWI */ if (hw->mac_type == e1000_82542_rev2_0) { - E1000_WRITE_REG(hw, RCTL, 0); - E1000_WRITE_FLUSH(hw); + e1000_write_reg(hw, E1000_RCTL, 0); + e1000_write_flush(hw); mdelay(1); pci_write_config_word(hw->pdev, PCI_COMMAND, hw->pci_cmd_word); } @@ -3511,10 +3511,10 @@ static int e1000_init(struct eth_device *edev) mta_size = E1000_MC_TBL_SIZE_ICH8LAN; for (i = 0; i < mta_size; i++) { - E1000_WRITE_REG_ARRAY(hw, MTA, i, 0); + e1000_write_reg_array(hw, E1000_MTA, i, 0); /* use write flush to prevent Memory Write Block (MWB) from * occuring when accessing our register space */ - E1000_WRITE_FLUSH(hw); + e1000_write_flush(hw); } /* More time needed for PHY to initialize */ @@ -3571,7 +3571,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *id) dev_err(&pdev->dev, "EEPROM is invalid!\n"); return -EINVAL; } - if ((E1000_READ_REG(hw, I210_EECD) & E1000_EECD_FLUPD) && + if ((e1000_read_reg(hw, E1000_I210_EECD) & E1000_EECD_FLUPD) && e1000_validate_eeprom_checksum(hw)) return -EINVAL; diff --git a/drivers/net/e1000/regio.c b/drivers/net/e1000/regio.c new file mode 100644 index 0000000..8c529f1 --- /dev/null +++ b/drivers/net/e1000/regio.c @@ -0,0 +1,29 @@ +#include <common.h> + +#include "e1000.h" + +void e1000_write_reg(struct e1000_hw *hw, uint32_t reg, uint32_t value) +{ + writel(value, hw->hw_addr + reg); +} + +uint32_t e1000_read_reg(struct e1000_hw *hw, uint32_t reg) +{ + return readl(hw->hw_addr + reg); +} + +void e1000_write_reg_array(struct e1000_hw *hw, uint32_t base, + uint32_t idx, uint32_t value) +{ + writel(value, hw->hw_addr + base + idx * sizeof(uint32_t)); +} + +uint32_t e1000_read_reg_array(struct e1000_hw *hw, uint32_t base, uint32_t idx) +{ + return readl(hw->hw_addr + base + idx * sizeof(uint32_t)); +} + +void e1000_write_flush(struct e1000_hw *hw) +{ + e1000_read_reg(hw, E1000_STATUS); +} -- 2.5.5 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox