mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
d08cb25556
Support mode switch properly, which is not available before. If SoC has two Ethernet controllers, by setting both of them into MII mode, the first controller enters GMII mode, while the second controller is effectively disabled. This requires configuring (and maybe enabling) the second controller in the device tree, even though it cannot be used. Signed-off-by: David Yang <mmyangfl@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
90 lines
2.0 KiB
C
90 lines
2.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* MV-643XX ethernet platform device data definition file.
|
|
*/
|
|
|
|
#ifndef __LINUX_MV643XX_ETH_H
|
|
#define __LINUX_MV643XX_ETH_H
|
|
|
|
#include <linux/mbus.h>
|
|
#include <linux/if_ether.h>
|
|
#include <linux/phy.h>
|
|
|
|
#define MV643XX_ETH_SHARED_NAME "mv643xx_eth"
|
|
#define MV643XX_ETH_NAME "mv643xx_eth_port"
|
|
#define MV643XX_ETH_SHARED_REGS 0x2000
|
|
#define MV643XX_ETH_SHARED_REGS_SIZE 0x2000
|
|
#define MV643XX_ETH_BAR_4 0x2220
|
|
#define MV643XX_ETH_SIZE_REG_4 0x2224
|
|
#define MV643XX_ETH_BASE_ADDR_ENABLE_REG 0x2290
|
|
|
|
#define MV643XX_TX_CSUM_DEFAULT_LIMIT 0
|
|
|
|
struct mv643xx_eth_shared_platform_data {
|
|
struct mbus_dram_target_info *dram;
|
|
/*
|
|
* Max packet size for Tx IP/Layer 4 checksum, when set to 0, default
|
|
* limit of 9KiB will be used.
|
|
*/
|
|
int tx_csum_limit;
|
|
};
|
|
|
|
#define MV643XX_ETH_PHY_ADDR_DEFAULT 0
|
|
#define MV643XX_ETH_PHY_ADDR(x) (0x80 | (x))
|
|
#define MV643XX_ETH_PHY_NONE 0xff
|
|
|
|
struct device_node;
|
|
struct mv643xx_eth_platform_data {
|
|
/*
|
|
* Pointer back to our parent instance, and our port number.
|
|
*/
|
|
struct platform_device *shared;
|
|
int port_number;
|
|
|
|
/*
|
|
* Whether a PHY is present, and if yes, at which address.
|
|
*/
|
|
int phy_addr;
|
|
struct device_node *phy_node;
|
|
|
|
/*
|
|
* Use this MAC address if it is valid, overriding the
|
|
* address that is already in the hardware.
|
|
*/
|
|
u8 mac_addr[ETH_ALEN];
|
|
|
|
/*
|
|
* 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;
|
|
phy_interface_t interface;
|
|
|
|
/*
|
|
* How many RX/TX queues to use.
|
|
*/
|
|
int rx_queue_count;
|
|
int tx_queue_count;
|
|
|
|
/*
|
|
* 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;
|
|
};
|
|
|
|
|
|
#endif
|