uboot/arch/arm/include/asm/arch-at91/at91_emac.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2009 Jens Scharsig (js_at_ng@scharsoft.de)
   3 *
   4 * based on AT91RM9200 datasheet revision I (36. Ethernet MAC (EMAC))
   5 *
   6 * See file CREDITS for list of people who contributed to this
   7 * project.
   8 *
   9 * This program is free software; you can redistribute it and/or
  10 * modify it under the terms of the GNU General Public License as
  11 * published by the Free Software Foundation; either version 2 of
  12 * the License, or (at your option) any later version.
  13 *
  14 * This program is distributed in the hope that it will be useful,
  15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17 * GNU General Public License for more details.
  18 *
  19 * You should have received a copy of the GNU General Public License
  20 * along with this program; if not, write to the Free Software
  21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  22 * MA 02111-1307 USA
  23 */
  24
  25#ifndef AT91_H
  26#define AT91_H
  27
  28typedef struct at91_emac {
  29        u32      ctl;
  30        u32      cfg;
  31        u32      sr;
  32        u32      tar;
  33        u32      tcr;
  34        u32      tsr;
  35        u32      rbqp;
  36        u32      reserved0;
  37        u32      rsr;
  38        u32      isr;
  39        u32      ier;
  40        u32      idr;
  41        u32      imr;
  42        u32      man;
  43        u32      reserved1[2];
  44        u32      fra;
  45        u32      scol;
  46        u32      mocl;
  47        u32      ok;
  48        u32      seqe;
  49        u32      ale;
  50        u32      dte;
  51        u32      lcol;
  52        u32      ecol;
  53        u32      cse;
  54        u32      tue;
  55        u32      cde;
  56        u32      elr;
  57        u32      rjb;
  58        u32      usf;
  59        u32      sqee;
  60        u32      drfc;
  61        u32      reserved2[3];
  62        u32      hsh;
  63        u32      hsl;
  64        u32      sh1l;
  65        u32      sa1h;
  66        u32      sa2l;
  67        u32      sa2h;
  68        u32      sa3l;
  69        u32      sa3h;
  70        u32      sa4l;
  71        u32      sa4h;
  72} at91_emac_t;
  73
  74#define AT91_EMAC_CTL_LB        0x0001
  75#define AT91_EMAC_CTL_LBL       0x0002
  76#define AT91_EMAC_CTL_RE        0x0004
  77#define AT91_EMAC_CTL_TE        0x0008
  78#define AT91_EMAC_CTL_MPE       0x0010
  79#define AT91_EMAC_CTL_CSR       0x0020
  80#define AT91_EMAC_CTL_ISR       0x0040
  81#define AT91_EMAC_CTL_WES       0x0080
  82#define AT91_EMAC_CTL_BP        0x1000
  83
  84#define AT91_EMAC_CFG_SPD       0x0001
  85#define AT91_EMAC_CFG_FD        0x0002
  86#define AT91_EMAC_CFG_BR        0x0004
  87#define AT91_EMAC_CFG_CAF       0x0010
  88#define AT91_EMAC_CFG_NBC       0x0020
  89#define AT91_EMAC_CFG_MTI       0x0040
  90#define AT91_EMAC_CFG_UNI       0x0080
  91#define AT91_EMAC_CFG_BIG       0x0100
  92#define AT91_EMAC_CFG_EAE       0x0200
  93#define AT91_EMAC_CFG_CLK_MASK  0xFFFFF3FF
  94#define AT91_EMAC_CFG_MCLK_8    0x0000
  95#define AT91_EMAC_CFG_MCLK_16   0x0400
  96#define AT91_EMAC_CFG_MCLK_32   0x0800
  97#define AT91_EMAC_CFG_MCLK_64   0x0C00
  98#define AT91_EMAC_CFG_RTY       0x1000
  99#define AT91_EMAC_CFG_RMII      0x2000
 100
 101#define AT91_EMAC_SR_LINK       0x0001
 102#define AT91_EMAC_SR_MDIO       0x0002
 103#define AT91_EMAC_SR_IDLE       0x0004
 104
 105#define AT91_EMAC_TCR_LEN(x)    (x & 0x7FF)
 106#define AT91_EMAC_TCR_NCRC      0x8000
 107
 108#define AT91_EMAC_TSR_OVR       0x0001
 109#define AT91_EMAC_TSR_COL       0x0002
 110#define AT91_EMAC_TSR_RLE       0x0004
 111#define AT91_EMAC_TSR_TXIDLE    0x0008
 112#define AT91_EMAC_TSR_BNQ       0x0010
 113#define AT91_EMAC_TSR_COMP      0x0020
 114#define AT91_EMAC_TSR_UND       0x0040
 115
 116#define AT91_EMAC_RSR_BNA       0x0001
 117#define AT91_EMAC_RSR_REC       0x0002
 118#define AT91_EMAC_RSR_OVR       0x0004
 119
 120/*  ISR, IER, IDR, IMR use the same bits */
 121#define AT91_EMAC_IxR_DONE      0x0001
 122#define AT91_EMAC_IxR_RCOM      0x0002
 123#define AT91_EMAC_IxR_RBNA      0x0004
 124#define AT91_EMAC_IxR_TOVR      0x0008
 125#define AT91_EMAC_IxR_TUND      0x0010
 126#define AT91_EMAC_IxR_RTRY      0x0020
 127#define AT91_EMAC_IxR_TBRE      0x0040
 128#define AT91_EMAC_IxR_TCOM      0x0080
 129#define AT91_EMAC_IxR_TIDLE     0x0100
 130#define AT91_EMAC_IxR_LINK      0x0200
 131#define AT91_EMAC_IxR_ROVR      0x0400
 132#define AT91_EMAC_IxR_HRESP     0x0800
 133
 134#define AT91_EMAC_MAN_DATA_MASK         0xFFFF
 135#define AT91_EMAC_MAN_CODE_802_3        0x00020000
 136#define AT91_EMAC_MAN_REGA(reg)         ((reg & 0x1F) << 18)
 137#define AT91_EMAC_MAN_PHYA(phy)         ((phy & 0x1F) << 23)
 138#define AT91_EMAC_MAN_RW_R              0x20000000
 139#define AT91_EMAC_MAN_RW_W              0x10000000
 140#define AT91_EMAC_MAN_HIGH              0x40000000
 141#define AT91_EMAC_MAN_LOW               0x80000000
 142
 143#endif
 144