xref: /linux/include/linux/mv643xx_eth.h (revision fc32b0e28df6655a15b488aaddfc1339f82dc13a)
1c4a6a2abSLennert Buytenhek /*
2c4a6a2abSLennert Buytenhek  * MV-643XX ethernet platform device data definition file.
3c4a6a2abSLennert Buytenhek  */
4fa3959f4SLennert Buytenhek 
5c4a6a2abSLennert Buytenhek #ifndef __LINUX_MV643XX_ETH_H
6c4a6a2abSLennert Buytenhek #define __LINUX_MV643XX_ETH_H
7c4a6a2abSLennert Buytenhek 
8f2ce825dSLennert Buytenhek #include <linux/mbus.h>
9f2ce825dSLennert Buytenhek 
10240e4419SLennert Buytenhek #define MV643XX_ETH_SHARED_NAME		"mv643xx_eth"
11240e4419SLennert Buytenhek #define MV643XX_ETH_NAME		"mv643xx_eth_port"
12c4a6a2abSLennert Buytenhek #define MV643XX_ETH_SHARED_REGS		0x2000
13c4a6a2abSLennert Buytenhek #define MV643XX_ETH_SHARED_REGS_SIZE	0x2000
143077d78aSDale Farnsworth #define MV643XX_ETH_BAR_4		0x2220
153077d78aSDale Farnsworth #define MV643XX_ETH_SIZE_REG_4		0x2224
163077d78aSDale Farnsworth #define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x2290
17c4a6a2abSLennert Buytenhek 
18f2ce825dSLennert Buytenhek struct mv643xx_eth_shared_platform_data {
19f2ce825dSLennert Buytenhek 	struct mbus_dram_target_info	*dram;
20c416a41fSLennert Buytenhek 	unsigned int		t_clk;
21f2ce825dSLennert Buytenhek };
22f2ce825dSLennert Buytenhek 
23c4a6a2abSLennert Buytenhek struct mv643xx_eth_platform_data {
24*fc32b0e2SLennert Buytenhek 	/*
25*fc32b0e2SLennert Buytenhek 	 * Pointer back to our parent instance, and our port number.
26*fc32b0e2SLennert Buytenhek 	 */
27fa3959f4SLennert Buytenhek 	struct platform_device	*shared;
28c4a6a2abSLennert Buytenhek 	int			port_number;
29fa3959f4SLennert Buytenhek 
30*fc32b0e2SLennert Buytenhek 	/*
31*fc32b0e2SLennert Buytenhek 	 * Whether a PHY is present, and if yes, at which address.
32*fc32b0e2SLennert Buytenhek 	 */
33ce4e2e45SLennert Buytenhek 	struct platform_device	*shared_smi;
34*fc32b0e2SLennert Buytenhek 	int			force_phy_addr;
35*fc32b0e2SLennert Buytenhek 	int			phy_addr;
36ce4e2e45SLennert Buytenhek 
37*fc32b0e2SLennert Buytenhek 	/*
38*fc32b0e2SLennert Buytenhek 	 * Use this MAC address if it is valid, overriding the
39*fc32b0e2SLennert Buytenhek 	 * address that is already in the hardware.
40*fc32b0e2SLennert Buytenhek 	 */
41*fc32b0e2SLennert Buytenhek 	u8			mac_addr[6];
42c4a6a2abSLennert Buytenhek 
43*fc32b0e2SLennert Buytenhek 	/*
44*fc32b0e2SLennert Buytenhek 	 * If speed is 0, autonegotiation is enabled.
45*fc32b0e2SLennert Buytenhek 	 *   Valid values for speed: 0, SPEED_10, SPEED_100, SPEED_1000.
46*fc32b0e2SLennert Buytenhek 	 *   Valid values for duplex: DUPLEX_HALF, DUPLEX_FULL.
47*fc32b0e2SLennert Buytenhek 	 */
48*fc32b0e2SLennert Buytenhek 	int			speed;
49*fc32b0e2SLennert Buytenhek 	int			duplex;
50c4a6a2abSLennert Buytenhek 
51*fc32b0e2SLennert Buytenhek 	/*
52*fc32b0e2SLennert Buytenhek 	 * Override default RX/TX queue sizes if nonzero.
53*fc32b0e2SLennert Buytenhek 	 */
54*fc32b0e2SLennert Buytenhek 	int			rx_queue_size;
55*fc32b0e2SLennert Buytenhek 	int			tx_queue_size;
56*fc32b0e2SLennert Buytenhek 
57*fc32b0e2SLennert Buytenhek 	/*
58*fc32b0e2SLennert Buytenhek 	 * Use on-chip SRAM for RX/TX descriptors if size is nonzero
59*fc32b0e2SLennert Buytenhek 	 * and sufficient to contain all descriptors for the requested
60*fc32b0e2SLennert Buytenhek 	 * ring sizes.
61*fc32b0e2SLennert Buytenhek 	 */
62*fc32b0e2SLennert Buytenhek 	unsigned long		rx_sram_addr;
63*fc32b0e2SLennert Buytenhek 	int			rx_sram_size;
64*fc32b0e2SLennert Buytenhek 	unsigned long		tx_sram_addr;
65*fc32b0e2SLennert Buytenhek 	int			tx_sram_size;
66c4a6a2abSLennert Buytenhek };
67c4a6a2abSLennert Buytenhek 
68*fc32b0e2SLennert Buytenhek 
69*fc32b0e2SLennert Buytenhek #endif
70