1/* 2 * MV-643XX ethernet platform device data definition file. 3 */ 4 5#ifndef __LINUX_MV643XX_ETH_H 6#define __LINUX_MV643XX_ETH_H 7 8#include <linux/mbus.h> 9 10#define MV643XX_ETH_SHARED_NAME "mv643xx_eth" 11#define MV643XX_ETH_NAME "mv643xx_eth_port" 12#define MV643XX_ETH_SHARED_REGS 0x2000 13#define MV643XX_ETH_SHARED_REGS_SIZE 0x2000 14#define MV643XX_ETH_BAR_4 0x2220 15#define MV643XX_ETH_SIZE_REG_4 0x2224 16#define MV643XX_ETH_BASE_ADDR_ENABLE_REG 0x2290 17 18struct mv643xx_eth_shared_platform_data { 19 struct mbus_dram_target_info *dram; 20 struct platform_device *shared_smi; 21 unsigned int t_clk; 22 /* 23 * Max packet size for Tx IP/Layer 4 checksum, when set to 0, default 24 * limit of 9KiB will be used. 25 */ 26 int tx_csum_limit; 27}; 28 29#define MV643XX_ETH_PHY_ADDR_DEFAULT 0 30#define MV643XX_ETH_PHY_ADDR(x) (0x80 | (x)) 31#define MV643XX_ETH_PHY_NONE 0xff 32 33struct mv643xx_eth_platform_data { 34 /* 35 * Pointer back to our parent instance, and our port number. 36 */ 37 struct platform_device *shared; 38 int port_number; 39 40 /* 41 * Whether a PHY is present, and if yes, at which address. 42 */ 43 int phy_addr; 44 45 /* 46 * Use this MAC address if it is valid, overriding the 47 * address that is already in the hardware. 48 */ 49 u8 mac_addr[6]; 50 51 /* 52 * If speed is 0, autonegotiation is enabled. 53 * Valid values for speed: 0, SPEED_10, SPEED_100, SPEED_1000. 54 * Valid values for duplex: DUPLEX_HALF, DUPLEX_FULL. 55 */ 56 int speed; 57 int duplex; 58 59 /* 60 * How many RX/TX queues to use. 61 */ 62 int rx_queue_count; 63 int tx_queue_count; 64 65 /* 66 * Override default RX/TX queue sizes if nonzero. 67 */ 68 int rx_queue_size; 69 int tx_queue_size; 70 71 /* 72 * Use on-chip SRAM for RX/TX descriptors if size is nonzero 73 * and sufficient to contain all descriptors for the requested 74 * ring sizes. 75 */ 76 unsigned long rx_sram_addr; 77 int rx_sram_size; 78 unsigned long tx_sram_addr; 79 int tx_sram_size; 80}; 81 82 83#endif 84