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

Niteesh G. S. niteesh.gs at gmail.com
Wed Jul 29 12:27:49 UTC 2020


Hello,

Please review this series of patches.

Thanks,
Niteesh.

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

> 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/20200729/dc743fa8/attachment-0001.html>


More information about the devel mailing list