]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/include/asm/arch-davinci/emac_defs.h
davinci_emac: move arch-independent defines to separate header
[karo-tx-uboot.git] / arch / arm / include / asm / arch-davinci / emac_defs.h
index ea52888ff45fe2434f1d0a9f1ca2e04e2dd1936d..8a17de9054a5c20e3be6930e359b7477035c6111 100644 (file)
 #define EMAC_MDIO_CLOCK_FREQ           2000000         /* 2.0 MHz */
 #endif
 
-/* Ethernet Min/Max packet size */
-#define EMAC_MIN_ETHERNET_PKT_SIZE     60
-#define EMAC_MAX_ETHERNET_PKT_SIZE     1518
-#define EMAC_PKT_ALIGN                 18      /* 1518 + 18 = 1536 (packet aligned on 32 byte boundry) */
-
-/* Number of RX packet buffers
- * NOTE: Only 1 buffer supported as of now
- */
-#define EMAC_MAX_RX_BUFFERS            10
-
-
-/***********************************************
- ******** Internally used macros ***************
- ***********************************************/
-
-#define EMAC_CH_TX                     1
-#define EMAC_CH_RX                     0
-
-/* Each descriptor occupies 4 words, lets start RX desc's at 0 and
- * reserve space for 64 descriptors max
- */
-#define EMAC_RX_DESC_BASE              0x0
-#define EMAC_TX_DESC_BASE              0x1000
-
-/* EMAC Teardown value */
-#define EMAC_TEARDOWN_VALUE            0xfffffffc
-
-/* MII Status Register */
-#define MII_STATUS_REG                 1
-
-/* Number of statistics registers */
-#define EMAC_NUM_STATS                 36
-
-
-/* EMAC Descriptor */
-typedef volatile struct _emac_desc
-{
-       u_int32_t       next;           /* Pointer to next descriptor in chain */
-       u_int8_t        *buffer;        /* Pointer to data buffer */
-       u_int32_t       buff_off_len;   /* Buffer Offset(MSW) and Length(LSW) */
-       u_int32_t       pkt_flag_len;   /* Packet Flags(MSW) and Length(LSW) */
-} emac_desc;
-
-/* CPPI bit positions */
-#define EMAC_CPPI_SOP_BIT              (0x80000000)
-#define EMAC_CPPI_EOP_BIT              (0x40000000)
-#define EMAC_CPPI_OWNERSHIP_BIT                (0x20000000)
-#define EMAC_CPPI_EOQ_BIT              (0x10000000)
-#define EMAC_CPPI_TEARDOWN_COMPLETE_BIT        (0x08000000)
-#define EMAC_CPPI_PASS_CRC_BIT         (0x04000000)
-
-#define EMAC_CPPI_RX_ERROR_FRAME       (0x03fc0000)
-
-#define EMAC_MACCONTROL_MIIEN_ENABLE           (0x20)
-#define EMAC_MACCONTROL_FULLDUPLEX_ENABLE      (0x1)
-#define EMAC_MACCONTROL_GIGABIT_ENABLE         (1 << 7)
-#define EMAC_MACCONTROL_GIGFORCE               (1 << 17)
-#define EMAC_MACCONTROL_RMIISPEED_100          (1 << 15)
-
-#define EMAC_MAC_ADDR_MATCH            (1 << 19)
-#define EMAC_MAC_ADDR_IS_VALID         (1 << 20)
-
-#define EMAC_RXMBPENABLE_RXCAFEN_ENABLE        (0x200000)
-#define EMAC_RXMBPENABLE_RXBROADEN     (0x2000)
-
-
-#define MDIO_CONTROL_IDLE              (0x80000000)
-#define MDIO_CONTROL_ENABLE            (0x40000000)
-#define MDIO_CONTROL_FAULT_ENABLE      (0x40000)
-#define MDIO_CONTROL_FAULT             (0x80000)
-#define MDIO_USERACCESS0_GO            (0x80000000)
-#define MDIO_USERACCESS0_WRITE_READ    (0x0)
-#define MDIO_USERACCESS0_WRITE_WRITE   (0x40000000)
-#define MDIO_USERACCESS0_ACK           (0x20000000)
-
-/* Ethernet MAC Registers Structure */
-typedef struct  {
-       dv_reg          TXIDVER;
-       dv_reg          TXCONTROL;
-       dv_reg          TXTEARDOWN;
-       u_int8_t        RSVD0[4];
-       dv_reg          RXIDVER;
-       dv_reg          RXCONTROL;
-       dv_reg          RXTEARDOWN;
-       u_int8_t        RSVD1[100];
-       dv_reg          TXINTSTATRAW;
-       dv_reg          TXINTSTATMASKED;
-       dv_reg          TXINTMASKSET;
-       dv_reg          TXINTMASKCLEAR;
-       dv_reg          MACINVECTOR;
-       u_int8_t        RSVD2[12];
-       dv_reg          RXINTSTATRAW;
-       dv_reg          RXINTSTATMASKED;
-       dv_reg          RXINTMASKSET;
-       dv_reg          RXINTMASKCLEAR;
-       dv_reg          MACINTSTATRAW;
-       dv_reg          MACINTSTATMASKED;
-       dv_reg          MACINTMASKSET;
-       dv_reg          MACINTMASKCLEAR;
-       u_int8_t        RSVD3[64];
-       dv_reg          RXMBPENABLE;
-       dv_reg          RXUNICASTSET;
-       dv_reg          RXUNICASTCLEAR;
-       dv_reg          RXMAXLEN;
-       dv_reg          RXBUFFEROFFSET;
-       dv_reg          RXFILTERLOWTHRESH;
-       u_int8_t        RSVD4[8];
-       dv_reg          RX0FLOWTHRESH;
-       dv_reg          RX1FLOWTHRESH;
-       dv_reg          RX2FLOWTHRESH;
-       dv_reg          RX3FLOWTHRESH;
-       dv_reg          RX4FLOWTHRESH;
-       dv_reg          RX5FLOWTHRESH;
-       dv_reg          RX6FLOWTHRESH;
-       dv_reg          RX7FLOWTHRESH;
-       dv_reg          RX0FREEBUFFER;
-       dv_reg          RX1FREEBUFFER;
-       dv_reg          RX2FREEBUFFER;
-       dv_reg          RX3FREEBUFFER;
-       dv_reg          RX4FREEBUFFER;
-       dv_reg          RX5FREEBUFFER;
-       dv_reg          RX6FREEBUFFER;
-       dv_reg          RX7FREEBUFFER;
-       dv_reg          MACCONTROL;
-       dv_reg          MACSTATUS;
-       dv_reg          EMCONTROL;
-       dv_reg          FIFOCONTROL;
-       dv_reg          MACCONFIG;
-       dv_reg          SOFTRESET;
-       u_int8_t        RSVD5[88];
-       dv_reg          MACSRCADDRLO;
-       dv_reg          MACSRCADDRHI;
-       dv_reg          MACHASH1;
-       dv_reg          MACHASH2;
-       dv_reg          BOFFTEST;
-       dv_reg          TPACETEST;
-       dv_reg          RXPAUSE;
-       dv_reg          TXPAUSE;
-       u_int8_t        RSVD6[16];
-       dv_reg          RXGOODFRAMES;
-       dv_reg          RXBCASTFRAMES;
-       dv_reg          RXMCASTFRAMES;
-       dv_reg          RXPAUSEFRAMES;
-       dv_reg          RXCRCERRORS;
-       dv_reg          RXALIGNCODEERRORS;
-       dv_reg          RXOVERSIZED;
-       dv_reg          RXJABBER;
-       dv_reg          RXUNDERSIZED;
-       dv_reg          RXFRAGMENTS;
-       dv_reg          RXFILTERED;
-       dv_reg          RXQOSFILTERED;
-       dv_reg          RXOCTETS;
-       dv_reg          TXGOODFRAMES;
-       dv_reg          TXBCASTFRAMES;
-       dv_reg          TXMCASTFRAMES;
-       dv_reg          TXPAUSEFRAMES;
-       dv_reg          TXDEFERRED;
-       dv_reg          TXCOLLISION;
-       dv_reg          TXSINGLECOLL;
-       dv_reg          TXMULTICOLL;
-       dv_reg          TXEXCESSIVECOLL;
-       dv_reg          TXLATECOLL;
-       dv_reg          TXUNDERRUN;
-       dv_reg          TXCARRIERSENSE;
-       dv_reg          TXOCTETS;
-       dv_reg          FRAME64;
-       dv_reg          FRAME65T127;
-       dv_reg          FRAME128T255;
-       dv_reg          FRAME256T511;
-       dv_reg          FRAME512T1023;
-       dv_reg          FRAME1024TUP;
-       dv_reg          NETOCTETS;
-       dv_reg          RXSOFOVERRUNS;
-       dv_reg          RXMOFOVERRUNS;
-       dv_reg          RXDMAOVERRUNS;
-       u_int8_t        RSVD7[624];
-       dv_reg          MACADDRLO;
-       dv_reg          MACADDRHI;
-       dv_reg          MACINDEX;
-       u_int8_t        RSVD8[244];
-       dv_reg          TX0HDP;
-       dv_reg          TX1HDP;
-       dv_reg          TX2HDP;
-       dv_reg          TX3HDP;
-       dv_reg          TX4HDP;
-       dv_reg          TX5HDP;
-       dv_reg          TX6HDP;
-       dv_reg          TX7HDP;
-       dv_reg          RX0HDP;
-       dv_reg          RX1HDP;
-       dv_reg          RX2HDP;
-       dv_reg          RX3HDP;
-       dv_reg          RX4HDP;
-       dv_reg          RX5HDP;
-       dv_reg          RX6HDP;
-       dv_reg          RX7HDP;
-       dv_reg          TX0CP;
-       dv_reg          TX1CP;
-       dv_reg          TX2CP;
-       dv_reg          TX3CP;
-       dv_reg          TX4CP;
-       dv_reg          TX5CP;
-       dv_reg          TX6CP;
-       dv_reg          TX7CP;
-       dv_reg          RX0CP;
-       dv_reg          RX1CP;
-       dv_reg          RX2CP;
-       dv_reg          RX3CP;
-       dv_reg          RX4CP;
-       dv_reg          RX5CP;
-       dv_reg          RX6CP;
-       dv_reg          RX7CP;
-} emac_regs;
-
-/* EMAC Wrapper Registers Structure */
-typedef struct  {
-#ifdef DAVINCI_EMAC_VERSION2
-       dv_reg          idver;
-       dv_reg          softrst;
-       dv_reg          emctrl;
-       dv_reg          c0rxthreshen;
-       dv_reg          c0rxen;
-       dv_reg          c0txen;
-       dv_reg          c0miscen;
-       dv_reg          c1rxthreshen;
-       dv_reg          c1rxen;
-       dv_reg          c1txen;
-       dv_reg          c1miscen;
-       dv_reg          c2rxthreshen;
-       dv_reg          c2rxen;
-       dv_reg          c2txen;
-       dv_reg          c2miscen;
-       dv_reg          c0rxthreshstat;
-       dv_reg          c0rxstat;
-       dv_reg          c0txstat;
-       dv_reg          c0miscstat;
-       dv_reg          c1rxthreshstat;
-       dv_reg          c1rxstat;
-       dv_reg          c1txstat;
-       dv_reg          c1miscstat;
-       dv_reg          c2rxthreshstat;
-       dv_reg          c2rxstat;
-       dv_reg          c2txstat;
-       dv_reg          c2miscstat;
-       dv_reg          c0rximax;
-       dv_reg          c0tximax;
-       dv_reg          c1rximax;
-       dv_reg          c1tximax;
-       dv_reg          c2rximax;
-       dv_reg          c2tximax;
-#else
-       u_int8_t        RSVD0[4100];
-       dv_reg          EWCTL;
-       dv_reg          EWINTTCNT;
-#endif
-} ewrap_regs;
-
-/* EMAC MDIO Registers Structure */
-typedef struct  {
-       dv_reg          VERSION;
-       dv_reg          CONTROL;
-       dv_reg          ALIVE;
-       dv_reg          LINK;
-       dv_reg          LINKINTRAW;
-       dv_reg          LINKINTMASKED;
-       u_int8_t        RSVD0[8];
-       dv_reg          USERINTRAW;
-       dv_reg          USERINTMASKED;
-       dv_reg          USERINTMASKSET;
-       dv_reg          USERINTMASKCLEAR;
-       u_int8_t        RSVD1[80];
-       dv_reg          USERACCESS0;
-       dv_reg          USERPHYSEL0;
-       dv_reg          USERACCESS1;
-       dv_reg          USERPHYSEL1;
-} mdio_regs;
-
-int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data);
-int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data);
-
-typedef struct
-{
-       char    name[64];
-       int     (*init)(int phy_addr);
-       int     (*is_phy_connected)(int phy_addr);
-       int     (*get_link_speed)(int phy_addr);
-       int     (*auto_negotiate)(int phy_addr);
-} phy_t;
-
 #define PHY_KSZ8873    (0x00221450)
 int ksz8873_is_phy_connected(int phy_addr);
 int ksz8873_get_link_speed(int phy_addr);