X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fat91_emac.c;h=483c831c05b42185fce1170f40ed938ccf642908;hb=c7f6dbe736f3f57436ba162f986691f7e862eb4d;hp=4e5685c0c32b83fae2a46be6e6c33c43e9f4eacb;hpb=6d8d4ef994a7c46e34b5fe53b1af7aa4f78192bf;p=oweals%2Fu-boot.git diff --git a/drivers/net/at91_emac.c b/drivers/net/at91_emac.c index 4e5685c0c3..483c831c05 100644 --- a/drivers/net/at91_emac.c +++ b/drivers/net/at91_emac.c @@ -69,21 +69,21 @@ #endif #ifdef ET_DEBUG -#define DEBUG_AT91EMAC(...) printf(__VA_ARGS__); +#define DEBUG_AT91EMAC 1 #else -#define DEBUG_AT91EMAC(...) +#define DEBUG_AT91EMAC 0 #endif #ifdef MII_DEBUG -#define DEBUG_AT91PHY(...) printf(__VA_ARGS__); +#define DEBUG_AT91PHY 1 #else -#define DEBUG_AT91PHY(...) +#define DEBUG_AT91PHY 0 #endif #ifndef CONFIG_DRIVER_AT91EMAC_QUIET -#define VERBOSEP(...) printf(__VA_ARGS__); +#define VERBOSEP 1 #else -#define VERBOSEP(...) +#define VERBOSEP 0 #endif #define RBF_ADDR 0xfffffffc @@ -93,7 +93,7 @@ #define RBF_MULTICAST (1<<30) #define RBF_UNICAST (1<<29) #define RBF_EXTERNAL (1<<28) -#define RBF_UNKOWN (1<<27) +#define RBF_UNKNOWN (1<<27) #define RBF_SIZE 0x07ff #define RBF_LOCAL4 (1<<26) #define RBF_LOCAL3 (1<<25) @@ -137,14 +137,15 @@ int at91emac_read(at91_emac_t *at91mac, unsigned char addr, do { netstat = readl(&at91mac->sr); - DEBUG_AT91PHY("poll SR %08lx\n", netstat); + debug_cond(DEBUG_AT91PHY, "poll SR %08lx\n", netstat); } while (!(netstat & AT91_EMAC_SR_IDLE)); *value = readl(&at91mac->man) & AT91_EMAC_MAN_DATA_MASK; at91emac_DisableMDIO(at91mac); - DEBUG_AT91PHY("AT91PHY read %x REG(%d)=%x\n", at91mac, reg, *value) + debug_cond(DEBUG_AT91PHY, + "AT91PHY read %p REG(%d)=%x\n", at91mac, reg, *value); return 0; } @@ -153,7 +154,8 @@ int at91emac_write(at91_emac_t *at91mac, unsigned char addr, unsigned char reg, unsigned short value) { unsigned long netstat; - DEBUG_AT91PHY("AT91PHY write %x REG(%d)=%x\n", at91mac, reg, &value) + debug_cond(DEBUG_AT91PHY, + "AT91PHY write %p REG(%d)=%p\n", at91mac, reg, &value); at91emac_EnableMDIO(at91mac); @@ -164,7 +166,7 @@ int at91emac_write(at91_emac_t *at91mac, unsigned char addr, do { netstat = readl(&at91mac->sr); - DEBUG_AT91PHY("poll SR %08lx\n", netstat); + debug_cond(DEBUG_AT91PHY, "poll SR %08lx\n", netstat); } while (!(netstat & AT91_EMAC_SR_IDLE)); at91emac_DisableMDIO(at91mac); @@ -216,7 +218,7 @@ static int at91emac_phy_reset(struct eth_device *netdev) adv = ADVERTISE_CSMA | ADVERTISE_ALL; at91emac_write(emac, CONFIG_DRIVER_AT91EMAC_PHYADDR, MII_ADVERTISE, adv); - VERBOSEP("%s: Starting autonegotiation...\n", netdev->name); + debug_cond(VERBOSEP, "%s: Starting autonegotiation...\n", netdev->name); at91emac_write(emac, CONFIG_DRIVER_AT91EMAC_PHYADDR, MII_BMCR, (BMCR_ANENABLE | BMCR_ANRESTART)); @@ -229,7 +231,8 @@ static int at91emac_phy_reset(struct eth_device *netdev) } if (status & BMSR_ANEGCOMPLETE) { - VERBOSEP("%s: Autonegotiation complete\n", netdev->name); + debug_cond(VERBOSEP, + "%s: Autonegotiation complete\n", netdev->name); } else { printf("%s: Autonegotiation timed out (status=0x%04x)\n", netdev->name, status); @@ -272,7 +275,7 @@ static int at91emac_phy_init(struct eth_device *netdev) } } if (!(status & BMSR_LSTATUS)) { - VERBOSEP("%s: link down\n", netdev->name); + debug_cond(VERBOSEP, "%s: link down\n", netdev->name); return -3; } else { at91emac_read(emac, CONFIG_DRIVER_AT91EMAC_PHYADDR, @@ -283,7 +286,7 @@ static int at91emac_phy_init(struct eth_device *netdev) speed = (media & (ADVERTISE_100FULL | ADVERTISE_100HALF) ? 1 : 0); duplex = (media & ADVERTISE_FULL) ? 1 : 0; - VERBOSEP("%s: link up, %sMbps %s-duplex\n", + debug_cond(VERBOSEP, "%s: link up, %sMbps %s-duplex\n", netdev->name, speed ? "100" : "10", duplex ? "full" : "half"); @@ -342,34 +345,34 @@ static int at91emac_init(struct eth_device *netdev, bd_t *bd) u32 value; emac_device *dev; at91_emac_t *emac; - at91_pio_t *pio = (at91_pio_t *) AT91_PIO_BASE; - at91_pmc_t *pmc = (at91_pmc_t *) AT91_PMC_BASE; + at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO; + at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC; emac = (at91_emac_t *) netdev->iobase; dev = (emac_device *) netdev->priv; /* PIO Disable Register */ - value = AT91_PMX_AA_EMDIO | AT91_PMX_AA_EMDC | - AT91_PMX_AA_ERXER | AT91_PMX_AA_ERX1 | - AT91_PMX_AA_ERX0 | AT91_PMX_AA_ECRS | - AT91_PMX_AA_ETX1 | AT91_PMX_AA_ETX0 | - AT91_PMX_AA_ETXEN | AT91_PMX_AA_EREFCK; + value = ATMEL_PMX_AA_EMDIO | ATMEL_PMX_AA_EMDC | + ATMEL_PMX_AA_ERXER | ATMEL_PMX_AA_ERX1 | + ATMEL_PMX_AA_ERX0 | ATMEL_PMX_AA_ECRS | + ATMEL_PMX_AA_ETX1 | ATMEL_PMX_AA_ETX0 | + ATMEL_PMX_AA_ETXEN | ATMEL_PMX_AA_EREFCK; writel(value, &pio->pioa.pdr); writel(value, &pio->pioa.asr); #ifdef CONFIG_RMII - value = AT91_PMX_BA_ERXCK; + value = ATMEL_PMX_BA_ERXCK; #else - value = AT91_PMX_BA_ERXCK | AT91_PMX_BA_ECOL | - AT91_PMX_BA_ERXDV | AT91_PMX_BA_ERX3 | - AT91_PMX_BA_ERX2 | AT91_PMX_BA_ETXER | - AT91_PMX_BA_ETX3 | AT91_PMX_BA_ETX2; + value = ATMEL_PMX_BA_ERXCK | ATMEL_PMX_BA_ECOL | + ATMEL_PMX_BA_ERXDV | ATMEL_PMX_BA_ERX3 | + ATMEL_PMX_BA_ERX2 | ATMEL_PMX_BA_ETXER | + ATMEL_PMX_BA_ETX3 | ATMEL_PMX_BA_ETX2; #endif writel(value, &pio->piob.pdr); writel(value, &pio->piob.bsr); - writel(1 << AT91_ID_EMAC, &pmc->pcer); + writel(1 << ATMEL_ID_EMAC, &pmc->pcer); writel(readl(&emac->ctl) | AT91_EMAC_CTL_CSR, &emac->ctl); /* Init Ethernet buffers */ @@ -409,7 +412,7 @@ static void at91emac_halt(struct eth_device *netdev) emac = (at91_emac_t *) netdev->iobase; writel(readl(&emac->ctl) & ~(AT91_EMAC_CTL_TE | AT91_EMAC_CTL_RE), &emac->ctl); - DEBUG_AT91EMAC("halt MAC\n"); + debug_cond(DEBUG_AT91EMAC, "halt MAC\n"); } static int at91emac_send(struct eth_device *netdev, volatile void *packet, @@ -425,7 +428,7 @@ static int at91emac_send(struct eth_device *netdev, volatile void *packet, writel(AT91_EMAC_TCR_LEN(length), &emac->tcr); while (AT91_EMAC_TCR_LEN(readl(&emac->tcr))) ; - DEBUG_AT91EMAC("Send %d \n", length); + debug_cond(DEBUG_AT91EMAC, "Send %d\n", length); writel(readl(&emac->tsr) | AT91_EMAC_TSR_COMP, &emac->tsr); return 0; } @@ -445,7 +448,7 @@ static int at91emac_recv(struct eth_device *netdev) size = rbfp->size & RBF_SIZE; NetReceive(NetRxPackets[dev->rbindex], size); - DEBUG_AT91EMAC("Recv[%d]: %d bytes @ %x \n", + debug_cond(DEBUG_AT91EMAC, "Recv[%ld]: %d bytes @ %lx\n", dev->rbindex, size, rbfp->addr); rbfp->addr &= ~RBF_OWNER; @@ -474,19 +477,20 @@ static int at91emac_recv(struct eth_device *netdev) static int at91emac_write_hwaddr(struct eth_device *netdev) { - emac_device *dev; at91_emac_t *emac; - at91_pmc_t *pmc = (at91_pmc_t *) AT91_PMC_BASE; + at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC; emac = (at91_emac_t *) netdev->iobase; - dev = (emac_device *) netdev->priv; - writel(1 << AT91_ID_EMAC, &pmc->pcer); - DEBUG_AT91EMAC("init MAC-ADDR %x%x \n", - cpu_to_le16(*((u16 *)(netdev->enetaddr + 4))), - cpu_to_le32(*((u32 *)netdev->enetaddr))); - writel(cpu_to_le32(*((u32 *)netdev->enetaddr)), &emac->sa2l); - writel(cpu_to_le16(*((u16 *)(netdev->enetaddr + 4))), &emac->sa2h); - DEBUG_AT91EMAC("init MAC-ADDR %x%x \n", + writel(1 << ATMEL_ID_EMAC, &pmc->pcer); + debug_cond(DEBUG_AT91EMAC, + "init MAC-ADDR %02x:%02x:%02x:%02x:%02x:%02x\n", + netdev->enetaddr[5], netdev->enetaddr[4], netdev->enetaddr[3], + netdev->enetaddr[2], netdev->enetaddr[1], netdev->enetaddr[0]); + writel( (netdev->enetaddr[0] | netdev->enetaddr[1] << 8 | + netdev->enetaddr[2] << 16 | netdev->enetaddr[3] << 24), + &emac->sa2l); + writel((netdev->enetaddr[4] | netdev->enetaddr[5] << 8), &emac->sa2h); + debug_cond(DEBUG_AT91EMAC, "init MAC-ADDR %x%x\n", readl(&emac->sa2h), readl(&emac->sa2l)); return 0; } @@ -498,7 +502,7 @@ int at91emac_register(bd_t *bis, unsigned long iobase) struct eth_device *dev; if (iobase == 0) - iobase = AT91_EMAC_BASE; + iobase = ATMEL_BASE_EMAC; emac = malloc(sizeof(*emac)+512); if (emac == NULL) return -1;