Commit 825a2ff1 authored by Ben Dooks's avatar Ben Dooks Committed by Jeff Garzik

AX88796 network driver

Support for the Asix AX88796 network controller, an
NE2000 compatible 10/100 ethernet device with internal
PHY.

The driver supports PHY settings via either ioctl() or
the ethtool driver ops.
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent f49343a5
...@@ -73,6 +73,9 @@ struct ei_device { ...@@ -73,6 +73,9 @@ struct ei_device {
u32 *reg_offset; /* Register mapping table */ u32 *reg_offset; /* Register mapping table */
spinlock_t page_lock; /* Page register locks */ spinlock_t page_lock; /* Page register locks */
unsigned long priv; /* Private field to store bus IDs etc. */ unsigned long priv; /* Private field to store bus IDs etc. */
#ifdef AX88796_PLATFORM
unsigned char rxcr_base; /* default value for RXCR */
#endif
}; };
/* The maximum number of 8390 interrupt service routines called per IRQ. */ /* The maximum number of 8390 interrupt service routines called per IRQ. */
...@@ -86,11 +89,19 @@ struct ei_device { ...@@ -86,11 +89,19 @@ struct ei_device {
/* Some generic ethernet register configurations. */ /* Some generic ethernet register configurations. */
#define E8390_TX_IRQ_MASK 0xa /* For register EN0_ISR */ #define E8390_TX_IRQ_MASK 0xa /* For register EN0_ISR */
#define E8390_RX_IRQ_MASK 0x5 #define E8390_RX_IRQ_MASK 0x5
#ifdef AX88796_PLATFORM
#define E8390_RXCONFIG (ei_status.rxcr_base | 0x04)
#define E8390_RXOFF (ei_status.rxcr_base | 0x20)
#else
#define E8390_RXCONFIG 0x4 /* EN0_RXCR: broadcasts, no multicast,errors */ #define E8390_RXCONFIG 0x4 /* EN0_RXCR: broadcasts, no multicast,errors */
#define E8390_RXOFF 0x20 /* EN0_RXCR: Accept no packets */ #define E8390_RXOFF 0x20 /* EN0_RXCR: Accept no packets */
#endif
#define E8390_TXCONFIG 0x00 /* EN0_TXCR: Normal transmit mode */ #define E8390_TXCONFIG 0x00 /* EN0_TXCR: Normal transmit mode */
#define E8390_TXOFF 0x02 /* EN0_TXCR: Transmitter off */ #define E8390_TXOFF 0x02 /* EN0_TXCR: Transmitter off */
/* Register accessed at EN_CMD, the 8390 base addr. */ /* Register accessed at EN_CMD, the 8390 base addr. */
#define E8390_STOP 0x01 /* Stop and reset the chip */ #define E8390_STOP 0x01 /* Stop and reset the chip */
#define E8390_START 0x02 /* Start the chip, clear reset */ #define E8390_START 0x02 /* Start the chip, clear reset */
......
...@@ -197,6 +197,14 @@ config MACB ...@@ -197,6 +197,14 @@ config MACB
source "drivers/net/arm/Kconfig" source "drivers/net/arm/Kconfig"
config AX88796
tristate "ASIX AX88796 NE2000 clone support"
select CRC32
select MII
help
AX88796 driver, using platform bus to provide
chip detection and resources
config MACE config MACE
tristate "MACE (Power Mac ethernet) support" tristate "MACE (Power Mac ethernet) support"
depends on PPC_PMAC && PPC32 depends on PPC_PMAC && PPC32
......
...@@ -107,6 +107,7 @@ obj-$(CONFIG_NET_SB1250_MAC) += sb1250-mac.o ...@@ -107,6 +107,7 @@ obj-$(CONFIG_NET_SB1250_MAC) += sb1250-mac.o
obj-$(CONFIG_B44) += b44.o obj-$(CONFIG_B44) += b44.o
obj-$(CONFIG_FORCEDETH) += forcedeth.o obj-$(CONFIG_FORCEDETH) += forcedeth.o
obj-$(CONFIG_NE_H8300) += ne-h8300.o obj-$(CONFIG_NE_H8300) += ne-h8300.o
obj-$(CONFIG_AX88796) += ax88796.o
obj-$(CONFIG_TSI108_ETH) += tsi108_eth.o obj-$(CONFIG_TSI108_ETH) += tsi108_eth.o
obj-$(CONFIG_MV643XX_ETH) += mv643xx_eth.o obj-$(CONFIG_MV643XX_ETH) += mv643xx_eth.o
......
This diff is collapsed.
/* include/net/ax88796.h
*
* Copyright 2005 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
#ifndef __NET_AX88796_PLAT_H
#define __NET_AX88796_PLAT_H
#define AXFLG_HAS_EEPROM (1<<0)
#define AXFLG_MAC_FROMDEV (1<<1) /* device already has MAC */
struct ax_plat_data {
unsigned int flags;
unsigned char wordlength; /* 1 or 2 */
unsigned char dcr_val; /* default value for DCR */
unsigned char rcr_val; /* default value for RCR */
unsigned char gpoc_val; /* default value for GPOC */
u32 *reg_offsets; /* register offsets */
};
#endif /* __NET_AX88796_PLAT_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment