Convert SMC91111 Ethernet driver to CONFIG_NET_MULTI API

All in-tree boards that use this controller have CONFIG_NET_MULTI
added
Also:
  - changed CONFIG_DRIVER_SMC91111 to CONFIG_SMC91111
  - cleaned up line lengths
  - modified all boards that override weak function in this driver
  - modified all eeprom standalone apps to work with new driver
  - updated blackfin standalone EEPROM app after testing

Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Ben Warren 2009-10-04 22:37:03 -07:00
parent 32e7f239dd
commit 7194ab8095
71 changed files with 851 additions and 641 deletions

View File

@ -22,6 +22,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
int board_early_init_f (void) int board_early_init_f (void)
{ {
@ -38,3 +39,14 @@ phys_size_t initdram (int board_type)
{ {
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -22,6 +22,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
int board_early_init_f (void) int board_early_init_f (void)
{ {
@ -38,3 +39,14 @@ phys_size_t initdram (int board_type)
{ {
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -22,6 +22,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
int checkboard (void) int checkboard (void)
{ {
@ -33,3 +34,14 @@ phys_size_t initdram (int board_type)
{ {
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -34,9 +34,7 @@
*/ */
#include <common.h> #include <common.h>
#ifdef CONFIG_PCI
#include <netdev.h> #include <netdev.h>
#endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -127,9 +125,16 @@ extern void dram_query(void);
return 0; return 0;
} }
#ifdef CONFIG_PCI #ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis) int board_eth_init(bd_t *bis)
{ {
return pci_eth_init(bis); int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
#ifdef CONFIG_PCI
rc += pci_eth_init(bis);
#endif
return rc;
} }
#endif #endif

View File

@ -34,6 +34,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -89,3 +90,14 @@ int dram_init (void)
{ {
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include "psd4256.h" #include "psd4256.h"
#include "flash-defines.h" #include "flash-defines.h"
@ -57,3 +58,10 @@ int misc_init_r(void)
return 0; return 0;
} }
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
#include "bf533-stamp.h" #include "bf533-stamp.h"
@ -283,3 +284,10 @@ void __led_toggle(led_id_t mask)
} }
#endif #endif
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -7,6 +7,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <config.h> #include <config.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
@ -25,3 +26,10 @@ phys_size_t initdram(int board_type)
gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
return gd->bd->bi_memsize; return gd->bd->bi_memsize;
} }
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -43,3 +44,10 @@ phys_size_t initdram(int board_type)
gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
return gd->bd->bi_memsize; return gd->bd->bi_memsize;
} }
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -12,6 +12,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -44,3 +45,10 @@ void swap_to(int device_id)
SSYNC(); SSYNC();
} }
#endif #endif
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -71,3 +72,14 @@ int dram_init (void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -7,6 +7,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -23,3 +24,10 @@ phys_size_t initdram(int board_type)
gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
return gd->bd->bi_memsize; return gd->bd->bi_memsize;
} }
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -7,6 +7,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -23,3 +24,10 @@ phys_size_t initdram(int board_type)
gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
return gd->bd->bi_memsize; return gd->bd->bi_memsize;
} }
#ifdef CONFIG_SMC91111
int board_eth_init(bd_t *bis)
{
return smc91111_initialize(0, CONFIG_SMC91111_BASE);
}
#endif

View File

@ -27,6 +27,7 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -223,3 +224,14 @@ dram_init (void)
PHYS_SDRAM_3_SIZE + PHYS_SDRAM_3_SIZE +
PHYS_SDRAM_4_SIZE ); PHYS_SDRAM_4_SIZE );
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -22,6 +22,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <i2c.h> #include <i2c.h>
#include <da9030.h> #include <da9030.h>
#include <malloc.h> #include <malloc.h>
@ -363,3 +364,14 @@ void hw_watchdog_reset(void)
i2c_reg_write(addr, SYS_CONTROL_A, val); i2c_reg_write(addr, SYS_CONTROL_A, val);
} }
#endif #endif
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -23,6 +23,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <SA-1100.h> #include <SA-1100.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -53,3 +54,14 @@ int dram_init (void)
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -19,6 +19,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <config.h> #include <config.h>
#include <asm/leon.h> #include <asm/leon.h>
@ -37,3 +38,14 @@ int misc_init_r(void)
{ {
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -19,6 +19,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <config.h> #include <config.h>
#include <asm/leon.h> #include <asm/leon.h>
@ -37,3 +38,14 @@ int misc_init_r(void)
{ {
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -24,6 +24,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
@ -182,3 +183,14 @@ void show_boot_progress (int status)
return; return;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -23,6 +23,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -120,3 +121,14 @@ void show_boot_progress (int status)
return; return;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#if defined(CONFIG_LH7A400) #if defined(CONFIG_LH7A400)
#include <lh7a400.h> #include <lh7a400.h>
#elif defined(CONFIG_LH7A404) #elif defined(CONFIG_LH7A404)
@ -79,3 +80,14 @@ int dram_init (void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -24,6 +24,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/processor.h> #include <asm/processor.h>
@ -57,3 +58,14 @@ void led_set_state(unsigned short value)
{ {
writew(value & 0xFF, LED_BASE); writew(value & 0xFF, LED_BASE);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -27,43 +27,42 @@
#include <common.h> #include <common.h>
#include <exports.h> #include <exports.h>
#include <timestamp.h> #include <timestamp.h>
#include <net.h>
#include "../drivers/net/smc91111.h" #include "../drivers/net/smc91111.h"
#define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE static u16 read_eeprom_reg(struct eth_device *dev, u16 reg)
static u16 read_eeprom_reg(u16 reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK(2); SMC_SELECT_BANK(dev, 2);
SMC_outw(reg, PTR_REG); SMC_outw(dev, reg, PTR_REG);
SMC_SELECT_BANK(1); SMC_SELECT_BANK(dev, 1);
SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD, SMC_outw(dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD,
CTL_REG); CTL_REG);
timeout = 100; timeout = 100;
while((SMC_inw (CTL_REG) & CTL_RELOAD) && --timeout) while((SMC_inw (dev, CTL_REG) & CTL_RELOAD) && --timeout)
udelay(100); udelay(100);
if (timeout == 0) { if (timeout == 0) {
printf("Timeout Reading EEPROM register %02x\n", reg); printf("Timeout Reading EEPROM register %02x\n", reg);
return 0; return 0;
} }
return SMC_inw (GP_REG); return SMC_inw (dev, GP_REG);
} }
static int write_eeprom_reg(u16 value, u16 reg) static int write_eeprom_reg(struct eth_device *dev, u16 value, u16 reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK(2); SMC_SELECT_BANK(dev, 2);
SMC_outw(reg, PTR_REG); SMC_outw(dev, reg, PTR_REG);
SMC_SELECT_BANK(1); SMC_SELECT_BANK(dev, 1);
SMC_outw(value, GP_REG); SMC_outw(dev, value, GP_REG);
SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG); SMC_outw(dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG);
timeout = 100; timeout = 100;
while ((SMC_inw(CTL_REG) & CTL_STORE) && --timeout) while ((SMC_inw(dev, CTL_REG) & CTL_STORE) && --timeout)
udelay (100); udelay (100);
if (timeout == 0) { if (timeout == 0) {
printf("Timeout Writing EEPROM register %02x\n", reg); printf("Timeout Writing EEPROM register %02x\n", reg);
@ -73,17 +72,17 @@ static int write_eeprom_reg(u16 value, u16 reg)
return 1; return 1;
} }
static int write_data(u16 *buf, int len) static int write_data(struct eth_device *dev, u16 *buf, int len)
{ {
u16 reg = 0x23; u16 reg = 0x23;
while (len--) while (len--)
write_eeprom_reg(*buf++, reg++); write_eeprom_reg(dev, *buf++, reg++);
return 0; return 0;
} }
static int verify_macaddr(char *s) static int verify_macaddr(struct eth_device *dev, char *s)
{ {
u16 reg; u16 reg;
int i, err = 0; int i, err = 0;
@ -91,7 +90,7 @@ static int verify_macaddr(char *s)
printf("MAC Address: "); printf("MAC Address: ");
err = i = 0; err = i = 0;
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
reg = read_eeprom_reg(0x20 + i); reg = read_eeprom_reg(dev, 0x20 + i);
printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n'); printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n');
if (s) if (s)
err |= reg != ((u16 *)s)[i]; err |= reg != ((u16 *)s)[i];
@ -100,7 +99,7 @@ static int verify_macaddr(char *s)
return err ? 0 : 1; return err ? 0 : 1;
} }
static int set_mac(char *s) static int set_mac(struct eth_device *dev, char *s)
{ {
int i; int i;
char *e, eaddr[6]; char *e, eaddr[6];
@ -112,7 +111,7 @@ static int set_mac(char *s)
} }
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
write_eeprom_reg(*(((u16 *)eaddr) + i), 0x20 + i); write_eeprom_reg(dev, *(((u16 *)eaddr) + i), 0x20 + i);
return 0; return 0;
} }
@ -150,6 +149,10 @@ int eeprom(int argc, char *argv[])
int i, len, ret; int i, len, ret;
unsigned char buf[58], *p; unsigned char buf[58], *p;
struct eth_device dev = {
.iobase = CONFIG_SMC91111_BASE
};
app_startup(argv); app_startup(argv);
if (get_version() != XF_VERSION) { if (get_version() != XF_VERSION) {
printf("Wrong XF_VERSION.\n"); printf("Wrong XF_VERSION.\n");
@ -160,14 +163,14 @@ int eeprom(int argc, char *argv[])
return crcek(); return crcek();
if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) { if ((SMC_inw (&dev, BANK_SELECT) & 0xFF00) != 0x3300) {
printf("SMSC91111 not found.\n"); printf("SMSC91111 not found.\n");
return 2; return 2;
} }
/* Called without parameters - print MAC address */ /* Called without parameters - print MAC address */
if (argc < 2) { if (argc < 2) {
verify_macaddr(NULL); verify_macaddr(&dev, NULL);
return 0; return 0;
} }
@ -201,8 +204,8 @@ int eeprom(int argc, char *argv[])
} }
/* First argument (MAC) is mandatory */ /* First argument (MAC) is mandatory */
set_mac(argv[1]); set_mac(&dev, argv[1]);
if (verify_macaddr(argv[1])) { if (verify_macaddr(&dev, argv[1])) {
printf("*** MAC address does not match! ***\n"); printf("*** MAC address does not match! ***\n");
return 4; return 4;
} }
@ -210,7 +213,7 @@ int eeprom(int argc, char *argv[])
while (len--) while (len--)
*p++ = 0; *p++ = 0;
write_data((u16 *)buf, sizeof(buf) >> 1); write_data(&dev, (u16 *)buf, sizeof(buf) >> 1);
return 0; return 0;
} }

View File

@ -21,6 +21,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <i2c.h> #include <i2c.h>
#include <flash.h> #include <flash.h>
#include <nand.h> #include <nand.h>
@ -115,3 +116,14 @@ int board_nand_init(struct nand_chip *nand)
return 0; return 0;
} }
#endif #endif
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -22,6 +22,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
int board_early_init_f (void) int board_early_init_f (void)
{ {
@ -38,3 +39,14 @@ phys_size_t initdram (int board_type)
{ {
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -31,6 +31,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <command.h> #include <command.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -133,3 +134,14 @@ U_BOOT_CMD(idpcmd, CONFIG_SYS_MAXARGS, 0, do_idpcmd,
); );
#endif #endif
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -24,6 +24,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/processor.h> #include <asm/processor.h>
@ -51,3 +52,14 @@ int dram_init (void)
void led_set_state (unsigned short value) void led_set_state (unsigned short value)
{ {
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
@ -89,3 +90,14 @@ int dram_init(void)
gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -27,43 +27,42 @@
#include <common.h> #include <common.h>
#include <exports.h> #include <exports.h>
#include <timestamp.h> #include <timestamp.h>
#include <net.h>
#include "../drivers/net/smc91111.h" #include "../drivers/net/smc91111.h"
#define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE static u16 read_eeprom_reg(struct eth_device *dev, u16 reg)
static u16 read_eeprom_reg(u16 reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK(2); SMC_SELECT_BANK(dev, 2);
SMC_outw(reg, PTR_REG); SMC_outw(dev, reg, PTR_REG);
SMC_SELECT_BANK(1); SMC_SELECT_BANK(dev, 1);
SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD, SMC_outw(dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD,
CTL_REG); CTL_REG);
timeout = 100; timeout = 100;
while((SMC_inw (CTL_REG) & CTL_RELOAD) && --timeout) while((SMC_inw (dev, CTL_REG) & CTL_RELOAD) && --timeout)
udelay(100); udelay(100);
if (timeout == 0) { if (timeout == 0) {
printf("Timeout Reading EEPROM register %02x\n", reg); printf("Timeout Reading EEPROM register %02x\n", reg);
return 0; return 0;
} }
return SMC_inw (GP_REG); return SMC_inw (dev, GP_REG);
} }
static int write_eeprom_reg(u16 value, u16 reg) static int write_eeprom_reg(struct eth_device *dev, u16 value, u16 reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK(2); SMC_SELECT_BANK(dev, 2);
SMC_outw(reg, PTR_REG); SMC_outw(dev, reg, PTR_REG);
SMC_SELECT_BANK(1); SMC_SELECT_BANK(dev, 1);
SMC_outw(value, GP_REG); SMC_outw(dev, value, GP_REG);
SMC_outw(SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG); SMC_outw(dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG);
timeout = 100; timeout = 100;
while ((SMC_inw(CTL_REG) & CTL_STORE) && --timeout) while ((SMC_inw(dev, CTL_REG) & CTL_STORE) && --timeout)
udelay (100); udelay (100);
if (timeout == 0) { if (timeout == 0) {
printf("Timeout Writing EEPROM register %02x\n", reg); printf("Timeout Writing EEPROM register %02x\n", reg);
@ -73,17 +72,17 @@ static int write_eeprom_reg(u16 value, u16 reg)
return 1; return 1;
} }
static int write_data(u16 *buf, int len) static int write_data(struct eth_device *dev, u16 *buf, int len)
{ {
u16 reg = 0x23; u16 reg = 0x23;
while (len--) while (len--)
write_eeprom_reg(*buf++, reg++); write_eeprom_reg(dev, *buf++, reg++);
return 0; return 0;
} }
static int verify_macaddr(char *s) static int verify_macaddr(struct eth_device *dev, char *s)
{ {
u16 reg; u16 reg;
int i, err = 0; int i, err = 0;
@ -91,7 +90,7 @@ static int verify_macaddr(char *s)
printf("MAC Address: "); printf("MAC Address: ");
err = i = 0; err = i = 0;
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
reg = read_eeprom_reg(0x20 + i); reg = read_eeprom_reg(dev, 0x20 + i);
printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n'); printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n');
if (s) if (s)
err |= reg != ((u16 *)s)[i]; err |= reg != ((u16 *)s)[i];
@ -100,7 +99,7 @@ static int verify_macaddr(char *s)
return err ? 0 : 1; return err ? 0 : 1;
} }
static int set_mac(char *s) static int set_mac(struct eth_device *dev, char *s)
{ {
int i; int i;
char *e, eaddr[6]; char *e, eaddr[6];
@ -112,7 +111,7 @@ static int set_mac(char *s)
} }
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
write_eeprom_reg(*(((u16 *)eaddr) + i), 0x20 + i); write_eeprom_reg(dev, *(((u16 *)eaddr) + i), 0x20 + i);
return 0; return 0;
} }
@ -148,6 +147,10 @@ int eeprom(int argc, char *argv[])
int i, len, ret; int i, len, ret;
unsigned char buf[58], *p; unsigned char buf[58], *p;
struct eth_device dev = {
.iobase = CONFIG_SMC91111_BASE
};
app_startup(argv); app_startup(argv);
if (get_version() != XF_VERSION) { if (get_version() != XF_VERSION) {
printf("Wrong XF_VERSION.\n"); printf("Wrong XF_VERSION.\n");
@ -156,14 +159,14 @@ int eeprom(int argc, char *argv[])
return 1; return 1;
} }
if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) { if ((SMC_inw (&dev, BANK_SELECT) & 0xFF00) != 0x3300) {
printf("SMSC91111 not found.\n"); printf("SMSC91111 not found.\n");
return 2; return 2;
} }
/* Called without parameters - print MAC address */ /* Called without parameters - print MAC address */
if (argc < 2) { if (argc < 2) {
verify_macaddr(NULL); verify_macaddr(&dev, NULL);
return 0; return 0;
} }
@ -197,8 +200,8 @@ int eeprom(int argc, char *argv[])
} }
/* First argument (MAC) is mandatory */ /* First argument (MAC) is mandatory */
set_mac(argv[1]); set_mac(&dev, argv[1]);
if (verify_macaddr(argv[1])) { if (verify_macaddr(&dev, argv[1])) {
printf("*** MAC address does not match! ***\n"); printf("*** MAC address does not match! ***\n");
return 4; return 4;
} }
@ -206,7 +209,7 @@ int eeprom(int argc, char *argv[])
while (len--) while (len--)
*p++ = 0; *p++ = 0;
write_data((u16 *)buf, sizeof(buf) >> 1); write_data(&dev, (u16 *)buf, sizeof(buf) >> 1);
return 0; return 0;
} }

View File

@ -20,6 +20,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -66,3 +67,14 @@ int board_late_init(void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -29,6 +29,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -71,3 +72,14 @@ int dram_init (void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -27,6 +27,7 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -80,3 +81,14 @@ dram_init (void)
return (0); return (0);
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -61,3 +62,14 @@ int dram_init (void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -26,6 +26,7 @@
*/ */
#include <common.h> #include <common.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -68,3 +69,14 @@ int dram_init (void)
return 0; return 0;
} }
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_SMC91111
rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
#endif
return rc;
}
#endif

View File

@ -64,7 +64,7 @@ COBJS-$(CONFIG_RTL8139) += rtl8139.o
COBJS-$(CONFIG_RTL8169) += rtl8169.o COBJS-$(CONFIG_RTL8169) += rtl8169.o
COBJS-$(CONFIG_DRIVER_S3C4510_ETH) += s3c4510b_eth.o COBJS-$(CONFIG_DRIVER_S3C4510_ETH) += s3c4510b_eth.o
COBJS-$(CONFIG_SH_ETHER) += sh_eth.o COBJS-$(CONFIG_SH_ETHER) += sh_eth.o
COBJS-$(CONFIG_DRIVER_SMC91111) += smc91111.o COBJS-$(CONFIG_SMC91111) += smc91111.o
COBJS-$(CONFIG_SMC911X) += smc911x.o COBJS-$(CONFIG_SMC911X) += smc911x.o
COBJS-$(CONFIG_TIGON3) += tigon3.o bcm570x_autoneg.o 5701rls.o COBJS-$(CONFIG_TIGON3) += tigon3.o bcm570x_autoneg.o 5701rls.o
COBJS-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o COBJS-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o

File diff suppressed because it is too large Load Diff

View File

@ -58,6 +58,10 @@ typedef unsigned char byte;
typedef unsigned short word; typedef unsigned short word;
typedef unsigned long int dword; typedef unsigned long int dword;
struct smc91111_priv{
u8 dev_num;
};
/* /*
. DEBUGGING LEVELS . DEBUGGING LEVELS
. .
@ -77,32 +81,32 @@ typedef unsigned long int dword;
#ifdef CONFIG_PXA250 #ifdef CONFIG_PXA250
#ifdef CONFIG_XSENGINE #ifdef CONFIG_XSENGINE
#define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r<<1)))) #define SMC_inl(a,r) (*((volatile dword *)((a)->iobase+(r<<1))))
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+(r<<1)))) #define SMC_inw(a,r) (*((volatile word *)((a)->iobase+(r<<1))))
#define SMC_inb(p) ({ \ #define SMC_inb(a,p) ({ \
unsigned int __p = (unsigned int)(SMC_BASE_ADDRESS + (p<<1)); \ unsigned int __p = (unsigned int)((a)->iobase + (p<<1)); \
unsigned int __v = *(volatile unsigned short *)((__p) & ~2); \ unsigned int __v = *(volatile unsigned short *)((__p) & ~2); \
if (__p & 2) __v >>= 8; \ if (__p & 2) __v >>= 8; \
else __v &= 0xff; \ else __v &= 0xff; \
__v; }) __v; })
#elif defined(CONFIG_XAENIAX) #elif defined(CONFIG_XAENIAX)
#define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r)))) #define SMC_inl(a,r) (*((volatile dword *)((a)->iobase+(r))))
#define SMC_inw(z) ({ \ #define SMC_inw(a,z) ({ \
unsigned int __p = (unsigned int)(SMC_BASE_ADDRESS + (z)); \ unsigned int __p = (unsigned int)((a)->iobase + (z)); \
unsigned int __v = *(volatile unsigned int *)((__p) & ~3); \ unsigned int __v = *(volatile unsigned int *)((__p) & ~3); \
if (__p & 3) __v >>= 16; \ if (__p & 3) __v >>= 16; \
else __v &= 0xffff; \ else __v &= 0xffff; \
__v; }) __v; })
#define SMC_inb(p) ({ \ #define SMC_inb(a,p) ({ \
unsigned int ___v = SMC_inw((p) & ~1); \ unsigned int ___v = SMC_inw((a),(p) & ~1); \
if (p & 1) ___v >>= 8; \ if (p & 1) ___v >>= 8; \
else ___v &= 0xff; \ else ___v &= 0xff; \
___v; }) ___v; })
#else #else
#define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r)))) #define SMC_inl(a,r) (*((volatile dword *)((a)->iobase+(r))))
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+(r)))) #define SMC_inw(a,r) (*((volatile word *)((a)->iobase+(r))))
#define SMC_inb(p) ({ \ #define SMC_inb(a,p) ({ \
unsigned int __p = (unsigned int)(SMC_BASE_ADDRESS + (p)); \ unsigned int __p = (unsigned int)((a)->iobase + (p)); \
unsigned int __v = *(volatile unsigned short *)((__p) & ~1); \ unsigned int __v = *(volatile unsigned short *)((__p) & ~1); \
if (__p & 1) __v >>= 8; \ if (__p & 1) __v >>= 8; \
else __v &= 0xff; \ else __v &= 0xff; \
@ -110,69 +114,69 @@ typedef unsigned long int dword;
#endif #endif
#ifdef CONFIG_XSENGINE #ifdef CONFIG_XSENGINE
#define SMC_outl(d,r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r<<1))) = d) #define SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r<<1))) = d)
#define SMC_outw(d,r) (*((volatile word *)(SMC_BASE_ADDRESS+(r<<1))) = d) #define SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+(r<<1))) = d)
#elif defined (CONFIG_XAENIAX) #elif defined (CONFIG_XAENIAX)
#define SMC_outl(d,r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r))) = d) #define SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r))) = d)
#define SMC_outw(d,p) ({ \ #define SMC_outw(a,d,p) ({ \
dword __dwo = SMC_inl((p) & ~3); \ dword __dwo = SMC_inl((a),(p) & ~3); \
dword __dwn = (word)(d); \ dword __dwn = (word)(d); \
__dwo &= ((p) & 3) ? 0x0000ffff : 0xffff0000; \ __dwo &= ((p) & 3) ? 0x0000ffff : 0xffff0000; \
__dwo |= ((p) & 3) ? __dwn << 16 : __dwn; \ __dwo |= ((p) & 3) ? __dwn << 16 : __dwn; \
SMC_outl(__dwo, (p) & ~3); \ SMC_outl((a), __dwo, (p) & ~3); \
}) })
#else #else
#define SMC_outl(d,r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r))) = d) #define SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r))) = d)
#define SMC_outw(d,r) (*((volatile word *)(SMC_BASE_ADDRESS+(r))) = d) #define SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+(r))) = d)
#endif #endif
#define SMC_outb(d,r) ({ word __d = (byte)(d); \ #define SMC_outb(a,d,r) ({ word __d = (byte)(d); \
word __w = SMC_inw((r)&~1); \ word __w = SMC_inw((a),(r)&~1); \
__w &= ((r)&1) ? 0x00FF : 0xFF00; \ __w &= ((r)&1) ? 0x00FF : 0xFF00; \
__w |= ((r)&1) ? __d<<8 : __d; \ __w |= ((r)&1) ? __d<<8 : __d; \
SMC_outw(__w,(r)&~1); \ SMC_outw((a),__w,(r)&~1); \
}) })
#define SMC_outsl(r,b,l) ({ int __i; \ #define SMC_outsl(a,r,b,l) ({ int __i; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outl( *(__b2 + __i), r); \ SMC_outl((a), *(__b2 + __i), r); \
} \ } \
}) })
#define SMC_outsw(r,b,l) ({ int __i; \ #define SMC_outsw(a,r,b,l) ({ int __i; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outw( *(__b2 + __i), r); \ SMC_outw((a), *(__b2 + __i), r); \
} \ } \
}) })
#define SMC_insl(r,b,l) ({ int __i ; \ #define SMC_insl(a,r,b,l) ({ int __i ; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inl(r); \ *(__b2 + __i) = SMC_inl((a),(r)); \
SMC_inl(0); \ SMC_inl((a),0); \
}; \ }; \
}) })
#define SMC_insw(r,b,l) ({ int __i ; \ #define SMC_insw(a,r,b,l) ({ int __i ; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inw(r); \ *(__b2 + __i) = SMC_inw((a),(r)); \
SMC_inw(0); \ SMC_inw((a),0); \
}; \ }; \
}) })
#define SMC_insb(r,b,l) ({ int __i ; \ #define SMC_insb(a,r,b,l) ({ int __i ; \
byte *__b2; \ byte *__b2; \
__b2 = (byte *) b; \ __b2 = (byte *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inb(r); \ *(__b2 + __i) = SMC_inb((a),(r)); \
SMC_inb(0); \ SMC_inb((a),0); \
}; \ }; \
}) })
@ -187,61 +191,61 @@ typedef unsigned long int dword;
((0x00FF0000UL & _x) >> 8) | \ ((0x00FF0000UL & _x) >> 8) | \
(_x >> 24)); }) (_x >> 24)); })
#define SMC_inl(r) (SMC_LEON_SWAP32((*(volatile dword *)(SMC_BASE_ADDRESS+((r)<<0))))) #define SMC_inl(a,r) (SMC_LEON_SWAP32((*(volatile dword *)((a)->iobase+((r)<<0)))))
#define SMC_inl_nosw(r) ((*(volatile dword *)(SMC_BASE_ADDRESS+((r)<<0)))) #define SMC_inl_nosw(a,r) ((*(volatile dword *)((a)->iobase+((r)<<0))))
#define SMC_inw(r) (SMC_LEON_SWAP16((*(volatile word *)(SMC_BASE_ADDRESS+((r)<<0))))) #define SMC_inw(a,r) (SMC_LEON_SWAP16((*(volatile word *)((a)->iobase+((r)<<0)))))
#define SMC_inw_nosw(r) ((*(volatile word *)(SMC_BASE_ADDRESS+((r)<<0)))) #define SMC_inw_nosw(a,r) ((*(volatile word *)((a)->iobase+((r)<<0))))
#define SMC_inb(p) ({ \ #define SMC_inb(a,p) ({ \
word ___v = SMC_inw((p) & ~1); \ word ___v = SMC_inw((a),(p) & ~1); \
if ((p) & 1) ___v >>= 8; \ if ((p) & 1) ___v >>= 8; \
else ___v &= 0xff; \ else ___v &= 0xff; \
___v; }) ___v; })
#define SMC_outl(d,r) (*(volatile dword *)(SMC_BASE_ADDRESS+((r)<<0))=SMC_LEON_SWAP32(d)) #define SMC_outl(a,d,r) (*(volatile dword *)((a)->iobase+((r)<<0))=SMC_LEON_SWAP32(d))
#define SMC_outl_nosw(d,r) (*(volatile dword *)(SMC_BASE_ADDRESS+((r)<<0))=(d)) #define SMC_outl_nosw(a,d,r) (*(volatile dword *)((a)->iobase+((r)<<0))=(d))
#define SMC_outw(d,r) (*(volatile word *)(SMC_BASE_ADDRESS+((r)<<0))=SMC_LEON_SWAP16(d)) #define SMC_outw(a,d,r) (*(volatile word *)((a)->iobase+((r)<<0))=SMC_LEON_SWAP16(d))
#define SMC_outw_nosw(d,r) (*(volatile word *)(SMC_BASE_ADDRESS+((r)<<0))=(d)) #define SMC_outw_nosw(a,d,r) (*(volatile word *)((a)->iobase+((r)<<0))=(d))
#define SMC_outb(d,r) do{ word __d = (byte)(d); \ #define SMC_outb(a,d,r) do{ word __d = (byte)(d); \
word __w = SMC_inw((r)&~1); \ word __w = SMC_inw((a),(r)&~1); \
__w &= ((r)&1) ? 0x00FF : 0xFF00; \ __w &= ((r)&1) ? 0x00FF : 0xFF00; \
__w |= ((r)&1) ? __d<<8 : __d; \ __w |= ((r)&1) ? __d<<8 : __d; \
SMC_outw(__w,(r)&~1); \ SMC_outw((a),__w,(r)&~1); \
}while(0) }while(0)
#define SMC_outsl(r,b,l) do{ int __i; \ #define SMC_outsl(a,r,b,l) do{ int __i; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outl_nosw( *(__b2 + __i), r); \ SMC_outl_nosw((a), *(__b2 + __i), r); \
} \ } \
}while(0) }while(0)
#define SMC_outsw(r,b,l) do{ int __i; \ #define SMC_outsw(a,r,b,l) do{ int __i; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outw_nosw( *(__b2 + __i), r); \ SMC_outw_nosw((a), *(__b2 + __i), r); \
} \ } \
}while(0) }while(0)
#define SMC_insl(r,b,l) do{ int __i ; \ #define SMC_insl(a,r,b,l) do{ int __i ; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inl_nosw(r); \ *(__b2 + __i) = SMC_inl_nosw((a),(r)); \
}; \ }; \
}while(0) }while(0)
#define SMC_insw(r,b,l) do{ int __i ; \ #define SMC_insw(a,r,b,l) do{ int __i ; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inw_nosw(r); \ *(__b2 + __i) = SMC_inw_nosw((a),(r)); \
}; \ }; \
}while(0) }while(0)
#define SMC_insb(r,b,l) do{ int __i ; \ #define SMC_insb(a,r,b,l) do{ int __i ; \
byte *__b2; \ byte *__b2; \
__b2 = (byte *) b; \ __b2 = (byte *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inb(r); \ *(__b2 + __i) = SMC_inb((a),(r)); \
}; \ }; \
}while(0) }while(0)
@ -253,48 +257,48 @@ typedef unsigned long int dword;
*/ */
#ifdef CONFIG_ADNPESC1 #ifdef CONFIG_ADNPESC1
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+((r)<<1)))) #define SMC_inw(a,r) (*((volatile word *)((a)->iobase+((r)<<1))))
#elif CONFIG_BLACKFIN #elif CONFIG_BLACKFIN
#define SMC_inw(r) ({ word __v = (*((volatile word *)(SMC_BASE_ADDRESS+(r)))); SSYNC(); __v;}) #define SMC_inw(a,r) ({ word __v = (*((volatile word *)((a)->iobase+(r)))); SSYNC(); __v;})
#else #else
#define SMC_inw(r) (*((volatile word *)(SMC_BASE_ADDRESS+(r)))) #define SMC_inw(a,r) (*((volatile word *)((a)->iobase+(r))))
#endif #endif
#define SMC_inb(r) (((r)&1) ? SMC_inw((r)&~1)>>8 : SMC_inw(r)&0xFF) #define SMC_inb(a,r) (((r)&1) ? SMC_inw((a),(r)&~1)>>8 : SMC_inw((a),(r)&0xFF))
#ifdef CONFIG_ADNPESC1 #ifdef CONFIG_ADNPESC1
#define SMC_outw(d,r) (*((volatile word *)(SMC_BASE_ADDRESS+((r)<<1))) = d) #define SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+((r)<<1))) = d)
#elif CONFIG_BLACKFIN #elif CONFIG_BLACKFIN
#define SMC_outw(d,r) {(*((volatile word *)(SMC_BASE_ADDRESS+(r))) = d); SSYNC();} #define SMC_outw(a,d,r) {(*((volatile word *)((a)->iobase+(r))) = d); SSYNC();}
#else #else
#define SMC_outw(d,r) (*((volatile word *)(SMC_BASE_ADDRESS+(r))) = d) #define SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+(r))) = d)
#endif #endif
#define SMC_outb(d,r) ({ word __d = (byte)(d); \ #define SMC_outb(a,d,r) ({ word __d = (byte)(d); \
word __w = SMC_inw((r)&~1); \ word __w = SMC_inw((a),(r)&~1); \
__w &= ((r)&1) ? 0x00FF : 0xFF00; \ __w &= ((r)&1) ? 0x00FF : 0xFF00; \
__w |= ((r)&1) ? __d<<8 : __d; \ __w |= ((r)&1) ? __d<<8 : __d; \
SMC_outw(__w,(r)&~1); \ SMC_outw((a),__w,(r)&~1); \
}) })
#if 0 #if 0
#define SMC_outsw(r,b,l) outsw(SMC_BASE_ADDRESS+(r), (b), (l)) #define SMC_outsw(a,r,b,l) outsw((a)->iobase+(r), (b), (l))
#else #else
#define SMC_outsw(r,b,l) ({ int __i; \ #define SMC_outsw(a,r,b,l) ({ int __i; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outw( *(__b2 + __i), r); \ SMC_outw((a), *(__b2 + __i), r); \
} \ } \
}) })
#endif #endif
#if 0 #if 0
#define SMC_insw(r,b,l) insw(SMC_BASE_ADDRESS+(r), (b), (l)) #define SMC_insw(a,r,b,l) insw((a)->iobase+(r), (b), (l))
#else #else
#define SMC_insw(r,b,l) ({ int __i ; \ #define SMC_insw(a,r,b,l) ({ int __i ; \
word *__b2; \ word *__b2; \
__b2 = (word *) b; \ __b2 = (word *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inw(r); \ *(__b2 + __i) = SMC_inw((a),(r)); \
SMC_inw(0); \ SMC_inw((a),0); \
}; \ }; \
}) })
#endif #endif
@ -304,30 +308,30 @@ typedef unsigned long int dword;
#if defined(CONFIG_SMC_USE_32_BIT) #if defined(CONFIG_SMC_USE_32_BIT)
#ifdef CONFIG_XSENGINE #ifdef CONFIG_XSENGINE
#define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r<<1)))) #define SMC_inl(a,r) (*((volatile dword *)((a)->iobase+(r<<1))))
#else #else
#define SMC_inl(r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r)))) #define SMC_inl(a,r) (*((volatile dword *)((a)->iobase+(r))))
#endif #endif
#define SMC_insl(r,b,l) ({ int __i ; \ #define SMC_insl(a,r,b,l) ({ int __i ; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
*(__b2 + __i) = SMC_inl(r); \ *(__b2 + __i) = SMC_inl((a),(r)); \
SMC_inl(0); \ SMC_inl((a),0); \
}; \ }; \
}) })
#ifdef CONFIG_XSENGINE #ifdef CONFIG_XSENGINE
#define SMC_outl(d,r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r<<1))) = d) #define SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r<<1))) = d)
#else #else
#define SMC_outl(d,r) (*((volatile dword *)(SMC_BASE_ADDRESS+(r))) = d) #define SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r))) = d)
#endif #endif
#define SMC_outsl(r,b,l) ({ int __i; \ #define SMC_outsl(a,r,b,l) ({ int __i; \
dword *__b2; \ dword *__b2; \
__b2 = (dword *) b; \ __b2 = (dword *) b; \
for (__i = 0; __i < l; __i++) { \ for (__i = 0; __i < l; __i++) { \
SMC_outl( *(__b2 + __i), r); \ SMC_outl((a), *(__b2 + __i), r); \
} \ } \
}) })
@ -752,25 +756,25 @@ enum {
/* select a register bank, 0 to 3 */ /* select a register bank, 0 to 3 */
#define SMC_SELECT_BANK(x) { SMC_outw( x, BANK_SELECT ); } #define SMC_SELECT_BANK(a,x) { SMC_outw((a), (x), BANK_SELECT ); }
/* this enables an interrupt in the interrupt mask register */ /* this enables an interrupt in the interrupt mask register */
#define SMC_ENABLE_INT(x) {\ #define SMC_ENABLE_INT(a,x) {\
unsigned char mask;\ unsigned char mask;\
SMC_SELECT_BANK(2);\ SMC_SELECT_BANK((a),2);\
mask = SMC_inb( IM_REG );\ mask = SMC_inb((a), IM_REG );\
mask |= (x);\ mask |= (x);\
SMC_outb( mask, IM_REG ); \ SMC_outb( (a), mask, IM_REG ); \
} }
/* this disables an interrupt from the interrupt mask register */ /* this disables an interrupt from the interrupt mask register */
#define SMC_DISABLE_INT(x) {\ #define SMC_DISABLE_INT(a,x) {\
unsigned char mask;\ unsigned char mask;\
SMC_SELECT_BANK(2);\ SMC_SELECT_BANK(2);\
mask = SMC_inb( IM_REG );\ mask = SMC_inb( (a), IM_REG );\
mask &= ~(x);\ mask &= ~(x);\
SMC_outb( mask, IM_REG ); \ SMC_outb( (a), mask, IM_REG ); \
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View File

@ -29,9 +29,11 @@
#include <common.h> #include <common.h>
#include <exports.h> #include <exports.h>
/* the smc91111.h gets base addr through eth_device' iobase */
struct eth_device { unsigned long iobase; };
#include "../drivers/net/smc91111.h" #include "../drivers/net/smc91111.h"
#ifdef CONFIG_DRIVER_SMC91111 #ifdef CONFIG_SMC91111
#ifndef SMC91111_EEPROM_INIT #ifndef SMC91111_EEPROM_INIT
# define SMC91111_EEPROM_INIT() # define SMC91111_EEPROM_INIT()
@ -42,19 +44,23 @@
#define MAC 0x2 #define MAC 0x2
#define UNKNOWN 0x4 #define UNKNOWN 0x4
void dump_reg (void); void dump_reg (struct eth_device *dev);
void dump_eeprom (void); void dump_eeprom (struct eth_device *dev);
int write_eeprom_reg (int, int); int write_eeprom_reg (struct eth_device *dev, int value, int reg);
void copy_from_eeprom (void); void copy_from_eeprom (struct eth_device *dev);
void print_MAC (void); void print_MAC (struct eth_device *dev);
int read_eeprom_reg (int); int read_eeprom_reg (struct eth_device *dev, int reg);
void print_macaddr (void); void print_macaddr (struct eth_device *dev);
int smc91111_eeprom (int argc, char *argv[]) int smc91111_eeprom (int argc, char *argv[])
{ {
int c, i, j, done, line, reg, value, start, what; int c, i, j, done, line, reg, value, start, what;
char input[50]; char input[50];
struct eth_device dev = {
.iobase = CONFIG_SMC91111_BASE
};
/* Print the ABI version */ /* Print the ABI version */
app_startup (argv); app_startup (argv);
if (XF_VERSION != (int) get_version ()) { if (XF_VERSION != (int) get_version ()) {
@ -67,7 +73,7 @@ int smc91111_eeprom (int argc, char *argv[])
SMC91111_EEPROM_INIT(); SMC91111_EEPROM_INIT();
if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) { if ((SMC_inw (&dev, BANK_SELECT) & 0xFF00) != 0x3300) {
printf ("Can't find SMSC91111\n"); printf ("Can't find SMSC91111\n");
return (0); return (0);
} }
@ -211,12 +217,12 @@ int smc91111_eeprom (int argc, char *argv[])
switch (what) { switch (what) {
case 1: case 1:
printf ("Writing EEPROM register %02x with %04x\n", reg, value); printf ("Writing EEPROM register %02x with %04x\n", reg, value);
write_eeprom_reg (value, reg); write_eeprom_reg (&dev, value, reg);
break; break;
case 2: case 2:
printf ("Writing MAC register bank %i, reg %02x with %04x\n", reg >> 4, reg & 0xE, value); printf ("Writing MAC register bank %i, reg %02x with %04x\n", reg >> 4, reg & 0xE, value);
SMC_SELECT_BANK (reg >> 4); SMC_SELECT_BANK (&dev, reg >> 4);
SMC_outw (value, reg & 0xE); SMC_outw (&dev, value, reg & 0xE);
break; break;
default: default:
printf ("Wrong\n"); printf ("Wrong\n");
@ -224,16 +230,16 @@ int smc91111_eeprom (int argc, char *argv[])
} }
break; break;
case ('D'): case ('D'):
dump_eeprom (); dump_eeprom (&dev);
break; break;
case ('M'): case ('M'):
dump_reg (); dump_reg (&dev);
break; break;
case ('C'): case ('C'):
copy_from_eeprom (); copy_from_eeprom (&dev);
break; break;
case ('P'): case ('P'):
print_macaddr (); print_macaddr (&dev);
break; break;
default: default:
break; break;
@ -244,15 +250,15 @@ int smc91111_eeprom (int argc, char *argv[])
return (0); return (0);
} }
void copy_from_eeprom (void) void copy_from_eeprom (struct eth_device *dev)
{ {
int i; int i;
SMC_SELECT_BANK (1); SMC_SELECT_BANK (dev, 1);
SMC_outw ((SMC_inw (CTL_REG) & !CTL_EEPROM_SELECT) | CTL_RELOAD, SMC_outw (dev, (SMC_inw (dev, CTL_REG) & !CTL_EEPROM_SELECT) |
CTL_REG); CTL_RELOAD, CTL_REG);
i = 100; i = 100;
while ((SMC_inw (CTL_REG) & CTL_RELOAD) && --i) while ((SMC_inw (dev, CTL_REG) & CTL_RELOAD) && --i)
udelay (100); udelay (100);
if (i == 0) { if (i == 0) {
printf ("Timeout Refreshing EEPROM registers\n"); printf ("Timeout Refreshing EEPROM registers\n");
@ -262,21 +268,21 @@ void copy_from_eeprom (void)
} }
void print_macaddr (void) void print_macaddr (struct eth_device *dev)
{ {
int i, j, k, mac[6]; int i, j, k, mac[6];
printf ("Current MAC Address in SMSC91111 "); printf ("Current MAC Address in SMSC91111 ");
SMC_SELECT_BANK (1); SMC_SELECT_BANK (dev, 1);
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
printf ("%02x:", SMC_inb (ADDR0_REG + i)); printf ("%02x:", SMC_inb (dev, ADDR0_REG + i));
} }
printf ("%02x\n", SMC_inb (ADDR0_REG + 5)); printf ("%02x\n", SMC_inb (dev, ADDR0_REG + 5));
i = 0; i = 0;
for (j = 0x20; j < 0x23; j++) { for (j = 0x20; j < 0x23; j++) {
k = read_eeprom_reg (j); k = read_eeprom_reg (dev, j);
mac[i] = k & 0xFF; mac[i] = k & 0xFF;
i++; i++;
mac[i] = k >> 8; mac[i] = k >> 8;
@ -289,7 +295,7 @@ void print_macaddr (void)
printf ("%02x\n", mac[5]); printf ("%02x\n", mac[5]);
} }
void dump_eeprom (void) void dump_eeprom (struct eth_device *dev)
{ {
int j, k; int j, k;
@ -307,7 +313,8 @@ void dump_eeprom (void)
if ((k == 2) || (k == 3)) if ((k == 2) || (k == 3))
printf (" "); printf (" ");
for (j = 0; j < 0x20; j += 4) { for (j = 0; j < 0x20; j += 4) {
printf ("%02x:%04x ", j + k, read_eeprom_reg (j + k)); printf ("%02x:%04x ", j + k,
read_eeprom_reg (dev, j + k));
} }
printf ("\n"); printf ("\n");
} }
@ -315,46 +322,47 @@ void dump_eeprom (void)
for (j = 0x20; j < 0x40; j++) { for (j = 0x20; j < 0x40; j++) {
if ((j & 0x07) == 0) if ((j & 0x07) == 0)
printf ("\n"); printf ("\n");
printf ("%02x:%04x ", j, read_eeprom_reg (j)); printf ("%02x:%04x ", j, read_eeprom_reg (dev, j));
} }
printf ("\n"); printf ("\n");
} }
int read_eeprom_reg (int reg) int read_eeprom_reg (struct eth_device *dev, int reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK (2); SMC_SELECT_BANK (dev, 2);
SMC_outw (reg, PTR_REG); SMC_outw (dev, reg, PTR_REG);
SMC_SELECT_BANK (1); SMC_SELECT_BANK (dev, 1);
SMC_outw (SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_RELOAD, SMC_outw (dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT |
CTL_REG); CTL_RELOAD, CTL_REG);
timeout = 100; timeout = 100;
while ((SMC_inw (CTL_REG) & CTL_RELOAD) && --timeout) while ((SMC_inw (dev, CTL_REG) & CTL_RELOAD) && --timeout)
udelay (100); udelay (100);
if (timeout == 0) { if (timeout == 0) {
printf ("Timeout Reading EEPROM register %02x\n", reg); printf ("Timeout Reading EEPROM register %02x\n", reg);
return 0; return 0;
} }
return SMC_inw (GP_REG); return SMC_inw (dev, GP_REG);
} }
int write_eeprom_reg (int value, int reg) int write_eeprom_reg (struct eth_device *dev, int value, int reg)
{ {
int timeout; int timeout;
SMC_SELECT_BANK (2); SMC_SELECT_BANK (dev, 2);
SMC_outw (reg, PTR_REG); SMC_outw (dev, reg, PTR_REG);
SMC_SELECT_BANK (1); SMC_SELECT_BANK (dev, 1);
SMC_outw (value, GP_REG); SMC_outw (dev, value, GP_REG);
SMC_outw (SMC_inw (CTL_REG) | CTL_EEPROM_SELECT | CTL_STORE, CTL_REG); SMC_outw (dev, SMC_inw (dev, CTL_REG) | CTL_EEPROM_SELECT |
CTL_STORE, CTL_REG);
timeout = 100; timeout = 100;
while ((SMC_inw (CTL_REG) & CTL_STORE) && --timeout) while ((SMC_inw (dev, CTL_REG) & CTL_STORE) && --timeout)
udelay (100); udelay (100);
if (timeout == 0) { if (timeout == 0) {
printf ("Timeout Writing EEPROM register %02x\n", reg); printf ("Timeout Writing EEPROM register %02x\n", reg);
@ -365,7 +373,7 @@ int write_eeprom_reg (int value, int reg)
} }
void dump_reg (void) void dump_reg (struct eth_device *dev)
{ {
int i, j; int i, j;
@ -377,8 +385,8 @@ void dump_reg (void)
for (i = 0; i < 0xF; i += 2) { for (i = 0; i < 0xF; i += 2) {
printf ("%02x ", i); printf ("%02x ", i);
for (j = 0; j < 4; j++) { for (j = 0; j < 4; j++) {
SMC_SELECT_BANK (j); SMC_SELECT_BANK (dev, j);
printf ("%04x ", SMC_inw (i)); printf ("%04x ", SMC_inw (dev, i));
} }
printf ("\n"); printf ("\n");
} }

View File

@ -151,7 +151,8 @@
* cache bypass so there's no need to monkey with inx/outx macros. * cache bypass so there's no need to monkey with inx/outx macros.
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */ #define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */
#define CONFIG_DRIVER_SMC91111 /* Using SMC91c111 */ #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 /* Using SMC91c111 */
#undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */ #undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */
#define CONFIG_SMC_USE_32_BIT /* 32-bit interface */ #define CONFIG_SMC_USE_32_BIT /* 32-bit interface */

View File

@ -145,7 +145,8 @@
* cache bypass so there's no need to monkey with inx/outx macros. * cache bypass so there's no need to monkey with inx/outx macros.
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */ #define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */
#define CONFIG_DRIVER_SMC91111 /* Using SMC91c111 */ #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 /* Using SMC91c111 */
#undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */ #undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */
#define CONFIG_SMC_USE_32_BIT /* 32-bit interface */ #define CONFIG_SMC_USE_32_BIT /* 32-bit interface */

View File

@ -145,7 +145,8 @@
* cache bypass so there's no need to monkey with inx/outx macros. * cache bypass so there's no need to monkey with inx/outx macros.
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */ #define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */
#define CONFIG_DRIVER_SMC91111 /* Using SMC91c111 */ #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 /* Using SMC91c111 */
#undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */ #undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */
#define CONFIG_SMC_USE_32_BIT /* 32-bit interface */ #define CONFIG_SMC_USE_32_BIT /* 32-bit interface */

View File

@ -50,7 +50,8 @@
#undef CONFIG_SHOW_BOOT_PROGRESS #undef CONFIG_SHOW_BOOT_PROGRESS
/* SMC9111 */ /* SMC9111 */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE (0xB0000000) #define CONFIG_SMC91111_BASE (0xB0000000)
/* MEMORY */ /* MEMORY */

View File

@ -151,7 +151,8 @@
* cache bypass so there's no need to monkey with inx/outx macros. * cache bypass so there's no need to monkey with inx/outx macros.
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */ #define CONFIG_SMC91111_BASE 0x82110300 /* Base addr (bypass) */
#define CONFIG_DRIVER_SMC91111 /* Using SMC91c111 */ #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 /* Using SMC91c111 */
#undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */ #undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */
#define CONFIG_SMC_USE_32_BIT /* 32-bit interface */ #define CONFIG_SMC_USE_32_BIT /* 32-bit interface */

View File

@ -65,12 +65,14 @@
* Network Settings * Network Settings
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20310300 #define CONFIG_SMC91111_BASE 0x20310300
#define SMC91111_EEPROM_INIT() \ #define SMC91111_EEPROM_INIT() \
do { \ do { \
*pFIO_DIR |= PF1; \ bfin_write_FIO_DIR(bfin_read_FIO_DIR() | PF1 | PF0); \
*pFIO_FLAG_S = PF1; \ bfin_write_FIO_FLAG_C(PF1); \
bfin_write_FIO_FLAG_S(PF0); \
SSYNC(); \ SSYNC(); \
} while (0) } while (0)
#define CONFIG_HOSTNAME bf533-ezkit #define CONFIG_HOSTNAME bf533-ezkit

View File

@ -60,12 +60,14 @@
* Network Settings * Network Settings
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20300300 #define CONFIG_SMC91111_BASE 0x20300300
#define SMC91111_EEPROM_INIT() \ #define SMC91111_EEPROM_INIT() \
do { \ do { \
*pFIO_DIR |= PF1; \ bfin_write_FIO_DIR(bfin_read_FIO_DIR() | PF1 | PF0); \
*pFIO_FLAG_S = PF1; \ bfin_write_FIO_FLAG_C(PF1); \
bfin_write_FIO_FLAG_S(PF0); \
SSYNC(); \ SSYNC(); \
} while (0) } while (0)
#define CONFIG_HOSTNAME bf533-stamp #define CONFIG_HOSTNAME bf533-stamp

View File

@ -60,7 +60,8 @@
* Network Settings * Network Settings
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20310300 #define CONFIG_SMC91111_BASE 0x20310300
#define CONFIG_HOSTNAME bf538f-ezkit #define CONFIG_HOSTNAME bf538f-ezkit
/* Uncomment next line to use fixed MAC address */ /* Uncomment next line to use fixed MAC address */

View File

@ -60,7 +60,8 @@
* Network Settings * Network Settings
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x2C010300 #define CONFIG_SMC91111_BASE 0x2C010300
#define CONFIG_SMC_USE_32_BIT 1 #define CONFIG_SMC_USE_32_BIT 1
#define CONFIG_HOSTNAME bf561-ezkit #define CONFIG_HOSTNAME bf561-ezkit

View File

@ -30,7 +30,8 @@
/* /*
* Board settings * Board settings
*/ */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20300300 #define CONFIG_SMC91111_BASE 0x20300300
/* FLASH/ETHERNET uses the same address range /* FLASH/ETHERNET uses the same address range
@ -69,7 +70,7 @@
* Network settings * Network settings
*/ */
#ifdef CONFIG_DRIVER_SMC91111 #ifdef CONFIG_SMC91111
#define CONFIG_IPADDR 192.168.0.15 #define CONFIG_IPADDR 192.168.0.15
#define CONFIG_NETMASK 255.255.255.0 #define CONFIG_NETMASK 255.255.255.0
#define CONFIG_GATEWAYIP 192.168.0.1 #define CONFIG_GATEWAYIP 192.168.0.1
@ -108,7 +109,7 @@
#include <config_cmd_default.h> #include <config_cmd_default.h>
#ifdef CONFIG_DRIVER_SMC91111 #ifdef CONFIG_SMC91111
# define CONFIG_CMD_DHCP # define CONFIG_CMD_DHCP
# define CONFIG_CMD_PING # define CONFIG_CMD_PING
#else #else

View File

@ -53,7 +53,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x04000300 #define CONFIG_SMC91111_BASE 0x04000300
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT

View File

@ -60,7 +60,8 @@
* Network Settings * Network Settings
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20200300 #define CONFIG_SMC91111_BASE 0x20200300
#define CONFIG_HOSTNAME cm-bf533 #define CONFIG_HOSTNAME cm-bf533
/* Uncomment next line to use fixed MAC address */ /* Uncomment next line to use fixed MAC address */

View File

@ -61,7 +61,8 @@
*/ */
#define ADI_CMDS_NETWORK 1 #define ADI_CMDS_NETWORK 1
/* The next 2 lines are for use with DEV-BF5xx */ /* The next 2 lines are for use with DEV-BF5xx */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x28000300 #define CONFIG_SMC91111_BASE 0x28000300
/* The next 3 lines are for use with EXT-BF5xx-USB-ETH2 */ /* The next 3 lines are for use with EXT-BF5xx-USB-ETH2 */
/* #define CONFIG_DRIVER_SMC911X 1 */ /* #define CONFIG_DRIVER_SMC911X 1 */

View File

@ -49,7 +49,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x10000300 #define CONFIG_SMC91111_BASE 0x10000300
#define CONFIG_SMC91111_EXT_PHY #define CONFIG_SMC91111_EXT_PHY
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT

View File

@ -54,7 +54,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x20000300 #define CONFIG_SMC91111_BASE 0x20000300

View File

@ -292,7 +292,8 @@
/* /*
* Ethernet configuration uses on board SMC91C111 * Ethernet configuration uses on board SMC91C111
*/ */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20000300 /* chip select 3 */ #define CONFIG_SMC91111_BASE 0x20000300 /* chip select 3 */
#define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */ #define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */
#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */ #undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */

View File

@ -267,7 +267,8 @@
#ifndef USE_GRETH #ifndef USE_GRETH
/* USE SMC91C111 MAC */ /* USE SMC91C111 MAC */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20000300 /* chip select 3 */ #define CONFIG_SMC91111_BASE 0x20000300 /* chip select 3 */
#define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */ #define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */
#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */ #undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */

View File

@ -157,7 +157,8 @@
/* /*
* SMSC91C111 Network Card * SMSC91C111 Network Card
*/ */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x14000000 /* chip select 5 */ #define CONFIG_SMC91111_BASE 0x14000000 /* chip select 5 */
#undef CONFIG_SMC_USE_32_BIT /* 16 bit bus access */ #undef CONFIG_SMC_USE_32_BIT /* 16 bit bus access */
#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */ #undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */

View File

@ -53,7 +53,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT
#define CONFIG_SMC91111_BASE 0xC8000000 #define CONFIG_SMC91111_BASE 0xC8000000
#undef CONFIG_SMC91111_EXT_PHY #undef CONFIG_SMC91111_EXT_PHY

View File

@ -133,7 +133,8 @@
* SMSC91C111 Network Card * SMSC91C111 Network Card
*/ */
#if 0 #if 0
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x10000000 /* chip select 4 */ #define CONFIG_SMC91111_BASE 0x10000000 /* chip select 4 */
#undef CONFIG_SMC_USE_32_BIT /* 16 bit bus access */ #undef CONFIG_SMC_USE_32_BIT /* 16 bit bus access */
#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */ #undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */

View File

@ -72,7 +72,8 @@
* Default IO base of chip is 0x300, Card Engine has this address lines * Default IO base of chip is 0x300, Card Engine has this address lines
* (LAN chip) tied to Vcc, so we just care about the chip select * (LAN chip) tied to Vcc, so we just care about the chip select
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE (0x70000000) #define CONFIG_SMC91111_BASE (0x70000000)
#undef CONFIG_SMC_USE_32_BIT #undef CONFIG_SMC_USE_32_BIT
#define CONFIG_SMC_USE_IOFUNCS #define CONFIG_SMC_USE_IOFUNCS

View File

@ -72,7 +72,8 @@
* Default IO base of chip is 0x300, Card Engine has this address lines * Default IO base of chip is 0x300, Card Engine has this address lines
* (LAN chip) tied to Vcc, so we just care about the chip select * (LAN chip) tied to Vcc, so we just care about the chip select
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE (0x70000000) #define CONFIG_SMC91111_BASE (0x70000000)
#undef CONFIG_SMC_USE_32_BIT #undef CONFIG_SMC_USE_32_BIT
#define CONFIG_SMC_USE_IOFUNCS #define CONFIG_SMC_USE_IOFUNCS

View File

@ -48,7 +48,8 @@
#undef CONFIG_SHOW_BOOT_PROGRESS #undef CONFIG_SHOW_BOOT_PROGRESS
/* SMC9111 */ /* SMC9111 */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE (0xB8000000) #define CONFIG_SMC91111_BASE (0xB8000000)
/* MEMORY */ /* MEMORY */

View File

@ -93,7 +93,8 @@
#define CONFIG_SYS_NS16550_CLK (CONFIG_XTAL_FREQ) /* can be 12M/32Khz or 48Mhz */ #define CONFIG_SYS_NS16550_CLK (CONFIG_XTAL_FREQ) /* can be 12M/32Khz or 48Mhz */
#define CONFIG_SYS_NS16550_COM1 OMAP1510_UART1_BASE /* uart1 */ #define CONFIG_SYS_NS16550_COM1 OMAP1510_UART1_BASE /* uart1 */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x04000300 #define CONFIG_SMC91111_BASE 0x04000300
#define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1 #define CONFIG_SYS_FLASH_BASE PHYS_FLASH_1

View File

@ -132,7 +132,8 @@
#define __io(a) ((void __iomem *)(PCI_IO_VADDR + (a))) #define __io(a) ((void __iomem *)(PCI_IO_VADDR + (a)))
#define __mem_isa(a) ((a) + PCI_MEMORY_VADDR) #define __mem_isa(a) ((a) + PCI_MEMORY_VADDR)
#define CONFIG_DRIVER_SMC91111 /* Using SMC91c111*/ #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 /* Using SMC91c111*/
#define CONFIG_SMC91111_BASE 0x34000300 #define CONFIG_SMC91111_BASE 0x34000300
#undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */ #undef CONFIG_SMC91111_EXT_PHY /* Internal PHY */
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT

View File

@ -87,7 +87,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE (PXA_CS5_PHYS + IDP_CS5_ETH_OFFSET + 0x300) #define CONFIG_SMC91111_BASE (PXA_CS5_PHYS + IDP_CS5_ETH_OFFSET + 0x300)
#define CONFIG_SMC_USE_32_BIT 1 #define CONFIG_SMC_USE_32_BIT 1
/* #define CONFIG_SMC_USE_IOFUNCS */ /* #define CONFIG_SMC_USE_IOFUNCS */

View File

@ -82,7 +82,8 @@
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT
#define CONFIG_SMC91111_BASE 0x10010000 #define CONFIG_SMC91111_BASE 0x10010000
#undef CONFIG_SMC91111_EXT_PHY #undef CONFIG_SMC91111_EXT_PHY

View File

@ -94,7 +94,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x08000300 #define CONFIG_SMC91111_BASE 0x08000300
#define CONFIG_HARD_I2C #define CONFIG_HARD_I2C

View File

@ -196,7 +196,8 @@
/* /*
* SMSC91C111 Network Card * SMSC91C111 Network Card
*/ */
#define CONFIG_DRIVER_SMC91111 1 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x10000300 /* chip select 3 */ #define CONFIG_SMC91111_BASE 0x10000300 /* chip select 3 */
#define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */ #define CONFIG_SMC_USE_32_BIT 1 /* 32 bit bus */
#undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */ #undef CONFIG_SMC_91111_EXT_PHY /* we use internal phy */

View File

@ -50,7 +50,8 @@
/* /*
* Hardware drivers * Hardware drivers
*/ */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x04000300 #define CONFIG_SMC91111_BASE 0x04000300
#undef CONFIG_SMC91111_EXT_PHY #undef CONFIG_SMC91111_EXT_PHY
#define CONFIG_SMC_USE_32_BIT #define CONFIG_SMC_USE_32_BIT

View File

@ -94,7 +94,8 @@
#define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
/* Hardware drivers */ /* Hardware drivers */
#define CONFIG_DRIVER_SMC91111 #define CONFIG_NET_MULTI
#define CONFIG_SMC91111
#define CONFIG_SMC91111_BASE 0x04000300 #define CONFIG_SMC91111_BASE 0x04000300
#define CONFIG_SMC_USE_32_BIT 1 #define CONFIG_SMC_USE_32_BIT 1

View File

@ -62,7 +62,7 @@
#undef TURN_ON_ETHERNET #undef TURN_ON_ETHERNET
#ifdef TURN_ON_ETHERNET #ifdef TURN_ON_ETHERNET
# define CONFIG_DRIVER_SMC91111 1 # define CONFIG_SMC91111 1
# define CONFIG_SMC91111_BASE 0x14000300 # define CONFIG_SMC91111_BASE 0x14000300
# define CONFIG_SMC91111_EXT_PHY # define CONFIG_SMC91111_EXT_PHY
# define CONFIG_SMC_USE_32_BIT # define CONFIG_SMC_USE_32_BIT

View File

@ -75,6 +75,7 @@ int rtl8169_initialize(bd_t *bis);
int scc_initialize(bd_t *bis); int scc_initialize(bd_t *bis);
int skge_initialize(bd_t *bis); int skge_initialize(bd_t *bis);
int smc911x_initialize(u8 dev_num, int base_addr); int smc911x_initialize(u8 dev_num, int base_addr);
int smc91111_initialize(u8 dev_num, int base_addr);
int tsi108_eth_initialize(bd_t *bis); int tsi108_eth_initialize(bd_t *bis);
int uec_initialize(int index); int uec_initialize(int index);
int uec_standard_init(bd_t *bis); int uec_standard_init(bd_t *bis);