|  | /* | 
|  | * NOTE:	DAVICOM ethernet Physical layer | 
|  | * | 
|  | * Version:	@(#)DM9161.h	1.0.0	01/10/2001 | 
|  | * | 
|  | * Authors:	ATMEL Rousset | 
|  | * | 
|  | * | 
|  | *		This program is free software; you can redistribute it and/or | 
|  | *		modify it under the terms of the GNU General Public License | 
|  | *		as published by the Free Software Foundation; either version | 
|  | *		2 of the License, or (at your option) any later version. | 
|  | */ | 
|  |  | 
|  |  | 
|  | /* DAVICOM PHYSICAL LAYER TRANSCEIVER DM9161 */ | 
|  |  | 
|  | #define	DM9161_BMCR		0	/* Basic Mode Control Register */ | 
|  | #define DM9161_BMSR		1	/* Basic Mode Status Register */ | 
|  | #define DM9161_PHYID1		2	/* PHY Idendifier Register 1 */ | 
|  | #define DM9161_PHYID2		3	/* PHY Idendifier Register 2 */ | 
|  | #define DM9161_ANAR		4	/* Auto_Negotiation Advertisement Register  */ | 
|  | #define DM9161_ANLPAR		5	/* Auto_negotiation Link Partner Ability Register */ | 
|  | #define DM9161_ANER		6	/* Auto-negotiation Expansion Register  */ | 
|  | #define DM9161_DSCR		16	/* Specified Configuration Register */ | 
|  | #define DM9161_DSCSR		17	/* Specified Configuration and Status Register */ | 
|  | #define DM9161_10BTCSR		18	/* 10BASE-T Configuration and Satus Register */ | 
|  | #define DM9161_MDINTR		21	/* Specified Interrupt Register */ | 
|  | #define DM9161_RECR		22	/* Specified Receive Error Counter Register */ | 
|  | #define DM9161_DISCR		23	/* Specified Disconnect Counter Register */ | 
|  | #define DM9161_RLSR		24	/* Hardware Reset Latch State Register */ | 
|  |  | 
|  |  | 
|  | /* --Bit definitions: DM9161_BMCR */ | 
|  | #define DM9161_RESET	         (1 << 15)	/* 1= Software Reset; 0=Normal Operation */ | 
|  | #define DM9161_LOOPBACK	         (1 << 14)	/* 1=loopback Enabled; 0=Normal Operation */ | 
|  | #define DM9161_SPEED_SELECT      (1 << 13)	/* 1=100Mbps; 0=10Mbps */ | 
|  | #define DM9161_AUTONEG	         (1 << 12) | 
|  | #define DM9161_POWER_DOWN        (1 << 11) | 
|  | #define DM9161_ISOLATE           (1 << 10) | 
|  | #define DM9161_RESTART_AUTONEG   (1 << 9) | 
|  | #define DM9161_DUPLEX_MODE       (1 << 8) | 
|  | #define DM9161_COLLISION_TEST    (1 << 7) | 
|  |  | 
|  | /*--Bit definitions: DM9161_BMSR */ | 
|  | #define DM9161_100BASE_TX        (1 << 15) | 
|  | #define DM9161_100BASE_TX_FD     (1 << 14) | 
|  | #define DM9161_100BASE_TX_HD     (1 << 13) | 
|  | #define DM9161_10BASE_T_FD       (1 << 12) | 
|  | #define DM9161_10BASE_T_HD       (1 << 11) | 
|  | #define DM9161_MF_PREAMB_SUPPR   (1 << 6) | 
|  | #define DM9161_AUTONEG_COMP      (1 << 5) | 
|  | #define DM9161_REMOTE_FAULT      (1 << 4) | 
|  | #define DM9161_AUTONEG_ABILITY   (1 << 3) | 
|  | #define DM9161_LINK_STATUS       (1 << 2) | 
|  | #define DM9161_JABBER_DETECT     (1 << 1) | 
|  | #define DM9161_EXTEND_CAPAB      (1 << 0) | 
|  |  | 
|  | /*--definitions: DM9161_PHYID1 */ | 
|  | #define DM9161_PHYID1_OUI	 0x606E | 
|  | #define DM9161_LSB_MASK	         0x3F | 
|  |  | 
|  | /*--Bit definitions: DM9161_ANAR, DM9161_ANLPAR */ | 
|  | #define DM9161_NP               (1 << 15) | 
|  | #define DM9161_ACK              (1 << 14) | 
|  | #define DM9161_RF               (1 << 13) | 
|  | #define DM9161_FCS              (1 << 10) | 
|  | #define DM9161_T4               (1 << 9) | 
|  | #define DM9161_TX_FDX           (1 << 8) | 
|  | #define DM9161_TX_HDX           (1 << 7) | 
|  | #define DM9161_10_FDX           (1 << 6) | 
|  | #define DM9161_10_HDX           (1 << 5) | 
|  | #define DM9161_AN_IEEE_802_3	0x0001 | 
|  |  | 
|  | /*--Bit definitions: DM9161_ANER */ | 
|  | #define DM9161_PDF              (1 << 4) | 
|  | #define DM9161_LP_NP_ABLE       (1 << 3) | 
|  | #define DM9161_NP_ABLE          (1 << 2) | 
|  | #define DM9161_PAGE_RX          (1 << 1) | 
|  | #define DM9161_LP_AN_ABLE       (1 << 0) | 
|  |  | 
|  | /*--Bit definitions: DM9161_DSCR */ | 
|  | #define DM9161_BP4B5B           (1 << 15) | 
|  | #define DM9161_BP_SCR           (1 << 14) | 
|  | #define DM9161_BP_ALIGN         (1 << 13) | 
|  | #define DM9161_BP_ADPOK         (1 << 12) | 
|  | #define DM9161_REPEATER         (1 << 11) | 
|  | #define DM9161_TX               (1 << 10) | 
|  | #define DM9161_RMII_ENABLE      (1 << 8) | 
|  | #define DM9161_F_LINK_100       (1 << 7) | 
|  | #define DM9161_SPLED_CTL        (1 << 6) | 
|  | #define DM9161_COLLED_CTL       (1 << 5) | 
|  | #define DM9161_RPDCTR_EN        (1 << 4) | 
|  | #define DM9161_SM_RST           (1 << 3) | 
|  | #define DM9161_MFP SC           (1 << 2) | 
|  | #define DM9161_SLEEP            (1 << 1) | 
|  | #define DM9161_RLOUT            (1 << 0) | 
|  |  | 
|  | /*--Bit definitions: DM9161_DSCSR */ | 
|  | #define DM9161_100FDX           (1 << 15) | 
|  | #define DM9161_100HDX           (1 << 14) | 
|  | #define DM9161_10FDX            (1 << 13) | 
|  | #define DM9161_10HDX            (1 << 12) | 
|  |  | 
|  | /*--Bit definitions: DM9161_10BTCSR */ | 
|  | #define DM9161_LP_EN           (1 << 14) | 
|  | #define DM9161_HBE             (1 << 13) | 
|  | #define DM9161_SQUELCH         (1 << 12) | 
|  | #define DM9161_JABEN           (1 << 11) | 
|  | #define DM9161_10BT_SER        (1 << 10) | 
|  | #define DM9161_POLR            (1 << 0) | 
|  |  | 
|  |  | 
|  | /*--Bit definitions: DM9161_MDINTR */ | 
|  | #define DM9161_INTR_PEND       (1 << 15) | 
|  | #define DM9161_FDX_MASK        (1 << 11) | 
|  | #define DM9161_SPD_MASK        (1 << 10) | 
|  | #define DM9161_LINK_MASK       (1 << 9) | 
|  | #define DM9161_INTR_MASK       (1 << 8) | 
|  | #define DM9161_FDX_CHANGE      (1 << 4) | 
|  | #define DM9161_SPD_CHANGE      (1 << 3) | 
|  | #define DM9161_LINK_CHANGE     (1 << 2) | 
|  | #define DM9161_INTR_STATUS     (1 << 0) | 
|  |  | 
|  |  | 
|  | /******************  function prototypes **********************/ | 
|  | unsigned int  dm9161_IsPhyConnected(AT91PS_EMAC p_mac); | 
|  | unsigned char dm9161_GetLinkSpeed(AT91PS_EMAC p_mac); | 
|  | unsigned char dm9161_AutoNegotiate(AT91PS_EMAC p_mac, int *status); | 
|  | unsigned char dm9161_InitPhy(AT91PS_EMAC p_mac); |