[PATCH RTEMS 1/7] bsp/fdt.h: Move bsp/fdt.h to cpukit

Niteesh G. S. niteesh.gs at gmail.com
Wed Jul 15 09:44:31 UTC 2020


Hello,

I would like to add some more information regarding these patches here.

These patches are currently not meant to replace the OpenFirmWare API from
libBSD.
For these patches to be completely compatible with libBSD we must support
creating and
registering *xref's* since the drivers use the *xref* mechanism to create a
cross-reference
between the devices, they are handling and the node handles in FDT for
efficient translation.

The current plan is to let libBSD initialize the *xref* structure during
its initialization. And have
RTEMS provide the openfirmware API.
i.e.
RTEMS will contain the openfirm.h and openfirm.c with FreeBSD independent
function
declarations and definitions. For functions like

device_t OF_device_from_xref(phandle_t xref);

phandle_t OF_xref_from_device(device_t dev);

int OF_device_register_xref(phandle_t xref, device_t dev);

which are dependent on FreeBSD we will have the declarations in RTEMS and
definitions
in FreeBSD. Though we have tried this with the pinmux driver more extensive
testing has
to done.

To allow for definitions of the above function in openfirm.h(present in
RTEMS) we forward
declared the *device* structure.

typedef struct device *device_t;

If anyone doesn't like this solution please suggest an alternative solution.

Thanks,
Niteesh.


On Wed, Jul 15, 2020 at 12:02 PM G S Niteesh Babu <niteesh.gs at gmail.com>
wrote:

> This commit move the bsp/fdt.h header to cpukit/include/rtems.
> The reason for this is, with inclusion of libfreebsd there are
> cases where their is need for bsp_fdt_get(). And with this
> header under bsps directory it is not possible to include it
> under a cpukit directory.
> ---
>  bsps/include/bsp/fdt.h            | 86 +++++++++++--------------------
>  cpukit/include/rtems/fdt.h        | 69 +++++++++++++++++++++++++
>  spec/build/cpukit/librtemscpu.yml |  1 +
>  3 files changed, 100 insertions(+), 56 deletions(-)
>  create mode 100644 cpukit/include/rtems/fdt.h
>
> diff --git a/bsps/include/bsp/fdt.h b/bsps/include/bsp/fdt.h
> index 4ed05b136c..4a7c3dfb24 100644
> --- a/bsps/include/bsp/fdt.h
> +++ b/bsps/include/bsp/fdt.h
> @@ -1,67 +1,41 @@
> -/*
> - * Copyright (c) 2015, 2017 embedded brains GmbH.  All rights reserved.
> - *
> - *  embedded brains GmbH
> - *  Dornierstr. 4
> - *  82178 Puchheim
> - *  Germany
> - *  <rtems at embedded-brains.de>
> - *
> - * The license and distribution terms for this file may be
> - * found in the file LICENSE in this distribution or at
> - * http://www.rtems.org/license/LICENSE.
> - */
> -
> -#ifndef LIBBSP_SHARED_FDT_H
> -#define LIBBSP_SHARED_FDT_H
> -
> -#include <bsp.h>
> -
> -#ifdef __cplusplus
> -extern "C" {
> -#endif /* __cplusplus */
> -
> -/*
> - * BSPs that implement the FDT support functions must define
> - * BSP_FDT_IS_SUPPORTED.
> - */
> +/* SPDX-License-Identifier: BSD-2-Clause */
>
>  /**
> - * @brief Copies the specified source FDT to a dedicated global data area.
> + * @file
>   *
> - * The source FDT is usually provided by a bootloader and may be located
> in a
> - * memory area that is used by the program.  The low-level initialization
> - * should copy the FDT for later use.
> + * @ingroup RTEMSBSPsShared
>   *
> - * The copy can be accessed by bsp_fdt_get().
> - *
> - * @param[in] src The source FDT.
>   */
> -void bsp_fdt_copy(const void *src);
>
> -/**
> - * @brief Returns the FDT of the BSP.
> - *
> - * @return The FDT of the BSP.
> +/*
> + * Copyright (C) <2020>, Niteesh G S <niteesh.gs at gmail.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.
>   */
> -const void *bsp_fdt_get(void);
>
> -/**
> - * @brief Maps the interrupt number of the FDT to the interrupt vector
> used by
> - * the interrupt management.
> - *
> - * This function is used by the libbsd to implement the OFW_BUS_MAP_INTR
> bus
> - * method.
> - *
> - * @param[in] intr The FDT interrupt number cells.
> - * @param[in] icells The FDT interrupt cell count.
> - *
> - * @return The interrupt vector of the FDT interrupt number.
> - */
> -uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells);
> +#ifndef LIBBSP_SHARED_FDT_H
> +#define LIBBSP_SHARED_FDT_H
>
> -#ifdef __cplusplus
> -}
> -#endif /* __cplusplus */
> +#include <bsp.h>
> +#include <rtems/fdt.h>
>
>  #endif /* LIBBSP_SHARED_FDT_H */
> diff --git a/cpukit/include/rtems/fdt.h b/cpukit/include/rtems/fdt.h
> new file mode 100644
> index 0000000000..149f7ff906
> --- /dev/null
> +++ b/cpukit/include/rtems/fdt.h
> @@ -0,0 +1,69 @@
> +/*
> + * Copyright (c) 2015, 2017 embedded brains GmbH.  All rights reserved.
> + *
> + *  embedded brains GmbH
> + *  Dornierstr. 4
> + *  82178 Puchheim
> + *  Germany
> + *  <rtems at embedded-brains.de>
> + *
> + * Modified by Niteesh G S <niteesh.gs at gmail.com>
> + *
> + * The license and distribution terms for this file may be
> + * found in the file LICENSE in this distribution or at
> + * http://www.rtems.org/license/LICENSE.
> + */
> +
> +#ifndef RTEMS_FDT_H
> +#define RTEMS_FDT_H
> +
> +#include <rtems.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif /* __cplusplus */
> +
> +/*
> + * BSPs that implement the FDT support functions must define
> + * BSP_FDT_IS_SUPPORTED.
> + */
> +
> +/**
> + * @brief Copies the specified source FDT to a dedicated global data area.
> + *
> + * The source FDT is usually provided by a bootloader and may be located
> in a
> + * memory area that is used by the program.  The low-level initialization
> + * should copy the FDT for later use.
> + *
> + * The copy can be accessed by bsp_fdt_get().
> + *
> + * @param[in] src The source FDT.
> + */
> +void bsp_fdt_copy(const void *src);
> +
> +/**
> + * @brief Returns the FDT of the BSP.
> + *
> + * @return The FDT of the BSP.
> + */
> +const void *bsp_fdt_get(void);
> +
> +/**
> + * @brief Maps the interrupt number of the FDT to the interrupt vector
> used by
> + * the interrupt management.
> + *
> + * This function is used by the libbsd to implement the OFW_BUS_MAP_INTR
> bus
> + * method.
> + *
> + * @param[in] intr The FDT interrupt number cells.
> + * @param[in] icells The FDT interrupt cell count.
> + *
> + * @return The interrupt vector of the FDT interrupt number.
> + */
> +uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells);
> +
> +#ifdef __cplusplus
> +}
> +#endif /* __cplusplus */
> +
> +#endif /* RTEMS_FDT_H */
> diff --git a/spec/build/cpukit/librtemscpu.yml
> b/spec/build/cpukit/librtemscpu.yml
> index 2af315da71..403662b97d 100644
> --- a/spec/build/cpukit/librtemscpu.yml
> +++ b/spec/build/cpukit/librtemscpu.yml
> @@ -105,6 +105,7 @@ install:
>    - cpukit/include/rtems/extensionimpl.h
>    - cpukit/include/rtems/fatal.h
>    - cpukit/include/rtems/fb.h
> +  - cpukit/include/rtems/fdt.h
>    - cpukit/include/rtems/flashdisk.h
>    - cpukit/include/rtems/framebuffer.h
>    - cpukit/include/rtems/fs.h
> --
> 2.17.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200715/c39f5d3e/attachment.html>


More information about the devel mailing list