Commit 3ea143ab authored by Joe Hershberger's avatar Joe Hershberger Committed by Simon Glass
Browse files

sandbox: eth: Add network support to sandbox



Add basic network support to sandbox which includes a network driver.
Signed-off-by: default avatarJoe Hershberger <joe.hershberger@ni.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
parent 17591405
......@@ -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
......
/*
* 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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment