[U-Boot] [RFC PATCH 6/7] net: Add network support to sandbox

Joe Hershberger joe.hershberger at gmail.com
Wed Jan 28 11:24:39 CET 2015


On Tue, Jan 27, 2015 at 8:34 PM, Simon Glass <sjg at chromium.org> wrote:
>
> Hi Joe,
>
> On 27 January 2015 at 16:27, Joe Hershberger <joe.hershberger at ni.com>
wrote:
> > Add basic network support to sandbox which includes a network driver.
> >
> > Signed-off-by: Joe Hershberger <joe.hershberger at ni.com>
> > ---
> >
> >  arch/sandbox/dts/sandbox.dts |  4 ++
> >  drivers/net/Makefile         |  2 +
> >  drivers/net/sandbox.c        | 91
++++++++++++++++++++++++++++++++++++++++++++
> >  include/configs/sandbox.h    | 14 ++++---
> >  4 files changed, 106 insertions(+), 5 deletions(-)
> >  create mode 100644 drivers/net/sandbox.c
> >
> > diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
> > index 11748ae..a1d3199 100644
> > --- a/arch/sandbox/dts/sandbox.dts
> > +++ b/arch/sandbox/dts/sandbox.dts
> > @@ -174,4 +174,8 @@
> >                 };
> >         };
> >
> > +       eth at 10002000 {
> > +               compatible = "sandbox,eth";
> > +               reg = <0x10002000 0x1000>;
> > +       };
> >  };
> > diff --git a/drivers/net/Makefile b/drivers/net/Makefile
> > index 46c4ac6..2659a8a 100644
> > --- a/drivers/net/Makefile
> > +++ b/drivers/net/Makefile
> > @@ -50,6 +50,8 @@ obj-$(CONFIG_NS8382X) += ns8382x.o
> >  obj-$(CONFIG_PCNET) += pcnet.o
> >  obj-$(CONFIG_RTL8139) += rtl8139.o
> >  obj-$(CONFIG_RTL8169) += rtl8169.o
> > +obj-$(CONFIG_ETH_SANDBOX) += sandbox.o
> > +obj-$(CONFIG_ETH_SANDBOX_RAW) += sandbox-raw.o
> >  obj-$(CONFIG_SH_ETHER) += sh_eth.o
> >  obj-$(CONFIG_SMC91111) += smc91111.o
> >  obj-$(CONFIG_SMC911X) += smc911x.o
> > diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
> > new file mode 100644
> > index 0000000..e1ee69b
> > --- /dev/null
> > +++ b/drivers/net/sandbox.c
> > @@ -0,0 +1,91 @@
> > +/*
> > + * Copyright (c) 2015 National Instruments
> > + *
> > + * (C) Copyright 2015
> > + * Joe Hershberger <joe.hershberger at ni.com>
> > + *
> > + * SPDX-License-Identifier:    GPL-2.0+
> > + */
> > +
> > +#include <common.h>
> > +#include <dm.h>
> > +#include <fdtdec.h>
> > +#include <malloc.h>
> > +#include <net.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +struct eth_sandbox_priv {
> > +       void *device;
> > +       int sd;
>
> I'm not sure what these are for.

This is accidentally left over from an experiment.  I'd like to pursue it,
but I'm having trouble with the build env.  I'll probably post what I have
so for and maybe you have some ideas for how to make it compile without
making it into a .lib

> > +};
> > +
> > +int sb_eth_init(struct udevice *dev, bd_t *bis)
> > +{
> > +       printf("eth_sandbox: Init\n");
>
> debug()?

OK

> > +
> > +       return 0;
> > +}
> > +
> > +int sb_eth_send(struct udevice *dev, void *packet, int length)
> > +{
> > +       printf("eth_sandbox: Send packet %d\n", length);
> > +
> > +       return 0;
> > +#endif
> > +}
> > +
> > +int sb_eth_recv(struct udevice *dev)
> > +{
> > +       return 0;
> > +}
> > +
> > +void sb_eth_halt(struct udevice *dev)
> > +{
> > +       printf("eth_sandbox: Halt\n");
> > +}
> > +
> > +int sb_eth_write_hwaddr(struct udevice *dev)
> > +{
> > +       printf("eth_sandbox: Write HW ADDR\n");
> > +       return 0;
> > +}
> > +
> > +static const struct eth_ops eth_sandbox_ops = {
> > +       .init                   = sb_eth_init,
> > +       .send                   = sb_eth_send,
> > +       .recv                   = sb_eth_recv,
> > +       .halt                   = sb_eth_halt,
> > +       .write_hwaddr           = sb_eth_write_hwaddr,
> > +};
> > +
> > +static int eth_sandbox_remove(struct udevice *dev)
> > +{
> > +       return 0;
> > +}
> > +
> > +#ifdef CONFIG_OF_CONTROL
> > +static int sandbox_eth_ofdata_to_platdata(struct udevice *dev)
> > +{
> > +       struct eth_pdata *pdata = dev->platdata;
> > +
> > +       pdata->iobase = fdtdec_get_addr(gd->fdt_blob, dev->of_offset,
"reg");
> > +       return 0;
> > +}
> > +
> > +static const struct udevice_id sandbox_eth_ids[] = {
> > +       { .compatible = "sandbox,eth" },
> > +       { }
> > +};
> > +#endif
> > +
> > +U_BOOT_DRIVER(eth_sandbox) = {
> > +       .name   = "eth_sandbox",
> > +       .id     = UCLASS_ETH,
> > +       .of_match = of_match_ptr(sandbox_eth_ids),
> > +       .ofdata_to_platdata =
of_match_ptr(sandbox_eth_ofdata_to_platdata),
> > +       .remove = eth_sandbox_remove,
> > +       .ops    = &eth_sandbox_ops,
> > +       .priv_auto_alloc_size = sizeof(struct eth_sandbox_priv),
> > +       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
> > +};
> > diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
> > index 657f751..67bfc52 100644
> > --- a/include/configs/sandbox.h
> > +++ b/include/configs/sandbox.h
> > @@ -143,9 +143,9 @@
> >  /* 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_DM_ETH
> > +#define CONFIG_ETH_SANDBOX
> > +#define CONFIG_CMD_PING
> >
> >  #define CONFIG_CMD_HASH
> >  #define CONFIG_HASH_VERIFY
> > @@ -188,12 +188,16 @@
> >
> >  #define CONFIG_EXTRA_ENV_SETTINGS      "stdin=serial,cros-ec-keyb\0" \
> >                                         "stdout=serial,lcd\0" \
> > -                                       "stderr=serial,lcd\0"
> > +                                       "stderr=serial,lcd\0" \
> > +                                       "ethaddr=00:00:11:22:33:44\0" \
> > +                                       "ipaddr=1.2.3.4\0"
> >  #else
> >
> >  #define CONFIG_EXTRA_ENV_SETTINGS      "stdin=serial\0" \
> >                                         "stdout=serial,lcd\0" \
> > -                                       "stderr=serial,lcd\0"
> > +                                       "stderr=serial,lcd\0" \
> > +                                       "ethaddr=00:00:11:22:33:44\0" \
> > +                                       "ipaddr=1.2.3.4\0"
> >  #endif
> >
> >  #define CONFIG_GZIP_COMPRESSED
> > --
> > 1.7.11.5
> >
>
> Regards,
> Simon
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


More information about the U-Boot mailing list