mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
Convert DM9000 driver for CONFIG_NET_MULTI
All drivers need to be converted to CONFIG_NET_MULTI. This patch converts the dm9000 driver. Signed-off-by: Thomas Smits <ts.smits@gmail.com> Signed-off-by: Remy Bohmer <linux@bohmer.net> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
This commit is contained in:
parent
9131589ada
commit
60f61e6d76
10 changed files with 64 additions and 17 deletions
|
@ -36,6 +36,7 @@
|
||||||
#include <atmel_lcdc.h>
|
#include <atmel_lcdc.h>
|
||||||
#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000)
|
#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000)
|
||||||
#include <net.h>
|
#include <net.h>
|
||||||
|
#include <netdev.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
@ -227,6 +228,12 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_DM9000
|
||||||
|
int board_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
return dm9000_initialize(bis);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
gd->bd->bi_dram[0].start = PHYS_SDRAM;
|
gd->bd->bi_dram[0].start = PHYS_SDRAM;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/immap.h>
|
#include <asm/immap.h>
|
||||||
|
#include <netdev.h>
|
||||||
|
|
||||||
int checkboard(void)
|
int checkboard(void)
|
||||||
{
|
{
|
||||||
|
@ -138,3 +139,11 @@ void ide_set_reset(int idereset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_CMD_IDE */
|
#endif /* CONFIG_CMD_IDE */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_DM9000
|
||||||
|
int board_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
return dm9000_initialize(bis);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <netdev.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
@ -70,3 +71,10 @@ void show_boot_progress (int status)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_DM9000
|
||||||
|
int board_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
return dm9000_initialize(bis);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <asm/arch/pxa-regs.h>
|
#include <asm/arch/pxa-regs.h>
|
||||||
|
#include <netdev.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
@ -144,3 +145,10 @@ int dram_init (void)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_DM9000
|
||||||
|
int board_eth_init(bd_t *bis)
|
||||||
|
{
|
||||||
|
return dm9000_initialize(bis);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -103,14 +103,12 @@ typedef struct board_info {
|
||||||
void (*outblk)(volatile void *data_ptr, int count);
|
void (*outblk)(volatile void *data_ptr, int count);
|
||||||
void (*inblk)(void *data_ptr, int count);
|
void (*inblk)(void *data_ptr, int count);
|
||||||
void (*rx_status)(u16 *RxStatus, u16 *RxLen);
|
void (*rx_status)(u16 *RxStatus, u16 *RxLen);
|
||||||
|
struct eth_device netdev;
|
||||||
} board_info_t;
|
} board_info_t;
|
||||||
static board_info_t dm9000_info;
|
static board_info_t dm9000_info;
|
||||||
|
|
||||||
|
|
||||||
/* function declaration ------------------------------------- */
|
/* function declaration ------------------------------------- */
|
||||||
int eth_init(bd_t * bd);
|
|
||||||
int eth_send(volatile void *, int);
|
|
||||||
int eth_rx(void);
|
|
||||||
void eth_halt(void);
|
|
||||||
static int dm9000_probe(void);
|
static int dm9000_probe(void);
|
||||||
static u16 phy_read(int);
|
static u16 phy_read(int);
|
||||||
static void phy_write(int, u16);
|
static void phy_write(int, u16);
|
||||||
|
@ -279,17 +277,16 @@ dm9000_reset(void)
|
||||||
printf("ERROR: resetting DM9000 -> not responding\n");
|
printf("ERROR: resetting DM9000 -> not responding\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initilize dm9000 board
|
/* Initialize dm9000 board
|
||||||
*/
|
*/
|
||||||
int
|
static int dm9000_init(struct eth_device *dev, bd_t *bd)
|
||||||
eth_init(bd_t * bd)
|
|
||||||
{
|
{
|
||||||
int i, oft, lnk;
|
int i, oft, lnk;
|
||||||
u8 io_mode;
|
u8 io_mode;
|
||||||
struct board_info *db = &dm9000_info;
|
struct board_info *db = &dm9000_info;
|
||||||
uchar enetaddr[6];
|
uchar enetaddr[6];
|
||||||
|
|
||||||
DM9000_DBG("eth_init()\n");
|
DM9000_DBG("%s\n", __func__);
|
||||||
|
|
||||||
/* RESET device */
|
/* RESET device */
|
||||||
dm9000_reset();
|
dm9000_reset();
|
||||||
|
@ -411,13 +408,13 @@ eth_init(bd_t * bd)
|
||||||
Hardware start transmission.
|
Hardware start transmission.
|
||||||
Send a packet to media from the upper layer.
|
Send a packet to media from the upper layer.
|
||||||
*/
|
*/
|
||||||
int
|
static int dm9000_send(struct eth_device *netdev, volatile void *packet,
|
||||||
eth_send(volatile void *packet, int length)
|
int length)
|
||||||
{
|
{
|
||||||
int tmo;
|
int tmo;
|
||||||
struct board_info *db = &dm9000_info;
|
struct board_info *db = &dm9000_info;
|
||||||
|
|
||||||
DM9000_DMP_PACKET("eth_send", packet, length);
|
DM9000_DMP_PACKET(__func__ , packet, length);
|
||||||
|
|
||||||
DM9000_iow(DM9000_ISR, IMR_PTM); /* Clear Tx bit in ISR */
|
DM9000_iow(DM9000_ISR, IMR_PTM); /* Clear Tx bit in ISR */
|
||||||
|
|
||||||
|
@ -453,10 +450,9 @@ eth_send(volatile void *packet, int length)
|
||||||
Stop the interface.
|
Stop the interface.
|
||||||
The interface is stopped when it is brought.
|
The interface is stopped when it is brought.
|
||||||
*/
|
*/
|
||||||
void
|
static void dm9000_halt(struct eth_device *netdev)
|
||||||
eth_halt(void)
|
|
||||||
{
|
{
|
||||||
DM9000_DBG("eth_halt\n");
|
DM9000_DBG("%s\n", __func__);
|
||||||
|
|
||||||
/* RESET devie */
|
/* RESET devie */
|
||||||
phy_write(0, 0x8000); /* PHY RESET */
|
phy_write(0, 0x8000); /* PHY RESET */
|
||||||
|
@ -468,8 +464,7 @@ eth_halt(void)
|
||||||
/*
|
/*
|
||||||
Received a packet and pass to upper layer
|
Received a packet and pass to upper layer
|
||||||
*/
|
*/
|
||||||
int
|
static int dm9000_rx(struct eth_device *netdev)
|
||||||
eth_rx(void)
|
|
||||||
{
|
{
|
||||||
u8 rxbyte, *rdptr = (u8 *) NetRxPackets[0];
|
u8 rxbyte, *rdptr = (u8 *) NetRxPackets[0];
|
||||||
u16 RxStatus, RxLen = 0;
|
u16 RxStatus, RxLen = 0;
|
||||||
|
@ -529,7 +524,7 @@ eth_rx(void)
|
||||||
dm9000_reset();
|
dm9000_reset();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DM9000_DMP_PACKET("eth_rx", rdptr, RxLen);
|
DM9000_DMP_PACKET(__func__ , rdptr, RxLen);
|
||||||
|
|
||||||
DM9000_DBG("passing packet to upper layer\n");
|
DM9000_DBG("passing packet to upper layer\n");
|
||||||
NetReceive(NetRxPackets[0], RxLen);
|
NetReceive(NetRxPackets[0], RxLen);
|
||||||
|
@ -621,3 +616,18 @@ phy_write(int reg, u16 value)
|
||||||
DM9000_iow(DM9000_EPCR, 0x0); /* Clear phyxcer write command */
|
DM9000_iow(DM9000_EPCR, 0x0); /* Clear phyxcer write command */
|
||||||
DM9000_DBG("phy_write(reg:0x%x, value:0x%x)\n", reg, value);
|
DM9000_DBG("phy_write(reg:0x%x, value:0x%x)\n", reg, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dm9000_initialize(bd_t *bis)
|
||||||
|
{
|
||||||
|
struct eth_device *dev = &(dm9000_info.netdev);
|
||||||
|
|
||||||
|
dev->init = dm9000_init;
|
||||||
|
dev->halt = dm9000_halt;
|
||||||
|
dev->send = dm9000_send;
|
||||||
|
dev->recv = dm9000_rx;
|
||||||
|
sprintf(dev->name, "dm9000");
|
||||||
|
|
||||||
|
eth_register(dev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -88,6 +88,7 @@
|
||||||
# define _IO_BASE 0
|
# define _IO_BASE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CONFIG_NET_MULTI 1
|
||||||
#define CONFIG_DRIVER_DM9000
|
#define CONFIG_DRIVER_DM9000
|
||||||
#ifdef CONFIG_DRIVER_DM9000
|
#ifdef CONFIG_DRIVER_DM9000
|
||||||
# define CONFIG_DM9000_BASE (CONFIG_SYS_CS1_BASE | 0x300)
|
# define CONFIG_DM9000_BASE (CONFIG_SYS_CS1_BASE | 0x300)
|
||||||
|
|
|
@ -131,6 +131,7 @@
|
||||||
#define CONFIG_SYS_NO_FLASH 1
|
#define CONFIG_SYS_NO_FLASH 1
|
||||||
|
|
||||||
/* Ethernet */
|
/* Ethernet */
|
||||||
|
#define CONFIG_NET_MULTI 1
|
||||||
#define CONFIG_DRIVER_DM9000 1
|
#define CONFIG_DRIVER_DM9000 1
|
||||||
#define CONFIG_DM9000_BASE 0x30000000
|
#define CONFIG_DM9000_BASE 0x30000000
|
||||||
#define DM9000_IO CONFIG_DM9000_BASE
|
#define DM9000_IO CONFIG_DM9000_BASE
|
||||||
|
|
|
@ -255,6 +255,7 @@
|
||||||
#define CONFIG_SYS_CS5U_VAL 0x00008400
|
#define CONFIG_SYS_CS5U_VAL 0x00008400
|
||||||
#define CONFIG_SYS_CS5L_VAL 0x00000D03
|
#define CONFIG_SYS_CS5L_VAL 0x00000D03
|
||||||
|
|
||||||
|
#define CONFIG_NET_MULTI 1
|
||||||
#define CONFIG_DRIVER_DM9000 1
|
#define CONFIG_DRIVER_DM9000 1
|
||||||
#define CONFIG_DM9000_BASE 0x16000000
|
#define CONFIG_DM9000_BASE 0x16000000
|
||||||
#define DM9000_IO CONFIG_DM9000_BASE
|
#define DM9000_IO CONFIG_DM9000_BASE
|
||||||
|
|
|
@ -278,6 +278,7 @@
|
||||||
#define CONFIG_SYS_MCIO0_VAL 0x00008407
|
#define CONFIG_SYS_MCIO0_VAL 0x00008407
|
||||||
#define CONFIG_SYS_MCIO1_VAL 0x0000c108
|
#define CONFIG_SYS_MCIO1_VAL 0x0000c108
|
||||||
|
|
||||||
|
#define CONFIG_NET_MULTI 1
|
||||||
#define CONFIG_DRIVER_DM9000 1
|
#define CONFIG_DRIVER_DM9000 1
|
||||||
#define CONFIG_DM9000_BASE 0x08000000
|
#define CONFIG_DM9000_BASE 0x08000000
|
||||||
#define DM9000_IO CONFIG_DM9000_BASE
|
#define DM9000_IO CONFIG_DM9000_BASE
|
||||||
|
|
|
@ -75,6 +75,7 @@ int tsi108_eth_initialize(bd_t *bis);
|
||||||
int uec_initialize(int index);
|
int uec_initialize(int index);
|
||||||
int uli526x_initialize(bd_t *bis);
|
int uli526x_initialize(bd_t *bis);
|
||||||
int sh_eth_initialize(bd_t *bis);
|
int sh_eth_initialize(bd_t *bis);
|
||||||
|
int dm9000_initialize(bd_t *bis);
|
||||||
|
|
||||||
/* Boards with PCI network controllers can call this from their board_eth_init()
|
/* Boards with PCI network controllers can call this from their board_eth_init()
|
||||||
* function to initialize whatever's on board.
|
* function to initialize whatever's on board.
|
||||||
|
|
Loading…
Reference in a new issue