sandbox: eth: Add network support to sandbox
Add basic network support to sandbox which includes a network driver. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
17591405a7
commit
3ea143abe9
@ -41,4 +41,13 @@ config PCI
|
||||
used on some devices to allow the CPU to communicate with its
|
||||
peripherals.
|
||||
|
||||
config NET
|
||||
default y
|
||||
|
||||
config NETDEVICES
|
||||
default y
|
||||
|
||||
config DM_ETH
|
||||
default y
|
||||
|
||||
endmenu
|
||||
|
@ -201,4 +201,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
eth@10002000 {
|
||||
compatible = "sandbox,eth";
|
||||
reg = <0x10002000 0x1000>;
|
||||
};
|
||||
};
|
||||
|
@ -173,16 +173,16 @@ U-Boot sandbox supports these emulations:
|
||||
- Chrome OS EC
|
||||
- GPIO
|
||||
- Host filesystem (access files on the host from within U-Boot)
|
||||
- I2C
|
||||
- Keyboard (Chrome OS)
|
||||
- LCD
|
||||
- Network
|
||||
- Serial (for console only)
|
||||
- Sound (incomplete - see sandbox_sdl_sound_init() for details)
|
||||
- SPI
|
||||
- SPI flash
|
||||
- TPM (Trusted Platform Module)
|
||||
|
||||
Notable omissions are networking and I2C.
|
||||
|
||||
A wide range of commands is implemented. Filesystems which use a block
|
||||
device are supported.
|
||||
|
||||
|
@ -7,3 +7,26 @@ config DM_ETH
|
||||
The eth_*() interface will be implemented by the UC_ETH class
|
||||
This is currently implemented in net/eth.c
|
||||
Look in include/net.h for details.
|
||||
|
||||
menuconfig NETDEVICES
|
||||
bool "Network device support"
|
||||
depends on NET
|
||||
help
|
||||
You must select Y to enable any network device support
|
||||
Generally if you have any networking support this is a given
|
||||
|
||||
If unsure, say Y
|
||||
|
||||
if NETDEVICES
|
||||
|
||||
config ETH_SANDBOX
|
||||
depends on DM_ETH && SANDBOX
|
||||
default y
|
||||
bool "Sandbox: Mocked Ethernet driver"
|
||||
help
|
||||
This driver simply responds with fake ARP replies and ping
|
||||
replies that are used to verify network stack functionality
|
||||
|
||||
This driver is particularly useful in the test/dm/eth.c tests
|
||||
|
||||
endif # NETDEVICES
|
||||
|
@ -51,6 +51,7 @@ obj-$(CONFIG_PCH_GBE) += pch_gbe.o
|
||||
obj-$(CONFIG_PCNET) += pcnet.o
|
||||
obj-$(CONFIG_RTL8139) += rtl8139.o
|
||||
obj-$(CONFIG_RTL8169) += rtl8169.o
|
||||
obj-$(CONFIG_ETH_SANDBOX) += sandbox.o
|
||||
obj-$(CONFIG_SH_ETHER) += sh_eth.o
|
||||
obj-$(CONFIG_SMC91111) += smc91111.o
|
||||
obj-$(CONFIG_SMC911X) += smc911x.o
|
||||
|
84
drivers/net/sandbox.c
Normal file
84
drivers/net/sandbox.c
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2015 National Instruments
|
||||
*
|
||||
* (C) Copyright 2015
|
||||
* Joe Hershberger <joe.hershberger@ni.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <malloc.h>
|
||||
#include <net.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
static int sb_eth_start(struct udevice *dev)
|
||||
{
|
||||
debug("eth_sandbox: Start\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sb_eth_send(struct udevice *dev, void *packet, int length)
|
||||
{
|
||||
debug("eth_sandbox: Send packet %d\n", length);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sb_eth_recv(struct udevice *dev, uchar **packetp)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sb_eth_stop(struct udevice *dev)
|
||||
{
|
||||
debug("eth_sandbox: Stop\n");
|
||||
}
|
||||
|
||||
static int sb_eth_write_hwaddr(struct udevice *dev)
|
||||
{
|
||||
struct eth_pdata *pdata = dev_get_platdata(dev);
|
||||
|
||||
debug("eth_sandbox %s: Write HW ADDR - %pM\n", dev->name,
|
||||
pdata->enetaddr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct eth_ops sb_eth_ops = {
|
||||
.start = sb_eth_start,
|
||||
.send = sb_eth_send,
|
||||
.recv = sb_eth_recv,
|
||||
.stop = sb_eth_stop,
|
||||
.write_hwaddr = sb_eth_write_hwaddr,
|
||||
};
|
||||
|
||||
static int sb_eth_remove(struct udevice *dev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sb_eth_ofdata_to_platdata(struct udevice *dev)
|
||||
{
|
||||
struct eth_pdata *pdata = dev_get_platdata(dev);
|
||||
|
||||
pdata->iobase = dev_get_addr(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct udevice_id sb_eth_ids[] = {
|
||||
{ .compatible = "sandbox,eth" },
|
||||
{ }
|
||||
};
|
||||
|
||||
U_BOOT_DRIVER(eth_sandbox) = {
|
||||
.name = "eth_sandbox",
|
||||
.id = UCLASS_ETH,
|
||||
.of_match = sb_eth_ids,
|
||||
.ofdata_to_platdata = sb_eth_ofdata_to_platdata,
|
||||
.remove = sb_eth_remove,
|
||||
.ops = &sb_eth_ops,
|
||||
.platdata_auto_alloc_size = sizeof(struct eth_pdata),
|
||||
};
|
@ -130,9 +130,6 @@
|
||||
/* include default commands */
|
||||
#include <config_cmd_default.h>
|
||||
|
||||
/* We don't have networking support yet */
|
||||
#undef CONFIG_CMD_NET
|
||||
#undef CONFIG_CMD_NFS
|
||||
|
||||
#define CONFIG_CMD_HASH
|
||||
#define CONFIG_HASH_VERIFY
|
||||
@ -169,16 +166,23 @@
|
||||
|
||||
#define CONFIG_KEYBOARD
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS "stdin=serial,cros-ec-keyb\0" \
|
||||
#define SANDBOX_SERIAL_SETTINGS "stdin=serial,cros-ec-keyb\0" \
|
||||
"stdout=serial,lcd\0" \
|
||||
"stderr=serial,lcd\0"
|
||||
#else
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS "stdin=serial\0" \
|
||||
#define SANDBOX_SERIAL_SETTINGS "stdin=serial\0" \
|
||||
"stdout=serial,lcd\0" \
|
||||
"stderr=serial,lcd\0"
|
||||
#endif
|
||||
|
||||
#define SANDBOX_ETH_SETTINGS "ethaddr=00:00:11:22:33:44\0" \
|
||||
"eth1addr=00:00:11:22:33:45\0" \
|
||||
"eth2addr=00:00:11:22:33:46\0" \
|
||||
"ipaddr=1.2.3.4\0"
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS SANDBOX_SERIAL_SETTINGS \
|
||||
SANDBOX_ETH_SETTINGS
|
||||
|
||||
#define CONFIG_GZIP_COMPRESSED
|
||||
#define CONFIG_BZIP2
|
||||
#define CONFIG_LZO
|
||||
|
Loading…
Reference in New Issue
Block a user