xref: /linux/include/linux/mv643xx_eth.h (revision 64da80a29c7455321a7df7b47e27d639e3944c1a)
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 {
24fc32b0e2SLennert Buytenhek 	/*
25fc32b0e2SLennert Buytenhek 	 * Pointer back to our parent instance, and our port number.
26fc32b0e2SLennert Buytenhek 	 */
27fa3959f4SLennert Buytenhek 	struct platform_device	*shared;
28c4a6a2abSLennert Buytenhek 	int			port_number;
29fa3959f4SLennert Buytenhek 
30fc32b0e2SLennert Buytenhek 	/*
31fc32b0e2SLennert Buytenhek 	 * Whether a PHY is present, and if yes, at which address.
32fc32b0e2SLennert Buytenhek 	 */
33ce4e2e45SLennert Buytenhek 	struct platform_device	*shared_smi;
34fc32b0e2SLennert Buytenhek 	int			force_phy_addr;
35fc32b0e2SLennert Buytenhek 	int			phy_addr;
36ce4e2e45SLennert Buytenhek 
37fc32b0e2SLennert Buytenhek 	/*
38fc32b0e2SLennert Buytenhek 	 * Use this MAC address if it is valid, overriding the
39fc32b0e2SLennert Buytenhek 	 * address that is already in the hardware.
40fc32b0e2SLennert Buytenhek 	 */
41fc32b0e2SLennert Buytenhek 	u8			mac_addr[6];
42c4a6a2abSLennert Buytenhek 
43fc32b0e2SLennert Buytenhek 	/*
44fc32b0e2SLennert Buytenhek 	 * If speed is 0, autonegotiation is enabled.
45fc32b0e2SLennert Buytenhek 	 *   Valid values for speed: 0, SPEED_10, SPEED_100, SPEED_1000.
46fc32b0e2SLennert Buytenhek 	 *   Valid values for duplex: DUPLEX_HALF, DUPLEX_FULL.
47fc32b0e2SLennert Buytenhek 	 */
48fc32b0e2SLennert Buytenhek 	int			speed;
49fc32b0e2SLennert Buytenhek 	int			duplex;
50c4a6a2abSLennert Buytenhek 
51fc32b0e2SLennert Buytenhek 	/*
52*64da80a2SLennert Buytenhek 	 * Which RX queues to use.
53*64da80a2SLennert Buytenhek 	 */
54*64da80a2SLennert Buytenhek 	int			rx_queue_mask;
55*64da80a2SLennert Buytenhek 
56*64da80a2SLennert Buytenhek 	/*
57fc32b0e2SLennert Buytenhek 	 * Override default RX/TX queue sizes if nonzero.
58fc32b0e2SLennert Buytenhek 	 */
59fc32b0e2SLennert Buytenhek 	int			rx_queue_size;
60fc32b0e2SLennert Buytenhek 	int			tx_queue_size;
61fc32b0e2SLennert Buytenhek 
62fc32b0e2SLennert Buytenhek 	/*
63fc32b0e2SLennert Buytenhek 	 * Use on-chip SRAM for RX/TX descriptors if size is nonzero
64fc32b0e2SLennert Buytenhek 	 * and sufficient to contain all descriptors for the requested
65fc32b0e2SLennert Buytenhek 	 * ring sizes.
66fc32b0e2SLennert Buytenhek 	 */
67fc32b0e2SLennert Buytenhek 	unsigned long		rx_sram_addr;
68fc32b0e2SLennert Buytenhek 	int			rx_sram_size;
69fc32b0e2SLennert Buytenhek 	unsigned long		tx_sram_addr;
70fc32b0e2SLennert Buytenhek 	int			tx_sram_size;
71c4a6a2abSLennert Buytenhek };
72c4a6a2abSLennert Buytenhek 
73fc32b0e2SLennert Buytenhek 
74fc32b0e2SLennert Buytenhek #endif
75