[U-Boot] [RFC PATCH] net: emaclite: Support OF initialization
Simon Glass
sjg at chromium.org
Tue Jul 3 22:04:20 CEST 2012
Hi Michal,
On Thu, Jun 28, 2012 at 12:26 AM, Michal Simek <monstr at monstr.eu> wrote:
> Support new CONFIG_OF_CONTROL option where device
> probing is done based on device tree description.
>
> Signed-off-by: Michal Simek <monstr at monstr.eu>
> ---
> drivers/net/xilinx_emaclite.c | 30 ++++++++++++++++++++++++++++++
> 1 files changed, 30 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c
> index e1af42a..0f6807d 100644
> --- a/drivers/net/xilinx_emaclite.c
> +++ b/drivers/net/xilinx_emaclite.c
> @@ -28,6 +28,9 @@
> #include <config.h>
> #include <malloc.h>
> #include <asm/io.h>
> +#include <fdtdec.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
>
> #undef DEBUG
>
> @@ -375,3 +378,30 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned
> long base_addr,
>
> return 1;
> }
> +
> +#ifdef CONFIG_OF_CONTROL
> +int xilinx_emaclite_init(bd_t *bis)
> +{
> + int offset = 0;
> + u32 ret = 0;
> + u32 reg;
> +
> + do {
> + offset = fdt_node_offset_by_compatible(gd->fdt_blob,
> offset,
> + "xlnx,xps-ethernetlite-1.00.a");
> + if (offset != -1) {
>
offset > 0 or >= 0
> + reg = fdtdec_get_addr(gd->fdt_blob, offset, "reg");
> + if (reg != FDT_ADDR_T_NONE) {
> + u32 rxpp = fdtdec_get_int(gd->fdt_blob,
> offset,
> +
> "xlnx,rx-ping-pong", 0);
> + u32 txpp = fdtdec_get_int(gd->fdt_blob,
> offset,
> +
> "xlnx,tx-ping-pong", 0);
> + ret |= xilinx_emaclite_initialize(bis, reg,
> + txpp,
> rxpp);
> + }
> + }
> + } while (offset != -1);
>
Just offset > 0 here I think.
> +
> + return ret;
> +}
> +#endif
>
This is fine I think. Do you want to impose an ordering on the interfaces,
or are you happy with them being assigned randomly? If you want an
ordering, see fdtdec_find_aliases_for_id().
> --
> 1.7.0.4
>
>
Regards,
Simon
More information about the U-Boot
mailing list