[go: nahoru, domu]

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