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

2015-01-28 Thread Joe Hershberger
On Tue, Jan 27, 2015 at 8:34 PM, Simon Glass s...@chromium.org wrote:

 Hi Joe,

 On 27 January 2015 at 16:27, Joe Hershberger joe.hershber...@ni.com
wrote:
  Add basic network support to sandbox which includes a network driver.
 
  Signed-off-by: Joe Hershberger joe.hershber...@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@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_SMC9) += smc9.o
   obj-$(CONFIG_SMC911X) += smc911x.o
  diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
  new file mode 100644
  index 000..e1ee69b
  --- /dev/null
  +++ b/drivers/net/sandbox.c
  @@ -0,0 +1,91 @@
  +/*
  + * Copyright (c) 2015 National Instruments
  + *
  + * (C) Copyright 2015
  + * Joe Hershberger joe.hershber...@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 \
  + 

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

2015-01-27 Thread Joe Hershberger
Add basic network support to sandbox which includes a network driver.

Signed-off-by: Joe Hershberger joe.hershber...@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@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_SMC9) += smc9.o
 obj-$(CONFIG_SMC911X) += smc911x.o
diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
new file mode 100644
index 000..e1ee69b
--- /dev/null
+++ b/drivers/net/sandbox.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2015 National Instruments
+ *
+ * (C) Copyright 2015
+ * Joe Hershberger joe.hershber...@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;
+};
+
+int sb_eth_init(struct udevice *dev, bd_t *bis)
+{
+   printf(eth_sandbox: Init\n);
+
+   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

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


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

2015-01-27 Thread Simon Glass
Hi Joe,

On 27 January 2015 at 16:27, Joe Hershberger joe.hershber...@ni.com wrote:
 Add basic network support to sandbox which includes a network driver.

 Signed-off-by: Joe Hershberger joe.hershber...@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@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_SMC9) += smc9.o
  obj-$(CONFIG_SMC911X) += smc911x.o
 diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
 new file mode 100644
 index 000..e1ee69b
 --- /dev/null
 +++ b/drivers/net/sandbox.c
 @@ -0,0 +1,91 @@
 +/*
 + * Copyright (c) 2015 National Instruments
 + *
 + * (C) Copyright 2015
 + * Joe Hershberger joe.hershber...@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.

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

debug()?

 +
 +   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 \
 +