[PATCH rtems-lwip] zynqmp: Add support for the CFC-400X BSP

Vijay Kumar Banerjee vijay at rtems.org
Fri Nov 11 21:58:12 UTC 2022


Looks great. It only affects the Zynqmp.

Thanks.

On Thu, Nov 10, 2022 at 2:23 PM Kinsey Moore <kinsey.moore at oarcorp.com> wrote:
>
> This adds support for the CFC-400X BSP including an option to select
> SGMII instead of the default RGMII PHY interface and adds a way for
> ZynqMP BSPs to provide additional configuration via lwipbspopts.h.
> ---
>  .../aarch64/xilinx_zynqmp_lp64_cfc400x.json   | 11 ++++
>  .../contrib/ports/xilinx/netif/xemacpsif_hw.c |  6 ++
>  rtemslwip/zynqmp/lwipopts.h                   |  2 +
>  rtemslwip/zynqmp_cfc400x/lwipbspopts.h        | 33 ++++++++++
>  rtemslwip/zynqmp_cfc400x/netstart.c           | 66 +++++++++++++++++++
>  rtemslwip/zynqmp_hardware/lwipbspopts.h       |  1 +
>  rtemslwip/zynqmp_qemu/lwipbspopts.h           |  1 +
>  7 files changed, 120 insertions(+)
>  create mode 100644 defs/bsps/aarch64/xilinx_zynqmp_lp64_cfc400x.json
>  create mode 100644 rtemslwip/zynqmp_cfc400x/lwipbspopts.h
>  create mode 100644 rtemslwip/zynqmp_cfc400x/netstart.c
>  create mode 100644 rtemslwip/zynqmp_hardware/lwipbspopts.h
>  create mode 100644 rtemslwip/zynqmp_qemu/lwipbspopts.h
>
> diff --git a/defs/bsps/aarch64/xilinx_zynqmp_lp64_cfc400x.json b/defs/bsps/aarch64/xilinx_zynqmp_lp64_cfc400x.json
> new file mode 100644
> index 0000000..5fe676c
> --- /dev/null
> +++ b/defs/bsps/aarch64/xilinx_zynqmp_lp64_cfc400x.json
> @@ -0,0 +1,11 @@
> +{
> +       "includes": [
> +               "xilinx_zynqmp_base"
> +       ],
> +       "header-paths-to-import": [
> +               "rtemslwip/zynqmp_cfc400x"
> +       ],
> +       "source-paths-to-import": [
> +               "rtemslwip/zynqmp_cfc400x"
> +       ]
> +}
> diff --git a/embeddedsw/ThirdParty/sw_services/lwip211/src/contrib/ports/xilinx/netif/xemacpsif_hw.c b/embeddedsw/ThirdParty/sw_services/lwip211/src/contrib/ports/xilinx/netif/xemacpsif_hw.c
> index a1fdeda..f0ddf84 100644
> --- a/embeddedsw/ThirdParty/sw_services/lwip211/src/contrib/ports/xilinx/netif/xemacpsif_hw.c
> +++ b/embeddedsw/ThirdParty/sw_services/lwip211/src/contrib/ports/xilinx/netif/xemacpsif_hw.c
> @@ -74,6 +74,12 @@ void init_emacps(xemacpsif_s *xemacps, struct netif *netif)
>
>         xemacpsp = &xemacps->emacps;
>
> +#ifdef __rtems__
> +#ifdef ZYNQMP_USE_SGMII
> +       XEmacPs_SetOptions(xemacpsp, XEMACPS_SGMII_ENABLE_OPTION);
> +#endif
> +#endif
> +
>  #ifdef ZYNQMP_USE_JUMBO
>         XEmacPs_SetOptions(xemacpsp, XEMACPS_JUMBO_ENABLE_OPTION);
>  #endif
> diff --git a/rtemslwip/zynqmp/lwipopts.h b/rtemslwip/zynqmp/lwipopts.h
> index b9fe277..feabe73 100644
> --- a/rtemslwip/zynqmp/lwipopts.h
> +++ b/rtemslwip/zynqmp/lwipopts.h
> @@ -123,4 +123,6 @@
>  #define portTICK_RATE_MS ( rtems_clock_get_ticks_per_second() * 1000 )
>  #define vTaskDelay( x ) sys_arch_delay( x )
>
> +#include <lwipbspopts.h>
> +
>  #endif /* __LWIPOPTS_H__ */
> diff --git a/rtemslwip/zynqmp_cfc400x/lwipbspopts.h b/rtemslwip/zynqmp_cfc400x/lwipbspopts.h
> new file mode 100644
> index 0000000..27eb6a9
> --- /dev/null
> +++ b/rtemslwip/zynqmp_cfc400x/lwipbspopts.h
> @@ -0,0 +1,33 @@
> +/*
> + * Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
> + * Written by Kinsey Moore <kinsey.moore at oarcorp.com>
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#ifndef RTEMSLWIP_LWIPBSPOPTS_H
> +#define RTEMSLWIP_LWIPBSPOPTS_H
> +
> +/* Use SGMII mode for all interfaces on the CFC-400X */
> +#define ZYNQMP_USE_SGMII
> +
> +#endif /* RTEMSLWIP_LWIPBSPOPTS_H */
> diff --git a/rtemslwip/zynqmp_cfc400x/netstart.c b/rtemslwip/zynqmp_cfc400x/netstart.c
> new file mode 100644
> index 0000000..d19b36c
> --- /dev/null
> +++ b/rtemslwip/zynqmp_cfc400x/netstart.c
> @@ -0,0 +1,66 @@
> +/*
> + * Copyright (C) 2022 On-Line Applications Research Corporation (OAR)
> + * Written by Kinsey Moore <kinsey.moore at oarcorp.com>
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include <netstart.h>
> +#include "netif/xadapter.h"
> +#include "xparameters.h"
> +#include <lwip/tcpip.h>
> +
> +int start_networking(
> +  struct netif  *net_interface,
> +  ip_addr_t     *ipaddr,
> +  ip_addr_t     *netmask,
> +  ip_addr_t     *gateway,
> +  unsigned char *mac_ethernet_address
> +)
> +{
> +  tcpip_init( NULL, NULL );
> +
> +  if ( !xemac_add(
> +    net_interface,
> +    ipaddr,
> +    netmask,
> +    gateway,
> +    mac_ethernet_address,
> +    XPAR_PSU_ETHERNET_0_BASEADDR
> +       ) ) {
> +    return 1;
> +  }
> +
> +  netif_set_default( net_interface );
> +
> +  netif_set_up( net_interface );
> +
> +  sys_thread_new(
> +    "xemacif_input_thread",
> +    ( void ( * )( void * ) )xemacif_input_thread,
> +    net_interface,
> +    1024,
> +    DEFAULT_THREAD_PRIO
> +  );
> +
> +  return 0;
> +}
> diff --git a/rtemslwip/zynqmp_hardware/lwipbspopts.h b/rtemslwip/zynqmp_hardware/lwipbspopts.h
> new file mode 100644
> index 0000000..d35e631
> --- /dev/null
> +++ b/rtemslwip/zynqmp_hardware/lwipbspopts.h
> @@ -0,0 +1 @@
> +/* This file is a stub and intentionally left blank */
> diff --git a/rtemslwip/zynqmp_qemu/lwipbspopts.h b/rtemslwip/zynqmp_qemu/lwipbspopts.h
> new file mode 100644
> index 0000000..d35e631
> --- /dev/null
> +++ b/rtemslwip/zynqmp_qemu/lwipbspopts.h
> @@ -0,0 +1 @@
> +/* This file is a stub and intentionally left blank */
> --
> 2.30.2
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list