mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-net
This commit is contained in:
commit
02c2c51cf7
8 changed files with 43 additions and 5 deletions
|
@ -474,7 +474,9 @@ ulong bootm_disable_interrupts(void)
|
||||||
#ifdef CONFIG_NETCONSOLE
|
#ifdef CONFIG_NETCONSOLE
|
||||||
/* Stop the ethernet stack if NetConsole could have left it up */
|
/* Stop the ethernet stack if NetConsole could have left it up */
|
||||||
eth_halt();
|
eth_halt();
|
||||||
|
# ifndef CONFIG_DM_ETH
|
||||||
eth_unregister(eth_get_dev());
|
eth_unregister(eth_get_dev());
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_USB)
|
#if defined(CONFIG_CMD_USB)
|
||||||
|
|
|
@ -11,5 +11,6 @@ CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHC
|
||||||
# CONFIG_CMD_IMLS is not set
|
# CONFIG_CMD_IMLS is not set
|
||||||
# CONFIG_CMD_FLASH is not set
|
# CONFIG_CMD_FLASH is not set
|
||||||
# CONFIG_CMD_FPGA is not set
|
# CONFIG_CMD_FPGA is not set
|
||||||
|
CONFIG_NETCONSOLE=y
|
||||||
CONFIG_ETH_DESIGNWARE=y
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
|
|
@ -13,5 +13,6 @@ CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,MACPWR=SUNXI_GPH(23),AHC
|
||||||
# CONFIG_CMD_IMLS is not set
|
# CONFIG_CMD_IMLS is not set
|
||||||
# CONFIG_CMD_FLASH is not set
|
# CONFIG_CMD_FLASH is not set
|
||||||
# CONFIG_CMD_FPGA is not set
|
# CONFIG_CMD_FPGA is not set
|
||||||
|
CONFIG_NETCONSOLE=y
|
||||||
CONFIG_ETH_DESIGNWARE=y
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
|
|
@ -170,7 +170,11 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port,
|
||||||
|
|
||||||
static void nc_send_packet(const char *buf, int len)
|
static void nc_send_packet(const char *buf, int len)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_DM_ETH
|
||||||
|
struct udevice *eth;
|
||||||
|
#else
|
||||||
struct eth_device *eth;
|
struct eth_device *eth;
|
||||||
|
#endif
|
||||||
int inited = 0;
|
int inited = 0;
|
||||||
uchar *pkt;
|
uchar *pkt;
|
||||||
uchar *ether;
|
uchar *ether;
|
||||||
|
@ -183,7 +187,7 @@ static void nc_send_packet(const char *buf, int len)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!memcmp(nc_ether, net_null_ethaddr, 6)) {
|
if (!memcmp(nc_ether, net_null_ethaddr, 6)) {
|
||||||
if (eth->state == ETH_STATE_ACTIVE)
|
if (eth_is_active(eth))
|
||||||
return; /* inside net loop */
|
return; /* inside net loop */
|
||||||
output_packet = buf;
|
output_packet = buf;
|
||||||
output_packet_len = len;
|
output_packet_len = len;
|
||||||
|
@ -194,7 +198,7 @@ static void nc_send_packet(const char *buf, int len)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eth->state != ETH_STATE_ACTIVE) {
|
if (!eth_is_active(eth)) {
|
||||||
if (eth_is_on_demand_init()) {
|
if (eth_is_on_demand_init()) {
|
||||||
if (eth_init() < 0)
|
if (eth_init() < 0)
|
||||||
return;
|
return;
|
||||||
|
@ -292,7 +296,11 @@ static int nc_stdio_getc(struct stdio_dev *dev)
|
||||||
|
|
||||||
static int nc_stdio_tstc(struct stdio_dev *dev)
|
static int nc_stdio_tstc(struct stdio_dev *dev)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_DM_ETH
|
||||||
|
struct udevice *eth;
|
||||||
|
#else
|
||||||
struct eth_device *eth;
|
struct eth_device *eth;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (input_recursion)
|
if (input_recursion)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -301,7 +309,7 @@ static int nc_stdio_tstc(struct stdio_dev *dev)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
eth = eth_get_dev();
|
eth = eth_get_dev();
|
||||||
if (eth && eth->state == ETH_STATE_ACTIVE)
|
if (eth_is_active(eth))
|
||||||
return 0; /* inside net loop */
|
return 0; /* inside net loop */
|
||||||
|
|
||||||
input_recursion = 1;
|
input_recursion = 1;
|
||||||
|
|
|
@ -571,7 +571,7 @@ static struct phy_device *phy_device_create(struct mii_dev *bus, int addr,
|
||||||
memset(dev, 0, sizeof(*dev));
|
memset(dev, 0, sizeof(*dev));
|
||||||
|
|
||||||
dev->duplex = -1;
|
dev->duplex = -1;
|
||||||
dev->link = 1;
|
dev->link = 0;
|
||||||
dev->interface = interface;
|
dev->interface = interface;
|
||||||
|
|
||||||
dev->autoneg = AUTONEG_ENABLE;
|
dev->autoneg = AUTONEG_ENABLE;
|
||||||
|
|
|
@ -149,7 +149,9 @@ struct udevice *eth_get_dev(void); /* get the current device */
|
||||||
*/
|
*/
|
||||||
struct udevice *eth_get_dev_by_name(const char *devname);
|
struct udevice *eth_get_dev_by_name(const char *devname);
|
||||||
unsigned char *eth_get_ethaddr(void); /* get the current device MAC */
|
unsigned char *eth_get_ethaddr(void); /* get the current device MAC */
|
||||||
|
|
||||||
/* Used only when NetConsole is enabled */
|
/* Used only when NetConsole is enabled */
|
||||||
|
int eth_is_active(struct udevice *dev); /* Test device for active state */
|
||||||
int eth_init_state_only(void); /* Set active state */
|
int eth_init_state_only(void); /* Set active state */
|
||||||
void eth_halt_state_only(void); /* Set passive state */
|
void eth_halt_state_only(void); /* Set passive state */
|
||||||
#endif
|
#endif
|
||||||
|
@ -195,6 +197,8 @@ static inline unsigned char *eth_get_ethaddr(void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Used only when NetConsole is enabled */
|
||||||
|
int eth_is_active(struct eth_device *dev); /* Test device for active state */
|
||||||
/* Set active state */
|
/* Set active state */
|
||||||
static inline __attribute__((always_inline)) int eth_init_state_only(void)
|
static inline __attribute__((always_inline)) int eth_init_state_only(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,4 +16,10 @@ config NET_RANDOM_ETHADDR
|
||||||
A new MAC address will be generated on every boot and it will
|
A new MAC address will be generated on every boot and it will
|
||||||
not be added to the environment.
|
not be added to the environment.
|
||||||
|
|
||||||
|
config NETCONSOLE
|
||||||
|
bool "NetConsole support"
|
||||||
|
help
|
||||||
|
Support the 'nc' input/output device for networked console.
|
||||||
|
See README.NetConsole for details.
|
||||||
|
|
||||||
endif # if NET
|
endif # if NET
|
||||||
|
|
18
net/eth.c
18
net/eth.c
|
@ -389,6 +389,17 @@ void eth_halt(void)
|
||||||
priv->state = ETH_STATE_PASSIVE;
|
priv->state = ETH_STATE_PASSIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int eth_is_active(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct eth_device_priv *priv;
|
||||||
|
|
||||||
|
if (!dev || !device_active(dev))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
priv = dev_get_uclass_priv(dev);
|
||||||
|
return priv->state == ETH_STATE_ACTIVE;
|
||||||
|
}
|
||||||
|
|
||||||
int eth_send(void *packet, int length)
|
int eth_send(void *packet, int length)
|
||||||
{
|
{
|
||||||
struct udevice *current;
|
struct udevice *current;
|
||||||
|
@ -580,7 +591,7 @@ UCLASS_DRIVER(eth) = {
|
||||||
.per_device_auto_alloc_size = sizeof(struct eth_device_priv),
|
.per_device_auto_alloc_size = sizeof(struct eth_device_priv),
|
||||||
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
||||||
};
|
};
|
||||||
#endif
|
#endif /* #ifdef CONFIG_DM_ETH */
|
||||||
|
|
||||||
#ifndef CONFIG_DM_ETH
|
#ifndef CONFIG_DM_ETH
|
||||||
|
|
||||||
|
@ -918,6 +929,11 @@ void eth_halt(void)
|
||||||
eth_current->state = ETH_STATE_PASSIVE;
|
eth_current->state = ETH_STATE_PASSIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int eth_is_active(struct eth_device *dev)
|
||||||
|
{
|
||||||
|
return dev && dev->state == ETH_STATE_ACTIVE;
|
||||||
|
}
|
||||||
|
|
||||||
int eth_send(void *packet, int length)
|
int eth_send(void *packet, int length)
|
||||||
{
|
{
|
||||||
if (!eth_current)
|
if (!eth_current)
|
||||||
|
|
Loading…
Add table
Reference in a new issue