147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/******************************************************************************* 247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro MAC 10/100 Header File 347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro Copyright (C) 2007-2009 STMicroelectronics Ltd 547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro This program is free software; you can redistribute it and/or modify it 747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro under the terms and conditions of the GNU General Public License, 847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro version 2, as published by the Free Software Foundation. 947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 1047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro This program is distributed in the hope it will be useful, but WITHOUT 1147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro more details. 1447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 1547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro You should have received a copy of the GNU General Public License along with 1647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro this program; if not, write to the Free Software Foundation, Inc., 1747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 1847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 1947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro The full GNU General Public License is included in this distribution in 2047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro the file called "COPYING". 2147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 2247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro Author: Giuseppe Cavallaro <peppe.cavallaro@st.com> 2347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro*******************************************************************************/ 2447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 25bd4242dfe85470b9caecbd049310518f9b9e3f14Rayagond Kokatanur#ifndef __DWMAC100_H__ 26bd4242dfe85470b9caecbd049310518f9b9e3f14Rayagond Kokatanur#define __DWMAC100_H__ 27bd4242dfe85470b9caecbd049310518f9b9e3f14Rayagond Kokatanur 283c32be635c18ead00d460b7bdad1da52622ff40fGiuseppe CAVALLARO#include <linux/phy.h> 293c32be635c18ead00d460b7bdad1da52622ff40fGiuseppe CAVALLARO#include "common.h" 303c32be635c18ead00d460b7bdad1da52622ff40fGiuseppe CAVALLARO 3147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/*---------------------------------------------------------------------------- 3247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro * MAC BLOCK defines 3347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro *---------------------------------------------------------------------------*/ 3447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* MAC CSR offset */ 3547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL 0x00000000 /* MAC Control */ 3647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_ADDR_HIGH 0x00000004 /* MAC Address High */ 3747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_ADDR_LOW 0x00000008 /* MAC Address Low */ 3847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_HASH_HIGH 0x0000000c /* Multicast Hash Table High */ 3947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_HASH_LOW 0x00000010 /* Multicast Hash Table Low */ 4047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_MII_ADDR 0x00000014 /* MII Address */ 4147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_MII_DATA 0x00000018 /* MII Data */ 4247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL 0x0000001c /* Flow Control */ 4347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_VLAN1 0x00000020 /* VLAN1 Tag */ 4447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_VLAN2 0x00000024 /* VLAN2 Tag */ 4547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 4647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* MAC CTRL defines */ 4747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_RA 0x80000000 /* Receive All Mode */ 4847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_BLE 0x40000000 /* Endian Mode */ 4947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_HBD 0x10000000 /* Heartbeat Disable */ 5047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_PS 0x08000000 /* Port Select */ 5147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_DRO 0x00800000 /* Disable Receive Own */ 5247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_EXT_LOOPBACK 0x00400000 /* Reserved (ext loopback?) */ 5347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_OM 0x00200000 /* Loopback Operating Mode */ 5447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_F 0x00100000 /* Full Duplex Mode */ 5547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_PM 0x00080000 /* Pass All Multicast */ 5647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_PR 0x00040000 /* Promiscuous Mode */ 5747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_IF 0x00020000 /* Inverse Filtering */ 5847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_PB 0x00010000 /* Pass Bad Frames */ 5947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_HO 0x00008000 /* Hash Only Filtering Mode */ 6047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_HP 0x00002000 /* Hash/Perfect Filtering Mode */ 6147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_LCC 0x00001000 /* Late Collision Control */ 6247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_DBF 0x00000800 /* Disable Broadcast Frames */ 6347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_DRTY 0x00000400 /* Disable Retry */ 6447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_ASTP 0x00000100 /* Automatic Pad Stripping */ 6547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_BOLMT_10 0x00000000 /* Back Off Limit 10 */ 6647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_BOLMT_8 0x00000040 /* Back Off Limit 8 */ 6747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_BOLMT_4 0x00000080 /* Back Off Limit 4 */ 6847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_BOLMT_1 0x000000c0 /* Back Off Limit 1 */ 6947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_DC 0x00000020 /* Deferral Check */ 7047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_TE 0x00000008 /* Transmitter Enable */ 7147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CONTROL_RE 0x00000004 /* Receiver Enable */ 7247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 7347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_CORE_INIT (MAC_CONTROL_HBD | MAC_CONTROL_ASTP) 7447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 7547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* MAC FLOW CTRL defines */ 7647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL_PT_MASK 0xffff0000 /* Pause Time Mask */ 7747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL_PT_SHIFT 16 7847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL_PASS 0x00000004 /* Pass Control Frames */ 7947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL_ENABLE 0x00000002 /* Flow Control Enable */ 8047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_FLOW_CTRL_PAUSE 0x00000001 /* Flow Control Busy ... */ 8147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 8247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* MII ADDR defines */ 8347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_MII_ADDR_WRITE 0x00000002 /* MII Write */ 8447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define MAC_MII_ADDR_BUSY 0x00000001 /* MII Busy */ 8547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 8647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/*---------------------------------------------------------------------------- 8747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro * DMA BLOCK defines 8847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro *---------------------------------------------------------------------------*/ 8947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 9047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* DMA Bus Mode register defines */ 9147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_DBO 0x00100000 /* Descriptor Byte Ordering */ 9247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_BLE 0x00000080 /* Big Endian/Little Endian */ 9347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_PBL_MASK 0x00003f00 /* Programmable Burst Len */ 9447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_PBL_SHIFT 8 9547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_DSL_MASK 0x0000007c /* Descriptor Skip Length */ 9647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_DSL_SHIFT 2 /* (in DWORDS) */ 9747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_BAR_BUS 0x00000002 /* Bar-Bus Arbitration */ 9847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_SFT_RESET 0x00000001 /* Software Reset */ 9947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_BUS_MODE_DEFAULT 0x00000000 10047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 10147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* DMA Control register defines */ 10247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_CONTROL_SF 0x00200000 /* Store And Forward */ 10347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 10447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* Transmit Threshold Control */ 10547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaroenum ttc_control { 10647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_DEFAULT = 0x00000000, /* Threshold is 32 DWORDS */ 10747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_64 = 0x00004000, /* Threshold is 64 DWORDS */ 10847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_128 = 0x00008000, /* Threshold is 128 DWORDS */ 10947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_256 = 0x0000c000, /* Threshold is 256 DWORDS */ 11047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_18 = 0x00400000, /* Threshold is 18 DWORDS */ 11147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_24 = 0x00404000, /* Threshold is 24 DWORDS */ 11247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_32 = 0x00408000, /* Threshold is 32 DWORDS */ 11347dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_TTC_40 = 0x0040c000, /* Threshold is 40 DWORDS */ 11447dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_SE = 0x00000008, /* Stop On Empty */ 11547dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro DMA_CONTROL_OSF = 0x00000004, /* Operate On 2nd Frame */ 11647dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro}; 11747dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro 11847dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro/* STMAC110 DMA Missed Frame Counter register defines */ 11947dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_MISSED_FRAME_OVE 0x10000000 /* FIFO Overflow Overflow */ 12047dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_MISSED_FRAME_OVE_CNTR 0x0ffe0000 /* Overflow Frame Counter */ 12147dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_MISSED_FRAME_OVE_M 0x00010000 /* Missed Frame Overflow */ 12247dd7a540b8a0cdc028914b7351fca0cf0a1d305Giuseppe Cavallaro#define DMA_MISSED_FRAME_M_CNTR 0x0000ffff /* Missed Frame Couinter */ 1233c32be635c18ead00d460b7bdad1da52622ff40fGiuseppe CAVALLARO 124cadb7924b10b2a3117dafe14d6d6d28035ec4ddbstephen hemmingerextern const struct stmmac_dma_ops dwmac100_dma_ops; 125bd4242dfe85470b9caecbd049310518f9b9e3f14Rayagond Kokatanur 126bd4242dfe85470b9caecbd049310518f9b9e3f14Rayagond Kokatanur#endif /* __DWMAC100_H__ */ 127