diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/mv88e6352.h | 92 | ||||
| -rw-r--r-- | include/net.h | 45 | ||||
| -rw-r--r-- | include/netdev.h | 2 | ||||
| -rw-r--r-- | include/usb_ether.h | 8 | 
4 files changed, 138 insertions, 9 deletions
| diff --git a/include/mv88e6352.h b/include/mv88e6352.h new file mode 100644 index 000000000..cdc4db781 --- /dev/null +++ b/include/mv88e6352.h @@ -0,0 +1,92 @@ +/* + * (C) Copyright 2012 + * Valentin Lontgchamp, Keymile AG, valentin.longchamp@keymile.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef __MV886352_H +#define __MV886352_H + +#include <common.h> + +/* PHY registers */ +#define PHY(itf)	(itf) + +#define PHY_CTRL	0x00 +#define PHY_100_MBPS	0x2000 +#define PHY_1_GBPS	0x0040 +#define AUTONEG_EN	0x1000 +#define AUTONEG_RST	0x0200 +#define FULL_DUPLEX	0x0100 +#define PHY_PWR_DOWN	0x0800 + +#define PHY_STATUS	0x01 +#define AN1000FIX	0x0001 + +#define PHY_SPEC_CTRL	0x10 +#define SPEC_PWR_DOWN	0x0004 +#define AUTO_MDIX_EN	0x0060 + +#define PHY_1000_CTRL	0x9 + +#define NO_ADV		0x0000 +#define ADV_1000_FDPX	0x0200 +#define ADV_1000_HDPX	0x0100 + +#define PHY_PAGE	0x16 + +#define AN1000FIX_PAGE	0x00fc + +/* PORT or MAC registers */ +#define PORT(itf)	(itf+0x10) + +#define PORT_STATUS	0x00 +#define NO_PHY_DETECT	0x0000 + +#define PORT_PHY	0x01 +#define RX_RGMII_TIM	0x8000 +#define TX_RGMII_TIM	0x4000 +#define FLOW_CTRL_EN	0x0080 +#define FLOW_CTRL_FOR	0x0040 +#define LINK_VAL	0x0020 +#define LINK_FOR	0x0010 +#define FULL_DPX	0x0008 +#define FULL_DPX_FOR	0x0004 +#define NO_SPEED_FOR	0x0003 +#define SPEED_1000_FOR	0x0002 +#define SPEED_100_FOR	0x0001 +#define SPEED_10_FOR	0x0000 + +#define PORT_CTRL	0x04 +#define FORWARDING	0x0003 +#define EGRS_FLD_ALL	0x000c +#define PORT_DIS	0x0000 + +struct mv88e_sw_reg { +	u8 port; +	u8 reg; +	u16 value; +}; + +int mv88e_sw_reset(const char *devname, u8 phy_addr); +int mv88e_sw_program(const char *devname, u8 phy_addr, +	struct mv88e_sw_reg *regs, int regs_nb); + +#endif diff --git a/include/net.h b/include/net.h index 6d2d6cd84..35393366d 100644 --- a/include/net.h +++ b/include/net.h @@ -102,7 +102,14 @@ extern int eth_register(struct eth_device* dev);/* Register network device */  extern int eth_unregister(struct eth_device *dev);/* Remove network device */  extern void eth_try_another(int first_restart);	/* Change the device */  extern void eth_set_current(void);		/* set nterface to ethcur var */ -extern struct eth_device *eth_get_dev(void);	/* get the current device MAC */ +/* get the current device MAC */ +static inline __attribute__((always_inline)) +struct eth_device *eth_get_dev(void) +{ +	extern struct eth_device *eth_current; + +	return eth_current; +}  extern struct eth_device *eth_get_dev_by_name(const char *devname);  extern struct eth_device *eth_get_dev_by_index(int index); /* get dev @ index */  extern int eth_get_dev_index(void);		/* get the device index */ @@ -151,6 +158,19 @@ extern int eth_rx(void);			/* Check for received packets */  extern void eth_halt(void);			/* stop SCC */  extern char *eth_get_name(void);		/* get name of current device */ +/* Set active state */ +static inline __attribute__((always_inline)) int eth_init_state_only(bd_t *bis) +{ +	eth_get_dev()->state = ETH_STATE_ACTIVE; + +	return 0; +} +/* Set passive state */ +static inline __attribute__((always_inline)) void eth_halt_state_only(void) +{ +	eth_get_dev()->state = ETH_STATE_PASSIVE; +} +  /*   * Set the hardware address for an ethernet interface based on 'eth%daddr'   * environment variable (or just 'ethaddr' if eth_number is 0). @@ -529,8 +549,29 @@ extern void NetReceive(uchar *, int);  #ifdef CONFIG_NETCONSOLE  void NcStart(void); -int nc_input_packet(uchar *pkt, unsigned dest, unsigned src, unsigned len); +int nc_input_packet(uchar *pkt, IPaddr_t src_ip, unsigned dest_port, +	unsigned src_port, unsigned len); +#endif + +static inline __attribute__((always_inline)) int eth_is_on_demand_init(void) +{ +#ifdef CONFIG_NETCONSOLE +	extern enum proto_t net_loop_last_protocol; + +	return net_loop_last_protocol != NETCONS; +#else +	return 1;  #endif +} + +static inline void eth_set_last_protocol(int protocol) +{ +#ifdef CONFIG_NETCONSOLE +	extern enum proto_t net_loop_last_protocol; + +	net_loop_last_protocol = protocol; +#endif +}  /*   * Check if autoload is enabled. If so, use either NFS or TFTP to download diff --git a/include/netdev.h b/include/netdev.h index d1aaf0cd2..b8d303d08 100644 --- a/include/netdev.h +++ b/include/netdev.h @@ -104,7 +104,7 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr,  							int txpp, int rxpp);  int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags,  						unsigned long ctrl_addr); - +int zynq_gem_initialize(bd_t *bis, int base_addr);  /*   * As long as the Xilinx xps_ll_temac ethernet driver has not its own interface   * exported by a public hader file, we need a global definition at this point. diff --git a/include/usb_ether.h b/include/usb_ether.h index a7fb26bf7..7c7aecb30 100644 --- a/include/usb_ether.h +++ b/include/usb_ether.h @@ -50,12 +50,8 @@ struct ueth_data {  	unsigned char	protocol;		/* .............. */  	unsigned char	irqinterval;	/* Intervall for IRQ Pipe */ -	/* private fields for each driver can go here if needed */ -#ifdef CONFIG_USB_ETHER_SMSC95XX -	size_t rx_urb_size;  /* maximum USB URB size */ -	u32 mac_cr;  /* MAC control register value */ -	int have_hwaddr;  /* 1 if we have a hardware MAC address */ -#endif +	/* driver private */ +	void *dev_priv;  };  /* |