Hello, Add support for the new NET MULTI api in the ethernet driver of the KS8695.
Signed-off-by: Michael Bernstein <michael.bernst...@controlware.de> --- diff --unified --recursive --new-file u-boot-2009.11/drivers/net/ks8695eth.c u-boot-2009.11.new/drivers/net/ks8695eth.c --- u-boot-2009.11/drivers/net/ks8695eth.c 2010-02-09 16:16:18.000000000 +0100 +++ u-boot-2009.11.new/drivers/net/ks8695eth.c 2010-03-01 15:36:56.000000000 +0100 @@ -29,6 +29,26 @@ /****************************************************************************/ /* + * some defines to allow switching between NET_MULTI and old API + */ +#if defined(CONFIG_NET_MULTI) +#define KS8695_ETH_RESET ks8695_eth_reset +#define KS8695_ETH_HALT ks8695_eth_halt +#define KS8695_ETH_INIT ks8695_eth_init +#define KS8695_ETH_RX ks8695_eth_rx +#define KS8695_ETH_SEND ks8695_eth_send +#define KS8695_DRIVERNAME "KS8695" +#else +#define KS8695_ETH_RESET eth_reset +#define KS8695_ETH_HALT eth_halt +#define KS8695_ETH_INIT eth_init +#define KS8695_ETH_RX eth_rx +#define KS8695_ETH_SEND eth_send +#endif + +/****************************************************************************/ + +/* * Hardware register access to the KS8695 LAN ethernet port * (well, it is the 4 port switch really). */ @@ -103,7 +123,7 @@ /****************************************************************************/ -void eth_reset(bd_t *bd) +void KS8695_ETH_RESET(bd_t *bd) { int i; @@ -159,28 +179,28 @@ /****************************************************************************/ -int eth_init(bd_t *bd) +int KS8695_ETH_INIT(bd_t *bd) { debug ("%s(%d): eth_init()\n", __FILE__, __LINE__); - eth_reset(bd); + KS8695_ETH_RESET(bd); return 0; } /****************************************************************************/ -void eth_halt(void) +void KS8695_ETH_HALT(void) { debug ("%s(%d): eth_halt()\n", __FILE__, __LINE__); /* Reset the ethernet engines */ - ks8695_write(KS8695_LAN_DMA_TX, 0x80000000); - ks8695_write(KS8695_LAN_DMA_RX, 0x80000000); +/* ks8695_write(KS8695_LAN_DMA_TX, 0x80000000); */ +/* ks8695_write(KS8695_LAN_DMA_RX, 0x80000000); */ } /****************************************************************************/ -int eth_rx(void) +int KS8695_ETH_RX(void) { volatile struct ks8695_rxdesc *dp; int i, len = 0; @@ -203,7 +223,7 @@ /****************************************************************************/ -int eth_send(volatile void *packet, int len) +int KS8695_ETH_SEND(volatile void *packet, int len) { volatile struct ks8695_txdesc *dp; static int next = 0; @@ -230,3 +250,72 @@ return len; } + +/****************************************************************************/ + +#ifdef CONFIG_NET_MULTI + +static void ks8695_halt(struct eth_device *dev) +{ + KS8695_ETH_HALT(); +} + +static int ks8695_init(struct eth_device *dev, bd_t * bd) +{ + return KS8695_ETH_INIT(bd); +} + +static int ks8695_recv(struct eth_device *dev) +{ + int i; + + i = KS8695_ETH_RX(); + return i; +} + +static int ks8695_send(struct eth_device *dev, volatile void *packet, int length) +{ + KS8695_ETH_SEND(packet, length); + return 0; +} + +static void ks8695_get_enetaddr(struct eth_device *dev) +{ + int i; + + ks8695_getmac(); /* load MAC to eth_mac */ + for (i = 0; i < 6; i++) { + dev->enetaddr[i] = eth_mac[i]; + } +} + +int ks8695_initialize(void) +{ + struct eth_device *dev; + + dev = malloc(sizeof(*dev)); + if (!dev) { + free(dev); + return 0; + } + else { + memset(dev, 0, sizeof(*dev)); + + dev->iobase = KS8695_IO_BASE; + dev->priv = NULL; + dev->init = ks8695_init; + dev->halt = ks8695_halt; + dev->send = ks8695_send; + dev->recv = ks8695_recv; + + /* Load MAC address from EEPROM */ + ks8695_get_enetaddr(dev); + + sprintf(dev->name, "%s", KS8695_DRIVERNAME); + + eth_register(dev); + return 0; + } +} + +#endif -- _________________________________________________ Michael Bernstein NOC Controlware GmbH Waldstrasse 92, 63128 Dietzenbach, GERMANY Tel.: +49 6074 858-177 Fax: +49 6074 858-148 michael.bernst...@controlware.de www.controlware.de _________________________________________________ State-of-the-art Technology for Worldwide Telecommunications <<< Dienstleistung nach Maß >>> Emergency Response Services Schnelle und zuverlässige Unterstützung bei IT-Sicherheitsvorfällen aller Art. Weitere Infos unter http://www.controlware.de/ers Diese E-Mail kann vertrauliche oder rechtlich geschützte Informationen enthalten. Wenn Sie nicht der beabsichtigte Empfänger sind, informieren Sie bitte sofort den Absender und löschen Sie diese E-Mail. Das unbefugte Kopieren dieser E-Mail oder die unbefugte Weitergabe der enthaltenen Informationen ist nicht gestattet. The information contained in this message is confidential or protected by law. If you are not the intended recipient, please contact the sender and delete this message. Any unauthorised copying of this message or unauthorised distribution of the information contained herein is prohibited. Controlware GmbH Kommunikationssysteme Telefon: (0 60 74) 8 58-0 E-Mail: i...@controlware.de http://www.controlware.de Sitz: 63128 Dietzenbach, Registergericht: Offenbach a.M., HRB Nr. 6431, USt.-Id.-Nr. DE 113539225 Geschäftsführung: Helmut E. Wörner (Vorsitzender), Bernd Schwefing, Hubert Potthoff Beirat: Dr. Gert Sieger (Vorsitzender), Dr. Peter Pagé, Kurt Sibold _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot