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