| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * MV-643XX ethernet platform device data definition file. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | #ifndef __LINUX_MV643XX_ETH_H
 | 
					
						
							|  |  |  | #define __LINUX_MV643XX_ETH_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:17 +02:00
										 |  |  | #include <linux/mbus.h>
 | 
					
						
							| 
									
										
										
										
											2013-08-01 16:17:48 -07:00
										 |  |  | #include <linux/if_ether.h>
 | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:44 +02:00
										 |  |  | #define MV643XX_ETH_SHARED_NAME		"mv643xx_eth"
 | 
					
						
							|  |  |  | #define MV643XX_ETH_NAME		"mv643xx_eth_port"
 | 
					
						
							| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | #define MV643XX_ETH_SHARED_REGS		0x2000
 | 
					
						
							|  |  |  | #define MV643XX_ETH_SHARED_REGS_SIZE	0x2000
 | 
					
						
							| 
									
										
										
										
											2007-10-29 15:39:01 -07:00
										 |  |  | #define MV643XX_ETH_BAR_4		0x2220
 | 
					
						
							|  |  |  | #define MV643XX_ETH_SIZE_REG_4		0x2224
 | 
					
						
							|  |  |  | #define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x2290
 | 
					
						
							| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-26 12:15:46 +02:00
										 |  |  | #define MV643XX_TX_CSUM_DEFAULT_LIMIT	0
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:17 +02:00
										 |  |  | struct mv643xx_eth_shared_platform_data { | 
					
						
							|  |  |  | 	struct mbus_dram_target_info	*dram; | 
					
						
							| 
									
										
										
										
											2010-06-27 00:26:43 +00:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Max packet size for Tx IP/Layer 4 checksum, when set to 0, default | 
					
						
							|  |  |  | 	 * limit of 9KiB will be used. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	int			tx_csum_limit; | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:17 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-26 14:06:47 +02:00
										 |  |  | #define MV643XX_ETH_PHY_ADDR_DEFAULT	0
 | 
					
						
							|  |  |  | #define MV643XX_ETH_PHY_ADDR(x)		(0x80 | (x))
 | 
					
						
							|  |  |  | #define MV643XX_ETH_PHY_NONE		0xff
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-29 09:32:45 +00:00
										 |  |  | struct device_node; | 
					
						
							| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | struct mv643xx_eth_platform_data { | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Pointer back to our parent instance, and our port number. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:02 +02:00
										 |  |  | 	struct platform_device	*shared; | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 	int			port_number; | 
					
						
							| 
									
										
										
										
											2008-04-24 01:27:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Whether a PHY is present, and if yes, at which address. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	int			phy_addr; | 
					
						
							| 
									
										
										
										
											2013-05-29 09:32:45 +00:00
										 |  |  | 	struct device_node	*phy_node; | 
					
						
							| 
									
										
										
										
											2008-04-24 01:29:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Use this MAC address if it is valid, overriding the | 
					
						
							|  |  |  | 	 * address that is already in the hardware. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2013-08-01 16:17:48 -07:00
										 |  |  | 	u8			mac_addr[ETH_ALEN]; | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * If speed is 0, autonegotiation is enabled. | 
					
						
							|  |  |  | 	 *   Valid values for speed: 0, SPEED_10, SPEED_100, SPEED_1000. | 
					
						
							|  |  |  | 	 *   Valid values for duplex: DUPLEX_HALF, DUPLEX_FULL. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	int			speed; | 
					
						
							|  |  |  | 	int			duplex; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-02 01:01:26 +02:00
										 |  |  | 	/*
 | 
					
						
							| 
									
										
										
										
											2008-08-26 10:23:22 +02:00
										 |  |  | 	 * How many RX/TX queues to use. | 
					
						
							| 
									
										
										
										
											2008-06-02 01:01:26 +02:00
										 |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2008-08-26 10:23:22 +02:00
										 |  |  | 	int			rx_queue_count; | 
					
						
							|  |  |  | 	int			tx_queue_count; | 
					
						
							| 
									
										
										
										
											2008-06-02 01:01:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Override default RX/TX queue sizes if nonzero. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	int			rx_queue_size; | 
					
						
							|  |  |  | 	int			tx_queue_size; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * Use on-chip SRAM for RX/TX descriptors if size is nonzero | 
					
						
							|  |  |  | 	 * and sufficient to contain all descriptors for the requested | 
					
						
							|  |  |  | 	 * ring sizes. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	unsigned long		rx_sram_addr; | 
					
						
							|  |  |  | 	int			rx_sram_size; | 
					
						
							|  |  |  | 	unsigned long		tx_sram_addr; | 
					
						
							|  |  |  | 	int			tx_sram_size; | 
					
						
							| 
									
										
										
										
											2007-10-19 04:09:53 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-02 00:28:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif
 |