From 7589f1e01aed164abc89c5ff6b23c88127c5676b Mon Sep 17 00:00:00 2001 From: G S Niteesh Babu Date: Sat, 13 Mar 2021 16:32:02 +0530 Subject: bsps/beagle: Added SOC detection using FDT Detects the SOC type using FDT and also replaces the ti_cpuid.h header in FreeBSD with custom one. --- bsps/arm/beagle/start/bsp-soc-detect.c | 55 ++++++++++++++++++++++++++++++++++ bsps/arm/beagle/start/bsp-soc-detect.h | 38 +++++++++++++++++++++++ bsps/arm/beagle/start/bspstart.c | 23 ++++++++++---- bsps/include/arm/ti/ti_cpuid.h | 48 +++++++++++++++++++++++++++++ spec/build/bsps/arm/beagle/obj.yml | 1 + 5 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 bsps/arm/beagle/start/bsp-soc-detect.c create mode 100644 bsps/arm/beagle/start/bsp-soc-detect.h create mode 100644 bsps/include/arm/ti/ti_cpuid.h diff --git a/bsps/arm/beagle/start/bsp-soc-detect.c b/bsps/arm/beagle/start/bsp-soc-detect.c new file mode 100644 index 0000000000..445c8881ff --- /dev/null +++ b/bsps/arm/beagle/start/bsp-soc-detect.c @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup arm_Beagle + * + * @brief + */ + +/* + * Copyright (C) <2020> Niteesh Babu + * + * 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 +#include +#include +#include "bsp-soc-detect.h" + +int _ti_chip; + +void bsp_soc_detect( void ) +{ + const void *fdt = bsp_fdt_get(); + + if (fdt_node_offset_by_compatible(fdt, -1, "ti_am33xx") != FDT_ERR_NOTFOUND) { + _ti_chip = CHIP_AM335X; + } else if (fdt_node_offset_by_compatible(fdt, -1, "ti_omap3") != FDT_ERR_NOTFOUND) { + _ti_chip = CHIP_OMAP_3; + } else { + printk("Unknown platform"); + _ti_chip = -1; + } +} diff --git a/bsps/arm/beagle/start/bsp-soc-detect.h b/bsps/arm/beagle/start/bsp-soc-detect.h new file mode 100644 index 0000000000..545bba3eaf --- /dev/null +++ b/bsps/arm/beagle/start/bsp-soc-detect.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup arm_Beagle + * + * @brief + */ + +/* + * Copyright (C) <2020> Niteesh Babu + * + * 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 + +void bsp_soc_detect( void ); diff --git a/bsps/arm/beagle/start/bspstart.c b/bsps/arm/beagle/start/bspstart.c index 3c05f2a9cd..0a6f1b4a64 100644 --- a/bsps/arm/beagle/start/bspstart.c +++ b/bsps/arm/beagle/start/bspstart.c @@ -19,17 +19,28 @@ #include #include #include +#include "bsp-soc-detect.h" #include "bspdebug.h" void bsp_start(void) { -#if IS_DM3730 - const char* type = "dm3730-based"; -#endif -#if IS_AM335X - const char* type = "am335x-based"; -#endif + const char *type; + + bsp_soc_detect(); + + switch (ti_chip()) { + case CHIP_AM335X: + type = "am335x-based"; + break; + case CHIP_OMAP_3: + type = "dm3730-based"; + break; + default: + type = "Unknown SOC"; + break; + } + bsp_interrupt_initialize(); printk("\nRTEMS Beagleboard: %s\n", type); printk(" ARM Debug: 0x%08x\n", (intptr_t) bbb_arm_debug_registers()); diff --git a/bsps/include/arm/ti/ti_cpuid.h b/bsps/include/arm/ti/ti_cpuid.h new file mode 100644 index 0000000000..9d533db5d3 --- /dev/null +++ b/bsps/include/arm/ti/ti_cpuid.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup LIBFREEBSD + * + * @brief + */ + +/* + * Copyright (C) <2020> Niteesh Babu + * + * 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 + +#define SOC_TI_AM335X +#define CHIP_OMAP_4 0 +#define CHIP_AM335X 1 +#define CHIP_OMAP_3 2 + +extern int _ti_chip; + +static __inline int ti_chip(void) +{ + assert(_ti_chip != -1); + return _ti_chip; +} diff --git a/spec/build/bsps/arm/beagle/obj.yml b/spec/build/bsps/arm/beagle/obj.yml index 908c188547..5ad859ad8d 100644 --- a/spec/build/bsps/arm/beagle/obj.yml +++ b/spec/build/bsps/arm/beagle/obj.yml @@ -39,6 +39,7 @@ source: - bsps/arm/beagle/start/bspdebug.c - bsps/arm/beagle/start/bspreset.c - bsps/arm/beagle/start/bspstart.c +- bsps/arm/beagle/start/bsp-soc-detect.c - bsps/arm/beagle/start/bspstarthooks.c - bsps/arm/beagle/start/bspstartmmu.c - bsps/arm/shared/cache/cache-cp15.c -- cgit v1.2.3