diff options
Diffstat (limited to 'bsps/include/grlib')
83 files changed, 17356 insertions, 226 deletions
diff --git a/bsps/include/grlib/ahbstat-regs.h b/bsps/include/grlib/ahbstat-regs.h new file mode 100644 index 0000000000..6e50814da7 --- /dev/null +++ b/bsps/include/grlib/ahbstat-regs.h @@ -0,0 +1,171 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBAHBSTAT + * + * @brief This header file defines the AHBSTAT register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/ahbstat-header */ + +#ifndef _GRLIB_AHBSTAT_REGS_H +#define _GRLIB_AHBSTAT_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/ahbstat */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBSTAT AHBSTAT + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the AHBSTAT interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBSTATAHBS AHB Status register (AHBS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBSTAT_AHBS_ME 0x2000U + +#define AHBSTAT_AHBS_FW 0x1000U + +#define AHBSTAT_AHBS_CF 0x800U + +#define AHBSTAT_AHBS_AF 0x400U + +#define AHBSTAT_AHBS_CE 0x200U + +#define AHBSTAT_AHBS_NE 0x100U + +#define AHBSTAT_AHBS_HWRITE 0x80U + +#define AHBSTAT_AHBS_HMASTER_SHIFT 3 +#define AHBSTAT_AHBS_HMASTER_MASK 0x78U +#define AHBSTAT_AHBS_HMASTER_GET( _reg ) \ + ( ( ( _reg ) & AHBSTAT_AHBS_HMASTER_MASK ) >> \ + AHBSTAT_AHBS_HMASTER_SHIFT ) +#define AHBSTAT_AHBS_HMASTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBSTAT_AHBS_HMASTER_MASK ) | \ + ( ( ( _val ) << AHBSTAT_AHBS_HMASTER_SHIFT ) & \ + AHBSTAT_AHBS_HMASTER_MASK ) ) +#define AHBSTAT_AHBS_HMASTER( _val ) \ + ( ( ( _val ) << AHBSTAT_AHBS_HMASTER_SHIFT ) & \ + AHBSTAT_AHBS_HMASTER_MASK ) + +#define AHBSTAT_AHBS_HSIZE_SHIFT 0 +#define AHBSTAT_AHBS_HSIZE_MASK 0x7U +#define AHBSTAT_AHBS_HSIZE_GET( _reg ) \ + ( ( ( _reg ) & AHBSTAT_AHBS_HSIZE_MASK ) >> \ + AHBSTAT_AHBS_HSIZE_SHIFT ) +#define AHBSTAT_AHBS_HSIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBSTAT_AHBS_HSIZE_MASK ) | \ + ( ( ( _val ) << AHBSTAT_AHBS_HSIZE_SHIFT ) & \ + AHBSTAT_AHBS_HSIZE_MASK ) ) +#define AHBSTAT_AHBS_HSIZE( _val ) \ + ( ( ( _val ) << AHBSTAT_AHBS_HSIZE_SHIFT ) & \ + AHBSTAT_AHBS_HSIZE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBSTATAHBFAR \ + * AHB Failing address register (AHBFAR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBSTAT_AHBFAR_HADDR_SHIFT 0 +#define AHBSTAT_AHBFAR_HADDR_MASK 0xffffffffU +#define AHBSTAT_AHBFAR_HADDR_GET( _reg ) \ + ( ( ( _reg ) & AHBSTAT_AHBFAR_HADDR_MASK ) >> \ + AHBSTAT_AHBFAR_HADDR_SHIFT ) +#define AHBSTAT_AHBFAR_HADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBSTAT_AHBFAR_HADDR_MASK ) | \ + ( ( ( _val ) << AHBSTAT_AHBFAR_HADDR_SHIFT ) & \ + AHBSTAT_AHBFAR_HADDR_MASK ) ) +#define AHBSTAT_AHBFAR_HADDR( _val ) \ + ( ( ( _val ) << AHBSTAT_AHBFAR_HADDR_SHIFT ) & \ + AHBSTAT_AHBFAR_HADDR_MASK ) + +/** @} */ + +/** + * @brief This structure defines the AHBSTAT register block memory map. + */ +typedef struct ahbstat { + /** + * @brief See @ref RTEMSDeviceGRLIBAHBSTATAHBS. + */ + uint32_t ahbs; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBSTATAHBFAR. + */ + uint32_t ahbfar; +} ahbstat; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_AHBSTAT_REGS_H */ diff --git a/bsps/include/grlib/ahbstat.h b/bsps/include/grlib/ahbstat.h index 0baaad0732..c6502ab4b0 100644 --- a/bsps/include/grlib/ahbstat.h +++ b/bsps/include/grlib/ahbstat.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* AHBSTAT driver interface * * COPYRIGHT (c) 2011. * Cobham Gaisler AB. * - * 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. + * 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 __AHBSTAT_H__ diff --git a/bsps/include/grlib/ahbtrace-regs.h b/bsps/include/grlib/ahbtrace-regs.h new file mode 100644 index 0000000000..4526326894 --- /dev/null +++ b/bsps/include/grlib/ahbtrace-regs.h @@ -0,0 +1,313 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBAHBTRACE + * + * @brief This header file defines the AHBTRACE register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/ahbtrace-header */ + +#ifndef _GRLIB_AHBTRACE_REGS_H +#define _GRLIB_AHBTRACE_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/ahbtrace */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACE AHBTRACE + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the AHBTRACE interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACECTRL Trace buffer control register (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_CTRL_DCNT_SHIFT 16 +#define AHBTRACE_CTRL_DCNT_MASK 0x7f0000U +#define AHBTRACE_CTRL_DCNT_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_CTRL_DCNT_MASK ) >> \ + AHBTRACE_CTRL_DCNT_SHIFT ) +#define AHBTRACE_CTRL_DCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_CTRL_DCNT_MASK ) | \ + ( ( ( _val ) << AHBTRACE_CTRL_DCNT_SHIFT ) & \ + AHBTRACE_CTRL_DCNT_MASK ) ) +#define AHBTRACE_CTRL_DCNT( _val ) \ + ( ( ( _val ) << AHBTRACE_CTRL_DCNT_SHIFT ) & \ + AHBTRACE_CTRL_DCNT_MASK ) + +#define AHBTRACE_CTRL_PF 0x100U + +#define AHBTRACE_CTRL_BW_SHIFT 6 +#define AHBTRACE_CTRL_BW_MASK 0xc0U +#define AHBTRACE_CTRL_BW_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_CTRL_BW_MASK ) >> \ + AHBTRACE_CTRL_BW_SHIFT ) +#define AHBTRACE_CTRL_BW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_CTRL_BW_MASK ) | \ + ( ( ( _val ) << AHBTRACE_CTRL_BW_SHIFT ) & \ + AHBTRACE_CTRL_BW_MASK ) ) +#define AHBTRACE_CTRL_BW( _val ) \ + ( ( ( _val ) << AHBTRACE_CTRL_BW_SHIFT ) & \ + AHBTRACE_CTRL_BW_MASK ) + +#define AHBTRACE_CTRL_RF 0x20U + +#define AHBTRACE_CTRL_AF 0x10U + +#define AHBTRACE_CTRL_FR 0x8U + +#define AHBTRACE_CTRL_FW 0x4U + +#define AHBTRACE_CTRL_DM 0x2U + +#define AHBTRACE_CTRL_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACEINDEX Trace buffer index register (INDEX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_INDEX_INDEX_SHIFT 4 +#define AHBTRACE_INDEX_INDEX_MASK 0x7f0U +#define AHBTRACE_INDEX_INDEX_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_INDEX_INDEX_MASK ) >> \ + AHBTRACE_INDEX_INDEX_SHIFT ) +#define AHBTRACE_INDEX_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_INDEX_INDEX_MASK ) | \ + ( ( ( _val ) << AHBTRACE_INDEX_INDEX_SHIFT ) & \ + AHBTRACE_INDEX_INDEX_MASK ) ) +#define AHBTRACE_INDEX_INDEX( _val ) \ + ( ( ( _val ) << AHBTRACE_INDEX_INDEX_SHIFT ) & \ + AHBTRACE_INDEX_INDEX_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACETIMETAG \ + * Trace buffer time tag register (TIMETAG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_TIMETAG_TIMETAG_SHIFT 0 +#define AHBTRACE_TIMETAG_TIMETAG_MASK 0xffffffffU +#define AHBTRACE_TIMETAG_TIMETAG_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_TIMETAG_TIMETAG_MASK ) >> \ + AHBTRACE_TIMETAG_TIMETAG_SHIFT ) +#define AHBTRACE_TIMETAG_TIMETAG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_TIMETAG_TIMETAG_MASK ) | \ + ( ( ( _val ) << AHBTRACE_TIMETAG_TIMETAG_SHIFT ) & \ + AHBTRACE_TIMETAG_TIMETAG_MASK ) ) +#define AHBTRACE_TIMETAG_TIMETAG( _val ) \ + ( ( ( _val ) << AHBTRACE_TIMETAG_TIMETAG_SHIFT ) & \ + AHBTRACE_TIMETAG_TIMETAG_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACEMSFILT \ + * Trace buffer master/slave filter register (MSFILT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_MSFILT_SMASK_15_0_SHIFT 16 +#define AHBTRACE_MSFILT_SMASK_15_0_MASK 0xffff0000U +#define AHBTRACE_MSFILT_SMASK_15_0_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_MSFILT_SMASK_15_0_MASK ) >> \ + AHBTRACE_MSFILT_SMASK_15_0_SHIFT ) +#define AHBTRACE_MSFILT_SMASK_15_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_MSFILT_SMASK_15_0_MASK ) | \ + ( ( ( _val ) << AHBTRACE_MSFILT_SMASK_15_0_SHIFT ) & \ + AHBTRACE_MSFILT_SMASK_15_0_MASK ) ) +#define AHBTRACE_MSFILT_SMASK_15_0( _val ) \ + ( ( ( _val ) << AHBTRACE_MSFILT_SMASK_15_0_SHIFT ) & \ + AHBTRACE_MSFILT_SMASK_15_0_MASK ) + +#define AHBTRACE_MSFILT_MMASK_15_0_SHIFT 0 +#define AHBTRACE_MSFILT_MMASK_15_0_MASK 0xffffU +#define AHBTRACE_MSFILT_MMASK_15_0_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_MSFILT_MMASK_15_0_MASK ) >> \ + AHBTRACE_MSFILT_MMASK_15_0_SHIFT ) +#define AHBTRACE_MSFILT_MMASK_15_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_MSFILT_MMASK_15_0_MASK ) | \ + ( ( ( _val ) << AHBTRACE_MSFILT_MMASK_15_0_SHIFT ) & \ + AHBTRACE_MSFILT_MMASK_15_0_MASK ) ) +#define AHBTRACE_MSFILT_MMASK_15_0( _val ) \ + ( ( ( _val ) << AHBTRACE_MSFILT_MMASK_15_0_SHIFT ) & \ + AHBTRACE_MSFILT_MMASK_15_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACETBBA \ + * Trace buffer break address registers (TBBA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_TBBA_BADDR_31_2_SHIFT 2 +#define AHBTRACE_TBBA_BADDR_31_2_MASK 0xfffffffcU +#define AHBTRACE_TBBA_BADDR_31_2_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_TBBA_BADDR_31_2_MASK ) >> \ + AHBTRACE_TBBA_BADDR_31_2_SHIFT ) +#define AHBTRACE_TBBA_BADDR_31_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_TBBA_BADDR_31_2_MASK ) | \ + ( ( ( _val ) << AHBTRACE_TBBA_BADDR_31_2_SHIFT ) & \ + AHBTRACE_TBBA_BADDR_31_2_MASK ) ) +#define AHBTRACE_TBBA_BADDR_31_2( _val ) \ + ( ( ( _val ) << AHBTRACE_TBBA_BADDR_31_2_SHIFT ) & \ + AHBTRACE_TBBA_BADDR_31_2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAHBTRACETBBM \ + * Trace buffer break mask registers (TBBM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define AHBTRACE_TBBM_BMASK_31_2_SHIFT 2 +#define AHBTRACE_TBBM_BMASK_31_2_MASK 0xfffffffcU +#define AHBTRACE_TBBM_BMASK_31_2_GET( _reg ) \ + ( ( ( _reg ) & AHBTRACE_TBBM_BMASK_31_2_MASK ) >> \ + AHBTRACE_TBBM_BMASK_31_2_SHIFT ) +#define AHBTRACE_TBBM_BMASK_31_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~AHBTRACE_TBBM_BMASK_31_2_MASK ) | \ + ( ( ( _val ) << AHBTRACE_TBBM_BMASK_31_2_SHIFT ) & \ + AHBTRACE_TBBM_BMASK_31_2_MASK ) ) +#define AHBTRACE_TBBM_BMASK_31_2( _val ) \ + ( ( ( _val ) << AHBTRACE_TBBM_BMASK_31_2_SHIFT ) & \ + AHBTRACE_TBBM_BMASK_31_2_MASK ) + +#define AHBTRACE_TBBM_LD 0x2U + +#define AHBTRACE_TBBM_ST 0x1U + +/** @} */ + +/** + * @brief This structure defines the AHBTRACE register block memory map. + */ +typedef struct ahbtrace { + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACECTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACEINDEX. + */ + uint32_t index; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACETIMETAG. + */ + uint32_t timetag; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACEMSFILT. + */ + uint32_t msfilt; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACETBBA. + */ + uint32_t tbba_0; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACETBBM. + */ + uint32_t tbbm_0; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACETBBA. + */ + uint32_t tbba_1; + + /** + * @brief See @ref RTEMSDeviceGRLIBAHBTRACETBBM. + */ + uint32_t tbbm_1; +} ahbtrace; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_AHBTRACE_REGS_H */ diff --git a/bsps/include/grlib/ambapp.h b/bsps/include/grlib/ambapp.h index bcc26e1efe..1afd802860 100644 --- a/bsps/include/grlib/ambapp.h +++ b/bsps/include/grlib/ambapp.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup amba @@ -7,9 +9,26 @@ * COPYRIGHT (c) 2009. * Aeroflex Gaisler. * - * 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. + * 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 __AMBAPP_H__ diff --git a/bsps/include/grlib/ambapp_bus.h b/bsps/include/grlib/ambapp_bus.h index 87cd52bc69..b62ebc0fa3 100644 --- a/bsps/include/grlib/ambapp_bus.h +++ b/bsps/include/grlib/ambapp_bus.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* General part of a AMBA Plug & Play bus driver. * * COPYRIGHT (c) 2008. @@ -8,9 +10,26 @@ * the code size smaller for systems with multiple AMBA Plug & * Play buses. * - * 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. + * 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 __AMBAPP_BUS_H__ diff --git a/bsps/include/grlib/ambapp_bus_grlib.h b/bsps/include/grlib/ambapp_bus_grlib.h index 2def4bc2b4..b6e5ddfb06 100644 --- a/bsps/include/grlib/ambapp_bus_grlib.h +++ b/bsps/include/grlib/ambapp_bus_grlib.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* LEON3 GRLIB AMBA Plug & Play bus driver interface. * * COPYRIGHT (c) 2008. @@ -6,9 +8,26 @@ * This is driver is a wrapper for the general AMBA Plug & Play bus * driver. This is the root bus driver for GRLIB systems. * - * 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. + * 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 __AMBAPP_BUS_GRLIB_H__ diff --git a/bsps/include/grlib/ambapp_ids.h b/bsps/include/grlib/ambapp_ids.h index 629b4fb37a..df578d093a 100644 --- a/bsps/include/grlib/ambapp_ids.h +++ b/bsps/include/grlib/ambapp_ids.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup amba @@ -11,9 +13,26 @@ * This header file provide all known VENDOR and DEVICE IDs available * in the AMBA Plug & Play information. Taken from GRLIB 3386. * - * 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. + * 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. * */ diff --git a/bsps/include/grlib/apbuart-regs.h b/bsps/include/grlib/apbuart-regs.h new file mode 100644 index 0000000000..c3ea2d0f8e --- /dev/null +++ b/bsps/include/grlib/apbuart-regs.h @@ -0,0 +1,281 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBAPBUART + * + * @brief This header file defines the APBUART register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/apbuart-header */ + +#ifndef _GRLIB_APBUART_REGS_H +#define _GRLIB_APBUART_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/apbuart */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUART APBUART + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the APBUART interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUARTDATA UART data register (DATA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define APBUART_DATA_DATA_SHIFT 0 +#define APBUART_DATA_DATA_MASK 0xffU +#define APBUART_DATA_DATA_GET( _reg ) \ + ( ( ( _reg ) & APBUART_DATA_DATA_MASK ) >> \ + APBUART_DATA_DATA_SHIFT ) +#define APBUART_DATA_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~APBUART_DATA_DATA_MASK ) | \ + ( ( ( _val ) << APBUART_DATA_DATA_SHIFT ) & \ + APBUART_DATA_DATA_MASK ) ) +#define APBUART_DATA_DATA( _val ) \ + ( ( ( _val ) << APBUART_DATA_DATA_SHIFT ) & \ + APBUART_DATA_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUARTSTATUS UART status register (STATUS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define APBUART_STATUS_RCNT_SHIFT 26 +#define APBUART_STATUS_RCNT_MASK 0xfc000000U +#define APBUART_STATUS_RCNT_GET( _reg ) \ + ( ( ( _reg ) & APBUART_STATUS_RCNT_MASK ) >> \ + APBUART_STATUS_RCNT_SHIFT ) +#define APBUART_STATUS_RCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~APBUART_STATUS_RCNT_MASK ) | \ + ( ( ( _val ) << APBUART_STATUS_RCNT_SHIFT ) & \ + APBUART_STATUS_RCNT_MASK ) ) +#define APBUART_STATUS_RCNT( _val ) \ + ( ( ( _val ) << APBUART_STATUS_RCNT_SHIFT ) & \ + APBUART_STATUS_RCNT_MASK ) + +#define APBUART_STATUS_TCNT_SHIFT 20 +#define APBUART_STATUS_TCNT_MASK 0x3f00000U +#define APBUART_STATUS_TCNT_GET( _reg ) \ + ( ( ( _reg ) & APBUART_STATUS_TCNT_MASK ) >> \ + APBUART_STATUS_TCNT_SHIFT ) +#define APBUART_STATUS_TCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~APBUART_STATUS_TCNT_MASK ) | \ + ( ( ( _val ) << APBUART_STATUS_TCNT_SHIFT ) & \ + APBUART_STATUS_TCNT_MASK ) ) +#define APBUART_STATUS_TCNT( _val ) \ + ( ( ( _val ) << APBUART_STATUS_TCNT_SHIFT ) & \ + APBUART_STATUS_TCNT_MASK ) + +#define APBUART_STATUS_RF 0x400U + +#define APBUART_STATUS_TF 0x200U + +#define APBUART_STATUS_RH 0x100U + +#define APBUART_STATUS_TH 0x80U + +#define APBUART_STATUS_FE 0x40U + +#define APBUART_STATUS_PE 0x20U + +#define APBUART_STATUS_OV 0x10U + +#define APBUART_STATUS_BR 0x8U + +#define APBUART_STATUS_TE 0x4U + +#define APBUART_STATUS_TS 0x2U + +#define APBUART_STATUS_DR 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUARTCTRL UART control register (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define APBUART_CTRL_FA 0x80000000U + +#define APBUART_CTRL_SI 0x4000U + +#define APBUART_CTRL_DI 0x2000U + +#define APBUART_CTRL_BI 0x1000U + +#define APBUART_CTRL_DB 0x800U + +#define APBUART_CTRL_RF 0x400U + +#define APBUART_CTRL_TF 0x200U + +#define APBUART_CTRL_EC 0x100U + +#define APBUART_CTRL_LB 0x80U + +#define APBUART_CTRL_FL 0x40U + +#define APBUART_CTRL_PE 0x20U + +#define APBUART_CTRL_PS 0x10U + +#define APBUART_CTRL_TI 0x8U + +#define APBUART_CTRL_RI 0x4U + +#define APBUART_CTRL_TE 0x2U + +#define APBUART_CTRL_RE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUARTSCALER UART scaler reload register (SCALER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define APBUART_SCALER_SCALER_RELOAD_VALUE_SHIFT 0 +#define APBUART_SCALER_SCALER_RELOAD_VALUE_MASK 0xfffffU +#define APBUART_SCALER_SCALER_RELOAD_VALUE_GET( _reg ) \ + ( ( ( _reg ) & APBUART_SCALER_SCALER_RELOAD_VALUE_MASK ) >> \ + APBUART_SCALER_SCALER_RELOAD_VALUE_SHIFT ) +#define APBUART_SCALER_SCALER_RELOAD_VALUE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~APBUART_SCALER_SCALER_RELOAD_VALUE_MASK ) | \ + ( ( ( _val ) << APBUART_SCALER_SCALER_RELOAD_VALUE_SHIFT ) & \ + APBUART_SCALER_SCALER_RELOAD_VALUE_MASK ) ) +#define APBUART_SCALER_SCALER_RELOAD_VALUE( _val ) \ + ( ( ( _val ) << APBUART_SCALER_SCALER_RELOAD_VALUE_SHIFT ) & \ + APBUART_SCALER_SCALER_RELOAD_VALUE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBAPBUARTFIFO UART FIFO debug register (FIFO) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define APBUART_FIFO_DATA_SHIFT 0 +#define APBUART_FIFO_DATA_MASK 0xffU +#define APBUART_FIFO_DATA_GET( _reg ) \ + ( ( ( _reg ) & APBUART_FIFO_DATA_MASK ) >> \ + APBUART_FIFO_DATA_SHIFT ) +#define APBUART_FIFO_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~APBUART_FIFO_DATA_MASK ) | \ + ( ( ( _val ) << APBUART_FIFO_DATA_SHIFT ) & \ + APBUART_FIFO_DATA_MASK ) ) +#define APBUART_FIFO_DATA( _val ) \ + ( ( ( _val ) << APBUART_FIFO_DATA_SHIFT ) & \ + APBUART_FIFO_DATA_MASK ) + +/** @} */ + +/** + * @brief This structure defines the APBUART register block memory map. + */ +typedef struct apbuart { + /** + * @brief See @ref RTEMSDeviceGRLIBAPBUARTDATA. + */ + uint32_t data; + + /** + * @brief See @ref RTEMSDeviceGRLIBAPBUARTSTATUS. + */ + uint32_t status; + + /** + * @brief See @ref RTEMSDeviceGRLIBAPBUARTCTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBAPBUARTSCALER. + */ + uint32_t scaler; + + /** + * @brief See @ref RTEMSDeviceGRLIBAPBUARTFIFO. + */ + uint32_t fifo; +} apbuart; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_APBUART_REGS_H */ diff --git a/bsps/include/grlib/apbuart.h b/bsps/include/grlib/apbuart.h index f54689abc2..b53c338407 100644 --- a/bsps/include/grlib/apbuart.h +++ b/bsps/include/grlib/apbuart.h @@ -1,77 +1,110 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file - * @ingroup uart + * + * @ingroup RTEMSDeviceGRLIBAPBUART + * + * @brief This header file defines the APBUART interface. */ /* - * COPYRIGHT (c) 2007. - * Gaisler Research + * Copyright (C) 2021 embedded brains GmbH & Co. KG * - * 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. + * 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 __APBUART_H__ -#define __APBUART_H__ - -/** - * @defgroup uart UART +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: * - * @ingroup RTEMSBSPsSharedGRLIB + * https://www.rtems.org/bugs.html * - * @brief Driver interface for APBUART + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: * - * @{ + * https://docs.rtems.org */ -#include "ambapp.h" -#include "grlib.h" +/* Generated from spec:/dev/grlib/if/apbuart-header-2 */ + +#ifndef _GRLIB_APBUART_H +#define _GRLIB_APBUART_H + +#include <grlib/apbuart-regs.h> #ifdef __cplusplus extern "C" { #endif -#define APBUART_CTRL_RE 0x1 -#define APBUART_CTRL_TE 0x2 -#define APBUART_CTRL_RI 0x4 -#define APBUART_CTRL_TI 0x8 -#define APBUART_CTRL_PS 0x10 -#define APBUART_CTRL_PE 0x20 -#define APBUART_CTRL_FL 0x40 -#define APBUART_CTRL_LB 0x80 -#define APBUART_CTRL_EC 0x100 -#define APBUART_CTRL_TF 0x200 -#define APBUART_CTRL_RF 0x400 -#define APBUART_CTRL_DB 0x800 -#define APBUART_CTRL_BI 0x1000 -#define APBUART_CTRL_DI 0x2000 -#define APBUART_CTRL_FA 0x80000000 +/* Generated from spec:/dev/grlib/if/apbuart-inbyte-nonblocking */ -#define APBUART_STATUS_DR 0x1 -#define APBUART_STATUS_TS 0x2 -#define APBUART_STATUS_TE 0x4 -#define APBUART_STATUS_BR 0x8 -#define APBUART_STATUS_OV 0x10 -#define APBUART_STATUS_PE 0x20 -#define APBUART_STATUS_FE 0x40 -#define APBUART_STATUS_ERR 0x78 -#define APBUART_STATUS_TH 0x80 -#define APBUART_STATUS_RH 0x100 -#define APBUART_STATUS_TF 0x200 -#define APBUART_STATUS_RF 0x400 +/** + * @ingroup RTEMSDeviceGRLIBAPBUART + * + * @brief Clears all errors and tries to get one character from the receiver + * FIFO. + * + * @param regs is the pointer to the APBUART register block. + * + * @retval -1 The receiver FIFO was empty. + * + * @return Returns the first character of the receiver FIFO if it was + * non-empty. + */ +int apbuart_inbyte_nonblocking( apbuart *regs ); + +/* Generated from spec:/dev/grlib/if/apbuart-outbyte-polled */ -void apbuart_outbyte_wait(const struct apbuart_regs *regs); +/** + * @ingroup RTEMSDeviceGRLIBAPBUART + * + * @brief Waits until an empty transmitter FIFO was observed and then stores + * the character to the data register. + * + * @param regs is the pointer to the APBUART register block. + * + * @param ch is the character to output. + */ +void apbuart_outbyte_polled( apbuart *regs, char ch ); -void apbuart_outbyte_polled(struct apbuart_regs *regs, char ch); +/* Generated from spec:/dev/grlib/if/apbuart-outbyte-wait */ -int apbuart_inbyte_nonblocking(struct apbuart_regs *regs); +/** + * @ingroup RTEMSDeviceGRLIBAPBUART + * + * @brief Ensures that at least once an empty transmitter FIFO was observed. + * + * @param regs is the pointer to the APBUART register block. + */ +void apbuart_outbyte_wait( const apbuart *regs ); #ifdef __cplusplus } #endif -/** @} */ - -#endif /* __APBUART_H__ */ +#endif /* _GRLIB_APBUART_H */ diff --git a/bsps/include/grlib/apbuart_cons.h b/bsps/include/grlib/apbuart_cons.h index d0ac9244af..a2846580cc 100644 --- a/bsps/include/grlib/apbuart_cons.h +++ b/bsps/include/grlib/apbuart_cons.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* APBUART Console driver interface * * COPYRIGHT (c) 2015. * Cobham Gaisler. * - * 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. + * 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 __APBUART_CONS_H__ diff --git a/bsps/include/grlib/apbuart_termios.h b/bsps/include/grlib/apbuart_termios.h index ca6b5d3b3e..a19b99b609 100644 --- a/bsps/include/grlib/apbuart_termios.h +++ b/bsps/include/grlib/apbuart_termios.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * COPYRIGHT (c) 1989-1998. * On-Line Applications Research Corporation (OAR). @@ -6,16 +8,33 @@ * COPYRIGHT (c) 2004. * Gaisler Research. * - * 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. + * 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 APBUART_TERMIOS_H #define APBUART_TERMIOS_H #include <rtems/termiostypes.h> -#include "grlib.h" +#include "apbuart.h" #ifdef __cplusplus extern "C" { @@ -23,7 +42,7 @@ extern "C" { struct apbuart_context { rtems_termios_device_context base; - struct apbuart_regs *regs; + apbuart *regs; unsigned int freq_hz; rtems_vector_number irq; volatile int sending; diff --git a/bsps/include/grlib/b1553brm.h b/bsps/include/grlib/b1553brm.h index bb7294de43..0e4a5f4881 100644 --- a/bsps/include/grlib/b1553brm.h +++ b/bsps/include/grlib/b1553brm.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup 1553 @@ -7,9 +9,26 @@ * COPYRIGHT (c) 2006. * Cobham Gaisler AB. * - * 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. + * 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 __B1553BRM_H__ diff --git a/bsps/include/grlib/b1553rt.h b/bsps/include/grlib/b1553rt.h index fbe4b706de..d3aa3eb34a 100644 --- a/bsps/include/grlib/b1553rt.h +++ b/bsps/include/grlib/b1553rt.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* B1553RT driver interface * * COPYRIGHT (c) 2009. * Aeroflex Gaisler AB * - * 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. + * 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 __B1553RT_H__ diff --git a/bsps/include/grlib/bspcommon.h b/bsps/include/grlib/bspcommon.h index d3470009f8..996fe6e80b 100644 --- a/bsps/include/grlib/bspcommon.h +++ b/bsps/include/grlib/bspcommon.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* Common BSP/driver configuration routines. * * COPYRIGHT (c) 2015. * Cobham Gaisler. * - * 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. + * 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. * */ diff --git a/bsps/include/grlib/canmux.h b/bsps/include/grlib/canmux.h index 02727f44c7..1b59f7d468 100644 --- a/bsps/include/grlib/canmux.h +++ b/bsps/include/grlib/canmux.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Header file for RTEMS CAN_MUX driver * * COPYRIGHT (c) 2008. * Cobham Gaisler AB. * - * 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. + * 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 __CANMUX_H__ diff --git a/bsps/include/grlib/cons.h b/bsps/include/grlib/cons.h index c30e41cf14..6f1f7ed44f 100644 --- a/bsps/include/grlib/cons.h +++ b/bsps/include/grlib/cons.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* Console driver interface to UART drivers * * - First console device that has System Console flag set will be @@ -8,9 +10,26 @@ * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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 __CONS_H__ diff --git a/bsps/include/grlib/debug_defs.h b/bsps/include/grlib/debug_defs.h index 6425bd6f01..bd425de152 100644 --- a/bsps/include/grlib/debug_defs.h +++ b/bsps/include/grlib/debug_defs.h @@ -1,3 +1,32 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/* + * COPYRIGHT (c) 2007. + * Cobham Gaisler. + * + * 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. + * + */ + /** * @file * @ingroup RTEMSBSPsSharedGRLIB diff --git a/bsps/include/grlib/dsu4-regs.h b/bsps/include/grlib/dsu4-regs.h new file mode 100644 index 0000000000..3695430198 --- /dev/null +++ b/bsps/include/grlib/dsu4-regs.h @@ -0,0 +1,788 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBDSU4 + * + * @brief This header file defines the DSU4 register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/dsu4-header */ + +#ifndef _GRLIB_DSU4_REGS_H +#define _GRLIB_DSU4_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/dsu4 */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4 DSU4 + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the DSU4 interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4CTRL DSU control register (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_CTRL_PW 0x800U + +#define DSU4_CTRL_HL 0x400U + +#define DSU4_CTRL_PE 0x200U + +#define DSU4_CTRL_EB 0x100U + +#define DSU4_CTRL_EE 0x80U + +#define DSU4_CTRL_DM 0x40U + +#define DSU4_CTRL_BZ 0x20U + +#define DSU4_CTRL_BX 0x10U + +#define DSU4_CTRL_BS 0x8U + +#define DSU4_CTRL_BW 0x4U + +#define DSU4_CTRL_BE 0x2U + +#define DSU4_CTRL_TE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4DTTC DSU time tag counter register (DTTC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_DTTC_TIMETAG_SHIFT 0 +#define DSU4_DTTC_TIMETAG_MASK 0xffffffffU +#define DSU4_DTTC_TIMETAG_GET( _reg ) \ + ( ( ( _reg ) & DSU4_DTTC_TIMETAG_MASK ) >> \ + DSU4_DTTC_TIMETAG_SHIFT ) +#define DSU4_DTTC_TIMETAG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_DTTC_TIMETAG_MASK ) | \ + ( ( ( _val ) << DSU4_DTTC_TIMETAG_SHIFT ) & \ + DSU4_DTTC_TIMETAG_MASK ) ) +#define DSU4_DTTC_TIMETAG( _val ) \ + ( ( ( _val ) << DSU4_DTTC_TIMETAG_SHIFT ) & \ + DSU4_DTTC_TIMETAG_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4BRSS DSU break and single step register (BRSS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_BRSS_SS_3_0_SHIFT 16 +#define DSU4_BRSS_SS_3_0_MASK 0xf0000U +#define DSU4_BRSS_SS_3_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_BRSS_SS_3_0_MASK ) >> \ + DSU4_BRSS_SS_3_0_SHIFT ) +#define DSU4_BRSS_SS_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_BRSS_SS_3_0_MASK ) | \ + ( ( ( _val ) << DSU4_BRSS_SS_3_0_SHIFT ) & \ + DSU4_BRSS_SS_3_0_MASK ) ) +#define DSU4_BRSS_SS_3_0( _val ) \ + ( ( ( _val ) << DSU4_BRSS_SS_3_0_SHIFT ) & \ + DSU4_BRSS_SS_3_0_MASK ) + +#define DSU4_BRSS_BN_3_0_SHIFT 0 +#define DSU4_BRSS_BN_3_0_MASK 0xfU +#define DSU4_BRSS_BN_3_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_BRSS_BN_3_0_MASK ) >> \ + DSU4_BRSS_BN_3_0_SHIFT ) +#define DSU4_BRSS_BN_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_BRSS_BN_3_0_MASK ) | \ + ( ( ( _val ) << DSU4_BRSS_BN_3_0_SHIFT ) & \ + DSU4_BRSS_BN_3_0_MASK ) ) +#define DSU4_BRSS_BN_3_0( _val ) \ + ( ( ( _val ) << DSU4_BRSS_BN_3_0_SHIFT ) & \ + DSU4_BRSS_BN_3_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4DBGM DSU debug mode mask register (DBGM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_DBGM_DM_3_0_SHIFT 16 +#define DSU4_DBGM_DM_3_0_MASK 0xf0000U +#define DSU4_DBGM_DM_3_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_DBGM_DM_3_0_MASK ) >> \ + DSU4_DBGM_DM_3_0_SHIFT ) +#define DSU4_DBGM_DM_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_DBGM_DM_3_0_MASK ) | \ + ( ( ( _val ) << DSU4_DBGM_DM_3_0_SHIFT ) & \ + DSU4_DBGM_DM_3_0_MASK ) ) +#define DSU4_DBGM_DM_3_0( _val ) \ + ( ( ( _val ) << DSU4_DBGM_DM_3_0_SHIFT ) & \ + DSU4_DBGM_DM_3_0_MASK ) + +#define DSU4_DBGM_ED_3_0_SHIFT 0 +#define DSU4_DBGM_ED_3_0_MASK 0xfU +#define DSU4_DBGM_ED_3_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_DBGM_ED_3_0_MASK ) >> \ + DSU4_DBGM_ED_3_0_SHIFT ) +#define DSU4_DBGM_ED_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_DBGM_ED_3_0_MASK ) | \ + ( ( ( _val ) << DSU4_DBGM_ED_3_0_SHIFT ) & \ + DSU4_DBGM_ED_3_0_MASK ) ) +#define DSU4_DBGM_ED_3_0( _val ) \ + ( ( ( _val ) << DSU4_DBGM_ED_3_0_SHIFT ) & \ + DSU4_DBGM_ED_3_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4DTR DSU trap register (DTR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_DTR_EM 0x1000U + +#define DSU4_DTR_TRAPTYPE_SHIFT 4 +#define DSU4_DTR_TRAPTYPE_MASK 0xff0U +#define DSU4_DTR_TRAPTYPE_GET( _reg ) \ + ( ( ( _reg ) & DSU4_DTR_TRAPTYPE_MASK ) >> \ + DSU4_DTR_TRAPTYPE_SHIFT ) +#define DSU4_DTR_TRAPTYPE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_DTR_TRAPTYPE_MASK ) | \ + ( ( ( _val ) << DSU4_DTR_TRAPTYPE_SHIFT ) & \ + DSU4_DTR_TRAPTYPE_MASK ) ) +#define DSU4_DTR_TRAPTYPE( _val ) \ + ( ( ( _val ) << DSU4_DTR_TRAPTYPE_SHIFT ) & \ + DSU4_DTR_TRAPTYPE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4DASI DSU ASI diagnostic access register (DASI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_DASI_ASI_SHIFT 0 +#define DSU4_DASI_ASI_MASK 0xffU +#define DSU4_DASI_ASI_GET( _reg ) \ + ( ( ( _reg ) & DSU4_DASI_ASI_MASK ) >> \ + DSU4_DASI_ASI_SHIFT ) +#define DSU4_DASI_ASI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_DASI_ASI_MASK ) | \ + ( ( ( _val ) << DSU4_DASI_ASI_SHIFT ) & \ + DSU4_DASI_ASI_MASK ) ) +#define DSU4_DASI_ASI( _val ) \ + ( ( ( _val ) << DSU4_DASI_ASI_SHIFT ) & \ + DSU4_DASI_ASI_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBC AHB trace buffer control register (ATBC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBC_DCNT_SHIFT 16 +#define DSU4_ATBC_DCNT_MASK 0xff0000U +#define DSU4_ATBC_DCNT_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBC_DCNT_MASK ) >> \ + DSU4_ATBC_DCNT_SHIFT ) +#define DSU4_ATBC_DCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBC_DCNT_MASK ) | \ + ( ( ( _val ) << DSU4_ATBC_DCNT_SHIFT ) & \ + DSU4_ATBC_DCNT_MASK ) ) +#define DSU4_ATBC_DCNT( _val ) \ + ( ( ( _val ) << DSU4_ATBC_DCNT_SHIFT ) & \ + DSU4_ATBC_DCNT_MASK ) + +#define DSU4_ATBC_DF 0x100U + +#define DSU4_ATBC_SF 0x80U + +#define DSU4_ATBC_TE 0x40U + +#define DSU4_ATBC_TF 0x20U + +#define DSU4_ATBC_BW_SHIFT 3 +#define DSU4_ATBC_BW_MASK 0x18U +#define DSU4_ATBC_BW_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBC_BW_MASK ) >> \ + DSU4_ATBC_BW_SHIFT ) +#define DSU4_ATBC_BW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBC_BW_MASK ) | \ + ( ( ( _val ) << DSU4_ATBC_BW_SHIFT ) & \ + DSU4_ATBC_BW_MASK ) ) +#define DSU4_ATBC_BW( _val ) \ + ( ( ( _val ) << DSU4_ATBC_BW_SHIFT ) & \ + DSU4_ATBC_BW_MASK ) + +#define DSU4_ATBC_BR 0x4U + +#define DSU4_ATBC_DM 0x2U + +#define DSU4_ATBC_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBI AHB trace buffer index register (ATBI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBI_INDEX_SHIFT 4 +#define DSU4_ATBI_INDEX_MASK 0xff0U +#define DSU4_ATBI_INDEX_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBI_INDEX_MASK ) >> \ + DSU4_ATBI_INDEX_SHIFT ) +#define DSU4_ATBI_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBI_INDEX_MASK ) | \ + ( ( ( _val ) << DSU4_ATBI_INDEX_SHIFT ) & \ + DSU4_ATBI_INDEX_MASK ) ) +#define DSU4_ATBI_INDEX( _val ) \ + ( ( ( _val ) << DSU4_ATBI_INDEX_SHIFT ) & \ + DSU4_ATBI_INDEX_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBFC \ + * AHB trace buffer filter control register (ATBFC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBFC_WPF_SHIFT 12 +#define DSU4_ATBFC_WPF_MASK 0x3000U +#define DSU4_ATBFC_WPF_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBFC_WPF_MASK ) >> \ + DSU4_ATBFC_WPF_SHIFT ) +#define DSU4_ATBFC_WPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBFC_WPF_MASK ) | \ + ( ( ( _val ) << DSU4_ATBFC_WPF_SHIFT ) & \ + DSU4_ATBFC_WPF_MASK ) ) +#define DSU4_ATBFC_WPF( _val ) \ + ( ( ( _val ) << DSU4_ATBFC_WPF_SHIFT ) & \ + DSU4_ATBFC_WPF_MASK ) + +#define DSU4_ATBFC_BPF_SHIFT 8 +#define DSU4_ATBFC_BPF_MASK 0x300U +#define DSU4_ATBFC_BPF_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBFC_BPF_MASK ) >> \ + DSU4_ATBFC_BPF_SHIFT ) +#define DSU4_ATBFC_BPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBFC_BPF_MASK ) | \ + ( ( ( _val ) << DSU4_ATBFC_BPF_SHIFT ) & \ + DSU4_ATBFC_BPF_MASK ) ) +#define DSU4_ATBFC_BPF( _val ) \ + ( ( ( _val ) << DSU4_ATBFC_BPF_SHIFT ) & \ + DSU4_ATBFC_BPF_MASK ) + +#define DSU4_ATBFC_PF 0x8U + +#define DSU4_ATBFC_AF 0x4U + +#define DSU4_ATBFC_FR 0x2U + +#define DSU4_ATBFC_FW 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBFM \ + * AHB trace buffer filter mask register (ATBFM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBFM_SMASK_15_0_SHIFT 16 +#define DSU4_ATBFM_SMASK_15_0_MASK 0xffff0000U +#define DSU4_ATBFM_SMASK_15_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBFM_SMASK_15_0_MASK ) >> \ + DSU4_ATBFM_SMASK_15_0_SHIFT ) +#define DSU4_ATBFM_SMASK_15_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBFM_SMASK_15_0_MASK ) | \ + ( ( ( _val ) << DSU4_ATBFM_SMASK_15_0_SHIFT ) & \ + DSU4_ATBFM_SMASK_15_0_MASK ) ) +#define DSU4_ATBFM_SMASK_15_0( _val ) \ + ( ( ( _val ) << DSU4_ATBFM_SMASK_15_0_SHIFT ) & \ + DSU4_ATBFM_SMASK_15_0_MASK ) + +#define DSU4_ATBFM_MMASK_15_0_SHIFT 0 +#define DSU4_ATBFM_MMASK_15_0_MASK 0xffffU +#define DSU4_ATBFM_MMASK_15_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBFM_MMASK_15_0_MASK ) >> \ + DSU4_ATBFM_MMASK_15_0_SHIFT ) +#define DSU4_ATBFM_MMASK_15_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBFM_MMASK_15_0_MASK ) | \ + ( ( ( _val ) << DSU4_ATBFM_MMASK_15_0_SHIFT ) & \ + DSU4_ATBFM_MMASK_15_0_MASK ) ) +#define DSU4_ATBFM_MMASK_15_0( _val ) \ + ( ( ( _val ) << DSU4_ATBFM_MMASK_15_0_SHIFT ) & \ + DSU4_ATBFM_MMASK_15_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBBA \ + * AHB trace buffer break address registers (ATBBA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBBA_BADDR_31_2_SHIFT 2 +#define DSU4_ATBBA_BADDR_31_2_MASK 0xfffffffcU +#define DSU4_ATBBA_BADDR_31_2_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBBA_BADDR_31_2_MASK ) >> \ + DSU4_ATBBA_BADDR_31_2_SHIFT ) +#define DSU4_ATBBA_BADDR_31_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBBA_BADDR_31_2_MASK ) | \ + ( ( ( _val ) << DSU4_ATBBA_BADDR_31_2_SHIFT ) & \ + DSU4_ATBBA_BADDR_31_2_MASK ) ) +#define DSU4_ATBBA_BADDR_31_2( _val ) \ + ( ( ( _val ) << DSU4_ATBBA_BADDR_31_2_SHIFT ) & \ + DSU4_ATBBA_BADDR_31_2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ATBBM \ + * AHB trace buffer break mask registers (ATBBM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ATBBM_BMASK_31_2_SHIFT 2 +#define DSU4_ATBBM_BMASK_31_2_MASK 0xfffffffcU +#define DSU4_ATBBM_BMASK_31_2_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ATBBM_BMASK_31_2_MASK ) >> \ + DSU4_ATBBM_BMASK_31_2_SHIFT ) +#define DSU4_ATBBM_BMASK_31_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ATBBM_BMASK_31_2_MASK ) | \ + ( ( ( _val ) << DSU4_ATBBM_BMASK_31_2_SHIFT ) & \ + DSU4_ATBBM_BMASK_31_2_MASK ) ) +#define DSU4_ATBBM_BMASK_31_2( _val ) \ + ( ( ( _val ) << DSU4_ATBBM_BMASK_31_2_SHIFT ) & \ + DSU4_ATBBM_BMASK_31_2_MASK ) + +#define DSU4_ATBBM_LD 0x2U + +#define DSU4_ATBBM_ST 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ICNT Instruction trace count register (ICNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ICNT_CE 0x80000000U + +#define DSU4_ICNT_IC 0x40000000U + +#define DSU4_ICNT_PE 0x20000000U + +#define DSU4_ICNT_ICOUNT_28_0_SHIFT 0 +#define DSU4_ICNT_ICOUNT_28_0_MASK 0x1fffffffU +#define DSU4_ICNT_ICOUNT_28_0_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ICNT_ICOUNT_28_0_MASK ) >> \ + DSU4_ICNT_ICOUNT_28_0_SHIFT ) +#define DSU4_ICNT_ICOUNT_28_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ICNT_ICOUNT_28_0_MASK ) | \ + ( ( ( _val ) << DSU4_ICNT_ICOUNT_28_0_SHIFT ) & \ + DSU4_ICNT_ICOUNT_28_0_MASK ) ) +#define DSU4_ICNT_ICOUNT_28_0( _val ) \ + ( ( ( _val ) << DSU4_ICNT_ICOUNT_28_0_SHIFT ) & \ + DSU4_ICNT_ICOUNT_28_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4AHBWPC \ + * AHB watchpoint control register (AHBWPC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_AHBWPC_IN 0x40U + +#define DSU4_AHBWPC_CP 0x20U + +#define DSU4_AHBWPC_EN 0x10U + +#define DSU4_AHBWPC_IN 0x4U + +#define DSU4_AHBWPC_CP 0x2U + +#define DSU4_AHBWPC_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4AHBWPD AHB watchpoint data registers (AHBWPD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_AHBWPD_DATA_SHIFT 0 +#define DSU4_AHBWPD_DATA_MASK 0xffffffffU +#define DSU4_AHBWPD_DATA_GET( _reg ) \ + ( ( ( _reg ) & DSU4_AHBWPD_DATA_MASK ) >> \ + DSU4_AHBWPD_DATA_SHIFT ) +#define DSU4_AHBWPD_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_AHBWPD_DATA_MASK ) | \ + ( ( ( _val ) << DSU4_AHBWPD_DATA_SHIFT ) & \ + DSU4_AHBWPD_DATA_MASK ) ) +#define DSU4_AHBWPD_DATA( _val ) \ + ( ( ( _val ) << DSU4_AHBWPD_DATA_SHIFT ) & \ + DSU4_AHBWPD_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4AHBWPM AHB watchpoint mask registers (AHBWPM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_AHBWPM_MASK_SHIFT 0 +#define DSU4_AHBWPM_MASK_MASK 0xffffffffU +#define DSU4_AHBWPM_MASK_GET( _reg ) \ + ( ( ( _reg ) & DSU4_AHBWPM_MASK_MASK ) >> \ + DSU4_AHBWPM_MASK_SHIFT ) +#define DSU4_AHBWPM_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_AHBWPM_MASK_MASK ) | \ + ( ( ( _val ) << DSU4_AHBWPM_MASK_SHIFT ) & \ + DSU4_AHBWPM_MASK_MASK ) ) +#define DSU4_AHBWPM_MASK( _val ) \ + ( ( ( _val ) << DSU4_AHBWPM_MASK_SHIFT ) & \ + DSU4_AHBWPM_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ITBC0 \ + * Instruction trace buffer control register 0 (ITBC0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ITBC0_TFILT_SHIFT 28 +#define DSU4_ITBC0_TFILT_MASK 0xf0000000U +#define DSU4_ITBC0_TFILT_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ITBC0_TFILT_MASK ) >> \ + DSU4_ITBC0_TFILT_SHIFT ) +#define DSU4_ITBC0_TFILT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ITBC0_TFILT_MASK ) | \ + ( ( ( _val ) << DSU4_ITBC0_TFILT_SHIFT ) & \ + DSU4_ITBC0_TFILT_MASK ) ) +#define DSU4_ITBC0_TFILT( _val ) \ + ( ( ( _val ) << DSU4_ITBC0_TFILT_SHIFT ) & \ + DSU4_ITBC0_TFILT_MASK ) + +#define DSU4_ITBC0_ITPOINTER_SHIFT 0 +#define DSU4_ITBC0_ITPOINTER_MASK 0xffffU +#define DSU4_ITBC0_ITPOINTER_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ITBC0_ITPOINTER_MASK ) >> \ + DSU4_ITBC0_ITPOINTER_SHIFT ) +#define DSU4_ITBC0_ITPOINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ITBC0_ITPOINTER_MASK ) | \ + ( ( ( _val ) << DSU4_ITBC0_ITPOINTER_SHIFT ) & \ + DSU4_ITBC0_ITPOINTER_MASK ) ) +#define DSU4_ITBC0_ITPOINTER( _val ) \ + ( ( ( _val ) << DSU4_ITBC0_ITPOINTER_SHIFT ) & \ + DSU4_ITBC0_ITPOINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBDSU4ITBC1 \ + * Instruction trace buffer control register 1 (ITBC1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define DSU4_ITBC1_WO 0x8000000U + +#define DSU4_ITBC1_TLIM_SHIFT 24 +#define DSU4_ITBC1_TLIM_MASK 0x7000000U +#define DSU4_ITBC1_TLIM_GET( _reg ) \ + ( ( ( _reg ) & DSU4_ITBC1_TLIM_MASK ) >> \ + DSU4_ITBC1_TLIM_SHIFT ) +#define DSU4_ITBC1_TLIM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~DSU4_ITBC1_TLIM_MASK ) | \ + ( ( ( _val ) << DSU4_ITBC1_TLIM_SHIFT ) & \ + DSU4_ITBC1_TLIM_MASK ) ) +#define DSU4_ITBC1_TLIM( _val ) \ + ( ( ( _val ) << DSU4_ITBC1_TLIM_SHIFT ) & \ + DSU4_ITBC1_TLIM_MASK ) + +#define DSU4_ITBC1_TOV 0x800000U + +/** @} */ + +/** + * @brief This structure defines the DSU4 register block memory map. + */ +typedef struct dsu4 { + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4CTRL. + */ + uint32_t ctrl; + + uint32_t reserved_4_8; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4DTTC. + */ + uint32_t dttc; + + uint32_t reserved_c_20[ 5 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4BRSS. + */ + uint32_t brss; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4DBGM. + */ + uint32_t dbgm; + + uint32_t reserved_28_40[ 6 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBC. + */ + uint32_t atbc; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBI. + */ + uint32_t atbi; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBFC. + */ + uint32_t atbfc; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBFM. + */ + uint32_t atbfm; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBBA. + */ + uint32_t atbba_0; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBBM. + */ + uint32_t atbbm_0; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBBA. + */ + uint32_t atbba_1; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ATBBM. + */ + uint32_t atbbm_1; + + uint32_t reserved_60_70[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ICNT. + */ + uint32_t icnt; + + uint32_t reserved_74_80[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPC. + */ + uint32_t ahbwpc; + + uint32_t reserved_84_90[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPD. + */ + uint32_t ahbwpd_0; + + uint32_t reserved_94_9c[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPD. + */ + uint32_t ahbwpd_1; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPM. + */ + uint32_t ahbwpm_0; + + uint32_t reserved_a4_ac[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPM. + */ + uint32_t ahbwpm_1; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPD. + */ + uint32_t ahbwpd_2; + + uint32_t reserved_b4_bc[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPD. + */ + uint32_t ahbwpd_3; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPM. + */ + uint32_t ahbwpm_2; + + uint32_t reserved_c4_cc[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4AHBWPM. + */ + uint32_t ahbwpm_3; + + uint32_t reserved_d0_110000[ 278476 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ITBC0. + */ + uint32_t itbc0; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4ITBC1. + */ + uint32_t itbc1; + + uint32_t reserved_110008_400020[ 770054 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4DTR. + */ + uint32_t dtr; + + /** + * @brief See @ref RTEMSDeviceGRLIBDSU4DASI. + */ + uint32_t dasi; +} dsu4; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_DSU4_REGS_H */ diff --git a/bsps/include/grlib/ftmctrl-regs.h b/bsps/include/grlib/ftmctrl-regs.h new file mode 100644 index 0000000000..fb4203270c --- /dev/null +++ b/bsps/include/grlib/ftmctrl-regs.h @@ -0,0 +1,322 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBFTMCTRL + * + * @brief This header file defines the FTMCTRL register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/ftmctrl-header */ + +#ifndef _GRLIB_FTMCTRL_REGS_H +#define _GRLIB_FTMCTRL_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/ftmctrl */ + +/** + * @defgroup RTEMSDeviceGRLIBFTMCTRL FTMCTRL + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the FTMCTRL interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBFTMCTRLMCFG1 \ + * Memory configuration register 1 (MCFG1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define FTMCTRL_MCFG1_PBRDY 0x40000000U + +#define FTMCTRL_MCFG1_ABRDY 0x20000000U + +#define FTMCTRL_MCFG1_IOBUSW_SHIFT 27 +#define FTMCTRL_MCFG1_IOBUSW_MASK 0x18000000U +#define FTMCTRL_MCFG1_IOBUSW_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_IOBUSW_MASK ) >> \ + FTMCTRL_MCFG1_IOBUSW_SHIFT ) +#define FTMCTRL_MCFG1_IOBUSW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_IOBUSW_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_IOBUSW_SHIFT ) & \ + FTMCTRL_MCFG1_IOBUSW_MASK ) ) +#define FTMCTRL_MCFG1_IOBUSW( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_IOBUSW_SHIFT ) & \ + FTMCTRL_MCFG1_IOBUSW_MASK ) + +#define FTMCTRL_MCFG1_IBRDY 0x4000000U + +#define FTMCTRL_MCFG1_BEXCN 0x2000000U + +#define FTMCTRL_MCFG1_IO_WAITSTATES_SHIFT 20 +#define FTMCTRL_MCFG1_IO_WAITSTATES_MASK 0xf00000U +#define FTMCTRL_MCFG1_IO_WAITSTATES_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_IO_WAITSTATES_MASK ) >> \ + FTMCTRL_MCFG1_IO_WAITSTATES_SHIFT ) +#define FTMCTRL_MCFG1_IO_WAITSTATES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_IO_WAITSTATES_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_IO_WAITSTATES_SHIFT ) & \ + FTMCTRL_MCFG1_IO_WAITSTATES_MASK ) ) +#define FTMCTRL_MCFG1_IO_WAITSTATES( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_IO_WAITSTATES_SHIFT ) & \ + FTMCTRL_MCFG1_IO_WAITSTATES_MASK ) + +#define FTMCTRL_MCFG1_IOEN 0x80000U + +#define FTMCTRL_MCFG1_R 0x40000U + +#define FTMCTRL_MCFG1_ROMBANKSZ_SHIFT 14 +#define FTMCTRL_MCFG1_ROMBANKSZ_MASK 0x3c000U +#define FTMCTRL_MCFG1_ROMBANKSZ_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_ROMBANKSZ_MASK ) >> \ + FTMCTRL_MCFG1_ROMBANKSZ_SHIFT ) +#define FTMCTRL_MCFG1_ROMBANKSZ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_ROMBANKSZ_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_ROMBANKSZ_SHIFT ) & \ + FTMCTRL_MCFG1_ROMBANKSZ_MASK ) ) +#define FTMCTRL_MCFG1_ROMBANKSZ( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_ROMBANKSZ_SHIFT ) & \ + FTMCTRL_MCFG1_ROMBANKSZ_MASK ) + +#define FTMCTRL_MCFG1_PWEN 0x800U + +#define FTMCTRL_MCFG1_PROM_WIDTH_SHIFT 8 +#define FTMCTRL_MCFG1_PROM_WIDTH_MASK 0x300U +#define FTMCTRL_MCFG1_PROM_WIDTH_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_PROM_WIDTH_MASK ) >> \ + FTMCTRL_MCFG1_PROM_WIDTH_SHIFT ) +#define FTMCTRL_MCFG1_PROM_WIDTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_PROM_WIDTH_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_WIDTH_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_WIDTH_MASK ) ) +#define FTMCTRL_MCFG1_PROM_WIDTH( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_WIDTH_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_WIDTH_MASK ) + +#define FTMCTRL_MCFG1_PROM_WRITE_WS_SHIFT 4 +#define FTMCTRL_MCFG1_PROM_WRITE_WS_MASK 0xf0U +#define FTMCTRL_MCFG1_PROM_WRITE_WS_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_PROM_WRITE_WS_MASK ) >> \ + FTMCTRL_MCFG1_PROM_WRITE_WS_SHIFT ) +#define FTMCTRL_MCFG1_PROM_WRITE_WS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_PROM_WRITE_WS_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_WRITE_WS_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_WRITE_WS_MASK ) ) +#define FTMCTRL_MCFG1_PROM_WRITE_WS( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_WRITE_WS_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_WRITE_WS_MASK ) + +#define FTMCTRL_MCFG1_PROM_READ_WS_SHIFT 0 +#define FTMCTRL_MCFG1_PROM_READ_WS_MASK 0xfU +#define FTMCTRL_MCFG1_PROM_READ_WS_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG1_PROM_READ_WS_MASK ) >> \ + FTMCTRL_MCFG1_PROM_READ_WS_SHIFT ) +#define FTMCTRL_MCFG1_PROM_READ_WS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG1_PROM_READ_WS_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_READ_WS_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_READ_WS_MASK ) ) +#define FTMCTRL_MCFG1_PROM_READ_WS( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG1_PROM_READ_WS_SHIFT ) & \ + FTMCTRL_MCFG1_PROM_READ_WS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBFTMCTRLMCFG3 \ + * Memory configuration register 3 (MCFG3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define FTMCTRL_MCFG3_ME 0x8000000U + +#define FTMCTRL_MCFG3_WB 0x800U + +#define FTMCTRL_MCFG3_RB 0x400U + +#define FTMCTRL_MCFG3_PE 0x100U + +#define FTMCTRL_MCFG3_TCB_SHIFT 0 +#define FTMCTRL_MCFG3_TCB_MASK 0xffU +#define FTMCTRL_MCFG3_TCB_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG3_TCB_MASK ) >> \ + FTMCTRL_MCFG3_TCB_SHIFT ) +#define FTMCTRL_MCFG3_TCB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG3_TCB_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG3_TCB_SHIFT ) & \ + FTMCTRL_MCFG3_TCB_MASK ) ) +#define FTMCTRL_MCFG3_TCB( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG3_TCB_SHIFT ) & \ + FTMCTRL_MCFG3_TCB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBFTMCTRLMCFG5 \ + * Memory configuration register 5 (MCFG5) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define FTMCTRL_MCFG5_IOHWS_SHIFT 23 +#define FTMCTRL_MCFG5_IOHWS_MASK 0x3f800000U +#define FTMCTRL_MCFG5_IOHWS_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG5_IOHWS_MASK ) >> \ + FTMCTRL_MCFG5_IOHWS_SHIFT ) +#define FTMCTRL_MCFG5_IOHWS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG5_IOHWS_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG5_IOHWS_SHIFT ) & \ + FTMCTRL_MCFG5_IOHWS_MASK ) ) +#define FTMCTRL_MCFG5_IOHWS( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG5_IOHWS_SHIFT ) & \ + FTMCTRL_MCFG5_IOHWS_MASK ) + +#define FTMCTRL_MCFG5_ROMHWS_SHIFT 7 +#define FTMCTRL_MCFG5_ROMHWS_MASK 0x3f80U +#define FTMCTRL_MCFG5_ROMHWS_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG5_ROMHWS_MASK ) >> \ + FTMCTRL_MCFG5_ROMHWS_SHIFT ) +#define FTMCTRL_MCFG5_ROMHWS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG5_ROMHWS_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG5_ROMHWS_SHIFT ) & \ + FTMCTRL_MCFG5_ROMHWS_MASK ) ) +#define FTMCTRL_MCFG5_ROMHWS( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG5_ROMHWS_SHIFT ) & \ + FTMCTRL_MCFG5_ROMHWS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBFTMCTRLMCFG7 \ + * Memory configuration register 7 (MCFG7) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define FTMCTRL_MCFG7_BRDYNCNT_SHIFT 16 +#define FTMCTRL_MCFG7_BRDYNCNT_MASK 0xffff0000U +#define FTMCTRL_MCFG7_BRDYNCNT_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG7_BRDYNCNT_MASK ) >> \ + FTMCTRL_MCFG7_BRDYNCNT_SHIFT ) +#define FTMCTRL_MCFG7_BRDYNCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG7_BRDYNCNT_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG7_BRDYNCNT_SHIFT ) & \ + FTMCTRL_MCFG7_BRDYNCNT_MASK ) ) +#define FTMCTRL_MCFG7_BRDYNCNT( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG7_BRDYNCNT_SHIFT ) & \ + FTMCTRL_MCFG7_BRDYNCNT_MASK ) + +#define FTMCTRL_MCFG7_BRDYNRLD_SHIFT 0 +#define FTMCTRL_MCFG7_BRDYNRLD_MASK 0xffffU +#define FTMCTRL_MCFG7_BRDYNRLD_GET( _reg ) \ + ( ( ( _reg ) & FTMCTRL_MCFG7_BRDYNRLD_MASK ) >> \ + FTMCTRL_MCFG7_BRDYNRLD_SHIFT ) +#define FTMCTRL_MCFG7_BRDYNRLD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~FTMCTRL_MCFG7_BRDYNRLD_MASK ) | \ + ( ( ( _val ) << FTMCTRL_MCFG7_BRDYNRLD_SHIFT ) & \ + FTMCTRL_MCFG7_BRDYNRLD_MASK ) ) +#define FTMCTRL_MCFG7_BRDYNRLD( _val ) \ + ( ( ( _val ) << FTMCTRL_MCFG7_BRDYNRLD_SHIFT ) & \ + FTMCTRL_MCFG7_BRDYNRLD_MASK ) + +/** @} */ + +/** + * @brief This structure defines the FTMCTRL register block memory map. + */ +typedef struct ftmctrl { + /** + * @brief See @ref RTEMSDeviceGRLIBFTMCTRLMCFG1. + */ + uint32_t mcfg1; + + uint32_t reserved_4_8; + + /** + * @brief See @ref RTEMSDeviceGRLIBFTMCTRLMCFG3. + */ + uint32_t mcfg3; + + uint32_t reserved_c_10; + + /** + * @brief See @ref RTEMSDeviceGRLIBFTMCTRLMCFG5. + */ + uint32_t mcfg5; + + uint32_t reserved_14_18; + + /** + * @brief See @ref RTEMSDeviceGRLIBFTMCTRLMCFG7. + */ + uint32_t mcfg7; +} ftmctrl; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_FTMCTRL_REGS_H */ diff --git a/bsps/include/grlib/genirq.h b/bsps/include/grlib/genirq.h index 673be173b1..3c99b5a704 100644 --- a/bsps/include/grlib/genirq.h +++ b/bsps/include/grlib/genirq.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* General Shared Interrupt handling function interface * * The functions does not manipulate the IRQ controller or the @@ -8,9 +10,26 @@ * COPYRIGHT (c) 2008. * Cobham Gaisler AB. * - * 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. + * 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 __GENIRQ_H__ diff --git a/bsps/include/grlib/gpiolib.h b/bsps/include/grlib/gpiolib.h index f82d4fa2c2..c0f865fff2 100644 --- a/bsps/include/grlib/gpiolib.h +++ b/bsps/include/grlib/gpiolib.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GPIO Library interface * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __GPIOLIB_H__ @@ -59,7 +78,7 @@ extern int gpiolib_irq_register(void *handle, void *func, void *arg); /*** Driver Interface ***/ struct gpiolib_info { - char devName[64]; + char devName[80]; }; struct gpiolib_drv_ops { diff --git a/bsps/include/grlib/gptimer-regs.h b/bsps/include/grlib/gptimer-regs.h new file mode 100644 index 0000000000..f71343a442 --- /dev/null +++ b/bsps/include/grlib/gptimer-regs.h @@ -0,0 +1,379 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBGPTIMER + * + * @brief This header file defines the GPTIMER register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/gptimer-header */ + +#ifndef _GRLIB_GPTIMER_REGS_H +#define _GRLIB_GPTIMER_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/group */ + +/** + * @defgroup RTEMSDeviceGRLIB GRLIB + * + * @ingroup RTEMSDeviceDrivers + * + * @brief This group contains the GRLIB interfaces. + */ + +/* Generated from spec:/dev/grlib/if/gptimer-timer */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERTimer GPTIMER TIMER + * + * @ingroup RTEMSDeviceGRLIBGPTIMER + * + * @brief This group contains the GPTIMER TIMER interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERTimerTCNTVAL \ + * Timer n counter value register (TCNTVAL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_TCNTVAL_TCVAL_SHIFT 0 +#define GPTIMER_TCNTVAL_TCVAL_MASK 0xffffffffU +#define GPTIMER_TCNTVAL_TCVAL_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_TCNTVAL_TCVAL_MASK ) >> \ + GPTIMER_TCNTVAL_TCVAL_SHIFT ) +#define GPTIMER_TCNTVAL_TCVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_TCNTVAL_TCVAL_MASK ) | \ + ( ( ( _val ) << GPTIMER_TCNTVAL_TCVAL_SHIFT ) & \ + GPTIMER_TCNTVAL_TCVAL_MASK ) ) +#define GPTIMER_TCNTVAL_TCVAL( _val ) \ + ( ( ( _val ) << GPTIMER_TCNTVAL_TCVAL_SHIFT ) & \ + GPTIMER_TCNTVAL_TCVAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERTimerTRLDVAL \ + * Timer n counter reload value register (TRLDVAL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_TRLDVAL_TRLDVAL_SHIFT 0 +#define GPTIMER_TRLDVAL_TRLDVAL_MASK 0xffffffffU +#define GPTIMER_TRLDVAL_TRLDVAL_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_TRLDVAL_TRLDVAL_MASK ) >> \ + GPTIMER_TRLDVAL_TRLDVAL_SHIFT ) +#define GPTIMER_TRLDVAL_TRLDVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_TRLDVAL_TRLDVAL_MASK ) | \ + ( ( ( _val ) << GPTIMER_TRLDVAL_TRLDVAL_SHIFT ) & \ + GPTIMER_TRLDVAL_TRLDVAL_MASK ) ) +#define GPTIMER_TRLDVAL_TRLDVAL( _val ) \ + ( ( ( _val ) << GPTIMER_TRLDVAL_TRLDVAL_SHIFT ) & \ + GPTIMER_TRLDVAL_TRLDVAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERTimerTCTRL Timer n control register (TCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_TCTRL_WS 0x100U + +#define GPTIMER_TCTRL_WN 0x80U + +#define GPTIMER_TCTRL_DH 0x40U + +#define GPTIMER_TCTRL_CH 0x20U + +#define GPTIMER_TCTRL_IP 0x10U + +#define GPTIMER_TCTRL_IE 0x8U + +#define GPTIMER_TCTRL_LD 0x4U + +#define GPTIMER_TCTRL_RS 0x2U + +#define GPTIMER_TCTRL_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERTimerTLATCH Timer n latch register (TLATCH) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_TLATCH_LTCV_SHIFT 0 +#define GPTIMER_TLATCH_LTCV_MASK 0xffffffffU +#define GPTIMER_TLATCH_LTCV_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_TLATCH_LTCV_MASK ) >> \ + GPTIMER_TLATCH_LTCV_SHIFT ) +#define GPTIMER_TLATCH_LTCV_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_TLATCH_LTCV_MASK ) | \ + ( ( ( _val ) << GPTIMER_TLATCH_LTCV_SHIFT ) & \ + GPTIMER_TLATCH_LTCV_MASK ) ) +#define GPTIMER_TLATCH_LTCV( _val ) \ + ( ( ( _val ) << GPTIMER_TLATCH_LTCV_SHIFT ) & \ + GPTIMER_TLATCH_LTCV_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GPTIMER TIMER register block memory map. + */ +typedef struct gptimer_timer { + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERTimerTCNTVAL. + */ + uint32_t tcntval; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERTimerTRLDVAL. + */ + uint32_t trldval; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERTimerTCTRL. + */ + uint32_t tctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERTimerTLATCH. + */ + uint32_t tlatch; +} gptimer_timer; + +/** @} */ + +/* Generated from spec:/dev/grlib/if/gptimer */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMER GPTIMER + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GPTIMER interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERSCALER Scaler value register (SCALER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_SCALER_SCALER_SHIFT 0 +#define GPTIMER_SCALER_SCALER_MASK 0xffffU +#define GPTIMER_SCALER_SCALER_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_SCALER_SCALER_MASK ) >> \ + GPTIMER_SCALER_SCALER_SHIFT ) +#define GPTIMER_SCALER_SCALER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_SCALER_SCALER_MASK ) | \ + ( ( ( _val ) << GPTIMER_SCALER_SCALER_SHIFT ) & \ + GPTIMER_SCALER_SCALER_MASK ) ) +#define GPTIMER_SCALER_SCALER( _val ) \ + ( ( ( _val ) << GPTIMER_SCALER_SCALER_SHIFT ) & \ + GPTIMER_SCALER_SCALER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERSRELOAD \ + * Scaler reload value register (SRELOAD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_SRELOAD_SRELOAD_SHIFT 0 +#define GPTIMER_SRELOAD_SRELOAD_MASK 0xffffU +#define GPTIMER_SRELOAD_SRELOAD_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_SRELOAD_SRELOAD_MASK ) >> \ + GPTIMER_SRELOAD_SRELOAD_SHIFT ) +#define GPTIMER_SRELOAD_SRELOAD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_SRELOAD_SRELOAD_MASK ) | \ + ( ( ( _val ) << GPTIMER_SRELOAD_SRELOAD_SHIFT ) & \ + GPTIMER_SRELOAD_SRELOAD_MASK ) ) +#define GPTIMER_SRELOAD_SRELOAD( _val ) \ + ( ( ( _val ) << GPTIMER_SRELOAD_SRELOAD_SHIFT ) & \ + GPTIMER_SRELOAD_SRELOAD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERCONFIG Configuration register (CONFIG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_CONFIG_EV 0x2000U + +#define GPTIMER_CONFIG_ES 0x1000U + +#define GPTIMER_CONFIG_EL 0x800U + +#define GPTIMER_CONFIG_EE 0x400U + +#define GPTIMER_CONFIG_DF 0x200U + +#define GPTIMER_CONFIG_SI 0x100U + +#define GPTIMER_CONFIG_IRQ_SHIFT 3 +#define GPTIMER_CONFIG_IRQ_MASK 0xf8U +#define GPTIMER_CONFIG_IRQ_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_CONFIG_IRQ_MASK ) >> \ + GPTIMER_CONFIG_IRQ_SHIFT ) +#define GPTIMER_CONFIG_IRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_CONFIG_IRQ_MASK ) | \ + ( ( ( _val ) << GPTIMER_CONFIG_IRQ_SHIFT ) & \ + GPTIMER_CONFIG_IRQ_MASK ) ) +#define GPTIMER_CONFIG_IRQ( _val ) \ + ( ( ( _val ) << GPTIMER_CONFIG_IRQ_SHIFT ) & \ + GPTIMER_CONFIG_IRQ_MASK ) + +#define GPTIMER_CONFIG_TIMERS_SHIFT 0 +#define GPTIMER_CONFIG_TIMERS_MASK 0x7U +#define GPTIMER_CONFIG_TIMERS_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_CONFIG_TIMERS_MASK ) >> \ + GPTIMER_CONFIG_TIMERS_SHIFT ) +#define GPTIMER_CONFIG_TIMERS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_CONFIG_TIMERS_MASK ) | \ + ( ( ( _val ) << GPTIMER_CONFIG_TIMERS_SHIFT ) & \ + GPTIMER_CONFIG_TIMERS_MASK ) ) +#define GPTIMER_CONFIG_TIMERS( _val ) \ + ( ( ( _val ) << GPTIMER_CONFIG_TIMERS_SHIFT ) & \ + GPTIMER_CONFIG_TIMERS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBGPTIMERLATCHCFG \ + * Timer latch configuration register (LATCHCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GPTIMER_LATCHCFG_LATCHSEL_SHIFT 0 +#define GPTIMER_LATCHCFG_LATCHSEL_MASK 0xffffffffU +#define GPTIMER_LATCHCFG_LATCHSEL_GET( _reg ) \ + ( ( ( _reg ) & GPTIMER_LATCHCFG_LATCHSEL_MASK ) >> \ + GPTIMER_LATCHCFG_LATCHSEL_SHIFT ) +#define GPTIMER_LATCHCFG_LATCHSEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GPTIMER_LATCHCFG_LATCHSEL_MASK ) | \ + ( ( ( _val ) << GPTIMER_LATCHCFG_LATCHSEL_SHIFT ) & \ + GPTIMER_LATCHCFG_LATCHSEL_MASK ) ) +#define GPTIMER_LATCHCFG_LATCHSEL( _val ) \ + ( ( ( _val ) << GPTIMER_LATCHCFG_LATCHSEL_SHIFT ) & \ + GPTIMER_LATCHCFG_LATCHSEL_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GPTIMER register block memory map. + */ +typedef struct gptimer { + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERSCALER. + */ + uint32_t scaler; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERSRELOAD. + */ + uint32_t sreload; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERCONFIG. + */ + uint32_t config; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERLATCHCFG. + */ + uint32_t latchcfg; + + /** + * @brief See @ref RTEMSDeviceGRLIBGPTIMERTimer. + */ + gptimer_timer timer[ 15 ]; +} gptimer; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GPTIMER_REGS_H */ diff --git a/bsps/include/grlib/gptimer.h b/bsps/include/grlib/gptimer.h index ee0120d2bd..b5e2c13cbe 100644 --- a/bsps/include/grlib/gptimer.h +++ b/bsps/include/grlib/gptimer.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GPTIMER and GRTIMER timer driver * * COPYRIGHT (c) 2015. * Cobham Gaisler. * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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. * */ diff --git a/bsps/include/grlib/gr1553b-regs.h b/bsps/include/grlib/gr1553b-regs.h new file mode 100644 index 0000000000..9003a9036c --- /dev/null +++ b/bsps/include/grlib/gr1553b-regs.h @@ -0,0 +1,1393 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGR1553B + * + * @brief This header file defines the GR1553B register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/gr1553b-header */ + +#ifndef _GRLIB_GR1553B_REGS_H +#define _GRLIB_GR1553B_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/gr1553b */ + +/** + * @defgroup RTEMSDeviceGR1553B GR1553B + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GR1553B interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGR1553BIRQ GR1553B IRQ Register (IRQ) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_IRQ_BMTOF 0x20000U + +#define GR1553B_IRQ_BMD 0x10000U + +#define GR1553B_IRQ_RTTE 0x400U + +#define GR1553B_IRQ_RTD 0x200U + +#define GR1553B_IRQ_RTEV 0x100U + +#define GR1553B_IRQ_BCWK 0x4U + +#define GR1553B_IRQ_BCD 0x2U + +#define GR1553B_IRQ_BCEV 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BIRQE GR1553B IRQ Enable Register (IRQE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_IRQE_BMTOE 0x20000U + +#define GR1553B_IRQE_BMDE 0x10000U + +#define GR1553B_IRQE_RTTEE 0x400U + +#define GR1553B_IRQE_RTDE 0x200U + +#define GR1553B_IRQE_RTEVE 0x100U + +#define GR1553B_IRQE_BCWKE 0x4U + +#define GR1553B_IRQE_BCDE 0x2U + +#define GR1553B_IRQE_BCEVE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BHC GR1553B Hardware Configuration Register (HC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_HC_MOD 0x80000000U + +#define GR1553B_HC_CVER 0x1000U + +#define GR1553B_HC_XKEYS 0x800U + +#define GR1553B_HC_ENDIAN_SHIFT 9 +#define GR1553B_HC_ENDIAN_MASK 0x600U +#define GR1553B_HC_ENDIAN_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_HC_ENDIAN_MASK ) >> \ + GR1553B_HC_ENDIAN_SHIFT ) +#define GR1553B_HC_ENDIAN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_HC_ENDIAN_MASK ) | \ + ( ( ( _val ) << GR1553B_HC_ENDIAN_SHIFT ) & \ + GR1553B_HC_ENDIAN_MASK ) ) +#define GR1553B_HC_ENDIAN( _val ) \ + ( ( ( _val ) << GR1553B_HC_ENDIAN_SHIFT ) & \ + GR1553B_HC_ENDIAN_MASK ) + +#define GR1553B_HC_SCLK 0x100U + +#define GR1553B_HC_CCFREQ_SHIFT 0 +#define GR1553B_HC_CCFREQ_MASK 0xffU +#define GR1553B_HC_CCFREQ_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_HC_CCFREQ_MASK ) >> \ + GR1553B_HC_CCFREQ_SHIFT ) +#define GR1553B_HC_CCFREQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_HC_CCFREQ_MASK ) | \ + ( ( ( _val ) << GR1553B_HC_CCFREQ_SHIFT ) & \ + GR1553B_HC_CCFREQ_MASK ) ) +#define GR1553B_HC_CCFREQ( _val ) \ + ( ( ( _val ) << GR1553B_HC_CCFREQ_SHIFT ) & \ + GR1553B_HC_CCFREQ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCSC \ + * GR1553B BC Status and Config Register (BCSC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCSC_BCSUP 0x80000000U + +#define GR1553B_BCSC_BCFEAT_SHIFT 28 +#define GR1553B_BCSC_BCFEAT_MASK 0x70000000U +#define GR1553B_BCSC_BCFEAT_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCSC_BCFEAT_MASK ) >> \ + GR1553B_BCSC_BCFEAT_SHIFT ) +#define GR1553B_BCSC_BCFEAT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCSC_BCFEAT_MASK ) | \ + ( ( ( _val ) << GR1553B_BCSC_BCFEAT_SHIFT ) & \ + GR1553B_BCSC_BCFEAT_MASK ) ) +#define GR1553B_BCSC_BCFEAT( _val ) \ + ( ( ( _val ) << GR1553B_BCSC_BCFEAT_SHIFT ) & \ + GR1553B_BCSC_BCFEAT_MASK ) + +#define GR1553B_BCSC_BCCHK 0x10000U + +#define GR1553B_BCSC_ASADL_SHIFT 11 +#define GR1553B_BCSC_ASADL_MASK 0xf800U +#define GR1553B_BCSC_ASADL_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCSC_ASADL_MASK ) >> \ + GR1553B_BCSC_ASADL_SHIFT ) +#define GR1553B_BCSC_ASADL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCSC_ASADL_MASK ) | \ + ( ( ( _val ) << GR1553B_BCSC_ASADL_SHIFT ) & \ + GR1553B_BCSC_ASADL_MASK ) ) +#define GR1553B_BCSC_ASADL( _val ) \ + ( ( ( _val ) << GR1553B_BCSC_ASADL_SHIFT ) & \ + GR1553B_BCSC_ASADL_MASK ) + +#define GR1553B_BCSC_ASST_SHIFT 8 +#define GR1553B_BCSC_ASST_MASK 0x300U +#define GR1553B_BCSC_ASST_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCSC_ASST_MASK ) >> \ + GR1553B_BCSC_ASST_SHIFT ) +#define GR1553B_BCSC_ASST_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCSC_ASST_MASK ) | \ + ( ( ( _val ) << GR1553B_BCSC_ASST_SHIFT ) & \ + GR1553B_BCSC_ASST_MASK ) ) +#define GR1553B_BCSC_ASST( _val ) \ + ( ( ( _val ) << GR1553B_BCSC_ASST_SHIFT ) & \ + GR1553B_BCSC_ASST_MASK ) + +#define GR1553B_BCSC_SCADL_SHIFT 3 +#define GR1553B_BCSC_SCADL_MASK 0xf8U +#define GR1553B_BCSC_SCADL_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCSC_SCADL_MASK ) >> \ + GR1553B_BCSC_SCADL_SHIFT ) +#define GR1553B_BCSC_SCADL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCSC_SCADL_MASK ) | \ + ( ( ( _val ) << GR1553B_BCSC_SCADL_SHIFT ) & \ + GR1553B_BCSC_SCADL_MASK ) ) +#define GR1553B_BCSC_SCADL( _val ) \ + ( ( ( _val ) << GR1553B_BCSC_SCADL_SHIFT ) & \ + GR1553B_BCSC_SCADL_MASK ) + +#define GR1553B_BCSC_SCST_SHIFT 0 +#define GR1553B_BCSC_SCST_MASK 0x7U +#define GR1553B_BCSC_SCST_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCSC_SCST_MASK ) >> \ + GR1553B_BCSC_SCST_SHIFT ) +#define GR1553B_BCSC_SCST_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCSC_SCST_MASK ) | \ + ( ( ( _val ) << GR1553B_BCSC_SCST_SHIFT ) & \ + GR1553B_BCSC_SCST_MASK ) ) +#define GR1553B_BCSC_SCST( _val ) \ + ( ( ( _val ) << GR1553B_BCSC_SCST_SHIFT ) & \ + GR1553B_BCSC_SCST_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCA GR1553B BC Action Register (BCA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCA_BCKEY_SHIFT 16 +#define GR1553B_BCA_BCKEY_MASK 0xffff0000U +#define GR1553B_BCA_BCKEY_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCA_BCKEY_MASK ) >> \ + GR1553B_BCA_BCKEY_SHIFT ) +#define GR1553B_BCA_BCKEY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCA_BCKEY_MASK ) | \ + ( ( ( _val ) << GR1553B_BCA_BCKEY_SHIFT ) & \ + GR1553B_BCA_BCKEY_MASK ) ) +#define GR1553B_BCA_BCKEY( _val ) \ + ( ( ( _val ) << GR1553B_BCA_BCKEY_SHIFT ) & \ + GR1553B_BCA_BCKEY_MASK ) + +#define GR1553B_BCA_ASSTP 0x200U + +#define GR1553B_BCA_ASSRT 0x100U + +#define GR1553B_BCA_CLRT 0x10U + +#define GR1553B_BCA_SETT 0x8U + +#define GR1553B_BCA_SCSTP 0x4U + +#define GR1553B_BCA_SCSUS 0x2U + +#define GR1553B_BCA_SCSRT 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCTNP \ + * GR1553B BC Transfer list next pointer register (BCTNP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCTNP_POINTER_SHIFT 0 +#define GR1553B_BCTNP_POINTER_MASK 0xffffffffU +#define GR1553B_BCTNP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCTNP_POINTER_MASK ) >> \ + GR1553B_BCTNP_POINTER_SHIFT ) +#define GR1553B_BCTNP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCTNP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_BCTNP_POINTER_SHIFT ) & \ + GR1553B_BCTNP_POINTER_MASK ) ) +#define GR1553B_BCTNP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_BCTNP_POINTER_SHIFT ) & \ + GR1553B_BCTNP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCANP \ + * GR1553B BC Asynchronous list next pointer register (BCANP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCANP_POINTER_SHIFT 0 +#define GR1553B_BCANP_POINTER_MASK 0xffffffffU +#define GR1553B_BCANP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCANP_POINTER_MASK ) >> \ + GR1553B_BCANP_POINTER_SHIFT ) +#define GR1553B_BCANP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCANP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_BCANP_POINTER_SHIFT ) & \ + GR1553B_BCANP_POINTER_MASK ) ) +#define GR1553B_BCANP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_BCANP_POINTER_SHIFT ) & \ + GR1553B_BCANP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCT GR1553B BC Timer register (BCT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCT_SCTM_SHIFT 0 +#define GR1553B_BCT_SCTM_MASK 0xffffffU +#define GR1553B_BCT_SCTM_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCT_SCTM_MASK ) >> \ + GR1553B_BCT_SCTM_SHIFT ) +#define GR1553B_BCT_SCTM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCT_SCTM_MASK ) | \ + ( ( ( _val ) << GR1553B_BCT_SCTM_SHIFT ) & \ + GR1553B_BCT_SCTM_MASK ) ) +#define GR1553B_BCT_SCTM( _val ) \ + ( ( ( _val ) << GR1553B_BCT_SCTM_SHIFT ) & \ + GR1553B_BCT_SCTM_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCRP \ + * GR1553B BC Transfer-triggered IRQ ring position register (BCRP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCRP_POSITION_SHIFT 0 +#define GR1553B_BCRP_POSITION_MASK 0xffffffffU +#define GR1553B_BCRP_POSITION_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCRP_POSITION_MASK ) >> \ + GR1553B_BCRP_POSITION_SHIFT ) +#define GR1553B_BCRP_POSITION_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCRP_POSITION_MASK ) | \ + ( ( ( _val ) << GR1553B_BCRP_POSITION_SHIFT ) & \ + GR1553B_BCRP_POSITION_MASK ) ) +#define GR1553B_BCRP_POSITION( _val ) \ + ( ( ( _val ) << GR1553B_BCRP_POSITION_SHIFT ) & \ + GR1553B_BCRP_POSITION_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCBS GR1553B BC per-RT Bus swap register (BCBS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCBS_SWAP_SHIFT 0 +#define GR1553B_BCBS_SWAP_MASK 0xffffffffU +#define GR1553B_BCBS_SWAP_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCBS_SWAP_MASK ) >> \ + GR1553B_BCBS_SWAP_SHIFT ) +#define GR1553B_BCBS_SWAP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCBS_SWAP_MASK ) | \ + ( ( ( _val ) << GR1553B_BCBS_SWAP_SHIFT ) & \ + GR1553B_BCBS_SWAP_MASK ) ) +#define GR1553B_BCBS_SWAP( _val ) \ + ( ( ( _val ) << GR1553B_BCBS_SWAP_SHIFT ) & \ + GR1553B_BCBS_SWAP_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCTCP \ + * GR1553B BC Transfer list current slot pointer (BCTCP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCTCP_POINTER_SHIFT 0 +#define GR1553B_BCTCP_POINTER_MASK 0xffffffffU +#define GR1553B_BCTCP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCTCP_POINTER_MASK ) >> \ + GR1553B_BCTCP_POINTER_SHIFT ) +#define GR1553B_BCTCP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCTCP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_BCTCP_POINTER_SHIFT ) & \ + GR1553B_BCTCP_POINTER_MASK ) ) +#define GR1553B_BCTCP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_BCTCP_POINTER_SHIFT ) & \ + GR1553B_BCTCP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBCACP \ + * GR1553B BC Asynchronous list current slot pointer (BCACP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BCACP_POINTER_SHIFT 0 +#define GR1553B_BCACP_POINTER_MASK 0xffffffffU +#define GR1553B_BCACP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BCACP_POINTER_MASK ) >> \ + GR1553B_BCACP_POINTER_SHIFT ) +#define GR1553B_BCACP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BCACP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_BCACP_POINTER_SHIFT ) & \ + GR1553B_BCACP_POINTER_MASK ) ) +#define GR1553B_BCACP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_BCACP_POINTER_SHIFT ) & \ + GR1553B_BCACP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTS GR1553B RT Status register (RTS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTS_RTSUP 0x80000000U + +#define GR1553B_RTS_ACT 0x8U + +#define GR1553B_RTS_SHDA 0x4U + +#define GR1553B_RTS_SHDB 0x2U + +#define GR1553B_RTS_RUN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTC GR1553B RT Config register (RTC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTC_RTKEY_SHIFT 16 +#define GR1553B_RTC_RTKEY_MASK 0xffff0000U +#define GR1553B_RTC_RTKEY_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTC_RTKEY_MASK ) >> \ + GR1553B_RTC_RTKEY_SHIFT ) +#define GR1553B_RTC_RTKEY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTC_RTKEY_MASK ) | \ + ( ( ( _val ) << GR1553B_RTC_RTKEY_SHIFT ) & \ + GR1553B_RTC_RTKEY_MASK ) ) +#define GR1553B_RTC_RTKEY( _val ) \ + ( ( ( _val ) << GR1553B_RTC_RTKEY_SHIFT ) & \ + GR1553B_RTC_RTKEY_MASK ) + +#define GR1553B_RTC_SYS 0x8000U + +#define GR1553B_RTC_SYDS 0x4000U + +#define GR1553B_RTC_BRS 0x2000U + +#define GR1553B_RTC_RTEIS 0x40U + +#define GR1553B_RTC_RTADDR_SHIFT 1 +#define GR1553B_RTC_RTADDR_MASK 0x3eU +#define GR1553B_RTC_RTADDR_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTC_RTADDR_MASK ) >> \ + GR1553B_RTC_RTADDR_SHIFT ) +#define GR1553B_RTC_RTADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTC_RTADDR_MASK ) | \ + ( ( ( _val ) << GR1553B_RTC_RTADDR_SHIFT ) & \ + GR1553B_RTC_RTADDR_MASK ) ) +#define GR1553B_RTC_RTADDR( _val ) \ + ( ( ( _val ) << GR1553B_RTC_RTADDR_SHIFT ) & \ + GR1553B_RTC_RTADDR_MASK ) + +#define GR1553B_RTC_RTEN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTBS GR1553B RT Bus status register (RTBS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTBS_TFDE 0x100U + +#define GR1553B_RTBS_SREQ 0x10U + +#define GR1553B_RTBS_BUSY 0x8U + +#define GR1553B_RTBS_SSF 0x4U + +#define GR1553B_RTBS_DBCA 0x2U + +#define GR1553B_RTBS_TFLG 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTSW GR1553B RT Status words register (RTSW) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTSW_BITW_SHIFT 16 +#define GR1553B_RTSW_BITW_MASK 0xffff0000U +#define GR1553B_RTSW_BITW_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTSW_BITW_MASK ) >> \ + GR1553B_RTSW_BITW_SHIFT ) +#define GR1553B_RTSW_BITW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTSW_BITW_MASK ) | \ + ( ( ( _val ) << GR1553B_RTSW_BITW_SHIFT ) & \ + GR1553B_RTSW_BITW_MASK ) ) +#define GR1553B_RTSW_BITW( _val ) \ + ( ( ( _val ) << GR1553B_RTSW_BITW_SHIFT ) & \ + GR1553B_RTSW_BITW_MASK ) + +#define GR1553B_RTSW_VECW_SHIFT 0 +#define GR1553B_RTSW_VECW_MASK 0xffffU +#define GR1553B_RTSW_VECW_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTSW_VECW_MASK ) >> \ + GR1553B_RTSW_VECW_SHIFT ) +#define GR1553B_RTSW_VECW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTSW_VECW_MASK ) | \ + ( ( ( _val ) << GR1553B_RTSW_VECW_SHIFT ) & \ + GR1553B_RTSW_VECW_MASK ) ) +#define GR1553B_RTSW_VECW( _val ) \ + ( ( ( _val ) << GR1553B_RTSW_VECW_SHIFT ) & \ + GR1553B_RTSW_VECW_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTSY GR1553B RT Sync register (RTSY) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTSY_SYTM_SHIFT 16 +#define GR1553B_RTSY_SYTM_MASK 0xffff0000U +#define GR1553B_RTSY_SYTM_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTSY_SYTM_MASK ) >> \ + GR1553B_RTSY_SYTM_SHIFT ) +#define GR1553B_RTSY_SYTM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTSY_SYTM_MASK ) | \ + ( ( ( _val ) << GR1553B_RTSY_SYTM_SHIFT ) & \ + GR1553B_RTSY_SYTM_MASK ) ) +#define GR1553B_RTSY_SYTM( _val ) \ + ( ( ( _val ) << GR1553B_RTSY_SYTM_SHIFT ) & \ + GR1553B_RTSY_SYTM_MASK ) + +#define GR1553B_RTSY_SYD_SHIFT 0 +#define GR1553B_RTSY_SYD_MASK 0xffffU +#define GR1553B_RTSY_SYD_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTSY_SYD_MASK ) >> \ + GR1553B_RTSY_SYD_SHIFT ) +#define GR1553B_RTSY_SYD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTSY_SYD_MASK ) | \ + ( ( ( _val ) << GR1553B_RTSY_SYD_SHIFT ) & \ + GR1553B_RTSY_SYD_MASK ) ) +#define GR1553B_RTSY_SYD( _val ) \ + ( ( ( _val ) << GR1553B_RTSY_SYD_SHIFT ) & \ + GR1553B_RTSY_SYD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTSTBA \ + * GR1553B RT Subaddress table base address register (RTSTBA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTSTBA_SATB_SHIFT 9 +#define GR1553B_RTSTBA_SATB_MASK 0xfffffe00U +#define GR1553B_RTSTBA_SATB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTSTBA_SATB_MASK ) >> \ + GR1553B_RTSTBA_SATB_SHIFT ) +#define GR1553B_RTSTBA_SATB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTSTBA_SATB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTSTBA_SATB_SHIFT ) & \ + GR1553B_RTSTBA_SATB_MASK ) ) +#define GR1553B_RTSTBA_SATB( _val ) \ + ( ( ( _val ) << GR1553B_RTSTBA_SATB_SHIFT ) & \ + GR1553B_RTSTBA_SATB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTMCC \ + * GR1553B RT Mode code control register (RTMCC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTMCC_RRTB_SHIFT 28 +#define GR1553B_RTMCC_RRTB_MASK 0x30000000U +#define GR1553B_RTMCC_RRTB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_RRTB_MASK ) >> \ + GR1553B_RTMCC_RRTB_SHIFT ) +#define GR1553B_RTMCC_RRTB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_RRTB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_RRTB_SHIFT ) & \ + GR1553B_RTMCC_RRTB_MASK ) ) +#define GR1553B_RTMCC_RRTB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_RRTB_SHIFT ) & \ + GR1553B_RTMCC_RRTB_MASK ) + +#define GR1553B_RTMCC_RRT_SHIFT 26 +#define GR1553B_RTMCC_RRT_MASK 0xc000000U +#define GR1553B_RTMCC_RRT_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_RRT_MASK ) >> \ + GR1553B_RTMCC_RRT_SHIFT ) +#define GR1553B_RTMCC_RRT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_RRT_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_RRT_SHIFT ) & \ + GR1553B_RTMCC_RRT_MASK ) ) +#define GR1553B_RTMCC_RRT( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_RRT_SHIFT ) & \ + GR1553B_RTMCC_RRT_MASK ) + +#define GR1553B_RTMCC_ITFB_SHIFT 24 +#define GR1553B_RTMCC_ITFB_MASK 0x3000000U +#define GR1553B_RTMCC_ITFB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_ITFB_MASK ) >> \ + GR1553B_RTMCC_ITFB_SHIFT ) +#define GR1553B_RTMCC_ITFB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_ITFB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_ITFB_SHIFT ) & \ + GR1553B_RTMCC_ITFB_MASK ) ) +#define GR1553B_RTMCC_ITFB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_ITFB_SHIFT ) & \ + GR1553B_RTMCC_ITFB_MASK ) + +#define GR1553B_RTMCC_ITF_SHIFT 22 +#define GR1553B_RTMCC_ITF_MASK 0xc00000U +#define GR1553B_RTMCC_ITF_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_ITF_MASK ) >> \ + GR1553B_RTMCC_ITF_SHIFT ) +#define GR1553B_RTMCC_ITF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_ITF_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_ITF_SHIFT ) & \ + GR1553B_RTMCC_ITF_MASK ) ) +#define GR1553B_RTMCC_ITF( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_ITF_SHIFT ) & \ + GR1553B_RTMCC_ITF_MASK ) + +#define GR1553B_RTMCC_ISTB_SHIFT 20 +#define GR1553B_RTMCC_ISTB_MASK 0x300000U +#define GR1553B_RTMCC_ISTB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_ISTB_MASK ) >> \ + GR1553B_RTMCC_ISTB_SHIFT ) +#define GR1553B_RTMCC_ISTB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_ISTB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_ISTB_SHIFT ) & \ + GR1553B_RTMCC_ISTB_MASK ) ) +#define GR1553B_RTMCC_ISTB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_ISTB_SHIFT ) & \ + GR1553B_RTMCC_ISTB_MASK ) + +#define GR1553B_RTMCC_IST_SHIFT 18 +#define GR1553B_RTMCC_IST_MASK 0xc0000U +#define GR1553B_RTMCC_IST_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_IST_MASK ) >> \ + GR1553B_RTMCC_IST_SHIFT ) +#define GR1553B_RTMCC_IST_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_IST_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_IST_SHIFT ) & \ + GR1553B_RTMCC_IST_MASK ) ) +#define GR1553B_RTMCC_IST( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_IST_SHIFT ) & \ + GR1553B_RTMCC_IST_MASK ) + +#define GR1553B_RTMCC_DBC_SHIFT 16 +#define GR1553B_RTMCC_DBC_MASK 0x30000U +#define GR1553B_RTMCC_DBC_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_DBC_MASK ) >> \ + GR1553B_RTMCC_DBC_SHIFT ) +#define GR1553B_RTMCC_DBC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_DBC_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_DBC_SHIFT ) & \ + GR1553B_RTMCC_DBC_MASK ) ) +#define GR1553B_RTMCC_DBC( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_DBC_SHIFT ) & \ + GR1553B_RTMCC_DBC_MASK ) + +#define GR1553B_RTMCC_TBW_SHIFT 14 +#define GR1553B_RTMCC_TBW_MASK 0xc000U +#define GR1553B_RTMCC_TBW_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_TBW_MASK ) >> \ + GR1553B_RTMCC_TBW_SHIFT ) +#define GR1553B_RTMCC_TBW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_TBW_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_TBW_SHIFT ) & \ + GR1553B_RTMCC_TBW_MASK ) ) +#define GR1553B_RTMCC_TBW( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_TBW_SHIFT ) & \ + GR1553B_RTMCC_TBW_MASK ) + +#define GR1553B_RTMCC_TVW_SHIFT 12 +#define GR1553B_RTMCC_TVW_MASK 0x3000U +#define GR1553B_RTMCC_TVW_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_TVW_MASK ) >> \ + GR1553B_RTMCC_TVW_SHIFT ) +#define GR1553B_RTMCC_TVW_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_TVW_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_TVW_SHIFT ) & \ + GR1553B_RTMCC_TVW_MASK ) ) +#define GR1553B_RTMCC_TVW( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_TVW_SHIFT ) & \ + GR1553B_RTMCC_TVW_MASK ) + +#define GR1553B_RTMCC_TSB_SHIFT 10 +#define GR1553B_RTMCC_TSB_MASK 0xc00U +#define GR1553B_RTMCC_TSB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_TSB_MASK ) >> \ + GR1553B_RTMCC_TSB_SHIFT ) +#define GR1553B_RTMCC_TSB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_TSB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_TSB_SHIFT ) & \ + GR1553B_RTMCC_TSB_MASK ) ) +#define GR1553B_RTMCC_TSB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_TSB_SHIFT ) & \ + GR1553B_RTMCC_TSB_MASK ) + +#define GR1553B_RTMCC_TS_SHIFT 8 +#define GR1553B_RTMCC_TS_MASK 0x300U +#define GR1553B_RTMCC_TS_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_TS_MASK ) >> \ + GR1553B_RTMCC_TS_SHIFT ) +#define GR1553B_RTMCC_TS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_TS_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_TS_SHIFT ) & \ + GR1553B_RTMCC_TS_MASK ) ) +#define GR1553B_RTMCC_TS( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_TS_SHIFT ) & \ + GR1553B_RTMCC_TS_MASK ) + +#define GR1553B_RTMCC_SDB_SHIFT 6 +#define GR1553B_RTMCC_SDB_MASK 0xc0U +#define GR1553B_RTMCC_SDB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_SDB_MASK ) >> \ + GR1553B_RTMCC_SDB_SHIFT ) +#define GR1553B_RTMCC_SDB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_SDB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_SDB_SHIFT ) & \ + GR1553B_RTMCC_SDB_MASK ) ) +#define GR1553B_RTMCC_SDB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_SDB_SHIFT ) & \ + GR1553B_RTMCC_SDB_MASK ) + +#define GR1553B_RTMCC_SD_SHIFT 4 +#define GR1553B_RTMCC_SD_MASK 0x30U +#define GR1553B_RTMCC_SD_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_SD_MASK ) >> \ + GR1553B_RTMCC_SD_SHIFT ) +#define GR1553B_RTMCC_SD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_SD_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_SD_SHIFT ) & \ + GR1553B_RTMCC_SD_MASK ) ) +#define GR1553B_RTMCC_SD( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_SD_SHIFT ) & \ + GR1553B_RTMCC_SD_MASK ) + +#define GR1553B_RTMCC_SB_SHIFT 2 +#define GR1553B_RTMCC_SB_MASK 0xcU +#define GR1553B_RTMCC_SB_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_SB_MASK ) >> \ + GR1553B_RTMCC_SB_SHIFT ) +#define GR1553B_RTMCC_SB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_SB_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_SB_SHIFT ) & \ + GR1553B_RTMCC_SB_MASK ) ) +#define GR1553B_RTMCC_SB( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_SB_SHIFT ) & \ + GR1553B_RTMCC_SB_MASK ) + +#define GR1553B_RTMCC_S_SHIFT 0 +#define GR1553B_RTMCC_S_MASK 0x3U +#define GR1553B_RTMCC_S_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTMCC_S_MASK ) >> \ + GR1553B_RTMCC_S_SHIFT ) +#define GR1553B_RTMCC_S_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTMCC_S_MASK ) | \ + ( ( ( _val ) << GR1553B_RTMCC_S_SHIFT ) & \ + GR1553B_RTMCC_S_MASK ) ) +#define GR1553B_RTMCC_S( _val ) \ + ( ( ( _val ) << GR1553B_RTMCC_S_SHIFT ) & \ + GR1553B_RTMCC_S_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTTTC \ + * GR1553B RT Time tag control register (RTTTC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTTTC_TRES_SHIFT 16 +#define GR1553B_RTTTC_TRES_MASK 0xffff0000U +#define GR1553B_RTTTC_TRES_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTTTC_TRES_MASK ) >> \ + GR1553B_RTTTC_TRES_SHIFT ) +#define GR1553B_RTTTC_TRES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTTTC_TRES_MASK ) | \ + ( ( ( _val ) << GR1553B_RTTTC_TRES_SHIFT ) & \ + GR1553B_RTTTC_TRES_MASK ) ) +#define GR1553B_RTTTC_TRES( _val ) \ + ( ( ( _val ) << GR1553B_RTTTC_TRES_SHIFT ) & \ + GR1553B_RTTTC_TRES_MASK ) + +#define GR1553B_RTTTC_TVAL_SHIFT 0 +#define GR1553B_RTTTC_TVAL_MASK 0xffffU +#define GR1553B_RTTTC_TVAL_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTTTC_TVAL_MASK ) >> \ + GR1553B_RTTTC_TVAL_SHIFT ) +#define GR1553B_RTTTC_TVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTTTC_TVAL_MASK ) | \ + ( ( ( _val ) << GR1553B_RTTTC_TVAL_SHIFT ) & \ + GR1553B_RTTTC_TVAL_MASK ) ) +#define GR1553B_RTTTC_TVAL( _val ) \ + ( ( ( _val ) << GR1553B_RTTTC_TVAL_SHIFT ) & \ + GR1553B_RTTTC_TVAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTELM \ + * GR1553B RT Event log size mask register (RTELM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTELM_MASK_SHIFT 0 +#define GR1553B_RTELM_MASK_MASK 0xffffffffU +#define GR1553B_RTELM_MASK_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTELM_MASK_MASK ) >> \ + GR1553B_RTELM_MASK_SHIFT ) +#define GR1553B_RTELM_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTELM_MASK_MASK ) | \ + ( ( ( _val ) << GR1553B_RTELM_MASK_SHIFT ) & \ + GR1553B_RTELM_MASK_MASK ) ) +#define GR1553B_RTELM_MASK( _val ) \ + ( ( ( _val ) << GR1553B_RTELM_MASK_SHIFT ) & \ + GR1553B_RTELM_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTELP \ + * GR1553B RT Event log position register (RTELP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTELP_POINTER_SHIFT 0 +#define GR1553B_RTELP_POINTER_MASK 0xffffffffU +#define GR1553B_RTELP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTELP_POINTER_MASK ) >> \ + GR1553B_RTELP_POINTER_SHIFT ) +#define GR1553B_RTELP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTELP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_RTELP_POINTER_SHIFT ) & \ + GR1553B_RTELP_POINTER_MASK ) ) +#define GR1553B_RTELP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_RTELP_POINTER_SHIFT ) & \ + GR1553B_RTELP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BRTELIP \ + * GR1553B RT Event Log interrupt position register (RTELIP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_RTELIP_POINTER_SHIFT 0 +#define GR1553B_RTELIP_POINTER_MASK 0xffffffffU +#define GR1553B_RTELIP_POINTER_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_RTELIP_POINTER_MASK ) >> \ + GR1553B_RTELIP_POINTER_SHIFT ) +#define GR1553B_RTELIP_POINTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_RTELIP_POINTER_MASK ) | \ + ( ( ( _val ) << GR1553B_RTELIP_POINTER_SHIFT ) & \ + GR1553B_RTELIP_POINTER_MASK ) ) +#define GR1553B_RTELIP_POINTER( _val ) \ + ( ( ( _val ) << GR1553B_RTELIP_POINTER_SHIFT ) & \ + GR1553B_RTELIP_POINTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMS GR1553B BM Status register (BMS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMS_BMSUP 0x80000000U + +#define GR1553B_BMS_KEYEN 0x40000000U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMC GR1553B BM Control register (BMC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMC_BMKEY_SHIFT 16 +#define GR1553B_BMC_BMKEY_MASK 0xffff0000U +#define GR1553B_BMC_BMKEY_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMC_BMKEY_MASK ) >> \ + GR1553B_BMC_BMKEY_SHIFT ) +#define GR1553B_BMC_BMKEY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMC_BMKEY_MASK ) | \ + ( ( ( _val ) << GR1553B_BMC_BMKEY_SHIFT ) & \ + GR1553B_BMC_BMKEY_MASK ) ) +#define GR1553B_BMC_BMKEY( _val ) \ + ( ( ( _val ) << GR1553B_BMC_BMKEY_SHIFT ) & \ + GR1553B_BMC_BMKEY_MASK ) + +#define GR1553B_BMC_WRSTP 0x20U + +#define GR1553B_BMC_EXST 0x10U + +#define GR1553B_BMC_IMCL 0x8U + +#define GR1553B_BMC_UDWL 0x4U + +#define GR1553B_BMC_MANL 0x2U + +#define GR1553B_BMC_BMEN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMRTAF \ + * GR1553B BM RT Address filter register (BMRTAF) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMRTAF_MASK_SHIFT 0 +#define GR1553B_BMRTAF_MASK_MASK 0xffffffffU +#define GR1553B_BMRTAF_MASK_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMRTAF_MASK_MASK ) >> \ + GR1553B_BMRTAF_MASK_SHIFT ) +#define GR1553B_BMRTAF_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMRTAF_MASK_MASK ) | \ + ( ( ( _val ) << GR1553B_BMRTAF_MASK_SHIFT ) & \ + GR1553B_BMRTAF_MASK_MASK ) ) +#define GR1553B_BMRTAF_MASK( _val ) \ + ( ( ( _val ) << GR1553B_BMRTAF_MASK_SHIFT ) & \ + GR1553B_BMRTAF_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMRTSF \ + * GR1553B BM RT Subaddress filter register (BMRTSF) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMRTSF_MASK_SHIFT 0 +#define GR1553B_BMRTSF_MASK_MASK 0xffffffffU +#define GR1553B_BMRTSF_MASK_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMRTSF_MASK_MASK ) >> \ + GR1553B_BMRTSF_MASK_SHIFT ) +#define GR1553B_BMRTSF_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMRTSF_MASK_MASK ) | \ + ( ( ( _val ) << GR1553B_BMRTSF_MASK_SHIFT ) & \ + GR1553B_BMRTSF_MASK_MASK ) ) +#define GR1553B_BMRTSF_MASK( _val ) \ + ( ( ( _val ) << GR1553B_BMRTSF_MASK_SHIFT ) & \ + GR1553B_BMRTSF_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMRTMC \ + * GR1553B BM RT Mode code filter register (BMRTMC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMRTMC_STSB 0x40000U + +#define GR1553B_BMRTMC_STS 0x20000U + +#define GR1553B_BMRTMC_TLC 0x10000U + +#define GR1553B_BMRTMC_TSW 0x8000U + +#define GR1553B_BMRTMC_RRTB 0x4000U + +#define GR1553B_BMRTMC_RRT 0x2000U + +#define GR1553B_BMRTMC_ITFB 0x1000U + +#define GR1553B_BMRTMC_ITF 0x800U + +#define GR1553B_BMRTMC_ISTB 0x400U + +#define GR1553B_BMRTMC_IST 0x200U + +#define GR1553B_BMRTMC_DBC 0x100U + +#define GR1553B_BMRTMC_TBW 0x80U + +#define GR1553B_BMRTMC_TVW 0x40U + +#define GR1553B_BMRTMC_TSB 0x20U + +#define GR1553B_BMRTMC_TS 0x10U + +#define GR1553B_BMRTMC_SDB 0x8U + +#define GR1553B_BMRTMC_SD 0x4U + +#define GR1553B_BMRTMC_SB 0x2U + +#define GR1553B_BMRTMC_S 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMLBS GR1553B BM Log buffer start (BMLBS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMLBS_START_SHIFT 0 +#define GR1553B_BMLBS_START_MASK 0xffffffffU +#define GR1553B_BMLBS_START_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMLBS_START_MASK ) >> \ + GR1553B_BMLBS_START_SHIFT ) +#define GR1553B_BMLBS_START_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMLBS_START_MASK ) | \ + ( ( ( _val ) << GR1553B_BMLBS_START_SHIFT ) & \ + GR1553B_BMLBS_START_MASK ) ) +#define GR1553B_BMLBS_START( _val ) \ + ( ( ( _val ) << GR1553B_BMLBS_START_SHIFT ) & \ + GR1553B_BMLBS_START_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMLBE GR1553B BM Log buffer end (BMLBE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMLBE_END_SHIFT 0 +#define GR1553B_BMLBE_END_MASK 0xffffffffU +#define GR1553B_BMLBE_END_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMLBE_END_MASK ) >> \ + GR1553B_BMLBE_END_SHIFT ) +#define GR1553B_BMLBE_END_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMLBE_END_MASK ) | \ + ( ( ( _val ) << GR1553B_BMLBE_END_SHIFT ) & \ + GR1553B_BMLBE_END_MASK ) ) +#define GR1553B_BMLBE_END( _val ) \ + ( ( ( _val ) << GR1553B_BMLBE_END_SHIFT ) & \ + GR1553B_BMLBE_END_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMLBP GR1553B BM Log buffer position (BMLBP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMLBP_POSITION_SHIFT 0 +#define GR1553B_BMLBP_POSITION_MASK 0xffffffffU +#define GR1553B_BMLBP_POSITION_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMLBP_POSITION_MASK ) >> \ + GR1553B_BMLBP_POSITION_SHIFT ) +#define GR1553B_BMLBP_POSITION_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMLBP_POSITION_MASK ) | \ + ( ( ( _val ) << GR1553B_BMLBP_POSITION_SHIFT ) & \ + GR1553B_BMLBP_POSITION_MASK ) ) +#define GR1553B_BMLBP_POSITION( _val ) \ + ( ( ( _val ) << GR1553B_BMLBP_POSITION_SHIFT ) & \ + GR1553B_BMLBP_POSITION_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGR1553BBMTTC \ + * GR1553B BM Time tag control register (BMTTC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GR1553B_BMTTC_TRES_SHIFT 24 +#define GR1553B_BMTTC_TRES_MASK 0xff000000U +#define GR1553B_BMTTC_TRES_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMTTC_TRES_MASK ) >> \ + GR1553B_BMTTC_TRES_SHIFT ) +#define GR1553B_BMTTC_TRES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMTTC_TRES_MASK ) | \ + ( ( ( _val ) << GR1553B_BMTTC_TRES_SHIFT ) & \ + GR1553B_BMTTC_TRES_MASK ) ) +#define GR1553B_BMTTC_TRES( _val ) \ + ( ( ( _val ) << GR1553B_BMTTC_TRES_SHIFT ) & \ + GR1553B_BMTTC_TRES_MASK ) + +#define GR1553B_BMTTC_TVAL_SHIFT 0 +#define GR1553B_BMTTC_TVAL_MASK 0xffffffU +#define GR1553B_BMTTC_TVAL_GET( _reg ) \ + ( ( ( _reg ) & GR1553B_BMTTC_TVAL_MASK ) >> \ + GR1553B_BMTTC_TVAL_SHIFT ) +#define GR1553B_BMTTC_TVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GR1553B_BMTTC_TVAL_MASK ) | \ + ( ( ( _val ) << GR1553B_BMTTC_TVAL_SHIFT ) & \ + GR1553B_BMTTC_TVAL_MASK ) ) +#define GR1553B_BMTTC_TVAL( _val ) \ + ( ( ( _val ) << GR1553B_BMTTC_TVAL_SHIFT ) & \ + GR1553B_BMTTC_TVAL_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GR1553B register block memory map. + */ +typedef struct gr1553b { + /** + * @brief See @ref RTEMSDeviceGR1553BIRQ. + */ + uint32_t irq; + + /** + * @brief See @ref RTEMSDeviceGR1553BIRQE. + */ + uint32_t irqe; + + uint32_t reserved_8_10[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BHC. + */ + uint32_t hc; + + uint32_t reserved_14_40[ 11 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCSC. + */ + uint32_t bcsc; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCA. + */ + uint32_t bca; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCTNP. + */ + uint32_t bctnp; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCANP. + */ + uint32_t bcanp; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCT. + */ + uint32_t bct; + + uint32_t reserved_54_58; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCRP. + */ + uint32_t bcrp; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCBS. + */ + uint32_t bcbs; + + uint32_t reserved_60_68[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCTCP. + */ + uint32_t bctcp; + + /** + * @brief See @ref RTEMSDeviceGR1553BBCACP. + */ + uint32_t bcacp; + + uint32_t reserved_70_80[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTS. + */ + uint32_t rts; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTC. + */ + uint32_t rtc; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTBS. + */ + uint32_t rtbs; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTSW. + */ + uint32_t rtsw; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTSY. + */ + uint32_t rtsy; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTSTBA. + */ + uint32_t rtstba; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTMCC. + */ + uint32_t rtmcc; + + uint32_t reserved_9c_a4[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTTTC. + */ + uint32_t rtttc; + + uint32_t reserved_a8_ac; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTELM. + */ + uint32_t rtelm; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTELP. + */ + uint32_t rtelp; + + /** + * @brief See @ref RTEMSDeviceGR1553BRTELIP. + */ + uint32_t rtelip; + + uint32_t reserved_b8_c0[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMS. + */ + uint32_t bms; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMC. + */ + uint32_t bmc; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMRTAF. + */ + uint32_t bmrtaf; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMRTSF. + */ + uint32_t bmrtsf; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMRTMC. + */ + uint32_t bmrtmc; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMLBS. + */ + uint32_t bmlbs; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMLBE. + */ + uint32_t bmlbe; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMLBP. + */ + uint32_t bmlbp; + + /** + * @brief See @ref RTEMSDeviceGR1553BBMTTC. + */ + uint32_t bmttc; +} gr1553b; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GR1553B_REGS_H */ diff --git a/bsps/include/grlib/gr1553b.h b/bsps/include/grlib/gr1553b.h index 006417b530..178a0ae19d 100644 --- a/bsps/include/grlib/gr1553b.h +++ b/bsps/include/grlib/gr1553b.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR1553B driver, used by BC, RT and/or BM driver * * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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. * * OVERVIEW * ======== diff --git a/bsps/include/grlib/gr1553bc.h b/bsps/include/grlib/gr1553bc.h index caf6f77722..55f7e1a48a 100644 --- a/bsps/include/grlib/gr1553bc.h +++ b/bsps/include/grlib/gr1553bc.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR1553B BC driver * * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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. * * OVERVIEW * ======== diff --git a/bsps/include/grlib/gr1553bc_list.h b/bsps/include/grlib/gr1553bc_list.h index 5024923968..1290eeb778 100644 --- a/bsps/include/grlib/gr1553bc_list.h +++ b/bsps/include/grlib/gr1553bc_list.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GR1553B BC driver, Descriptor LIST handling * * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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 __GR1553BC_LIST_H__ diff --git a/bsps/include/grlib/gr1553bm.h b/bsps/include/grlib/gr1553bm.h index 058bc59a45..6cb15fd1e5 100644 --- a/bsps/include/grlib/gr1553bm.h +++ b/bsps/include/grlib/gr1553bm.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR1553B BM driver * * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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 __GR1553BM_H__ diff --git a/bsps/include/grlib/gr1553rt.h b/bsps/include/grlib/gr1553rt.h index 5d52e84c11..b35f767653 100644 --- a/bsps/include/grlib/gr1553rt.h +++ b/bsps/include/grlib/gr1553rt.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR1553B RT driver * * COPYRIGHT (c) 2010. * Cobham Gaisler AB. * - * 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. + * 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 __GR1553RT_H__ diff --git a/bsps/include/grlib/gr_701.h b/bsps/include/grlib/gr_701.h index acfd9237a2..bee42fbe96 100644 --- a/bsps/include/grlib/gr_701.h +++ b/bsps/include/grlib/gr_701.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-701 PCI Target driver. * * COPYRIGHT (c) 2008. @@ -10,9 +12,26 @@ * Driver resources for the AMBA PnP bus provided can be set using * gr701_set_resources(). * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GR_701_H__ diff --git a/bsps/include/grlib/gr_cpci_gr740.h b/bsps/include/grlib/gr_cpci_gr740.h index 55c28acb4c..6402bf6c6d 100644 --- a/bsps/include/grlib/gr_cpci_gr740.h +++ b/bsps/include/grlib/gr_cpci_gr740.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-CPCI-GR740 PCI Peripheral driver * * COPYRIGHT (c) 2017. * Cobham Gaisler AB. * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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. * * Configures the GR-CPIC-GR740 interface PCI board in peripheral * mode. This driver provides a AMBA PnP bus by using the general part diff --git a/bsps/include/grlib/gr_rasta_adcdac.h b/bsps/include/grlib/gr_rasta_adcdac.h index 9e16cab96b..e1512f2fb0 100644 --- a/bsps/include/grlib/gr_rasta_adcdac.h +++ b/bsps/include/grlib/gr_rasta_adcdac.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-RASTA-ADCDAC PCI Target driver. * * COPYRIGHT (c) 2008. @@ -10,9 +12,26 @@ * Driver resources for the AMBA PnP bus provided can be set using * gr_rasta_adcdac_set_resources(). * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GR_RASTA_ADCDAC_H__ diff --git a/bsps/include/grlib/gr_rasta_io.h b/bsps/include/grlib/gr_rasta_io.h index 72a44f5151..ffadf93c9e 100644 --- a/bsps/include/grlib/gr_rasta_io.h +++ b/bsps/include/grlib/gr_rasta_io.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-RASTA-IO PCI Target driver. * * COPYRIGHT (c) 2008. @@ -10,9 +12,26 @@ * Driver resources for the AMBA PnP bus provided can be set using * gr_rasta_io_set_resources(). * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GR_RASTA_IO_H__ diff --git a/bsps/include/grlib/gr_rasta_spw_router.h b/bsps/include/grlib/gr_rasta_spw_router.h index 1cc9e41979..15deacd7a2 100644 --- a/bsps/include/grlib/gr_rasta_spw_router.h +++ b/bsps/include/grlib/gr_rasta_spw_router.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-RASTA-SPW-ROUTER PCI Peripheral driver * * COPYRIGHT (c) 2015. * Cobham Gaisler. * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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. * */ diff --git a/bsps/include/grlib/gr_rasta_tmtc.h b/bsps/include/grlib/gr_rasta_tmtc.h index 2b10ce2df3..9feeab3479 100644 --- a/bsps/include/grlib/gr_rasta_tmtc.h +++ b/bsps/include/grlib/gr_rasta_tmtc.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-RASTA-TMTC PCI Target driver. * * COPYRIGHT (c) 2008. @@ -10,9 +12,26 @@ * Driver resources for the AMBA PnP bus provided can be set using * gr_rasta_tmtc_set_resources(). * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GR_RASTA_TMTC_H__ diff --git a/bsps/include/grlib/gr_tmtc_1553.h b/bsps/include/grlib/gr_tmtc_1553.h index b6ac43da00..faa8e4f6fe 100644 --- a/bsps/include/grlib/gr_tmtc_1553.h +++ b/bsps/include/grlib/gr_tmtc_1553.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GR-TMTC-1553 PCI Target driver. * * COPYRIGHT (c) 2010. @@ -10,9 +12,26 @@ * Driver resources for the AMBA PnP bus provided can be set using * gr_tmtc_1553_set_resources(). * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GR_TMTC_1553_H__ diff --git a/bsps/include/grlib/gradcdac.h b/bsps/include/grlib/gradcdac.h index 31facc2e51..ef3fa7b66c 100644 --- a/bsps/include/grlib/gradcdac.h +++ b/bsps/include/grlib/gradcdac.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* ADC / DAC (GRADCDAC) interface * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __GRADCDAC_H__ diff --git a/bsps/include/grlib/grascs.h b/bsps/include/grlib/grascs.h index b393e77888..e0c14089fb 100644 --- a/bsps/include/grlib/grascs.h +++ b/bsps/include/grlib/grascs.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Header file for GRASCS RTEMS driver * * COPYRIGHT (c) 2008. * Cobham Gaisler AB. * - * 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. + * 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 __GRASCS_H__ diff --git a/bsps/include/grlib/grcan-regs.h b/bsps/include/grlib/grcan-regs.h new file mode 100644 index 0000000000..85a5e56367 --- /dev/null +++ b/bsps/include/grlib/grcan-regs.h @@ -0,0 +1,723 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRCAN + * + * @brief This header file defines the GRCAN register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grcan-header */ + +#ifndef _GRLIB_GRCAN_REGS_H +#define _GRLIB_GRCAN_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grcan */ + +/** + * @defgroup RTEMSDeviceGRCAN GRCAN + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRCAN interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRCANCanCONF Configuration Register (CanCONF) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANCONF_SCALER_SHIFT 24 +#define GRCAN_CANCONF_SCALER_MASK 0xff000000U +#define GRCAN_CANCONF_SCALER_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCONF_SCALER_MASK ) >> \ + GRCAN_CANCONF_SCALER_SHIFT ) +#define GRCAN_CANCONF_SCALER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCONF_SCALER_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCONF_SCALER_SHIFT ) & \ + GRCAN_CANCONF_SCALER_MASK ) ) +#define GRCAN_CANCONF_SCALER( _val ) \ + ( ( ( _val ) << GRCAN_CANCONF_SCALER_SHIFT ) & \ + GRCAN_CANCONF_SCALER_MASK ) + +#define GRCAN_CANCONF_PS1_SHIFT 20 +#define GRCAN_CANCONF_PS1_MASK 0xf00000U +#define GRCAN_CANCONF_PS1_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCONF_PS1_MASK ) >> \ + GRCAN_CANCONF_PS1_SHIFT ) +#define GRCAN_CANCONF_PS1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCONF_PS1_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCONF_PS1_SHIFT ) & \ + GRCAN_CANCONF_PS1_MASK ) ) +#define GRCAN_CANCONF_PS1( _val ) \ + ( ( ( _val ) << GRCAN_CANCONF_PS1_SHIFT ) & \ + GRCAN_CANCONF_PS1_MASK ) + +#define GRCAN_CANCONF_PS2_SHIFT 16 +#define GRCAN_CANCONF_PS2_MASK 0xf0000U +#define GRCAN_CANCONF_PS2_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCONF_PS2_MASK ) >> \ + GRCAN_CANCONF_PS2_SHIFT ) +#define GRCAN_CANCONF_PS2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCONF_PS2_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCONF_PS2_SHIFT ) & \ + GRCAN_CANCONF_PS2_MASK ) ) +#define GRCAN_CANCONF_PS2( _val ) \ + ( ( ( _val ) << GRCAN_CANCONF_PS2_SHIFT ) & \ + GRCAN_CANCONF_PS2_MASK ) + +#define GRCAN_CANCONF_RSJ_SHIFT 12 +#define GRCAN_CANCONF_RSJ_MASK 0x7000U +#define GRCAN_CANCONF_RSJ_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCONF_RSJ_MASK ) >> \ + GRCAN_CANCONF_RSJ_SHIFT ) +#define GRCAN_CANCONF_RSJ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCONF_RSJ_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCONF_RSJ_SHIFT ) & \ + GRCAN_CANCONF_RSJ_MASK ) ) +#define GRCAN_CANCONF_RSJ( _val ) \ + ( ( ( _val ) << GRCAN_CANCONF_RSJ_SHIFT ) & \ + GRCAN_CANCONF_RSJ_MASK ) + +#define GRCAN_CANCONF_BPR_SHIFT 8 +#define GRCAN_CANCONF_BPR_MASK 0x300U +#define GRCAN_CANCONF_BPR_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCONF_BPR_MASK ) >> \ + GRCAN_CANCONF_BPR_SHIFT ) +#define GRCAN_CANCONF_BPR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCONF_BPR_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCONF_BPR_SHIFT ) & \ + GRCAN_CANCONF_BPR_MASK ) ) +#define GRCAN_CANCONF_BPR( _val ) \ + ( ( ( _val ) << GRCAN_CANCONF_BPR_SHIFT ) & \ + GRCAN_CANCONF_BPR_MASK ) + +#define GRCAN_CANCONF_SAM 0x20U + +#define GRCAN_CANCONF_SILNT 0x10U + +#define GRCAN_CANCONF_SELECT 0x8U + +#define GRCAN_CANCONF_ENABLE1 0x4U + +#define GRCAN_CANCONF_ENABLE0 0x2U + +#define GRCAN_CANCONF_ABORT 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanSTAT Status Register (CanSTAT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANSTAT_TXCHANNELS_SHIFT 28 +#define GRCAN_CANSTAT_TXCHANNELS_MASK 0xf0000000U +#define GRCAN_CANSTAT_TXCHANNELS_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANSTAT_TXCHANNELS_MASK ) >> \ + GRCAN_CANSTAT_TXCHANNELS_SHIFT ) +#define GRCAN_CANSTAT_TXCHANNELS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANSTAT_TXCHANNELS_MASK ) | \ + ( ( ( _val ) << GRCAN_CANSTAT_TXCHANNELS_SHIFT ) & \ + GRCAN_CANSTAT_TXCHANNELS_MASK ) ) +#define GRCAN_CANSTAT_TXCHANNELS( _val ) \ + ( ( ( _val ) << GRCAN_CANSTAT_TXCHANNELS_SHIFT ) & \ + GRCAN_CANSTAT_TXCHANNELS_MASK ) + +#define GRCAN_CANSTAT_RXCHANNELS_SHIFT 24 +#define GRCAN_CANSTAT_RXCHANNELS_MASK 0xf000000U +#define GRCAN_CANSTAT_RXCHANNELS_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANSTAT_RXCHANNELS_MASK ) >> \ + GRCAN_CANSTAT_RXCHANNELS_SHIFT ) +#define GRCAN_CANSTAT_RXCHANNELS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANSTAT_RXCHANNELS_MASK ) | \ + ( ( ( _val ) << GRCAN_CANSTAT_RXCHANNELS_SHIFT ) & \ + GRCAN_CANSTAT_RXCHANNELS_MASK ) ) +#define GRCAN_CANSTAT_RXCHANNELS( _val ) \ + ( ( ( _val ) << GRCAN_CANSTAT_RXCHANNELS_SHIFT ) & \ + GRCAN_CANSTAT_RXCHANNELS_MASK ) + +#define GRCAN_CANSTAT_TXERRCNT_SHIFT 16 +#define GRCAN_CANSTAT_TXERRCNT_MASK 0xff0000U +#define GRCAN_CANSTAT_TXERRCNT_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANSTAT_TXERRCNT_MASK ) >> \ + GRCAN_CANSTAT_TXERRCNT_SHIFT ) +#define GRCAN_CANSTAT_TXERRCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANSTAT_TXERRCNT_MASK ) | \ + ( ( ( _val ) << GRCAN_CANSTAT_TXERRCNT_SHIFT ) & \ + GRCAN_CANSTAT_TXERRCNT_MASK ) ) +#define GRCAN_CANSTAT_TXERRCNT( _val ) \ + ( ( ( _val ) << GRCAN_CANSTAT_TXERRCNT_SHIFT ) & \ + GRCAN_CANSTAT_TXERRCNT_MASK ) + +#define GRCAN_CANSTAT_RXERRCNT_SHIFT 8 +#define GRCAN_CANSTAT_RXERRCNT_MASK 0xff00U +#define GRCAN_CANSTAT_RXERRCNT_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANSTAT_RXERRCNT_MASK ) >> \ + GRCAN_CANSTAT_RXERRCNT_SHIFT ) +#define GRCAN_CANSTAT_RXERRCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANSTAT_RXERRCNT_MASK ) | \ + ( ( ( _val ) << GRCAN_CANSTAT_RXERRCNT_SHIFT ) & \ + GRCAN_CANSTAT_RXERRCNT_MASK ) ) +#define GRCAN_CANSTAT_RXERRCNT( _val ) \ + ( ( ( _val ) << GRCAN_CANSTAT_RXERRCNT_SHIFT ) & \ + GRCAN_CANSTAT_RXERRCNT_MASK ) + +#define GRCAN_CANSTAT_ACTIVE 0x10U + +#define GRCAN_CANSTAT_AHBERR 0x8U + +#define GRCAN_CANSTAT_OR 0x4U + +#define GRCAN_CANSTAT_OFF 0x2U + +#define GRCAN_CANSTAT_PASS 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanCTRL Control Register (CanCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANCTRL_RESET 0x2U + +#define GRCAN_CANCTRL_ENABLE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanMASK SYNC Mask Filter Register (CanMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANMASK_MASK_SHIFT 0 +#define GRCAN_CANMASK_MASK_MASK 0x1fffffffU +#define GRCAN_CANMASK_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANMASK_MASK_MASK ) >> \ + GRCAN_CANMASK_MASK_SHIFT ) +#define GRCAN_CANMASK_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANMASK_MASK_MASK ) | \ + ( ( ( _val ) << GRCAN_CANMASK_MASK_SHIFT ) & \ + GRCAN_CANMASK_MASK_MASK ) ) +#define GRCAN_CANMASK_MASK( _val ) \ + ( ( ( _val ) << GRCAN_CANMASK_MASK_SHIFT ) & \ + GRCAN_CANMASK_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanCODE SYNC Code Filter Register (CanCODE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANCODE_SYNC_SHIFT 0 +#define GRCAN_CANCODE_SYNC_MASK 0x1fffffffU +#define GRCAN_CANCODE_SYNC_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANCODE_SYNC_MASK ) >> \ + GRCAN_CANCODE_SYNC_SHIFT ) +#define GRCAN_CANCODE_SYNC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANCODE_SYNC_MASK ) | \ + ( ( ( _val ) << GRCAN_CANCODE_SYNC_SHIFT ) & \ + GRCAN_CANCODE_SYNC_MASK ) ) +#define GRCAN_CANCODE_SYNC( _val ) \ + ( ( ( _val ) << GRCAN_CANCODE_SYNC_SHIFT ) & \ + GRCAN_CANCODE_SYNC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxCTRL \ + * Transmit Channel Control Register (CanTxCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXCTRL_SINGLE 0x4U + +#define GRCAN_CANTXCTRL_ONGOING 0x2U + +#define GRCAN_CANTXCTRL_ENABLE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxADDR \ + * Transmit Channel Address Register (CanTxADDR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXADDR_ADDR_SHIFT 10 +#define GRCAN_CANTXADDR_ADDR_MASK 0xfffffc00U +#define GRCAN_CANTXADDR_ADDR_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANTXADDR_ADDR_MASK ) >> \ + GRCAN_CANTXADDR_ADDR_SHIFT ) +#define GRCAN_CANTXADDR_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANTXADDR_ADDR_MASK ) | \ + ( ( ( _val ) << GRCAN_CANTXADDR_ADDR_SHIFT ) & \ + GRCAN_CANTXADDR_ADDR_MASK ) ) +#define GRCAN_CANTXADDR_ADDR( _val ) \ + ( ( ( _val ) << GRCAN_CANTXADDR_ADDR_SHIFT ) & \ + GRCAN_CANTXADDR_ADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxSIZE \ + * Transmit Channel Size Register (CanTxSIZE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXSIZE_SIZE_SHIFT 6 +#define GRCAN_CANTXSIZE_SIZE_MASK 0x1fffc0U +#define GRCAN_CANTXSIZE_SIZE_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANTXSIZE_SIZE_MASK ) >> \ + GRCAN_CANTXSIZE_SIZE_SHIFT ) +#define GRCAN_CANTXSIZE_SIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANTXSIZE_SIZE_MASK ) | \ + ( ( ( _val ) << GRCAN_CANTXSIZE_SIZE_SHIFT ) & \ + GRCAN_CANTXSIZE_SIZE_MASK ) ) +#define GRCAN_CANTXSIZE_SIZE( _val ) \ + ( ( ( _val ) << GRCAN_CANTXSIZE_SIZE_SHIFT ) & \ + GRCAN_CANTXSIZE_SIZE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxWR Transmit Channel Write Register (CanTxWR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXWR_WRITE_SHIFT 4 +#define GRCAN_CANTXWR_WRITE_MASK 0xffff0U +#define GRCAN_CANTXWR_WRITE_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANTXWR_WRITE_MASK ) >> \ + GRCAN_CANTXWR_WRITE_SHIFT ) +#define GRCAN_CANTXWR_WRITE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANTXWR_WRITE_MASK ) | \ + ( ( ( _val ) << GRCAN_CANTXWR_WRITE_SHIFT ) & \ + GRCAN_CANTXWR_WRITE_MASK ) ) +#define GRCAN_CANTXWR_WRITE( _val ) \ + ( ( ( _val ) << GRCAN_CANTXWR_WRITE_SHIFT ) & \ + GRCAN_CANTXWR_WRITE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxRD Transmit Channel Read Register (CanTxRD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXRD_READ_SHIFT 4 +#define GRCAN_CANTXRD_READ_MASK 0xffff0U +#define GRCAN_CANTXRD_READ_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANTXRD_READ_MASK ) >> \ + GRCAN_CANTXRD_READ_SHIFT ) +#define GRCAN_CANTXRD_READ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANTXRD_READ_MASK ) | \ + ( ( ( _val ) << GRCAN_CANTXRD_READ_SHIFT ) & \ + GRCAN_CANTXRD_READ_MASK ) ) +#define GRCAN_CANTXRD_READ( _val ) \ + ( ( ( _val ) << GRCAN_CANTXRD_READ_SHIFT ) & \ + GRCAN_CANTXRD_READ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanTxIRQ \ + * Transmit Channel Interrupt Register (CanTxIRQ) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANTXIRQ_IRQ_SHIFT 4 +#define GRCAN_CANTXIRQ_IRQ_MASK 0xffff0U +#define GRCAN_CANTXIRQ_IRQ_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANTXIRQ_IRQ_MASK ) >> \ + GRCAN_CANTXIRQ_IRQ_SHIFT ) +#define GRCAN_CANTXIRQ_IRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANTXIRQ_IRQ_MASK ) | \ + ( ( ( _val ) << GRCAN_CANTXIRQ_IRQ_SHIFT ) & \ + GRCAN_CANTXIRQ_IRQ_MASK ) ) +#define GRCAN_CANTXIRQ_IRQ( _val ) \ + ( ( ( _val ) << GRCAN_CANTXIRQ_IRQ_SHIFT ) & \ + GRCAN_CANTXIRQ_IRQ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxCTRL \ + * Receive Channel Control Register (CanRxCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXCTRL_ONGOING 0x2U + +#define GRCAN_CANRXCTRL_ENABLE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxADDR \ + * Receive Channel Address Register (CanRxADDR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXADDR_ADDR_SHIFT 10 +#define GRCAN_CANRXADDR_ADDR_MASK 0xfffffc00U +#define GRCAN_CANRXADDR_ADDR_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXADDR_ADDR_MASK ) >> \ + GRCAN_CANRXADDR_ADDR_SHIFT ) +#define GRCAN_CANRXADDR_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXADDR_ADDR_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXADDR_ADDR_SHIFT ) & \ + GRCAN_CANRXADDR_ADDR_MASK ) ) +#define GRCAN_CANRXADDR_ADDR( _val ) \ + ( ( ( _val ) << GRCAN_CANRXADDR_ADDR_SHIFT ) & \ + GRCAN_CANRXADDR_ADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxSIZE \ + * Receive Channel Size Register (CanRxSIZE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXSIZE_SIZE_SHIFT 6 +#define GRCAN_CANRXSIZE_SIZE_MASK 0x1fffc0U +#define GRCAN_CANRXSIZE_SIZE_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXSIZE_SIZE_MASK ) >> \ + GRCAN_CANRXSIZE_SIZE_SHIFT ) +#define GRCAN_CANRXSIZE_SIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXSIZE_SIZE_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXSIZE_SIZE_SHIFT ) & \ + GRCAN_CANRXSIZE_SIZE_MASK ) ) +#define GRCAN_CANRXSIZE_SIZE( _val ) \ + ( ( ( _val ) << GRCAN_CANRXSIZE_SIZE_SHIFT ) & \ + GRCAN_CANRXSIZE_SIZE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxWR Receive Channel Write Register (CanRxWR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXWR_WRITE_SHIFT 4 +#define GRCAN_CANRXWR_WRITE_MASK 0xffff0U +#define GRCAN_CANRXWR_WRITE_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXWR_WRITE_MASK ) >> \ + GRCAN_CANRXWR_WRITE_SHIFT ) +#define GRCAN_CANRXWR_WRITE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXWR_WRITE_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXWR_WRITE_SHIFT ) & \ + GRCAN_CANRXWR_WRITE_MASK ) ) +#define GRCAN_CANRXWR_WRITE( _val ) \ + ( ( ( _val ) << GRCAN_CANRXWR_WRITE_SHIFT ) & \ + GRCAN_CANRXWR_WRITE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxRD Receive Channel Read Register (CanRxRD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXRD_READ_SHIFT 4 +#define GRCAN_CANRXRD_READ_MASK 0xffff0U +#define GRCAN_CANRXRD_READ_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXRD_READ_MASK ) >> \ + GRCAN_CANRXRD_READ_SHIFT ) +#define GRCAN_CANRXRD_READ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXRD_READ_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXRD_READ_SHIFT ) & \ + GRCAN_CANRXRD_READ_MASK ) ) +#define GRCAN_CANRXRD_READ( _val ) \ + ( ( ( _val ) << GRCAN_CANRXRD_READ_SHIFT ) & \ + GRCAN_CANRXRD_READ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxIRQ \ + * Receive Channel Interrupt Register (CanRxIRQ) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXIRQ_IRQ_SHIFT 4 +#define GRCAN_CANRXIRQ_IRQ_MASK 0xffff0U +#define GRCAN_CANRXIRQ_IRQ_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXIRQ_IRQ_MASK ) >> \ + GRCAN_CANRXIRQ_IRQ_SHIFT ) +#define GRCAN_CANRXIRQ_IRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXIRQ_IRQ_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXIRQ_IRQ_SHIFT ) & \ + GRCAN_CANRXIRQ_IRQ_MASK ) ) +#define GRCAN_CANRXIRQ_IRQ( _val ) \ + ( ( ( _val ) << GRCAN_CANRXIRQ_IRQ_SHIFT ) & \ + GRCAN_CANRXIRQ_IRQ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxMASK \ + * Receive Channel Mask Register (CanRxMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXMASK_AM_SHIFT 0 +#define GRCAN_CANRXMASK_AM_MASK 0x1fffffffU +#define GRCAN_CANRXMASK_AM_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXMASK_AM_MASK ) >> \ + GRCAN_CANRXMASK_AM_SHIFT ) +#define GRCAN_CANRXMASK_AM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXMASK_AM_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXMASK_AM_SHIFT ) & \ + GRCAN_CANRXMASK_AM_MASK ) ) +#define GRCAN_CANRXMASK_AM( _val ) \ + ( ( ( _val ) << GRCAN_CANRXMASK_AM_SHIFT ) & \ + GRCAN_CANRXMASK_AM_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCANCanRxCODE \ + * Receive Channel Code Register (CanRxCODE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCAN_CANRXCODE_AC_SHIFT 0 +#define GRCAN_CANRXCODE_AC_MASK 0x1fffffffU +#define GRCAN_CANRXCODE_AC_GET( _reg ) \ + ( ( ( _reg ) & GRCAN_CANRXCODE_AC_MASK ) >> \ + GRCAN_CANRXCODE_AC_SHIFT ) +#define GRCAN_CANRXCODE_AC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCAN_CANRXCODE_AC_MASK ) | \ + ( ( ( _val ) << GRCAN_CANRXCODE_AC_SHIFT ) & \ + GRCAN_CANRXCODE_AC_MASK ) ) +#define GRCAN_CANRXCODE_AC( _val ) \ + ( ( ( _val ) << GRCAN_CANRXCODE_AC_SHIFT ) & \ + GRCAN_CANRXCODE_AC_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRCAN register block memory map. + */ +typedef struct grcan { + /** + * @brief See @ref RTEMSDeviceGRCANCanCONF. + */ + uint32_t canconf; + + /** + * @brief See @ref RTEMSDeviceGRCANCanSTAT. + */ + uint32_t canstat; + + /** + * @brief See @ref RTEMSDeviceGRCANCanCTRL. + */ + uint32_t canctrl; + + uint32_t reserved_c_18[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRCANCanMASK. + */ + uint32_t canmask; + + /** + * @brief See @ref RTEMSDeviceGRCANCanCODE. + */ + uint32_t cancode; + + uint32_t reserved_20_200[ 120 ]; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxCTRL. + */ + uint32_t cantxctrl; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxADDR. + */ + uint32_t cantxaddr; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxSIZE. + */ + uint32_t cantxsize; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxWR. + */ + uint32_t cantxwr; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxRD. + */ + uint32_t cantxrd; + + /** + * @brief See @ref RTEMSDeviceGRCANCanTxIRQ. + */ + uint32_t cantxirq; + + uint32_t reserved_218_300[ 58 ]; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxCTRL. + */ + uint32_t canrxctrl; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxADDR. + */ + uint32_t canrxaddr; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxSIZE. + */ + uint32_t canrxsize; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxWR. + */ + uint32_t canrxwr; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxRD. + */ + uint32_t canrxrd; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxIRQ. + */ + uint32_t canrxirq; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxMASK. + */ + uint32_t canrxmask; + + /** + * @brief See @ref RTEMSDeviceGRCANCanRxCODE. + */ + uint32_t canrxcode; +} grcan; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRCAN_REGS_H */ diff --git a/bsps/include/grlib/grcan.h b/bsps/include/grlib/grcan.h index a956bef124..cb30a8a75b 100644 --- a/bsps/include/grlib/grcan.h +++ b/bsps/include/grlib/grcan.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup can @@ -8,9 +10,26 @@ * COPYRIGHT (c) 2007. * Cobham Gaisler AB. * - * 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. + * 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 __GRCAN_H__ diff --git a/bsps/include/grlib/grclkgate-regs.h b/bsps/include/grlib/grclkgate-regs.h new file mode 100644 index 0000000000..22dae51207 --- /dev/null +++ b/bsps/include/grlib/grclkgate-regs.h @@ -0,0 +1,212 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRCLKGATE + * + * @brief This header file defines the GRCLKGATE register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grclkgate-header */ + +#ifndef _GRLIB_GRCLKGATE_REGS_H +#define _GRLIB_GRCLKGATE_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grclkgate */ + +/** + * @defgroup RTEMSDeviceGRCLKGATE GRCLKGATE + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRCLKGATE interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRCLKGATEUNLOCK Unlock register (UNLOCK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCLKGATE_UNLOCK_UNLOCK_SHIFT 0 +#define GRCLKGATE_UNLOCK_UNLOCK_MASK 0xffffffffU +#define GRCLKGATE_UNLOCK_UNLOCK_GET( _reg ) \ + ( ( ( _reg ) & GRCLKGATE_UNLOCK_UNLOCK_MASK ) >> \ + GRCLKGATE_UNLOCK_UNLOCK_SHIFT ) +#define GRCLKGATE_UNLOCK_UNLOCK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCLKGATE_UNLOCK_UNLOCK_MASK ) | \ + ( ( ( _val ) << GRCLKGATE_UNLOCK_UNLOCK_SHIFT ) & \ + GRCLKGATE_UNLOCK_UNLOCK_MASK ) ) +#define GRCLKGATE_UNLOCK_UNLOCK( _val ) \ + ( ( ( _val ) << GRCLKGATE_UNLOCK_UNLOCK_SHIFT ) & \ + GRCLKGATE_UNLOCK_UNLOCK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCLKGATECLKEN Clock enable register (CLKEN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCLKGATE_CLKEN_ENABLE_SHIFT 0 +#define GRCLKGATE_CLKEN_ENABLE_MASK 0xffffffffU +#define GRCLKGATE_CLKEN_ENABLE_GET( _reg ) \ + ( ( ( _reg ) & GRCLKGATE_CLKEN_ENABLE_MASK ) >> \ + GRCLKGATE_CLKEN_ENABLE_SHIFT ) +#define GRCLKGATE_CLKEN_ENABLE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCLKGATE_CLKEN_ENABLE_MASK ) | \ + ( ( ( _val ) << GRCLKGATE_CLKEN_ENABLE_SHIFT ) & \ + GRCLKGATE_CLKEN_ENABLE_MASK ) ) +#define GRCLKGATE_CLKEN_ENABLE( _val ) \ + ( ( ( _val ) << GRCLKGATE_CLKEN_ENABLE_SHIFT ) & \ + GRCLKGATE_CLKEN_ENABLE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCLKGATERESET Reset register (RESET) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCLKGATE_RESET_RESET_SHIFT 0 +#define GRCLKGATE_RESET_RESET_MASK 0xffffffffU +#define GRCLKGATE_RESET_RESET_GET( _reg ) \ + ( ( ( _reg ) & GRCLKGATE_RESET_RESET_MASK ) >> \ + GRCLKGATE_RESET_RESET_SHIFT ) +#define GRCLKGATE_RESET_RESET_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCLKGATE_RESET_RESET_MASK ) | \ + ( ( ( _val ) << GRCLKGATE_RESET_RESET_SHIFT ) & \ + GRCLKGATE_RESET_RESET_MASK ) ) +#define GRCLKGATE_RESET_RESET( _val ) \ + ( ( ( _val ) << GRCLKGATE_RESET_RESET_SHIFT ) & \ + GRCLKGATE_RESET_RESET_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRCLKGATEOVERRIDE CPU/FPU override register (OVERRIDE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRCLKGATE_OVERRIDE_FOVERRIDE_SHIFT 16 +#define GRCLKGATE_OVERRIDE_FOVERRIDE_MASK 0xf0000U +#define GRCLKGATE_OVERRIDE_FOVERRIDE_GET( _reg ) \ + ( ( ( _reg ) & GRCLKGATE_OVERRIDE_FOVERRIDE_MASK ) >> \ + GRCLKGATE_OVERRIDE_FOVERRIDE_SHIFT ) +#define GRCLKGATE_OVERRIDE_FOVERRIDE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCLKGATE_OVERRIDE_FOVERRIDE_MASK ) | \ + ( ( ( _val ) << GRCLKGATE_OVERRIDE_FOVERRIDE_SHIFT ) & \ + GRCLKGATE_OVERRIDE_FOVERRIDE_MASK ) ) +#define GRCLKGATE_OVERRIDE_FOVERRIDE( _val ) \ + ( ( ( _val ) << GRCLKGATE_OVERRIDE_FOVERRIDE_SHIFT ) & \ + GRCLKGATE_OVERRIDE_FOVERRIDE_MASK ) + +#define GRCLKGATE_OVERRIDE_OVERRIDE_SHIFT 0 +#define GRCLKGATE_OVERRIDE_OVERRIDE_MASK 0xfU +#define GRCLKGATE_OVERRIDE_OVERRIDE_GET( _reg ) \ + ( ( ( _reg ) & GRCLKGATE_OVERRIDE_OVERRIDE_MASK ) >> \ + GRCLKGATE_OVERRIDE_OVERRIDE_SHIFT ) +#define GRCLKGATE_OVERRIDE_OVERRIDE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRCLKGATE_OVERRIDE_OVERRIDE_MASK ) | \ + ( ( ( _val ) << GRCLKGATE_OVERRIDE_OVERRIDE_SHIFT ) & \ + GRCLKGATE_OVERRIDE_OVERRIDE_MASK ) ) +#define GRCLKGATE_OVERRIDE_OVERRIDE( _val ) \ + ( ( ( _val ) << GRCLKGATE_OVERRIDE_OVERRIDE_SHIFT ) & \ + GRCLKGATE_OVERRIDE_OVERRIDE_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRCLKGATE register block memory map. + */ +typedef struct grclkgate { + /** + * @brief See @ref RTEMSDeviceGRCLKGATEUNLOCK. + */ + uint32_t unlock; + + /** + * @brief See @ref RTEMSDeviceGRCLKGATECLKEN. + */ + uint32_t clken; + + /** + * @brief See @ref RTEMSDeviceGRCLKGATERESET. + */ + uint32_t reset; + + /** + * @brief See @ref RTEMSDeviceGRCLKGATEOVERRIDE. + */ + uint32_t override; +} grclkgate; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRCLKGATE_REGS_H */ diff --git a/bsps/include/grlib/grctm.h b/bsps/include/grlib/grctm.h index 5ff81559aa..0f4f3bcd78 100644 --- a/bsps/include/grlib/grctm.h +++ b/bsps/include/grlib/grctm.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GRCTM - CCSDS Time Manager - register driver interface. * * COPYRIGHT (c) 2009. * Cobham Gaisler AB * - * 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. + * 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 __GRCTM_H__ diff --git a/bsps/include/grlib/grethgbit-regs.h b/bsps/include/grlib/grethgbit-regs.h new file mode 100644 index 0000000000..8d8f4ce8bf --- /dev/null +++ b/bsps/include/grlib/grethgbit-regs.h @@ -0,0 +1,446 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRETHGBIT + * + * @brief This header file defines the GRETH_GBIT register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grethgbit-header */ + +#ifndef _GRLIB_GRETHGBIT_REGS_H +#define _GRLIB_GRETHGBIT_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grethgbit */ + +/** + * @defgroup RTEMSDeviceGRETHGBIT GRETH_GBIT + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRETH_GBIT interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRETHGBITCR control register (CR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_CR_EA 0x80000000U + +#define GRETHGBIT_CR_BS_SHIFT 28 +#define GRETHGBIT_CR_BS_MASK 0x70000000U +#define GRETHGBIT_CR_BS_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_CR_BS_MASK ) >> \ + GRETHGBIT_CR_BS_SHIFT ) +#define GRETHGBIT_CR_BS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_CR_BS_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_CR_BS_SHIFT ) & \ + GRETHGBIT_CR_BS_MASK ) ) +#define GRETHGBIT_CR_BS( _val ) \ + ( ( ( _val ) << GRETHGBIT_CR_BS_SHIFT ) & \ + GRETHGBIT_CR_BS_MASK ) + +#define GRETHGBIT_CR_GA 0x8000000U + +#define GRETHGBIT_CR_MA 0x4000000U + +#define GRETHGBIT_CR_MC 0x2000000U + +#define GRETHGBIT_CR_ED 0x4000U + +#define GRETHGBIT_CR_RD 0x2000U + +#define GRETHGBIT_CR_DD 0x1000U + +#define GRETHGBIT_CR_ME 0x800U + +#define GRETHGBIT_CR_PI 0x400U + +#define GRETHGBIT_CR_BM 0x200U + +#define GRETHGBIT_CR_GB 0x100U + +#define GRETHGBIT_CR_SP 0x80U + +#define GRETHGBIT_CR_RS 0x40U + +#define GRETHGBIT_CR_PM 0x20U + +#define GRETHGBIT_CR_FD 0x10U + +#define GRETHGBIT_CR_RI 0x8U + +#define GRETHGBIT_CR_TI 0x4U + +#define GRETHGBIT_CR_RE 0x2U + +#define GRETHGBIT_CR_TE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITSR status register. (SR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_SR_PS 0x100U + +#define GRETHGBIT_SR_IA 0x80U + +#define GRETHGBIT_SR_TS 0x40U + +#define GRETHGBIT_SR_TA 0x20U + +#define GRETHGBIT_SR_RA 0x10U + +#define GRETHGBIT_SR_TI 0x8U + +#define GRETHGBIT_SR_RI 0x4U + +#define GRETHGBIT_SR_TE 0x2U + +#define GRETHGBIT_SR_RE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITMACMSB MAC address MSB. (MACMSB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_MACMSB_MSB_SHIFT 0 +#define GRETHGBIT_MACMSB_MSB_MASK 0xffffU +#define GRETHGBIT_MACMSB_MSB_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_MACMSB_MSB_MASK ) >> \ + GRETHGBIT_MACMSB_MSB_SHIFT ) +#define GRETHGBIT_MACMSB_MSB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_MACMSB_MSB_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_MACMSB_MSB_SHIFT ) & \ + GRETHGBIT_MACMSB_MSB_MASK ) ) +#define GRETHGBIT_MACMSB_MSB( _val ) \ + ( ( ( _val ) << GRETHGBIT_MACMSB_MSB_SHIFT ) & \ + GRETHGBIT_MACMSB_MSB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITMACLSB MAC address LSB. (MACLSB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_MACLSB_LSB_SHIFT 0 +#define GRETHGBIT_MACLSB_LSB_MASK 0xffffffffU +#define GRETHGBIT_MACLSB_LSB_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_MACLSB_LSB_MASK ) >> \ + GRETHGBIT_MACLSB_LSB_SHIFT ) +#define GRETHGBIT_MACLSB_LSB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_MACLSB_LSB_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_MACLSB_LSB_SHIFT ) & \ + GRETHGBIT_MACLSB_LSB_MASK ) ) +#define GRETHGBIT_MACLSB_LSB( _val ) \ + ( ( ( _val ) << GRETHGBIT_MACLSB_LSB_SHIFT ) & \ + GRETHGBIT_MACLSB_LSB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITMDIO MDIO control/status register. (MDIO) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_MDIO_DATA_SHIFT 16 +#define GRETHGBIT_MDIO_DATA_MASK 0xffff0000U +#define GRETHGBIT_MDIO_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_MDIO_DATA_MASK ) >> \ + GRETHGBIT_MDIO_DATA_SHIFT ) +#define GRETHGBIT_MDIO_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_MDIO_DATA_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_MDIO_DATA_SHIFT ) & \ + GRETHGBIT_MDIO_DATA_MASK ) ) +#define GRETHGBIT_MDIO_DATA( _val ) \ + ( ( ( _val ) << GRETHGBIT_MDIO_DATA_SHIFT ) & \ + GRETHGBIT_MDIO_DATA_MASK ) + +#define GRETHGBIT_MDIO_PHYADDR_SHIFT 11 +#define GRETHGBIT_MDIO_PHYADDR_MASK 0xf800U +#define GRETHGBIT_MDIO_PHYADDR_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_MDIO_PHYADDR_MASK ) >> \ + GRETHGBIT_MDIO_PHYADDR_SHIFT ) +#define GRETHGBIT_MDIO_PHYADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_MDIO_PHYADDR_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_MDIO_PHYADDR_SHIFT ) & \ + GRETHGBIT_MDIO_PHYADDR_MASK ) ) +#define GRETHGBIT_MDIO_PHYADDR( _val ) \ + ( ( ( _val ) << GRETHGBIT_MDIO_PHYADDR_SHIFT ) & \ + GRETHGBIT_MDIO_PHYADDR_MASK ) + +#define GRETHGBIT_MDIO_REGADDR_SHIFT 6 +#define GRETHGBIT_MDIO_REGADDR_MASK 0x7c0U +#define GRETHGBIT_MDIO_REGADDR_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_MDIO_REGADDR_MASK ) >> \ + GRETHGBIT_MDIO_REGADDR_SHIFT ) +#define GRETHGBIT_MDIO_REGADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_MDIO_REGADDR_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_MDIO_REGADDR_SHIFT ) & \ + GRETHGBIT_MDIO_REGADDR_MASK ) ) +#define GRETHGBIT_MDIO_REGADDR( _val ) \ + ( ( ( _val ) << GRETHGBIT_MDIO_REGADDR_SHIFT ) & \ + GRETHGBIT_MDIO_REGADDR_MASK ) + +#define GRETHGBIT_MDIO_BU 0x8U + +#define GRETHGBIT_MDIO_LF 0x4U + +#define GRETHGBIT_MDIO_RD 0x2U + +#define GRETHGBIT_MDIO_WR 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITTDTBA \ + * transmitter descriptor table base address register. (TDTBA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_TDTBA_BASEADDR_SHIFT 10 +#define GRETHGBIT_TDTBA_BASEADDR_MASK 0xfffffc00U +#define GRETHGBIT_TDTBA_BASEADDR_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_TDTBA_BASEADDR_MASK ) >> \ + GRETHGBIT_TDTBA_BASEADDR_SHIFT ) +#define GRETHGBIT_TDTBA_BASEADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_TDTBA_BASEADDR_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_TDTBA_BASEADDR_SHIFT ) & \ + GRETHGBIT_TDTBA_BASEADDR_MASK ) ) +#define GRETHGBIT_TDTBA_BASEADDR( _val ) \ + ( ( ( _val ) << GRETHGBIT_TDTBA_BASEADDR_SHIFT ) & \ + GRETHGBIT_TDTBA_BASEADDR_MASK ) + +#define GRETHGBIT_TDTBA_DESCPNT_SHIFT 3 +#define GRETHGBIT_TDTBA_DESCPNT_MASK 0x3f8U +#define GRETHGBIT_TDTBA_DESCPNT_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_TDTBA_DESCPNT_MASK ) >> \ + GRETHGBIT_TDTBA_DESCPNT_SHIFT ) +#define GRETHGBIT_TDTBA_DESCPNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_TDTBA_DESCPNT_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_TDTBA_DESCPNT_SHIFT ) & \ + GRETHGBIT_TDTBA_DESCPNT_MASK ) ) +#define GRETHGBIT_TDTBA_DESCPNT( _val ) \ + ( ( ( _val ) << GRETHGBIT_TDTBA_DESCPNT_SHIFT ) & \ + GRETHGBIT_TDTBA_DESCPNT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITRDTBA \ + * receiver descriptor table base address register. (RDTBA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_RDTBA_BASEADDR_SHIFT 10 +#define GRETHGBIT_RDTBA_BASEADDR_MASK 0xfffffc00U +#define GRETHGBIT_RDTBA_BASEADDR_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_RDTBA_BASEADDR_MASK ) >> \ + GRETHGBIT_RDTBA_BASEADDR_SHIFT ) +#define GRETHGBIT_RDTBA_BASEADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_RDTBA_BASEADDR_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_RDTBA_BASEADDR_SHIFT ) & \ + GRETHGBIT_RDTBA_BASEADDR_MASK ) ) +#define GRETHGBIT_RDTBA_BASEADDR( _val ) \ + ( ( ( _val ) << GRETHGBIT_RDTBA_BASEADDR_SHIFT ) & \ + GRETHGBIT_RDTBA_BASEADDR_MASK ) + +#define GRETHGBIT_RDTBA_DESCPNT_SHIFT 3 +#define GRETHGBIT_RDTBA_DESCPNT_MASK 0x3f8U +#define GRETHGBIT_RDTBA_DESCPNT_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_RDTBA_DESCPNT_MASK ) >> \ + GRETHGBIT_RDTBA_DESCPNT_SHIFT ) +#define GRETHGBIT_RDTBA_DESCPNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_RDTBA_DESCPNT_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_RDTBA_DESCPNT_SHIFT ) & \ + GRETHGBIT_RDTBA_DESCPNT_MASK ) ) +#define GRETHGBIT_RDTBA_DESCPNT( _val ) \ + ( ( ( _val ) << GRETHGBIT_RDTBA_DESCPNT_SHIFT ) & \ + GRETHGBIT_RDTBA_DESCPNT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITEDCLMACMSB EDCL MAC address MSB. (EDCLMACMSB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_EDCLMACMSB_MSB_SHIFT 0 +#define GRETHGBIT_EDCLMACMSB_MSB_MASK 0xffffU +#define GRETHGBIT_EDCLMACMSB_MSB_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_EDCLMACMSB_MSB_MASK ) >> \ + GRETHGBIT_EDCLMACMSB_MSB_SHIFT ) +#define GRETHGBIT_EDCLMACMSB_MSB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_EDCLMACMSB_MSB_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_EDCLMACMSB_MSB_SHIFT ) & \ + GRETHGBIT_EDCLMACMSB_MSB_MASK ) ) +#define GRETHGBIT_EDCLMACMSB_MSB( _val ) \ + ( ( ( _val ) << GRETHGBIT_EDCLMACMSB_MSB_SHIFT ) & \ + GRETHGBIT_EDCLMACMSB_MSB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRETHGBITEDCLMACLSB EDCL MAC address LSB. (EDCLMACLSB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRETHGBIT_EDCLMACLSB_LSB_SHIFT 0 +#define GRETHGBIT_EDCLMACLSB_LSB_MASK 0xffffffffU +#define GRETHGBIT_EDCLMACLSB_LSB_GET( _reg ) \ + ( ( ( _reg ) & GRETHGBIT_EDCLMACLSB_LSB_MASK ) >> \ + GRETHGBIT_EDCLMACLSB_LSB_SHIFT ) +#define GRETHGBIT_EDCLMACLSB_LSB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRETHGBIT_EDCLMACLSB_LSB_MASK ) | \ + ( ( ( _val ) << GRETHGBIT_EDCLMACLSB_LSB_SHIFT ) & \ + GRETHGBIT_EDCLMACLSB_LSB_MASK ) ) +#define GRETHGBIT_EDCLMACLSB_LSB( _val ) \ + ( ( ( _val ) << GRETHGBIT_EDCLMACLSB_LSB_SHIFT ) & \ + GRETHGBIT_EDCLMACLSB_LSB_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRETH_GBIT register block memory map. + */ +typedef struct grethgbit { + /** + * @brief See @ref RTEMSDeviceGRETHGBITCR. + */ + uint32_t cr; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITSR. + */ + uint32_t sr; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITMACMSB. + */ + uint32_t macmsb; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITMACLSB. + */ + uint32_t maclsb; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITMDIO. + */ + uint32_t mdio; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITTDTBA. + */ + uint32_t tdtba; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITRDTBA. + */ + uint32_t rdtba; + + uint32_t reserved_1c_28[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITEDCLMACMSB. + */ + uint32_t edclmacmsb; + + /** + * @brief See @ref RTEMSDeviceGRETHGBITEDCLMACLSB. + */ + uint32_t edclmaclsb; +} grethgbit; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRETHGBIT_REGS_H */ diff --git a/bsps/include/grlib/grgpio-regs.h b/bsps/include/grlib/grgpio-regs.h new file mode 100644 index 0000000000..8c3c7ffb16 --- /dev/null +++ b/bsps/include/grlib/grgpio-regs.h @@ -0,0 +1,630 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRGPIO + * + * @brief This header file defines the GRGPIO register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grgpio-header */ + +#ifndef _GRLIB_GRGPIO_REGS_H +#define _GRLIB_GRGPIO_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grgpio */ + +/** + * @defgroup RTEMSDeviceGRGPIO GRGPIO + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRGPIO interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRGPIODATA I/O port data register (DATA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_DATA_DATA_SHIFT 0 +#define GRGPIO_DATA_DATA_MASK 0xffffffffU +#define GRGPIO_DATA_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_DATA_DATA_MASK ) >> \ + GRGPIO_DATA_DATA_SHIFT ) +#define GRGPIO_DATA_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_DATA_DATA_MASK ) | \ + ( ( ( _val ) << GRGPIO_DATA_DATA_SHIFT ) & \ + GRGPIO_DATA_DATA_MASK ) ) +#define GRGPIO_DATA_DATA( _val ) \ + ( ( ( _val ) << GRGPIO_DATA_DATA_SHIFT ) & \ + GRGPIO_DATA_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOOUTPUT I/O port output register (OUTPUT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_OUTPUT_DATA_SHIFT 0 +#define GRGPIO_OUTPUT_DATA_MASK 0xffffffffU +#define GRGPIO_OUTPUT_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_OUTPUT_DATA_MASK ) >> \ + GRGPIO_OUTPUT_DATA_SHIFT ) +#define GRGPIO_OUTPUT_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_OUTPUT_DATA_MASK ) | \ + ( ( ( _val ) << GRGPIO_OUTPUT_DATA_SHIFT ) & \ + GRGPIO_OUTPUT_DATA_MASK ) ) +#define GRGPIO_OUTPUT_DATA( _val ) \ + ( ( ( _val ) << GRGPIO_OUTPUT_DATA_SHIFT ) & \ + GRGPIO_OUTPUT_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIODIRECTION I/O port direction register (DIRECTION) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_DIRECTION_DIR_SHIFT 0 +#define GRGPIO_DIRECTION_DIR_MASK 0xffffffffU +#define GRGPIO_DIRECTION_DIR_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_DIRECTION_DIR_MASK ) >> \ + GRGPIO_DIRECTION_DIR_SHIFT ) +#define GRGPIO_DIRECTION_DIR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_DIRECTION_DIR_MASK ) | \ + ( ( ( _val ) << GRGPIO_DIRECTION_DIR_SHIFT ) & \ + GRGPIO_DIRECTION_DIR_MASK ) ) +#define GRGPIO_DIRECTION_DIR( _val ) \ + ( ( ( _val ) << GRGPIO_DIRECTION_DIR_SHIFT ) & \ + GRGPIO_DIRECTION_DIR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIMASK Interrupt mask register (IMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IMASK_MASK_SHIFT 0 +#define GRGPIO_IMASK_MASK_MASK 0xffffffffU +#define GRGPIO_IMASK_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IMASK_MASK_MASK ) >> \ + GRGPIO_IMASK_MASK_SHIFT ) +#define GRGPIO_IMASK_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IMASK_MASK_MASK ) | \ + ( ( ( _val ) << GRGPIO_IMASK_MASK_SHIFT ) & \ + GRGPIO_IMASK_MASK_MASK ) ) +#define GRGPIO_IMASK_MASK( _val ) \ + ( ( ( _val ) << GRGPIO_IMASK_MASK_SHIFT ) & \ + GRGPIO_IMASK_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIPOL Interrupt polarity register (IPOL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IPOL_POL_SHIFT 0 +#define GRGPIO_IPOL_POL_MASK 0xffffffffU +#define GRGPIO_IPOL_POL_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IPOL_POL_MASK ) >> \ + GRGPIO_IPOL_POL_SHIFT ) +#define GRGPIO_IPOL_POL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IPOL_POL_MASK ) | \ + ( ( ( _val ) << GRGPIO_IPOL_POL_SHIFT ) & \ + GRGPIO_IPOL_POL_MASK ) ) +#define GRGPIO_IPOL_POL( _val ) \ + ( ( ( _val ) << GRGPIO_IPOL_POL_SHIFT ) & \ + GRGPIO_IPOL_POL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIEDGE Interrupt edge register (IEDGE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IEDGE_EDGE_SHIFT 0 +#define GRGPIO_IEDGE_EDGE_MASK 0xffffffffU +#define GRGPIO_IEDGE_EDGE_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IEDGE_EDGE_MASK ) >> \ + GRGPIO_IEDGE_EDGE_SHIFT ) +#define GRGPIO_IEDGE_EDGE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IEDGE_EDGE_MASK ) | \ + ( ( ( _val ) << GRGPIO_IEDGE_EDGE_SHIFT ) & \ + GRGPIO_IEDGE_EDGE_MASK ) ) +#define GRGPIO_IEDGE_EDGE( _val ) \ + ( ( ( _val ) << GRGPIO_IEDGE_EDGE_SHIFT ) & \ + GRGPIO_IEDGE_EDGE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOBYPASS Bypass register (BYPASS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_BYPASS_BYPASS_SHIFT 0 +#define GRGPIO_BYPASS_BYPASS_MASK 0xffffffffU +#define GRGPIO_BYPASS_BYPASS_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_BYPASS_BYPASS_MASK ) >> \ + GRGPIO_BYPASS_BYPASS_SHIFT ) +#define GRGPIO_BYPASS_BYPASS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_BYPASS_BYPASS_MASK ) | \ + ( ( ( _val ) << GRGPIO_BYPASS_BYPASS_SHIFT ) & \ + GRGPIO_BYPASS_BYPASS_MASK ) ) +#define GRGPIO_BYPASS_BYPASS( _val ) \ + ( ( ( _val ) << GRGPIO_BYPASS_BYPASS_SHIFT ) & \ + GRGPIO_BYPASS_BYPASS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOCAP Capability register (CAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_CAP_PU 0x40000U + +#define GRGPIO_CAP_IER 0x20000U + +#define GRGPIO_CAP_IFL 0x10000U + +#define GRGPIO_CAP_IRQGEN_SHIFT 8 +#define GRGPIO_CAP_IRQGEN_MASK 0x1f00U +#define GRGPIO_CAP_IRQGEN_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_CAP_IRQGEN_MASK ) >> \ + GRGPIO_CAP_IRQGEN_SHIFT ) +#define GRGPIO_CAP_IRQGEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_CAP_IRQGEN_MASK ) | \ + ( ( ( _val ) << GRGPIO_CAP_IRQGEN_SHIFT ) & \ + GRGPIO_CAP_IRQGEN_MASK ) ) +#define GRGPIO_CAP_IRQGEN( _val ) \ + ( ( ( _val ) << GRGPIO_CAP_IRQGEN_SHIFT ) & \ + GRGPIO_CAP_IRQGEN_MASK ) + +#define GRGPIO_CAP_NLINES_SHIFT 0 +#define GRGPIO_CAP_NLINES_MASK 0x1fU +#define GRGPIO_CAP_NLINES_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_CAP_NLINES_MASK ) >> \ + GRGPIO_CAP_NLINES_SHIFT ) +#define GRGPIO_CAP_NLINES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_CAP_NLINES_MASK ) | \ + ( ( ( _val ) << GRGPIO_CAP_NLINES_SHIFT ) & \ + GRGPIO_CAP_NLINES_MASK ) ) +#define GRGPIO_CAP_NLINES( _val ) \ + ( ( ( _val ) << GRGPIO_CAP_NLINES_SHIFT ) & \ + GRGPIO_CAP_NLINES_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIRQMAPR \ + * Interrupt map register n, where n = 0 .. 3 (IRQMAPR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IRQMAPR_IRQMAP_I_0_SHIFT 24 +#define GRGPIO_IRQMAPR_IRQMAP_I_0_MASK 0x1f000000U +#define GRGPIO_IRQMAPR_IRQMAP_I_0_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IRQMAPR_IRQMAP_I_0_MASK ) >> \ + GRGPIO_IRQMAPR_IRQMAP_I_0_SHIFT ) +#define GRGPIO_IRQMAPR_IRQMAP_I_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IRQMAPR_IRQMAP_I_0_MASK ) | \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_0_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_0_MASK ) ) +#define GRGPIO_IRQMAPR_IRQMAP_I_0( _val ) \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_0_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_0_MASK ) + +#define GRGPIO_IRQMAPR_IRQMAP_I_1_SHIFT 16 +#define GRGPIO_IRQMAPR_IRQMAP_I_1_MASK 0x1f0000U +#define GRGPIO_IRQMAPR_IRQMAP_I_1_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IRQMAPR_IRQMAP_I_1_MASK ) >> \ + GRGPIO_IRQMAPR_IRQMAP_I_1_SHIFT ) +#define GRGPIO_IRQMAPR_IRQMAP_I_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IRQMAPR_IRQMAP_I_1_MASK ) | \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_1_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_1_MASK ) ) +#define GRGPIO_IRQMAPR_IRQMAP_I_1( _val ) \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_1_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_1_MASK ) + +#define GRGPIO_IRQMAPR_IRQMAP_I_2_SHIFT 8 +#define GRGPIO_IRQMAPR_IRQMAP_I_2_MASK 0x1f00U +#define GRGPIO_IRQMAPR_IRQMAP_I_2_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IRQMAPR_IRQMAP_I_2_MASK ) >> \ + GRGPIO_IRQMAPR_IRQMAP_I_2_SHIFT ) +#define GRGPIO_IRQMAPR_IRQMAP_I_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IRQMAPR_IRQMAP_I_2_MASK ) | \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_2_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_2_MASK ) ) +#define GRGPIO_IRQMAPR_IRQMAP_I_2( _val ) \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_2_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_2_MASK ) + +#define GRGPIO_IRQMAPR_IRQMAP_I_3_SHIFT 0 +#define GRGPIO_IRQMAPR_IRQMAP_I_3_MASK 0x1fU +#define GRGPIO_IRQMAPR_IRQMAP_I_3_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IRQMAPR_IRQMAP_I_3_MASK ) >> \ + GRGPIO_IRQMAPR_IRQMAP_I_3_SHIFT ) +#define GRGPIO_IRQMAPR_IRQMAP_I_3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IRQMAPR_IRQMAP_I_3_MASK ) | \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_3_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_3_MASK ) ) +#define GRGPIO_IRQMAPR_IRQMAP_I_3( _val ) \ + ( ( ( _val ) << GRGPIO_IRQMAPR_IRQMAP_I_3_SHIFT ) & \ + GRGPIO_IRQMAPR_IRQMAP_I_3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIAVAIL Interrupt available register (IAVAIL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IAVAIL_IMASK_SHIFT 0 +#define GRGPIO_IAVAIL_IMASK_MASK 0xffffffffU +#define GRGPIO_IAVAIL_IMASK_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IAVAIL_IMASK_MASK ) >> \ + GRGPIO_IAVAIL_IMASK_SHIFT ) +#define GRGPIO_IAVAIL_IMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IAVAIL_IMASK_MASK ) | \ + ( ( ( _val ) << GRGPIO_IAVAIL_IMASK_SHIFT ) & \ + GRGPIO_IAVAIL_IMASK_MASK ) ) +#define GRGPIO_IAVAIL_IMASK( _val ) \ + ( ( ( _val ) << GRGPIO_IAVAIL_IMASK_SHIFT ) & \ + GRGPIO_IAVAIL_IMASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIFLAG Interrupt flag register (IFLAG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IFLAG_IFLAG_SHIFT 0 +#define GRGPIO_IFLAG_IFLAG_MASK 0xffffffffU +#define GRGPIO_IFLAG_IFLAG_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IFLAG_IFLAG_MASK ) >> \ + GRGPIO_IFLAG_IFLAG_SHIFT ) +#define GRGPIO_IFLAG_IFLAG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IFLAG_IFLAG_MASK ) | \ + ( ( ( _val ) << GRGPIO_IFLAG_IFLAG_SHIFT ) & \ + GRGPIO_IFLAG_IFLAG_MASK ) ) +#define GRGPIO_IFLAG_IFLAG( _val ) \ + ( ( ( _val ) << GRGPIO_IFLAG_IFLAG_SHIFT ) & \ + GRGPIO_IFLAG_IFLAG_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOIPEN Interrupt enable register (IPEN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_IPEN_IPEN_SHIFT 0 +#define GRGPIO_IPEN_IPEN_MASK 0xffffffffU +#define GRGPIO_IPEN_IPEN_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_IPEN_IPEN_MASK ) >> \ + GRGPIO_IPEN_IPEN_SHIFT ) +#define GRGPIO_IPEN_IPEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_IPEN_IPEN_MASK ) | \ + ( ( ( _val ) << GRGPIO_IPEN_IPEN_SHIFT ) & \ + GRGPIO_IPEN_IPEN_MASK ) ) +#define GRGPIO_IPEN_IPEN( _val ) \ + ( ( ( _val ) << GRGPIO_IPEN_IPEN_SHIFT ) & \ + GRGPIO_IPEN_IPEN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOPULSE Pulse register (PULSE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_PULSE_PULSE_SHIFT 0 +#define GRGPIO_PULSE_PULSE_MASK 0xffffffffU +#define GRGPIO_PULSE_PULSE_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_PULSE_PULSE_MASK ) >> \ + GRGPIO_PULSE_PULSE_SHIFT ) +#define GRGPIO_PULSE_PULSE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_PULSE_PULSE_MASK ) | \ + ( ( ( _val ) << GRGPIO_PULSE_PULSE_SHIFT ) & \ + GRGPIO_PULSE_PULSE_MASK ) ) +#define GRGPIO_PULSE_PULSE( _val ) \ + ( ( ( _val ) << GRGPIO_PULSE_PULSE_SHIFT ) & \ + GRGPIO_PULSE_PULSE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOLOR Logical-OR registers (LOR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_LOR_DATA_SHIFT 0 +#define GRGPIO_LOR_DATA_MASK 0xffffffffU +#define GRGPIO_LOR_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_LOR_DATA_MASK ) >> \ + GRGPIO_LOR_DATA_SHIFT ) +#define GRGPIO_LOR_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_LOR_DATA_MASK ) | \ + ( ( ( _val ) << GRGPIO_LOR_DATA_SHIFT ) & \ + GRGPIO_LOR_DATA_MASK ) ) +#define GRGPIO_LOR_DATA( _val ) \ + ( ( ( _val ) << GRGPIO_LOR_DATA_SHIFT ) & \ + GRGPIO_LOR_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOLAND Logical-AND registers (LAND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_LAND_DATA_SHIFT 0 +#define GRGPIO_LAND_DATA_MASK 0xffffffffU +#define GRGPIO_LAND_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_LAND_DATA_MASK ) >> \ + GRGPIO_LAND_DATA_SHIFT ) +#define GRGPIO_LAND_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_LAND_DATA_MASK ) | \ + ( ( ( _val ) << GRGPIO_LAND_DATA_SHIFT ) & \ + GRGPIO_LAND_DATA_MASK ) ) +#define GRGPIO_LAND_DATA( _val ) \ + ( ( ( _val ) << GRGPIO_LAND_DATA_SHIFT ) & \ + GRGPIO_LAND_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRGPIOLXOR Logical-XOR registers (LXOR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRGPIO_LXOR_DATA_SHIFT 0 +#define GRGPIO_LXOR_DATA_MASK 0xffffffffU +#define GRGPIO_LXOR_DATA_GET( _reg ) \ + ( ( ( _reg ) & GRGPIO_LXOR_DATA_MASK ) >> \ + GRGPIO_LXOR_DATA_SHIFT ) +#define GRGPIO_LXOR_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRGPIO_LXOR_DATA_MASK ) | \ + ( ( ( _val ) << GRGPIO_LXOR_DATA_SHIFT ) & \ + GRGPIO_LXOR_DATA_MASK ) ) +#define GRGPIO_LXOR_DATA( _val ) \ + ( ( ( _val ) << GRGPIO_LXOR_DATA_SHIFT ) & \ + GRGPIO_LXOR_DATA_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRGPIO register block memory map. + */ +typedef struct grgpio { + /** + * @brief See @ref RTEMSDeviceGRGPIODATA. + */ + uint32_t data; + + /** + * @brief See @ref RTEMSDeviceGRGPIOOUTPUT. + */ + uint32_t output; + + /** + * @brief See @ref RTEMSDeviceGRGPIODIRECTION. + */ + uint32_t direction; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIMASK. + */ + uint32_t imask; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIPOL. + */ + uint32_t ipol; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIEDGE. + */ + uint32_t iedge; + + /** + * @brief See @ref RTEMSDeviceGRGPIOBYPASS. + */ + uint32_t bypass; + + /** + * @brief See @ref RTEMSDeviceGRGPIOCAP. + */ + uint32_t cap; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIRQMAPR. + */ + uint32_t irqmapr[ 8 ]; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIAVAIL. + */ + uint32_t iavail; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIFLAG. + */ + uint32_t iflag; + + /** + * @brief See @ref RTEMSDeviceGRGPIOIPEN. + */ + uint32_t ipen; + + /** + * @brief See @ref RTEMSDeviceGRGPIOPULSE. + */ + uint32_t pulse; + + uint32_t reserved_50_54; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLOR. + */ + uint32_t lor_output; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLOR. + */ + uint32_t lor_direction; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLOR. + */ + uint32_t lor_imask; + + uint32_t reserved_60_64; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLAND. + */ + uint32_t land_output; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLAND. + */ + uint32_t land_direction; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLAND. + */ + uint32_t land_imask; + + uint32_t reserved_70_74; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLXOR. + */ + uint32_t lxor_output; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLXOR. + */ + uint32_t lxor_direction; + + /** + * @brief See @ref RTEMSDeviceGRGPIOLXOR. + */ + uint32_t lxor_imask; +} grgpio; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRGPIO_REGS_H */ diff --git a/bsps/include/grlib/grgpio.h b/bsps/include/grlib/grgpio.h index c49054548c..6d4a28dc81 100644 --- a/bsps/include/grlib/grgpio.h +++ b/bsps/include/grlib/grgpio.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRGPIO GPIO Driver interface. * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __GRGPIO_H__ diff --git a/bsps/include/grlib/griommu-regs.h b/bsps/include/grlib/griommu-regs.h new file mode 100644 index 0000000000..4140101a14 --- /dev/null +++ b/bsps/include/grlib/griommu-regs.h @@ -0,0 +1,878 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRIOMMU + * + * @brief This header file defines the GRIOMMU register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/griommu-header */ + +#ifndef _GRLIB_GRIOMMU_REGS_H +#define _GRLIB_GRIOMMU_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/griommu */ + +/** + * @defgroup RTEMSDeviceGRIOMMU GRIOMMU + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRIOMMU interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRIOMMUCAP0 Capability register 0 (CAP0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_CAP0_A 0x80000000U + +#define GRIOMMU_CAP0_AC 0x40000000U + +#define GRIOMMU_CAP0_CA 0x20000000U + +#define GRIOMMU_CAP0_CP 0x10000000U + +#define GRIOMMU_CAP0_NARB_SHIFT 20 +#define GRIOMMU_CAP0_NARB_MASK 0xf00000U +#define GRIOMMU_CAP0_NARB_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP0_NARB_MASK ) >> \ + GRIOMMU_CAP0_NARB_SHIFT ) +#define GRIOMMU_CAP0_NARB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP0_NARB_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP0_NARB_SHIFT ) & \ + GRIOMMU_CAP0_NARB_MASK ) ) +#define GRIOMMU_CAP0_NARB( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP0_NARB_SHIFT ) & \ + GRIOMMU_CAP0_NARB_MASK ) + +#define GRIOMMU_CAP0_CS 0x80000U + +#define GRIOMMU_CAP0_FT_SHIFT 17 +#define GRIOMMU_CAP0_FT_MASK 0x60000U +#define GRIOMMU_CAP0_FT_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP0_FT_MASK ) >> \ + GRIOMMU_CAP0_FT_SHIFT ) +#define GRIOMMU_CAP0_FT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP0_FT_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP0_FT_SHIFT ) & \ + GRIOMMU_CAP0_FT_MASK ) ) +#define GRIOMMU_CAP0_FT( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP0_FT_SHIFT ) & \ + GRIOMMU_CAP0_FT_MASK ) + +#define GRIOMMU_CAP0_ST 0x10000U + +#define GRIOMMU_CAP0_I 0x8000U + +#define GRIOMMU_CAP0_IT 0x4000U + +#define GRIOMMU_CAP0_IA 0x2000U + +#define GRIOMMU_CAP0_IP 0x1000U + +#define GRIOMMU_CAP0_MB 0x100U + +#define GRIOMMU_CAP0_GRPS_SHIFT 4 +#define GRIOMMU_CAP0_GRPS_MASK 0xf0U +#define GRIOMMU_CAP0_GRPS_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP0_GRPS_MASK ) >> \ + GRIOMMU_CAP0_GRPS_SHIFT ) +#define GRIOMMU_CAP0_GRPS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP0_GRPS_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP0_GRPS_SHIFT ) & \ + GRIOMMU_CAP0_GRPS_MASK ) ) +#define GRIOMMU_CAP0_GRPS( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP0_GRPS_SHIFT ) & \ + GRIOMMU_CAP0_GRPS_MASK ) + +#define GRIOMMU_CAP0_MSTS_SHIFT 0 +#define GRIOMMU_CAP0_MSTS_MASK 0xfU +#define GRIOMMU_CAP0_MSTS_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP0_MSTS_MASK ) >> \ + GRIOMMU_CAP0_MSTS_SHIFT ) +#define GRIOMMU_CAP0_MSTS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP0_MSTS_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP0_MSTS_SHIFT ) & \ + GRIOMMU_CAP0_MSTS_MASK ) ) +#define GRIOMMU_CAP0_MSTS( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP0_MSTS_SHIFT ) & \ + GRIOMMU_CAP0_MSTS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUCAP1 Capability register 1 (CAP1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_CAP1_CADDR_SHIFT 20 +#define GRIOMMU_CAP1_CADDR_MASK 0xfff00000U +#define GRIOMMU_CAP1_CADDR_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP1_CADDR_MASK ) >> \ + GRIOMMU_CAP1_CADDR_SHIFT ) +#define GRIOMMU_CAP1_CADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP1_CADDR_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP1_CADDR_SHIFT ) & \ + GRIOMMU_CAP1_CADDR_MASK ) ) +#define GRIOMMU_CAP1_CADDR( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP1_CADDR_SHIFT ) & \ + GRIOMMU_CAP1_CADDR_MASK ) + +#define GRIOMMU_CAP1_CMASK_SHIFT 16 +#define GRIOMMU_CAP1_CMASK_MASK 0xf0000U +#define GRIOMMU_CAP1_CMASK_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP1_CMASK_MASK ) >> \ + GRIOMMU_CAP1_CMASK_SHIFT ) +#define GRIOMMU_CAP1_CMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP1_CMASK_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP1_CMASK_SHIFT ) & \ + GRIOMMU_CAP1_CMASK_MASK ) ) +#define GRIOMMU_CAP1_CMASK( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP1_CMASK_SHIFT ) & \ + GRIOMMU_CAP1_CMASK_MASK ) + +#define GRIOMMU_CAP1_CTAGBITS_SHIFT 8 +#define GRIOMMU_CAP1_CTAGBITS_MASK 0xff00U +#define GRIOMMU_CAP1_CTAGBITS_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP1_CTAGBITS_MASK ) >> \ + GRIOMMU_CAP1_CTAGBITS_SHIFT ) +#define GRIOMMU_CAP1_CTAGBITS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP1_CTAGBITS_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP1_CTAGBITS_SHIFT ) & \ + GRIOMMU_CAP1_CTAGBITS_MASK ) ) +#define GRIOMMU_CAP1_CTAGBITS( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP1_CTAGBITS_SHIFT ) & \ + GRIOMMU_CAP1_CTAGBITS_MASK ) + +#define GRIOMMU_CAP1_CISIZE_SHIFT 5 +#define GRIOMMU_CAP1_CISIZE_MASK 0xe0U +#define GRIOMMU_CAP1_CISIZE_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP1_CISIZE_MASK ) >> \ + GRIOMMU_CAP1_CISIZE_SHIFT ) +#define GRIOMMU_CAP1_CISIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP1_CISIZE_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP1_CISIZE_SHIFT ) & \ + GRIOMMU_CAP1_CISIZE_MASK ) ) +#define GRIOMMU_CAP1_CISIZE( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP1_CISIZE_SHIFT ) & \ + GRIOMMU_CAP1_CISIZE_MASK ) + +#define GRIOMMU_CAP1_CLINES_SHIFT 0 +#define GRIOMMU_CAP1_CLINES_MASK 0x1fU +#define GRIOMMU_CAP1_CLINES_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP1_CLINES_MASK ) >> \ + GRIOMMU_CAP1_CLINES_SHIFT ) +#define GRIOMMU_CAP1_CLINES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP1_CLINES_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP1_CLINES_SHIFT ) & \ + GRIOMMU_CAP1_CLINES_MASK ) ) +#define GRIOMMU_CAP1_CLINES( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP1_CLINES_SHIFT ) & \ + GRIOMMU_CAP1_CLINES_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUCAP2 Capability register 2 (CAP2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_CAP2_TMASK_SHIFT 24 +#define GRIOMMU_CAP2_TMASK_MASK 0xff000000U +#define GRIOMMU_CAP2_TMASK_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_TMASK_MASK ) >> \ + GRIOMMU_CAP2_TMASK_SHIFT ) +#define GRIOMMU_CAP2_TMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_TMASK_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_TMASK_SHIFT ) & \ + GRIOMMU_CAP2_TMASK_MASK ) ) +#define GRIOMMU_CAP2_TMASK( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_TMASK_SHIFT ) & \ + GRIOMMU_CAP2_TMASK_MASK ) + +#define GRIOMMU_CAP2_MTYPE_SHIFT 18 +#define GRIOMMU_CAP2_MTYPE_MASK 0xc0000U +#define GRIOMMU_CAP2_MTYPE_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_MTYPE_MASK ) >> \ + GRIOMMU_CAP2_MTYPE_SHIFT ) +#define GRIOMMU_CAP2_MTYPE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_MTYPE_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_MTYPE_SHIFT ) & \ + GRIOMMU_CAP2_MTYPE_MASK ) ) +#define GRIOMMU_CAP2_MTYPE( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_MTYPE_SHIFT ) & \ + GRIOMMU_CAP2_MTYPE_MASK ) + +#define GRIOMMU_CAP2_TTYPE_SHIFT 16 +#define GRIOMMU_CAP2_TTYPE_MASK 0x30000U +#define GRIOMMU_CAP2_TTYPE_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_TTYPE_MASK ) >> \ + GRIOMMU_CAP2_TTYPE_SHIFT ) +#define GRIOMMU_CAP2_TTYPE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_TTYPE_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_TTYPE_SHIFT ) & \ + GRIOMMU_CAP2_TTYPE_MASK ) ) +#define GRIOMMU_CAP2_TTYPE( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_TTYPE_SHIFT ) & \ + GRIOMMU_CAP2_TTYPE_MASK ) + +#define GRIOMMU_CAP2_TTAGBITS_SHIFT 8 +#define GRIOMMU_CAP2_TTAGBITS_MASK 0xff00U +#define GRIOMMU_CAP2_TTAGBITS_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_TTAGBITS_MASK ) >> \ + GRIOMMU_CAP2_TTAGBITS_SHIFT ) +#define GRIOMMU_CAP2_TTAGBITS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_TTAGBITS_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_TTAGBITS_SHIFT ) & \ + GRIOMMU_CAP2_TTAGBITS_MASK ) ) +#define GRIOMMU_CAP2_TTAGBITS( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_TTAGBITS_SHIFT ) & \ + GRIOMMU_CAP2_TTAGBITS_MASK ) + +#define GRIOMMU_CAP2_ISIZE_SHIFT 5 +#define GRIOMMU_CAP2_ISIZE_MASK 0xe0U +#define GRIOMMU_CAP2_ISIZE_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_ISIZE_MASK ) >> \ + GRIOMMU_CAP2_ISIZE_SHIFT ) +#define GRIOMMU_CAP2_ISIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_ISIZE_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_ISIZE_SHIFT ) & \ + GRIOMMU_CAP2_ISIZE_MASK ) ) +#define GRIOMMU_CAP2_ISIZE( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_ISIZE_SHIFT ) & \ + GRIOMMU_CAP2_ISIZE_MASK ) + +#define GRIOMMU_CAP2_TLBENT_SHIFT 0 +#define GRIOMMU_CAP2_TLBENT_MASK 0x1fU +#define GRIOMMU_CAP2_TLBENT_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CAP2_TLBENT_MASK ) >> \ + GRIOMMU_CAP2_TLBENT_SHIFT ) +#define GRIOMMU_CAP2_TLBENT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CAP2_TLBENT_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CAP2_TLBENT_SHIFT ) & \ + GRIOMMU_CAP2_TLBENT_MASK ) ) +#define GRIOMMU_CAP2_TLBENT( _val ) \ + ( ( ( _val ) << GRIOMMU_CAP2_TLBENT_SHIFT ) & \ + GRIOMMU_CAP2_TLBENT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUCTRL Control register (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_CTRL_PGSZ_SHIFT 18 +#define GRIOMMU_CTRL_PGSZ_MASK 0x1c0000U +#define GRIOMMU_CTRL_PGSZ_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CTRL_PGSZ_MASK ) >> \ + GRIOMMU_CTRL_PGSZ_SHIFT ) +#define GRIOMMU_CTRL_PGSZ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CTRL_PGSZ_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CTRL_PGSZ_SHIFT ) & \ + GRIOMMU_CTRL_PGSZ_MASK ) ) +#define GRIOMMU_CTRL_PGSZ( _val ) \ + ( ( ( _val ) << GRIOMMU_CTRL_PGSZ_SHIFT ) & \ + GRIOMMU_CTRL_PGSZ_MASK ) + +#define GRIOMMU_CTRL_LB 0x20000U + +#define GRIOMMU_CTRL_SP 0x10000U + +#define GRIOMMU_CTRL_ITR_SHIFT 12 +#define GRIOMMU_CTRL_ITR_MASK 0xf000U +#define GRIOMMU_CTRL_ITR_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CTRL_ITR_MASK ) >> \ + GRIOMMU_CTRL_ITR_SHIFT ) +#define GRIOMMU_CTRL_ITR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CTRL_ITR_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CTRL_ITR_SHIFT ) & \ + GRIOMMU_CTRL_ITR_MASK ) ) +#define GRIOMMU_CTRL_ITR( _val ) \ + ( ( ( _val ) << GRIOMMU_CTRL_ITR_SHIFT ) & \ + GRIOMMU_CTRL_ITR_MASK ) + +#define GRIOMMU_CTRL_DP 0x800U + +#define GRIOMMU_CTRL_SIV 0x400U + +#define GRIOMMU_CTRL_HPROT_SHIFT 8 +#define GRIOMMU_CTRL_HPROT_MASK 0x300U +#define GRIOMMU_CTRL_HPROT_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CTRL_HPROT_MASK ) >> \ + GRIOMMU_CTRL_HPROT_SHIFT ) +#define GRIOMMU_CTRL_HPROT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CTRL_HPROT_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CTRL_HPROT_SHIFT ) & \ + GRIOMMU_CTRL_HPROT_MASK ) ) +#define GRIOMMU_CTRL_HPROT( _val ) \ + ( ( ( _val ) << GRIOMMU_CTRL_HPROT_SHIFT ) & \ + GRIOMMU_CTRL_HPROT_MASK ) + +#define GRIOMMU_CTRL_AU 0x80U + +#define GRIOMMU_CTRL_WP 0x40U + +#define GRIOMMU_CTRL_DM 0x20U + +#define GRIOMMU_CTRL_GS 0x10U + +#define GRIOMMU_CTRL_CE 0x8U + +#define GRIOMMU_CTRL_PM_SHIFT 1 +#define GRIOMMU_CTRL_PM_MASK 0x6U +#define GRIOMMU_CTRL_PM_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_CTRL_PM_MASK ) >> \ + GRIOMMU_CTRL_PM_SHIFT ) +#define GRIOMMU_CTRL_PM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_CTRL_PM_MASK ) | \ + ( ( ( _val ) << GRIOMMU_CTRL_PM_SHIFT ) & \ + GRIOMMU_CTRL_PM_MASK ) ) +#define GRIOMMU_CTRL_PM( _val ) \ + ( ( ( _val ) << GRIOMMU_CTRL_PM_SHIFT ) & \ + GRIOMMU_CTRL_PM_MASK ) + +#define GRIOMMU_CTRL_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUFLUSH TLB/cache flush register (FLUSH) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_FLUSH_FGRP_SHIFT 4 +#define GRIOMMU_FLUSH_FGRP_MASK 0xf0U +#define GRIOMMU_FLUSH_FGRP_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_FLUSH_FGRP_MASK ) >> \ + GRIOMMU_FLUSH_FGRP_SHIFT ) +#define GRIOMMU_FLUSH_FGRP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_FLUSH_FGRP_MASK ) | \ + ( ( ( _val ) << GRIOMMU_FLUSH_FGRP_SHIFT ) & \ + GRIOMMU_FLUSH_FGRP_MASK ) ) +#define GRIOMMU_FLUSH_FGRP( _val ) \ + ( ( ( _val ) << GRIOMMU_FLUSH_FGRP_SHIFT ) & \ + GRIOMMU_FLUSH_FGRP_MASK ) + +#define GRIOMMU_FLUSH_GF 0x2U + +#define GRIOMMU_FLUSH_F 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUSTATUS Status register (STATUS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_STATUS_PE 0x20U + +#define GRIOMMU_STATUS_DE 0x10U + +#define GRIOMMU_STATUS_FC 0x8U + +#define GRIOMMU_STATUS_FL 0x4U + +#define GRIOMMU_STATUS_AD 0x2U + +#define GRIOMMU_STATUS_TE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUIMASK Interrupt mask register (IMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_IMASK_PEI 0x20U + +#define GRIOMMU_IMASK_FCI 0x8U + +#define GRIOMMU_IMASK_FLI 0x4U + +#define GRIOMMU_IMASK_ADI 0x2U + +#define GRIOMMU_IMASK_TEI 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUAHBFAS AHB failing access register (AHBFAS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_AHBFAS_FADDR_31_5_SHIFT 5 +#define GRIOMMU_AHBFAS_FADDR_31_5_MASK 0xffffffe0U +#define GRIOMMU_AHBFAS_FADDR_31_5_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_AHBFAS_FADDR_31_5_MASK ) >> \ + GRIOMMU_AHBFAS_FADDR_31_5_SHIFT ) +#define GRIOMMU_AHBFAS_FADDR_31_5_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_AHBFAS_FADDR_31_5_MASK ) | \ + ( ( ( _val ) << GRIOMMU_AHBFAS_FADDR_31_5_SHIFT ) & \ + GRIOMMU_AHBFAS_FADDR_31_5_MASK ) ) +#define GRIOMMU_AHBFAS_FADDR_31_5( _val ) \ + ( ( ( _val ) << GRIOMMU_AHBFAS_FADDR_31_5_SHIFT ) & \ + GRIOMMU_AHBFAS_FADDR_31_5_MASK ) + +#define GRIOMMU_AHBFAS_FW 0x10U + +#define GRIOMMU_AHBFAS_FMASTER_SHIFT 0 +#define GRIOMMU_AHBFAS_FMASTER_MASK 0xfU +#define GRIOMMU_AHBFAS_FMASTER_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_AHBFAS_FMASTER_MASK ) >> \ + GRIOMMU_AHBFAS_FMASTER_SHIFT ) +#define GRIOMMU_AHBFAS_FMASTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_AHBFAS_FMASTER_MASK ) | \ + ( ( ( _val ) << GRIOMMU_AHBFAS_FMASTER_SHIFT ) & \ + GRIOMMU_AHBFAS_FMASTER_MASK ) ) +#define GRIOMMU_AHBFAS_FMASTER( _val ) \ + ( ( ( _val ) << GRIOMMU_AHBFAS_FMASTER_SHIFT ) & \ + GRIOMMU_AHBFAS_FMASTER_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUMSTCFG \ + * Master configuration register 0 - 9 (MSTCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_MSTCFG_VENDOR_SHIFT 24 +#define GRIOMMU_MSTCFG_VENDOR_MASK 0xff000000U +#define GRIOMMU_MSTCFG_VENDOR_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_MSTCFG_VENDOR_MASK ) >> \ + GRIOMMU_MSTCFG_VENDOR_SHIFT ) +#define GRIOMMU_MSTCFG_VENDOR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_MSTCFG_VENDOR_MASK ) | \ + ( ( ( _val ) << GRIOMMU_MSTCFG_VENDOR_SHIFT ) & \ + GRIOMMU_MSTCFG_VENDOR_MASK ) ) +#define GRIOMMU_MSTCFG_VENDOR( _val ) \ + ( ( ( _val ) << GRIOMMU_MSTCFG_VENDOR_SHIFT ) & \ + GRIOMMU_MSTCFG_VENDOR_MASK ) + +#define GRIOMMU_MSTCFG_DEVICE_SHIFT 12 +#define GRIOMMU_MSTCFG_DEVICE_MASK 0xfff000U +#define GRIOMMU_MSTCFG_DEVICE_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_MSTCFG_DEVICE_MASK ) >> \ + GRIOMMU_MSTCFG_DEVICE_SHIFT ) +#define GRIOMMU_MSTCFG_DEVICE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_MSTCFG_DEVICE_MASK ) | \ + ( ( ( _val ) << GRIOMMU_MSTCFG_DEVICE_SHIFT ) & \ + GRIOMMU_MSTCFG_DEVICE_MASK ) ) +#define GRIOMMU_MSTCFG_DEVICE( _val ) \ + ( ( ( _val ) << GRIOMMU_MSTCFG_DEVICE_SHIFT ) & \ + GRIOMMU_MSTCFG_DEVICE_MASK ) + +#define GRIOMMU_MSTCFG_BS 0x10U + +#define GRIOMMU_MSTCFG_GROUP_SHIFT 0 +#define GRIOMMU_MSTCFG_GROUP_MASK 0xfU +#define GRIOMMU_MSTCFG_GROUP_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_MSTCFG_GROUP_MASK ) >> \ + GRIOMMU_MSTCFG_GROUP_SHIFT ) +#define GRIOMMU_MSTCFG_GROUP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_MSTCFG_GROUP_MASK ) | \ + ( ( ( _val ) << GRIOMMU_MSTCFG_GROUP_SHIFT ) & \ + GRIOMMU_MSTCFG_GROUP_MASK ) ) +#define GRIOMMU_MSTCFG_GROUP( _val ) \ + ( ( ( _val ) << GRIOMMU_MSTCFG_GROUP_SHIFT ) & \ + GRIOMMU_MSTCFG_GROUP_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUGRPCTRL Group control register 0 - 7 (GRPCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_GRPCTRL_BASE_31_4_SHIFT 4 +#define GRIOMMU_GRPCTRL_BASE_31_4_MASK 0xfffffff0U +#define GRIOMMU_GRPCTRL_BASE_31_4_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_GRPCTRL_BASE_31_4_MASK ) >> \ + GRIOMMU_GRPCTRL_BASE_31_4_SHIFT ) +#define GRIOMMU_GRPCTRL_BASE_31_4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_GRPCTRL_BASE_31_4_MASK ) | \ + ( ( ( _val ) << GRIOMMU_GRPCTRL_BASE_31_4_SHIFT ) & \ + GRIOMMU_GRPCTRL_BASE_31_4_MASK ) ) +#define GRIOMMU_GRPCTRL_BASE_31_4( _val ) \ + ( ( ( _val ) << GRIOMMU_GRPCTRL_BASE_31_4_SHIFT ) & \ + GRIOMMU_GRPCTRL_BASE_31_4_MASK ) + +#define GRIOMMU_GRPCTRL_P 0x2U + +#define GRIOMMU_GRPCTRL_AG 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUDIAGCTRL \ + * Diagnostic cache access register (DIAGCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_DIAGCTRL_DA 0x80000000U + +#define GRIOMMU_DIAGCTRL_RW 0x40000000U + +#define GRIOMMU_DIAGCTRL_DP 0x200000U + +#define GRIOMMU_DIAGCTRL_TP 0x100000U + +#define GRIOMMU_DIAGCTRL_SETADDR_SHIFT 0 +#define GRIOMMU_DIAGCTRL_SETADDR_MASK 0x7ffffU +#define GRIOMMU_DIAGCTRL_SETADDR_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_DIAGCTRL_SETADDR_MASK ) >> \ + GRIOMMU_DIAGCTRL_SETADDR_SHIFT ) +#define GRIOMMU_DIAGCTRL_SETADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_DIAGCTRL_SETADDR_MASK ) | \ + ( ( ( _val ) << GRIOMMU_DIAGCTRL_SETADDR_SHIFT ) & \ + GRIOMMU_DIAGCTRL_SETADDR_MASK ) ) +#define GRIOMMU_DIAGCTRL_SETADDR( _val ) \ + ( ( ( _val ) << GRIOMMU_DIAGCTRL_SETADDR_SHIFT ) & \ + GRIOMMU_DIAGCTRL_SETADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUDIAGD \ + * Diagnostic cache access data register 0 - 7 (DIAGD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_DIAGD_CDATAN_SHIFT 0 +#define GRIOMMU_DIAGD_CDATAN_MASK 0xffffffffU +#define GRIOMMU_DIAGD_CDATAN_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_DIAGD_CDATAN_MASK ) >> \ + GRIOMMU_DIAGD_CDATAN_SHIFT ) +#define GRIOMMU_DIAGD_CDATAN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_DIAGD_CDATAN_MASK ) | \ + ( ( ( _val ) << GRIOMMU_DIAGD_CDATAN_SHIFT ) & \ + GRIOMMU_DIAGD_CDATAN_MASK ) ) +#define GRIOMMU_DIAGD_CDATAN( _val ) \ + ( ( ( _val ) << GRIOMMU_DIAGD_CDATAN_SHIFT ) & \ + GRIOMMU_DIAGD_CDATAN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUDIAGT \ + * Diagnostic cache access tag register (DIAGT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_DIAGT_TAG_SHIFT 1 +#define GRIOMMU_DIAGT_TAG_MASK 0xfffffffeU +#define GRIOMMU_DIAGT_TAG_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_DIAGT_TAG_MASK ) >> \ + GRIOMMU_DIAGT_TAG_SHIFT ) +#define GRIOMMU_DIAGT_TAG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_DIAGT_TAG_MASK ) | \ + ( ( ( _val ) << GRIOMMU_DIAGT_TAG_SHIFT ) & \ + GRIOMMU_DIAGT_TAG_MASK ) ) +#define GRIOMMU_DIAGT_TAG( _val ) \ + ( ( ( _val ) << GRIOMMU_DIAGT_TAG_SHIFT ) & \ + GRIOMMU_DIAGT_TAG_MASK ) + +#define GRIOMMU_DIAGT_V 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUDERRI Data RAM error injection register (DERRI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_DERRI_DPERRINJ_SHIFT 0 +#define GRIOMMU_DERRI_DPERRINJ_MASK 0xffffffffU +#define GRIOMMU_DERRI_DPERRINJ_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_DERRI_DPERRINJ_MASK ) >> \ + GRIOMMU_DERRI_DPERRINJ_SHIFT ) +#define GRIOMMU_DERRI_DPERRINJ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_DERRI_DPERRINJ_MASK ) | \ + ( ( ( _val ) << GRIOMMU_DERRI_DPERRINJ_SHIFT ) & \ + GRIOMMU_DERRI_DPERRINJ_MASK ) ) +#define GRIOMMU_DERRI_DPERRINJ( _val ) \ + ( ( ( _val ) << GRIOMMU_DERRI_DPERRINJ_SHIFT ) & \ + GRIOMMU_DERRI_DPERRINJ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUTERRI Tag RAM error injection register (TERRI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_TERRI_TPERRINJ_SHIFT 0 +#define GRIOMMU_TERRI_TPERRINJ_MASK 0xffffffffU +#define GRIOMMU_TERRI_TPERRINJ_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_TERRI_TPERRINJ_MASK ) >> \ + GRIOMMU_TERRI_TPERRINJ_SHIFT ) +#define GRIOMMU_TERRI_TPERRINJ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_TERRI_TPERRINJ_MASK ) | \ + ( ( ( _val ) << GRIOMMU_TERRI_TPERRINJ_SHIFT ) & \ + GRIOMMU_TERRI_TPERRINJ_MASK ) ) +#define GRIOMMU_TERRI_TPERRINJ( _val ) \ + ( ( ( _val ) << GRIOMMU_TERRI_TPERRINJ_SHIFT ) & \ + GRIOMMU_TERRI_TPERRINJ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRIOMMUASMPCTRL \ + * ASMP access control registers 0 - 3 (ASMPCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRIOMMU_ASMPCTRL_FC 0x40000U + +#define GRIOMMU_ASMPCTRL_SC 0x20000U + +#define GRIOMMU_ASMPCTRL_MC 0x10000U + +#define GRIOMMU_ASMPCTRL_GRPACCSZCTRL_SHIFT 0 +#define GRIOMMU_ASMPCTRL_GRPACCSZCTRL_MASK 0xffffU +#define GRIOMMU_ASMPCTRL_GRPACCSZCTRL_GET( _reg ) \ + ( ( ( _reg ) & GRIOMMU_ASMPCTRL_GRPACCSZCTRL_MASK ) >> \ + GRIOMMU_ASMPCTRL_GRPACCSZCTRL_SHIFT ) +#define GRIOMMU_ASMPCTRL_GRPACCSZCTRL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRIOMMU_ASMPCTRL_GRPACCSZCTRL_MASK ) | \ + ( ( ( _val ) << GRIOMMU_ASMPCTRL_GRPACCSZCTRL_SHIFT ) & \ + GRIOMMU_ASMPCTRL_GRPACCSZCTRL_MASK ) ) +#define GRIOMMU_ASMPCTRL_GRPACCSZCTRL( _val ) \ + ( ( ( _val ) << GRIOMMU_ASMPCTRL_GRPACCSZCTRL_SHIFT ) & \ + GRIOMMU_ASMPCTRL_GRPACCSZCTRL_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRIOMMU register block memory map. + */ +typedef struct griommu { + /** + * @brief See @ref RTEMSDeviceGRIOMMUCAP0. + */ + uint32_t cap0; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUCAP1. + */ + uint32_t cap1; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUCAP2. + */ + uint32_t cap2; + + uint32_t reserved_c_10; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUCTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUFLUSH. + */ + uint32_t flush; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUSTATUS. + */ + uint32_t status; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUIMASK. + */ + uint32_t imask; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUAHBFAS. + */ + uint32_t ahbfas; + + uint32_t reserved_24_40[ 7 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUMSTCFG. + */ + uint32_t mstcfg_0; + + uint32_t reserved_44_64[ 8 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUMSTCFG. + */ + uint32_t mstcfg_1; + + uint32_t reserved_68_80[ 6 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUGRPCTRL. + */ + uint32_t grpctrl_0; + + uint32_t reserved_84_9c[ 6 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUGRPCTRL. + */ + uint32_t grpctrl_1; + + uint32_t reserved_a0_c0[ 8 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUDIAGCTRL. + */ + uint32_t diagctrl; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUDIAGD. + */ + uint32_t diagd_0; + + uint32_t reserved_c8_e0[ 6 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUDIAGD. + */ + uint32_t diagd_1; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUDIAGT. + */ + uint32_t diagt; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUDERRI. + */ + uint32_t derri; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUTERRI. + */ + uint32_t terri; + + uint32_t reserved_f0_100[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUASMPCTRL. + */ + uint32_t asmpctrl_0; + + uint32_t reserved_104_10c[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRIOMMUASMPCTRL. + */ + uint32_t asmpctrl_1; +} griommu; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRIOMMU_REGS_H */ diff --git a/bsps/include/grlib/griommu.h b/bsps/include/grlib/griommu.h index 2bafe4c513..c2f077d025 100644 --- a/bsps/include/grlib/griommu.h +++ b/bsps/include/grlib/griommu.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRIOMMU Driver Interface * * COPYRIGHT (c) 2017 * Cobham Gaisler AB * - * 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. + * 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. * * OVERVIEW * ======== diff --git a/bsps/include/grlib/grlib.h b/bsps/include/grlib/grlib.h index 49d9999807..2a98d3a6d5 100644 --- a/bsps/include/grlib/grlib.h +++ b/bsps/include/grlib/grlib.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup amba @@ -8,9 +10,26 @@ * COPYRIGHT (c) 2012 * Aeroflex Gaisler * - * 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. + * 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 __GRLIB_H__ diff --git a/bsps/include/grlib/grlib_impl.h b/bsps/include/grlib/grlib_impl.h index 919f6d69ab..1f6c60c05b 100644 --- a/bsps/include/grlib/grlib_impl.h +++ b/bsps/include/grlib/grlib_impl.h @@ -1,9 +1,28 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Copyright (C) 2017 Cobham Gaisler AB * - * 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. + * 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 GRLIB_IMPL_H @@ -66,24 +85,24 @@ extern "C" { #if (((__RTEMS_MAJOR__ << 16) | (__RTEMS_MINOR__ << 8) | __RTEMS_REVISION__) >= 0x050000) -RTEMS_INLINE_ROUTINE void *grlib_malloc(size_t size) +static inline void *grlib_malloc(size_t size) { return rtems_malloc(size); } -RTEMS_INLINE_ROUTINE void *grlib_calloc(size_t nelem, size_t elsize) +static inline void *grlib_calloc(size_t nelem, size_t elsize) { return rtems_calloc(nelem, elsize); } #else -RTEMS_INLINE_ROUTINE void *grlib_malloc(size_t size) +static inline void *grlib_malloc(size_t size) { return malloc(size); } -RTEMS_INLINE_ROUTINE void *grlib_calloc(size_t nelem, size_t elsize) +static inline void *grlib_calloc(size_t nelem, size_t elsize) { return calloc(nelem, elsize); } @@ -92,7 +111,7 @@ RTEMS_INLINE_ROUTINE void *grlib_calloc(size_t nelem, size_t elsize) #ifdef __sparc__ -RTEMS_INLINE_ROUTINE unsigned char grlib_read_uncached8(unsigned int address) +static inline unsigned char grlib_read_uncached8(unsigned int address) { unsigned char tmp; __asm__ (" lduba [%1]1, %0 " @@ -102,7 +121,7 @@ RTEMS_INLINE_ROUTINE unsigned char grlib_read_uncached8(unsigned int address) return tmp; } -RTEMS_INLINE_ROUTINE unsigned short grlib_read_uncached16(unsigned int addr) { +static inline unsigned short grlib_read_uncached16(unsigned int addr) { unsigned short tmp; __asm__ (" lduha [%1]1, %0 " : "=r"(tmp) @@ -112,7 +131,7 @@ RTEMS_INLINE_ROUTINE unsigned short grlib_read_uncached16(unsigned int addr) { } -RTEMS_INLINE_ROUTINE unsigned int grlib_read_uncached32(unsigned int address) +static inline unsigned int grlib_read_uncached32(unsigned int address) { unsigned int tmp; __asm__ (" lda [%1]1, %0 " @@ -122,7 +141,7 @@ RTEMS_INLINE_ROUTINE unsigned int grlib_read_uncached32(unsigned int address) return tmp; } -RTEMS_INLINE_ROUTINE uint64_t grlib_read_uncached64(uint64_t *address) +static inline uint64_t grlib_read_uncached64(uint64_t *address) { uint64_t tmp; __asm__ (" ldda [%1]1, %0 " @@ -147,7 +166,7 @@ static __inline__ unsigned short grlib_read_uncached16(unsigned int address) { return tmp; } -RTEMS_INLINE_ROUTINE unsigned int grlib_read_uncached32(unsigned int address) +static inline unsigned int grlib_read_uncached32(unsigned int address) { unsigned int tmp = (*(volatile unsigned int *)(address)); return tmp; diff --git a/bsps/include/grlib/grpci.h b/bsps/include/grlib/grpci.h index 2321706200..5c05d0bdc4 100644 --- a/bsps/include/grlib/grpci.h +++ b/bsps/include/grlib/grpci.h @@ -1,3 +1,32 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/* + * COPYRIGHT (c) 2015. + * Cobham Gaisler. + * + * 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 __GRPCI_H__ #define __GRPCI_H__ diff --git a/bsps/include/grlib/grpci2-regs.h b/bsps/include/grlib/grpci2-regs.h new file mode 100644 index 0000000000..380e24a4cf --- /dev/null +++ b/bsps/include/grlib/grpci2-regs.h @@ -0,0 +1,875 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRPCI2 + * + * @brief This header file defines the GRPCI2 register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grpci2-header */ + +#ifndef _GRLIB_GRPCI2_REGS_H +#define _GRLIB_GRPCI2_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grpci2 */ + +/** + * @defgroup RTEMSDeviceGRPCI2 GRPCI2 + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRPCI2 interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRPCI2CTRL Control register (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_CTRL_RE 0x80000000U + +#define GRPCI2_CTRL_MR 0x40000000U + +#define GRPCI2_CTRL_TR 0x20000000U + +#define GRPCI2_CTRL_SI 0x8000000U + +#define GRPCI2_CTRL_PE 0x4000000U + +#define GRPCI2_CTRL_ER 0x2000000U + +#define GRPCI2_CTRL_EI 0x1000000U + +#define GRPCI2_CTRL_BUS_NUMBER_SHIFT 16 +#define GRPCI2_CTRL_BUS_NUMBER_MASK 0xff0000U +#define GRPCI2_CTRL_BUS_NUMBER_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_CTRL_BUS_NUMBER_MASK ) >> \ + GRPCI2_CTRL_BUS_NUMBER_SHIFT ) +#define GRPCI2_CTRL_BUS_NUMBER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_CTRL_BUS_NUMBER_MASK ) | \ + ( ( ( _val ) << GRPCI2_CTRL_BUS_NUMBER_SHIFT ) & \ + GRPCI2_CTRL_BUS_NUMBER_MASK ) ) +#define GRPCI2_CTRL_BUS_NUMBER( _val ) \ + ( ( ( _val ) << GRPCI2_CTRL_BUS_NUMBER_SHIFT ) & \ + GRPCI2_CTRL_BUS_NUMBER_MASK ) + +#define GRPCI2_CTRL_DFA 0x800U + +#define GRPCI2_CTRL_IB 0x400U + +#define GRPCI2_CTRL_CB 0x200U + +#define GRPCI2_CTRL_DIF 0x100U + +#define GRPCI2_CTRL_DEVICE_INT_MASK_SHIFT 4 +#define GRPCI2_CTRL_DEVICE_INT_MASK_MASK 0xf0U +#define GRPCI2_CTRL_DEVICE_INT_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_CTRL_DEVICE_INT_MASK_MASK ) >> \ + GRPCI2_CTRL_DEVICE_INT_MASK_SHIFT ) +#define GRPCI2_CTRL_DEVICE_INT_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_CTRL_DEVICE_INT_MASK_MASK ) | \ + ( ( ( _val ) << GRPCI2_CTRL_DEVICE_INT_MASK_SHIFT ) & \ + GRPCI2_CTRL_DEVICE_INT_MASK_MASK ) ) +#define GRPCI2_CTRL_DEVICE_INT_MASK( _val ) \ + ( ( ( _val ) << GRPCI2_CTRL_DEVICE_INT_MASK_SHIFT ) & \ + GRPCI2_CTRL_DEVICE_INT_MASK_MASK ) + +#define GRPCI2_CTRL_HOST_INT_MASK_SHIFT 0 +#define GRPCI2_CTRL_HOST_INT_MASK_MASK 0xfU +#define GRPCI2_CTRL_HOST_INT_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_CTRL_HOST_INT_MASK_MASK ) >> \ + GRPCI2_CTRL_HOST_INT_MASK_SHIFT ) +#define GRPCI2_CTRL_HOST_INT_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_CTRL_HOST_INT_MASK_MASK ) | \ + ( ( ( _val ) << GRPCI2_CTRL_HOST_INT_MASK_SHIFT ) & \ + GRPCI2_CTRL_HOST_INT_MASK_MASK ) ) +#define GRPCI2_CTRL_HOST_INT_MASK( _val ) \ + ( ( ( _val ) << GRPCI2_CTRL_HOST_INT_MASK_SHIFT ) & \ + GRPCI2_CTRL_HOST_INT_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2STATCAP Status and Capability register (STATCAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_STATCAP_HOST 0x80000000U + +#define GRPCI2_STATCAP_MST 0x40000000U + +#define GRPCI2_STATCAP_TAR 0x20000000U + +#define GRPCI2_STATCAP_DMA 0x10000000U + +#define GRPCI2_STATCAP_DI 0x8000000U + +#define GRPCI2_STATCAP_HI 0x4000000U + +#define GRPCI2_STATCAP_IRQ_MODE_SHIFT 24 +#define GRPCI2_STATCAP_IRQ_MODE_MASK 0x3000000U +#define GRPCI2_STATCAP_IRQ_MODE_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_STATCAP_IRQ_MODE_MASK ) >> \ + GRPCI2_STATCAP_IRQ_MODE_SHIFT ) +#define GRPCI2_STATCAP_IRQ_MODE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_STATCAP_IRQ_MODE_MASK ) | \ + ( ( ( _val ) << GRPCI2_STATCAP_IRQ_MODE_SHIFT ) & \ + GRPCI2_STATCAP_IRQ_MODE_MASK ) ) +#define GRPCI2_STATCAP_IRQ_MODE( _val ) \ + ( ( ( _val ) << GRPCI2_STATCAP_IRQ_MODE_SHIFT ) & \ + GRPCI2_STATCAP_IRQ_MODE_MASK ) + +#define GRPCI2_STATCAP_TRACE 0x800000U + +#define GRPCI2_STATCAP_CFGDO 0x100000U + +#define GRPCI2_STATCAP_CFGER 0x80000U + +#define GRPCI2_STATCAP_CORE_INT_STATUS_SHIFT 12 +#define GRPCI2_STATCAP_CORE_INT_STATUS_MASK 0x7f000U +#define GRPCI2_STATCAP_CORE_INT_STATUS_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_STATCAP_CORE_INT_STATUS_MASK ) >> \ + GRPCI2_STATCAP_CORE_INT_STATUS_SHIFT ) +#define GRPCI2_STATCAP_CORE_INT_STATUS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_STATCAP_CORE_INT_STATUS_MASK ) | \ + ( ( ( _val ) << GRPCI2_STATCAP_CORE_INT_STATUS_SHIFT ) & \ + GRPCI2_STATCAP_CORE_INT_STATUS_MASK ) ) +#define GRPCI2_STATCAP_CORE_INT_STATUS( _val ) \ + ( ( ( _val ) << GRPCI2_STATCAP_CORE_INT_STATUS_SHIFT ) & \ + GRPCI2_STATCAP_CORE_INT_STATUS_MASK ) + +#define GRPCI2_STATCAP_HOST_INT_STATUS_SHIFT 8 +#define GRPCI2_STATCAP_HOST_INT_STATUS_MASK 0xf00U +#define GRPCI2_STATCAP_HOST_INT_STATUS_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_STATCAP_HOST_INT_STATUS_MASK ) >> \ + GRPCI2_STATCAP_HOST_INT_STATUS_SHIFT ) +#define GRPCI2_STATCAP_HOST_INT_STATUS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_STATCAP_HOST_INT_STATUS_MASK ) | \ + ( ( ( _val ) << GRPCI2_STATCAP_HOST_INT_STATUS_SHIFT ) & \ + GRPCI2_STATCAP_HOST_INT_STATUS_MASK ) ) +#define GRPCI2_STATCAP_HOST_INT_STATUS( _val ) \ + ( ( ( _val ) << GRPCI2_STATCAP_HOST_INT_STATUS_SHIFT ) & \ + GRPCI2_STATCAP_HOST_INT_STATUS_MASK ) + +#define GRPCI2_STATCAP_FDEPTH_SHIFT 2 +#define GRPCI2_STATCAP_FDEPTH_MASK 0x1cU +#define GRPCI2_STATCAP_FDEPTH_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_STATCAP_FDEPTH_MASK ) >> \ + GRPCI2_STATCAP_FDEPTH_SHIFT ) +#define GRPCI2_STATCAP_FDEPTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_STATCAP_FDEPTH_MASK ) | \ + ( ( ( _val ) << GRPCI2_STATCAP_FDEPTH_SHIFT ) & \ + GRPCI2_STATCAP_FDEPTH_MASK ) ) +#define GRPCI2_STATCAP_FDEPTH( _val ) \ + ( ( ( _val ) << GRPCI2_STATCAP_FDEPTH_SHIFT ) & \ + GRPCI2_STATCAP_FDEPTH_MASK ) + +#define GRPCI2_STATCAP_FNUM_SHIFT 0 +#define GRPCI2_STATCAP_FNUM_MASK 0x3U +#define GRPCI2_STATCAP_FNUM_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_STATCAP_FNUM_MASK ) >> \ + GRPCI2_STATCAP_FNUM_SHIFT ) +#define GRPCI2_STATCAP_FNUM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_STATCAP_FNUM_MASK ) | \ + ( ( ( _val ) << GRPCI2_STATCAP_FNUM_SHIFT ) & \ + GRPCI2_STATCAP_FNUM_MASK ) ) +#define GRPCI2_STATCAP_FNUM( _val ) \ + ( ( ( _val ) << GRPCI2_STATCAP_FNUM_SHIFT ) & \ + GRPCI2_STATCAP_FNUM_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2BCIM PCI master prefetch burst limit (BCIM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_BCIM_AHB_MASTER_UNMASK_SHIFT 16 +#define GRPCI2_BCIM_AHB_MASTER_UNMASK_MASK 0xffff0000U +#define GRPCI2_BCIM_AHB_MASTER_UNMASK_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_BCIM_AHB_MASTER_UNMASK_MASK ) >> \ + GRPCI2_BCIM_AHB_MASTER_UNMASK_SHIFT ) +#define GRPCI2_BCIM_AHB_MASTER_UNMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_BCIM_AHB_MASTER_UNMASK_MASK ) | \ + ( ( ( _val ) << GRPCI2_BCIM_AHB_MASTER_UNMASK_SHIFT ) & \ + GRPCI2_BCIM_AHB_MASTER_UNMASK_MASK ) ) +#define GRPCI2_BCIM_AHB_MASTER_UNMASK( _val ) \ + ( ( ( _val ) << GRPCI2_BCIM_AHB_MASTER_UNMASK_SHIFT ) & \ + GRPCI2_BCIM_AHB_MASTER_UNMASK_MASK ) + +#define GRPCI2_BCIM_BURST_LENGTH_SHIFT 0 +#define GRPCI2_BCIM_BURST_LENGTH_MASK 0xffU +#define GRPCI2_BCIM_BURST_LENGTH_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_BCIM_BURST_LENGTH_MASK ) >> \ + GRPCI2_BCIM_BURST_LENGTH_SHIFT ) +#define GRPCI2_BCIM_BURST_LENGTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_BCIM_BURST_LENGTH_MASK ) | \ + ( ( ( _val ) << GRPCI2_BCIM_BURST_LENGTH_SHIFT ) & \ + GRPCI2_BCIM_BURST_LENGTH_MASK ) ) +#define GRPCI2_BCIM_BURST_LENGTH( _val ) \ + ( ( ( _val ) << GRPCI2_BCIM_BURST_LENGTH_SHIFT ) & \ + GRPCI2_BCIM_BURST_LENGTH_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2AHB2PCI AHB to PCI mapping for PCI IO (AHB2PCI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_AHB2PCI_AHB_TO_PCI_IO_SHIFT 16 +#define GRPCI2_AHB2PCI_AHB_TO_PCI_IO_MASK 0xffff0000U +#define GRPCI2_AHB2PCI_AHB_TO_PCI_IO_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_AHB2PCI_AHB_TO_PCI_IO_MASK ) >> \ + GRPCI2_AHB2PCI_AHB_TO_PCI_IO_SHIFT ) +#define GRPCI2_AHB2PCI_AHB_TO_PCI_IO_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_AHB2PCI_AHB_TO_PCI_IO_MASK ) | \ + ( ( ( _val ) << GRPCI2_AHB2PCI_AHB_TO_PCI_IO_SHIFT ) & \ + GRPCI2_AHB2PCI_AHB_TO_PCI_IO_MASK ) ) +#define GRPCI2_AHB2PCI_AHB_TO_PCI_IO( _val ) \ + ( ( ( _val ) << GRPCI2_AHB2PCI_AHB_TO_PCI_IO_SHIFT ) & \ + GRPCI2_AHB2PCI_AHB_TO_PCI_IO_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2DMACTRL DMA control and status register (DMACTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_DMACTRL_SAFE 0x80000000U + +#define GRPCI2_DMACTRL_CHIRQ_SHIFT 12 +#define GRPCI2_DMACTRL_CHIRQ_MASK 0xff000U +#define GRPCI2_DMACTRL_CHIRQ_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_DMACTRL_CHIRQ_MASK ) >> \ + GRPCI2_DMACTRL_CHIRQ_SHIFT ) +#define GRPCI2_DMACTRL_CHIRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_DMACTRL_CHIRQ_MASK ) | \ + ( ( ( _val ) << GRPCI2_DMACTRL_CHIRQ_SHIFT ) & \ + GRPCI2_DMACTRL_CHIRQ_MASK ) ) +#define GRPCI2_DMACTRL_CHIRQ( _val ) \ + ( ( ( _val ) << GRPCI2_DMACTRL_CHIRQ_SHIFT ) & \ + GRPCI2_DMACTRL_CHIRQ_MASK ) + +#define GRPCI2_DMACTRL_MA 0x800U + +#define GRPCI2_DMACTRL_TA 0x400U + +#define GRPCI2_DMACTRL_PE 0x200U + +#define GRPCI2_DMACTRL_AE 0x100U + +#define GRPCI2_DMACTRL_DE 0x80U + +#define GRPCI2_DMACTRL_NUMCH_SHIFT 4 +#define GRPCI2_DMACTRL_NUMCH_MASK 0x70U +#define GRPCI2_DMACTRL_NUMCH_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_DMACTRL_NUMCH_MASK ) >> \ + GRPCI2_DMACTRL_NUMCH_SHIFT ) +#define GRPCI2_DMACTRL_NUMCH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_DMACTRL_NUMCH_MASK ) | \ + ( ( ( _val ) << GRPCI2_DMACTRL_NUMCH_SHIFT ) & \ + GRPCI2_DMACTRL_NUMCH_MASK ) ) +#define GRPCI2_DMACTRL_NUMCH( _val ) \ + ( ( ( _val ) << GRPCI2_DMACTRL_NUMCH_SHIFT ) & \ + GRPCI2_DMACTRL_NUMCH_MASK ) + +#define GRPCI2_DMACTRL_ACTIVE 0x8U + +#define GRPCI2_DMACTRL_DIS 0x4U + +#define GRPCI2_DMACTRL_IE 0x2U + +#define GRPCI2_DMACTRL_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2DMABASE \ + * DMA descriptor base address register (DMABASE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_DMABASE_BASE_SHIFT 0 +#define GRPCI2_DMABASE_BASE_MASK 0xffffffffU +#define GRPCI2_DMABASE_BASE_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_DMABASE_BASE_MASK ) >> \ + GRPCI2_DMABASE_BASE_SHIFT ) +#define GRPCI2_DMABASE_BASE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_DMABASE_BASE_MASK ) | \ + ( ( ( _val ) << GRPCI2_DMABASE_BASE_SHIFT ) & \ + GRPCI2_DMABASE_BASE_MASK ) ) +#define GRPCI2_DMABASE_BASE( _val ) \ + ( ( ( _val ) << GRPCI2_DMABASE_BASE_SHIFT ) & \ + GRPCI2_DMABASE_BASE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2DMACHAN DMA channel active register (DMACHAN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_DMACHAN_CHAN_SHIFT 0 +#define GRPCI2_DMACHAN_CHAN_MASK 0xffffffffU +#define GRPCI2_DMACHAN_CHAN_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_DMACHAN_CHAN_MASK ) >> \ + GRPCI2_DMACHAN_CHAN_SHIFT ) +#define GRPCI2_DMACHAN_CHAN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_DMACHAN_CHAN_MASK ) | \ + ( ( ( _val ) << GRPCI2_DMACHAN_CHAN_SHIFT ) & \ + GRPCI2_DMACHAN_CHAN_MASK ) ) +#define GRPCI2_DMACHAN_CHAN( _val ) \ + ( ( ( _val ) << GRPCI2_DMACHAN_CHAN_SHIFT ) & \ + GRPCI2_DMACHAN_CHAN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2PCI2AHB \ + * PCI BAR to AHB address mapping register (PCI2AHB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_PCI2AHB_ADDR_SHIFT 0 +#define GRPCI2_PCI2AHB_ADDR_MASK 0xffffffffU +#define GRPCI2_PCI2AHB_ADDR_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_PCI2AHB_ADDR_MASK ) >> \ + GRPCI2_PCI2AHB_ADDR_SHIFT ) +#define GRPCI2_PCI2AHB_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_PCI2AHB_ADDR_MASK ) | \ + ( ( ( _val ) << GRPCI2_PCI2AHB_ADDR_SHIFT ) & \ + GRPCI2_PCI2AHB_ADDR_MASK ) ) +#define GRPCI2_PCI2AHB_ADDR( _val ) \ + ( ( ( _val ) << GRPCI2_PCI2AHB_ADDR_SHIFT ) & \ + GRPCI2_PCI2AHB_ADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2AHBM2PCI \ + * AHB master to PCI memory address mapping register (AHBM2PCI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_AHBM2PCI_ADDR_SHIFT 0 +#define GRPCI2_AHBM2PCI_ADDR_MASK 0xffffffffU +#define GRPCI2_AHBM2PCI_ADDR_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_AHBM2PCI_ADDR_MASK ) >> \ + GRPCI2_AHBM2PCI_ADDR_SHIFT ) +#define GRPCI2_AHBM2PCI_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_AHBM2PCI_ADDR_MASK ) | \ + ( ( ( _val ) << GRPCI2_AHBM2PCI_ADDR_SHIFT ) & \ + GRPCI2_AHBM2PCI_ADDR_MASK ) ) +#define GRPCI2_AHBM2PCI_ADDR( _val ) \ + ( ( ( _val ) << GRPCI2_AHBM2PCI_ADDR_SHIFT ) & \ + GRPCI2_AHBM2PCI_ADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TCTRC \ + * PCI trace Control and Status register (TCTRC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TCTRC_TRIG_INDEX_SHIFT 16 +#define GRPCI2_TCTRC_TRIG_INDEX_MASK 0xffff0000U +#define GRPCI2_TCTRC_TRIG_INDEX_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TCTRC_TRIG_INDEX_MASK ) >> \ + GRPCI2_TCTRC_TRIG_INDEX_SHIFT ) +#define GRPCI2_TCTRC_TRIG_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TCTRC_TRIG_INDEX_MASK ) | \ + ( ( ( _val ) << GRPCI2_TCTRC_TRIG_INDEX_SHIFT ) & \ + GRPCI2_TCTRC_TRIG_INDEX_MASK ) ) +#define GRPCI2_TCTRC_TRIG_INDEX( _val ) \ + ( ( ( _val ) << GRPCI2_TCTRC_TRIG_INDEX_SHIFT ) & \ + GRPCI2_TCTRC_TRIG_INDEX_MASK ) + +#define GRPCI2_TCTRC_AR 0x8000U + +#define GRPCI2_TCTRC_EN 0x4000U + +#define GRPCI2_TCTRC_DEPTH_SHIFT 4 +#define GRPCI2_TCTRC_DEPTH_MASK 0xff0U +#define GRPCI2_TCTRC_DEPTH_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TCTRC_DEPTH_MASK ) >> \ + GRPCI2_TCTRC_DEPTH_SHIFT ) +#define GRPCI2_TCTRC_DEPTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TCTRC_DEPTH_MASK ) | \ + ( ( ( _val ) << GRPCI2_TCTRC_DEPTH_SHIFT ) & \ + GRPCI2_TCTRC_DEPTH_MASK ) ) +#define GRPCI2_TCTRC_DEPTH( _val ) \ + ( ( ( _val ) << GRPCI2_TCTRC_DEPTH_SHIFT ) & \ + GRPCI2_TCTRC_DEPTH_MASK ) + +#define GRPCI2_TCTRC_SO 0x2U + +#define GRPCI2_TCTRC_SA 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TMODE PCI trace counter and mode register (TMODE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TMODE_TRACING_MODE_SHIFT 24 +#define GRPCI2_TMODE_TRACING_MODE_MASK 0xf000000U +#define GRPCI2_TMODE_TRACING_MODE_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TMODE_TRACING_MODE_MASK ) >> \ + GRPCI2_TMODE_TRACING_MODE_SHIFT ) +#define GRPCI2_TMODE_TRACING_MODE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TMODE_TRACING_MODE_MASK ) | \ + ( ( ( _val ) << GRPCI2_TMODE_TRACING_MODE_SHIFT ) & \ + GRPCI2_TMODE_TRACING_MODE_MASK ) ) +#define GRPCI2_TMODE_TRACING_MODE( _val ) \ + ( ( ( _val ) << GRPCI2_TMODE_TRACING_MODE_SHIFT ) & \ + GRPCI2_TMODE_TRACING_MODE_MASK ) + +#define GRPCI2_TMODE_TRIG_COUNT_SHIFT 16 +#define GRPCI2_TMODE_TRIG_COUNT_MASK 0xff0000U +#define GRPCI2_TMODE_TRIG_COUNT_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TMODE_TRIG_COUNT_MASK ) >> \ + GRPCI2_TMODE_TRIG_COUNT_SHIFT ) +#define GRPCI2_TMODE_TRIG_COUNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TMODE_TRIG_COUNT_MASK ) | \ + ( ( ( _val ) << GRPCI2_TMODE_TRIG_COUNT_SHIFT ) & \ + GRPCI2_TMODE_TRIG_COUNT_MASK ) ) +#define GRPCI2_TMODE_TRIG_COUNT( _val ) \ + ( ( ( _val ) << GRPCI2_TMODE_TRIG_COUNT_SHIFT ) & \ + GRPCI2_TMODE_TRIG_COUNT_MASK ) + +#define GRPCI2_TMODE_DELAYED_STOP_SHIFT 0 +#define GRPCI2_TMODE_DELAYED_STOP_MASK 0xffffU +#define GRPCI2_TMODE_DELAYED_STOP_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TMODE_DELAYED_STOP_MASK ) >> \ + GRPCI2_TMODE_DELAYED_STOP_SHIFT ) +#define GRPCI2_TMODE_DELAYED_STOP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TMODE_DELAYED_STOP_MASK ) | \ + ( ( ( _val ) << GRPCI2_TMODE_DELAYED_STOP_SHIFT ) & \ + GRPCI2_TMODE_DELAYED_STOP_MASK ) ) +#define GRPCI2_TMODE_DELAYED_STOP( _val ) \ + ( ( ( _val ) << GRPCI2_TMODE_DELAYED_STOP_SHIFT ) & \ + GRPCI2_TMODE_DELAYED_STOP_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TADP PCI trace AD pattern register (TADP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TADP_PATTERN_SHIFT 0 +#define GRPCI2_TADP_PATTERN_MASK 0xffffffffU +#define GRPCI2_TADP_PATTERN_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TADP_PATTERN_MASK ) >> \ + GRPCI2_TADP_PATTERN_SHIFT ) +#define GRPCI2_TADP_PATTERN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TADP_PATTERN_MASK ) | \ + ( ( ( _val ) << GRPCI2_TADP_PATTERN_SHIFT ) & \ + GRPCI2_TADP_PATTERN_MASK ) ) +#define GRPCI2_TADP_PATTERN( _val ) \ + ( ( ( _val ) << GRPCI2_TADP_PATTERN_SHIFT ) & \ + GRPCI2_TADP_PATTERN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TADM PCI trace AD mask register (TADM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TADM_MASK_SHIFT 0 +#define GRPCI2_TADM_MASK_MASK 0xffffffffU +#define GRPCI2_TADM_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TADM_MASK_MASK ) >> \ + GRPCI2_TADM_MASK_SHIFT ) +#define GRPCI2_TADM_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TADM_MASK_MASK ) | \ + ( ( ( _val ) << GRPCI2_TADM_MASK_SHIFT ) & \ + GRPCI2_TADM_MASK_MASK ) ) +#define GRPCI2_TADM_MASK( _val ) \ + ( ( ( _val ) << GRPCI2_TADM_MASK_SHIFT ) & \ + GRPCI2_TADM_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TCP PCI trace Ctrl signal pattern register (TCP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TCP_CBE_3_0_SHIFT 16 +#define GRPCI2_TCP_CBE_3_0_MASK 0xf0000U +#define GRPCI2_TCP_CBE_3_0_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TCP_CBE_3_0_MASK ) >> \ + GRPCI2_TCP_CBE_3_0_SHIFT ) +#define GRPCI2_TCP_CBE_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TCP_CBE_3_0_MASK ) | \ + ( ( ( _val ) << GRPCI2_TCP_CBE_3_0_SHIFT ) & \ + GRPCI2_TCP_CBE_3_0_MASK ) ) +#define GRPCI2_TCP_CBE_3_0( _val ) \ + ( ( ( _val ) << GRPCI2_TCP_CBE_3_0_SHIFT ) & \ + GRPCI2_TCP_CBE_3_0_MASK ) + +#define GRPCI2_TCP_FRAME 0x8000U + +#define GRPCI2_TCP_IRDY 0x4000U + +#define GRPCI2_TCP_TRDY 0x2000U + +#define GRPCI2_TCP_STOP 0x1000U + +#define GRPCI2_TCP_DEVSEL 0x800U + +#define GRPCI2_TCP_PAR 0x400U + +#define GRPCI2_TCP_PERR 0x200U + +#define GRPCI2_TCP_SERR 0x100U + +#define GRPCI2_TCP_IDSEL 0x80U + +#define GRPCI2_TCP_REQ 0x40U + +#define GRPCI2_TCP_GNT 0x20U + +#define GRPCI2_TCP_LOCK 0x10U + +#define GRPCI2_TCP_RST 0x8U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TCM PCI trace Ctrl signal mask register (TCM) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TCM_CBE_3_0_SHIFT 16 +#define GRPCI2_TCM_CBE_3_0_MASK 0xf0000U +#define GRPCI2_TCM_CBE_3_0_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TCM_CBE_3_0_MASK ) >> \ + GRPCI2_TCM_CBE_3_0_SHIFT ) +#define GRPCI2_TCM_CBE_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TCM_CBE_3_0_MASK ) | \ + ( ( ( _val ) << GRPCI2_TCM_CBE_3_0_SHIFT ) & \ + GRPCI2_TCM_CBE_3_0_MASK ) ) +#define GRPCI2_TCM_CBE_3_0( _val ) \ + ( ( ( _val ) << GRPCI2_TCM_CBE_3_0_SHIFT ) & \ + GRPCI2_TCM_CBE_3_0_MASK ) + +#define GRPCI2_TCM_FRAME 0x8000U + +#define GRPCI2_TCM_IRDY 0x4000U + +#define GRPCI2_TCM_TRDY 0x2000U + +#define GRPCI2_TCM_STOP 0x1000U + +#define GRPCI2_TCM_DEVSEL 0x800U + +#define GRPCI2_TCM_PAR 0x400U + +#define GRPCI2_TCM_PERR 0x200U + +#define GRPCI2_TCM_SERR 0x100U + +#define GRPCI2_TCM_IDSEL 0x80U + +#define GRPCI2_TCM_REQ 0x40U + +#define GRPCI2_TCM_GNT 0x20U + +#define GRPCI2_TCM_LOCK 0x10U + +#define GRPCI2_TCM_RST 0x8U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TADS PCI trace PCI AD state register (TADS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TADS_SIGNAL_SHIFT 0 +#define GRPCI2_TADS_SIGNAL_MASK 0xffffffffU +#define GRPCI2_TADS_SIGNAL_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TADS_SIGNAL_MASK ) >> \ + GRPCI2_TADS_SIGNAL_SHIFT ) +#define GRPCI2_TADS_SIGNAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TADS_SIGNAL_MASK ) | \ + ( ( ( _val ) << GRPCI2_TADS_SIGNAL_SHIFT ) & \ + GRPCI2_TADS_SIGNAL_MASK ) ) +#define GRPCI2_TADS_SIGNAL( _val ) \ + ( ( ( _val ) << GRPCI2_TADS_SIGNAL_SHIFT ) & \ + GRPCI2_TADS_SIGNAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRPCI2TCS \ + * PCI trace PCI Ctrl signal state register (TCS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRPCI2_TCS_CBE_3_0_SHIFT 16 +#define GRPCI2_TCS_CBE_3_0_MASK 0xf0000U +#define GRPCI2_TCS_CBE_3_0_GET( _reg ) \ + ( ( ( _reg ) & GRPCI2_TCS_CBE_3_0_MASK ) >> \ + GRPCI2_TCS_CBE_3_0_SHIFT ) +#define GRPCI2_TCS_CBE_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRPCI2_TCS_CBE_3_0_MASK ) | \ + ( ( ( _val ) << GRPCI2_TCS_CBE_3_0_SHIFT ) & \ + GRPCI2_TCS_CBE_3_0_MASK ) ) +#define GRPCI2_TCS_CBE_3_0( _val ) \ + ( ( ( _val ) << GRPCI2_TCS_CBE_3_0_SHIFT ) & \ + GRPCI2_TCS_CBE_3_0_MASK ) + +#define GRPCI2_TCS_FRAME 0x8000U + +#define GRPCI2_TCS_IRDY 0x4000U + +#define GRPCI2_TCS_TRDY 0x2000U + +#define GRPCI2_TCS_STOP 0x1000U + +#define GRPCI2_TCS_DEVSEL 0x800U + +#define GRPCI2_TCS_PAR 0x400U + +#define GRPCI2_TCS_PERR 0x200U + +#define GRPCI2_TCS_SERR 0x100U + +#define GRPCI2_TCS_IDSEL 0x80U + +#define GRPCI2_TCS_REQ 0x40U + +#define GRPCI2_TCS_GNT 0x20U + +#define GRPCI2_TCS_LOCK 0x10U + +#define GRPCI2_TCS_RST 0x8U + +/** @} */ + +/** + * @brief This structure defines the GRPCI2 register block memory map. + */ +typedef struct grpci2 { + /** + * @brief See @ref RTEMSDeviceGRPCI2CTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRPCI2STATCAP. + */ + uint32_t statcap; + + /** + * @brief See @ref RTEMSDeviceGRPCI2BCIM. + */ + uint32_t bcim; + + /** + * @brief See @ref RTEMSDeviceGRPCI2AHB2PCI. + */ + uint32_t ahb2pci; + + /** + * @brief See @ref RTEMSDeviceGRPCI2DMACTRL. + */ + uint32_t dmactrl; + + /** + * @brief See @ref RTEMSDeviceGRPCI2DMABASE. + */ + uint32_t dmabase; + + /** + * @brief See @ref RTEMSDeviceGRPCI2DMACHAN. + */ + uint32_t dmachan; + + uint32_t reserved_1c_20; + + /** + * @brief See @ref RTEMSDeviceGRPCI2PCI2AHB. + */ + uint32_t pci2ahb_0; + + uint32_t reserved_24_34[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRPCI2PCI2AHB. + */ + uint32_t pci2ahb_1; + + uint32_t reserved_38_40[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRPCI2AHBM2PCI. + */ + uint32_t ahbm2pci_0; + + uint32_t reserved_44_7c[ 14 ]; + + /** + * @brief See @ref RTEMSDeviceGRPCI2AHBM2PCI. + */ + uint32_t ahbm2pci_1; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TCTRC. + */ + uint32_t tctrc; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TMODE. + */ + uint32_t tmode; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TADP. + */ + uint32_t tadp; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TADM. + */ + uint32_t tadm; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TCP. + */ + uint32_t tcp; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TCM. + */ + uint32_t tcm; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TADS. + */ + uint32_t tads; + + /** + * @brief See @ref RTEMSDeviceGRPCI2TCS. + */ + uint32_t tcs; +} grpci2; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRPCI2_REGS_H */ diff --git a/bsps/include/grlib/grpci2.h b/bsps/include/grlib/grpci2.h index c356b5641f..871bbae6a9 100644 --- a/bsps/include/grlib/grpci2.h +++ b/bsps/include/grlib/grpci2.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GRLIB GRPCI2 PCI HOST driver. * * COPYRIGHT (c) 2011 * Cobham Gaisler AB. * - * The license and distribution terms for this file may be - * found in found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * 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 __GRPCI2_H__ diff --git a/bsps/include/grlib/grpci2dma.h b/bsps/include/grlib/grpci2dma.h index c1a2663a86..4e27c61d9b 100644 --- a/bsps/include/grlib/grpci2dma.h +++ b/bsps/include/grlib/grpci2dma.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRPCI2 DMA Driver * * COPYRIGHT (c) 2017 * Cobham Gaisler AB * - * 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. + * 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. * * OVERVIEW * ======== diff --git a/bsps/include/grlib/grpwm.h b/bsps/include/grlib/grpwm.h index 6898f8ac2e..ab9d7a91e4 100644 --- a/bsps/include/grlib/grpwm.h +++ b/bsps/include/grlib/grpwm.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRPWM PWM Driver interface. * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __GRPWM_H__ diff --git a/bsps/include/grlib/grslink.h b/bsps/include/grlib/grslink.h index 575a24aee4..385f1cced0 100644 --- a/bsps/include/grlib/grslink.h +++ b/bsps/include/grlib/grslink.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Header file for RTEMS GRSLINK SLINK master driver * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __GRSLINK_H__ diff --git a/bsps/include/grlib/grspw.h b/bsps/include/grlib/grspw.h index 50ca744bde..1e7cb29e1c 100644 --- a/bsps/include/grlib/grspw.h +++ b/bsps/include/grlib/grspw.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup spw @@ -7,9 +9,26 @@ * COPYRIGHT (c) 2007. * Cobham Gaisler AB. * - * 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. + * 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 __GRSPW_H__ diff --git a/bsps/include/grlib/grspw2-regs.h b/bsps/include/grlib/grspw2-regs.h new file mode 100644 index 0000000000..6293230cfe --- /dev/null +++ b/bsps/include/grlib/grspw2-regs.h @@ -0,0 +1,1429 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRSPW2 + * + * @brief This header file defines the GRSPW2 register block interface. + */ + +/* + * Copyright (C) 2021, 2023 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grspw2-header */ + +#ifndef _GRLIB_GRSPW2_REGS_H +#define _GRLIB_GRSPW2_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grspw2-dma */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMA GRSPW2 DMA + * + * @ingroup RTEMSDeviceGRSPW2 + * + * @brief This group contains the GRSPW2 DMA interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMADMACTRL DMA control/status (DMACTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DMACTRL_INTNUM_SHIFT 26 +#define GRSPW2_DMACTRL_INTNUM_MASK 0xfc000000U +#define GRSPW2_DMACTRL_INTNUM_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMACTRL_INTNUM_MASK ) >> \ + GRSPW2_DMACTRL_INTNUM_SHIFT ) +#define GRSPW2_DMACTRL_INTNUM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMACTRL_INTNUM_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMACTRL_INTNUM_SHIFT ) & \ + GRSPW2_DMACTRL_INTNUM_MASK ) ) +#define GRSPW2_DMACTRL_INTNUM( _val ) \ + ( ( ( _val ) << GRSPW2_DMACTRL_INTNUM_SHIFT ) & \ + GRSPW2_DMACTRL_INTNUM_MASK ) + +#define GRSPW2_DMACTRL_RES_SHIFT 24 +#define GRSPW2_DMACTRL_RES_MASK 0x3000000U +#define GRSPW2_DMACTRL_RES_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMACTRL_RES_MASK ) >> \ + GRSPW2_DMACTRL_RES_SHIFT ) +#define GRSPW2_DMACTRL_RES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMACTRL_RES_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMACTRL_RES_SHIFT ) & \ + GRSPW2_DMACTRL_RES_MASK ) ) +#define GRSPW2_DMACTRL_RES( _val ) \ + ( ( ( _val ) << GRSPW2_DMACTRL_RES_SHIFT ) & \ + GRSPW2_DMACTRL_RES_MASK ) + +#define GRSPW2_DMACTRL_EP 0x800000U + +#define GRSPW2_DMACTRL_TR 0x400000U + +#define GRSPW2_DMACTRL_IE 0x200000U + +#define GRSPW2_DMACTRL_IT 0x100000U + +#define GRSPW2_DMACTRL_RP 0x80000U + +#define GRSPW2_DMACTRL_TP 0x40000U + +#define GRSPW2_DMACTRL_TL 0x20000U + +#define GRSPW2_DMACTRL_LE 0x10000U + +#define GRSPW2_DMACTRL_SP 0x8000U + +#define GRSPW2_DMACTRL_SA 0x4000U + +#define GRSPW2_DMACTRL_EN 0x2000U + +#define GRSPW2_DMACTRL_NS 0x1000U + +#define GRSPW2_DMACTRL_RD 0x800U + +#define GRSPW2_DMACTRL_RX 0x400U + +#define GRSPW2_DMACTRL_AT 0x200U + +#define GRSPW2_DMACTRL_RA 0x100U + +#define GRSPW2_DMACTRL_TA 0x80U + +#define GRSPW2_DMACTRL_PR 0x40U + +#define GRSPW2_DMACTRL_PS 0x20U + +#define GRSPW2_DMACTRL_AI 0x10U + +#define GRSPW2_DMACTRL_RI 0x8U + +#define GRSPW2_DMACTRL_TI 0x4U + +#define GRSPW2_DMACTRL_RE 0x2U + +#define GRSPW2_DMACTRL_TE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMADMAMAXLEN DMA RX maximum length (DMAMAXLEN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DMAMAXLEN_RXMAXLEN_SHIFT 2 +#define GRSPW2_DMAMAXLEN_RXMAXLEN_MASK 0x1fffffcU +#define GRSPW2_DMAMAXLEN_RXMAXLEN_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMAMAXLEN_RXMAXLEN_MASK ) >> \ + GRSPW2_DMAMAXLEN_RXMAXLEN_SHIFT ) +#define GRSPW2_DMAMAXLEN_RXMAXLEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMAMAXLEN_RXMAXLEN_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMAMAXLEN_RXMAXLEN_SHIFT ) & \ + GRSPW2_DMAMAXLEN_RXMAXLEN_MASK ) ) +#define GRSPW2_DMAMAXLEN_RXMAXLEN( _val ) \ + ( ( ( _val ) << GRSPW2_DMAMAXLEN_RXMAXLEN_SHIFT ) & \ + GRSPW2_DMAMAXLEN_RXMAXLEN_MASK ) + +#define GRSPW2_DMAMAXLEN_RES_SHIFT 0 +#define GRSPW2_DMAMAXLEN_RES_MASK 0x3U +#define GRSPW2_DMAMAXLEN_RES_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMAMAXLEN_RES_MASK ) >> \ + GRSPW2_DMAMAXLEN_RES_SHIFT ) +#define GRSPW2_DMAMAXLEN_RES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMAMAXLEN_RES_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMAMAXLEN_RES_SHIFT ) & \ + GRSPW2_DMAMAXLEN_RES_MASK ) ) +#define GRSPW2_DMAMAXLEN_RES( _val ) \ + ( ( ( _val ) << GRSPW2_DMAMAXLEN_RES_SHIFT ) & \ + GRSPW2_DMAMAXLEN_RES_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMADMATXDESC \ + * DMA transmit descriptor table address (DMATXDESC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DMATXDESC_DESCBASEADDR_SHIFT 0 +#define GRSPW2_DMATXDESC_DESCBASEADDR_MASK 0xffffffffU +#define GRSPW2_DMATXDESC_DESCBASEADDR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMATXDESC_DESCBASEADDR_MASK ) >> \ + GRSPW2_DMATXDESC_DESCBASEADDR_SHIFT ) +#define GRSPW2_DMATXDESC_DESCBASEADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMATXDESC_DESCBASEADDR_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMATXDESC_DESCBASEADDR_SHIFT ) & \ + GRSPW2_DMATXDESC_DESCBASEADDR_MASK ) ) +#define GRSPW2_DMATXDESC_DESCBASEADDR( _val ) \ + ( ( ( _val ) << GRSPW2_DMATXDESC_DESCBASEADDR_SHIFT ) & \ + GRSPW2_DMATXDESC_DESCBASEADDR_MASK ) + +#define GRSPW2_DMATXDESC_DESCSEL_SHIFT 4 +#define GRSPW2_DMATXDESC_DESCSEL_MASK 0xfffffff0U +#define GRSPW2_DMATXDESC_DESCSEL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMATXDESC_DESCSEL_MASK ) >> \ + GRSPW2_DMATXDESC_DESCSEL_SHIFT ) +#define GRSPW2_DMATXDESC_DESCSEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMATXDESC_DESCSEL_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMATXDESC_DESCSEL_SHIFT ) & \ + GRSPW2_DMATXDESC_DESCSEL_MASK ) ) +#define GRSPW2_DMATXDESC_DESCSEL( _val ) \ + ( ( ( _val ) << GRSPW2_DMATXDESC_DESCSEL_SHIFT ) & \ + GRSPW2_DMATXDESC_DESCSEL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMADMARXDESC \ + * DMA receive descriptor table address (DMARXDESC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DMARXDESC_DESCBASEADDR_SHIFT 10 +#define GRSPW2_DMARXDESC_DESCBASEADDR_MASK 0xfffffc00U +#define GRSPW2_DMARXDESC_DESCBASEADDR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMARXDESC_DESCBASEADDR_MASK ) >> \ + GRSPW2_DMARXDESC_DESCBASEADDR_SHIFT ) +#define GRSPW2_DMARXDESC_DESCBASEADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMARXDESC_DESCBASEADDR_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMARXDESC_DESCBASEADDR_SHIFT ) & \ + GRSPW2_DMARXDESC_DESCBASEADDR_MASK ) ) +#define GRSPW2_DMARXDESC_DESCBASEADDR( _val ) \ + ( ( ( _val ) << GRSPW2_DMARXDESC_DESCBASEADDR_SHIFT ) & \ + GRSPW2_DMARXDESC_DESCBASEADDR_MASK ) + +#define GRSPW2_DMARXDESC_DESCSEL_SHIFT 3 +#define GRSPW2_DMARXDESC_DESCSEL_MASK 0x3f8U +#define GRSPW2_DMARXDESC_DESCSEL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMARXDESC_DESCSEL_MASK ) >> \ + GRSPW2_DMARXDESC_DESCSEL_SHIFT ) +#define GRSPW2_DMARXDESC_DESCSEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMARXDESC_DESCSEL_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMARXDESC_DESCSEL_SHIFT ) & \ + GRSPW2_DMARXDESC_DESCSEL_MASK ) ) +#define GRSPW2_DMARXDESC_DESCSEL( _val ) \ + ( ( ( _val ) << GRSPW2_DMARXDESC_DESCSEL_SHIFT ) & \ + GRSPW2_DMARXDESC_DESCSEL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DMADMAADDR DMA address (DMAADDR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DMAADDR_MASK_SHIFT 8 +#define GRSPW2_DMAADDR_MASK_MASK 0xff00U +#define GRSPW2_DMAADDR_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMAADDR_MASK_MASK ) >> \ + GRSPW2_DMAADDR_MASK_SHIFT ) +#define GRSPW2_DMAADDR_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMAADDR_MASK_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMAADDR_MASK_SHIFT ) & \ + GRSPW2_DMAADDR_MASK_MASK ) ) +#define GRSPW2_DMAADDR_MASK( _val ) \ + ( ( ( _val ) << GRSPW2_DMAADDR_MASK_SHIFT ) & \ + GRSPW2_DMAADDR_MASK_MASK ) + +#define GRSPW2_DMAADDR_ADDR_SHIFT 0 +#define GRSPW2_DMAADDR_ADDR_MASK 0xffU +#define GRSPW2_DMAADDR_ADDR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DMAADDR_ADDR_MASK ) >> \ + GRSPW2_DMAADDR_ADDR_SHIFT ) +#define GRSPW2_DMAADDR_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DMAADDR_ADDR_MASK ) | \ + ( ( ( _val ) << GRSPW2_DMAADDR_ADDR_SHIFT ) & \ + GRSPW2_DMAADDR_ADDR_MASK ) ) +#define GRSPW2_DMAADDR_ADDR( _val ) \ + ( ( ( _val ) << GRSPW2_DMAADDR_ADDR_SHIFT ) & \ + GRSPW2_DMAADDR_ADDR_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRSPW2 DMA register block memory map. + */ +typedef struct grspw2_dma { + /** + * @brief See @ref RTEMSDeviceGRSPW2DMADMACTRL. + */ + uint32_t dmactrl; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DMADMAMAXLEN. + */ + uint32_t dmamaxlen; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DMADMATXDESC. + */ + uint32_t dmatxdesc; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DMADMARXDESC. + */ + uint32_t dmarxdesc; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DMADMAADDR. + */ + uint32_t dmaaddr; + + uint32_t reserved_14_20[ 3 ]; +} grspw2_dma; + +/** @} */ + +/* Generated from spec:/dev/grlib/if/grspw2 */ + +/** + * @defgroup RTEMSDeviceGRSPW2 GRSPW2 + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the GRSPW2 interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRSPW2CTRL Control (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_CTRL_RA 0x80000000U + +#define GRSPW2_CTRL_RX 0x40000000U + +#define GRSPW2_CTRL_RC 0x20000000U + +#define GRSPW2_CTRL_NCH_SHIFT 27 +#define GRSPW2_CTRL_NCH_MASK 0x18000000U +#define GRSPW2_CTRL_NCH_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_CTRL_NCH_MASK ) >> \ + GRSPW2_CTRL_NCH_SHIFT ) +#define GRSPW2_CTRL_NCH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_CTRL_NCH_MASK ) | \ + ( ( ( _val ) << GRSPW2_CTRL_NCH_SHIFT ) & \ + GRSPW2_CTRL_NCH_MASK ) ) +#define GRSPW2_CTRL_NCH( _val ) \ + ( ( ( _val ) << GRSPW2_CTRL_NCH_SHIFT ) & \ + GRSPW2_CTRL_NCH_MASK ) + +#define GRSPW2_CTRL_PO 0x4000000U + +#define GRSPW2_CTRL_CC 0x2000000U + +#define GRSPW2_CTRL_ID 0x1000000U + +#define GRSPW2_CTRL_R 0x800000U + +#define GRSPW2_CTRL_LE 0x400000U + +#define GRSPW2_CTRL_PS 0x200000U + +#define GRSPW2_CTRL_NP 0x100000U + +#define GRSPW2_CTRL_PNPA_SHIFT 18 +#define GRSPW2_CTRL_PNPA_MASK 0xc0000U +#define GRSPW2_CTRL_PNPA_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_CTRL_PNPA_MASK ) >> \ + GRSPW2_CTRL_PNPA_SHIFT ) +#define GRSPW2_CTRL_PNPA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_CTRL_PNPA_MASK ) | \ + ( ( ( _val ) << GRSPW2_CTRL_PNPA_SHIFT ) & \ + GRSPW2_CTRL_PNPA_MASK ) ) +#define GRSPW2_CTRL_PNPA( _val ) \ + ( ( ( _val ) << GRSPW2_CTRL_PNPA_SHIFT ) & \ + GRSPW2_CTRL_PNPA_MASK ) + +#define GRSPW2_CTRL_RD 0x20000U + +#define GRSPW2_CTRL_RE 0x10000U + +#define GRSPW2_CTRL_PE 0x8000U + +#define GRSPW2_CTRL_R 0x4000U + +#define GRSPW2_CTRL_TL 0x2000U + +#define GRSPW2_CTRL_TF 0x1000U + +#define GRSPW2_CTRL_TR 0x800U + +#define GRSPW2_CTRL_TT 0x400U + +#define GRSPW2_CTRL_LI 0x200U + +#define GRSPW2_CTRL_TQ 0x100U + +#define GRSPW2_CTRL_R 0x80U + +#define GRSPW2_CTRL_RS 0x40U + +#define GRSPW2_CTRL_PM 0x20U + +#define GRSPW2_CTRL_TI 0x10U + +#define GRSPW2_CTRL_IE 0x8U + +#define GRSPW2_CTRL_AS 0x4U + +#define GRSPW2_CTRL_LS 0x2U + +#define GRSPW2_CTRL_LD 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2STS Status (STS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_STS_NRXD_SHIFT 26 +#define GRSPW2_STS_NRXD_MASK 0xc000000U +#define GRSPW2_STS_NRXD_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_STS_NRXD_MASK ) >> \ + GRSPW2_STS_NRXD_SHIFT ) +#define GRSPW2_STS_NRXD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_STS_NRXD_MASK ) | \ + ( ( ( _val ) << GRSPW2_STS_NRXD_SHIFT ) & \ + GRSPW2_STS_NRXD_MASK ) ) +#define GRSPW2_STS_NRXD( _val ) \ + ( ( ( _val ) << GRSPW2_STS_NRXD_SHIFT ) & \ + GRSPW2_STS_NRXD_MASK ) + +#define GRSPW2_STS_NTXD 0x2000000U + +#define GRSPW2_STS_LS_SHIFT 21 +#define GRSPW2_STS_LS_MASK 0xe00000U +#define GRSPW2_STS_LS_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_STS_LS_MASK ) >> \ + GRSPW2_STS_LS_SHIFT ) +#define GRSPW2_STS_LS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_STS_LS_MASK ) | \ + ( ( ( _val ) << GRSPW2_STS_LS_SHIFT ) & \ + GRSPW2_STS_LS_MASK ) ) +#define GRSPW2_STS_LS( _val ) \ + ( ( ( _val ) << GRSPW2_STS_LS_SHIFT ) & \ + GRSPW2_STS_LS_MASK ) + +#define GRSPW2_STS_AP 0x200U + +#define GRSPW2_STS_EE 0x100U + +#define GRSPW2_STS_IA 0x80U + +#define GRSPW2_STS_RES_SHIFT 5 +#define GRSPW2_STS_RES_MASK 0x60U +#define GRSPW2_STS_RES_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_STS_RES_MASK ) >> \ + GRSPW2_STS_RES_SHIFT ) +#define GRSPW2_STS_RES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_STS_RES_MASK ) | \ + ( ( ( _val ) << GRSPW2_STS_RES_SHIFT ) & \ + GRSPW2_STS_RES_MASK ) ) +#define GRSPW2_STS_RES( _val ) \ + ( ( ( _val ) << GRSPW2_STS_RES_SHIFT ) & \ + GRSPW2_STS_RES_MASK ) + +#define GRSPW2_STS_PE 0x10U + +#define GRSPW2_STS_DE 0x8U + +#define GRSPW2_STS_ER 0x4U + +#define GRSPW2_STS_CE 0x2U + +#define GRSPW2_STS_TO 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DEFADDR Default address (DEFADDR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DEFADDR_DEFMASK_SHIFT 8 +#define GRSPW2_DEFADDR_DEFMASK_MASK 0xff00U +#define GRSPW2_DEFADDR_DEFMASK_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DEFADDR_DEFMASK_MASK ) >> \ + GRSPW2_DEFADDR_DEFMASK_SHIFT ) +#define GRSPW2_DEFADDR_DEFMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DEFADDR_DEFMASK_MASK ) | \ + ( ( ( _val ) << GRSPW2_DEFADDR_DEFMASK_SHIFT ) & \ + GRSPW2_DEFADDR_DEFMASK_MASK ) ) +#define GRSPW2_DEFADDR_DEFMASK( _val ) \ + ( ( ( _val ) << GRSPW2_DEFADDR_DEFMASK_SHIFT ) & \ + GRSPW2_DEFADDR_DEFMASK_MASK ) + +#define GRSPW2_DEFADDR_DEFADDR_SHIFT 0 +#define GRSPW2_DEFADDR_DEFADDR_MASK 0xffU +#define GRSPW2_DEFADDR_DEFADDR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DEFADDR_DEFADDR_MASK ) >> \ + GRSPW2_DEFADDR_DEFADDR_SHIFT ) +#define GRSPW2_DEFADDR_DEFADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DEFADDR_DEFADDR_MASK ) | \ + ( ( ( _val ) << GRSPW2_DEFADDR_DEFADDR_SHIFT ) & \ + GRSPW2_DEFADDR_DEFADDR_MASK ) ) +#define GRSPW2_DEFADDR_DEFADDR( _val ) \ + ( ( ( _val ) << GRSPW2_DEFADDR_DEFADDR_SHIFT ) & \ + GRSPW2_DEFADDR_DEFADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2CLKDIV Clock divisor (CLKDIV) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_CLKDIV_CLKDIVSTART_SHIFT 8 +#define GRSPW2_CLKDIV_CLKDIVSTART_MASK 0xff00U +#define GRSPW2_CLKDIV_CLKDIVSTART_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_CLKDIV_CLKDIVSTART_MASK ) >> \ + GRSPW2_CLKDIV_CLKDIVSTART_SHIFT ) +#define GRSPW2_CLKDIV_CLKDIVSTART_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_CLKDIV_CLKDIVSTART_MASK ) | \ + ( ( ( _val ) << GRSPW2_CLKDIV_CLKDIVSTART_SHIFT ) & \ + GRSPW2_CLKDIV_CLKDIVSTART_MASK ) ) +#define GRSPW2_CLKDIV_CLKDIVSTART( _val ) \ + ( ( ( _val ) << GRSPW2_CLKDIV_CLKDIVSTART_SHIFT ) & \ + GRSPW2_CLKDIV_CLKDIVSTART_MASK ) + +#define GRSPW2_CLKDIV_CLKDIVRUN_SHIFT 0 +#define GRSPW2_CLKDIV_CLKDIVRUN_MASK 0xffU +#define GRSPW2_CLKDIV_CLKDIVRUN_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_CLKDIV_CLKDIVRUN_MASK ) >> \ + GRSPW2_CLKDIV_CLKDIVRUN_SHIFT ) +#define GRSPW2_CLKDIV_CLKDIVRUN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_CLKDIV_CLKDIVRUN_MASK ) | \ + ( ( ( _val ) << GRSPW2_CLKDIV_CLKDIVRUN_SHIFT ) & \ + GRSPW2_CLKDIV_CLKDIVRUN_MASK ) ) +#define GRSPW2_CLKDIV_CLKDIVRUN( _val ) \ + ( ( ( _val ) << GRSPW2_CLKDIV_CLKDIVRUN_SHIFT ) & \ + GRSPW2_CLKDIV_CLKDIVRUN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2DKEY Destination key (DKEY) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_DKEY_DESTKEY_SHIFT 0 +#define GRSPW2_DKEY_DESTKEY_MASK 0xffU +#define GRSPW2_DKEY_DESTKEY_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_DKEY_DESTKEY_MASK ) >> \ + GRSPW2_DKEY_DESTKEY_SHIFT ) +#define GRSPW2_DKEY_DESTKEY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_DKEY_DESTKEY_MASK ) | \ + ( ( ( _val ) << GRSPW2_DKEY_DESTKEY_SHIFT ) & \ + GRSPW2_DKEY_DESTKEY_MASK ) ) +#define GRSPW2_DKEY_DESTKEY( _val ) \ + ( ( ( _val ) << GRSPW2_DKEY_DESTKEY_SHIFT ) & \ + GRSPW2_DKEY_DESTKEY_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2TC Time-code (TC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_TC_TCTRL_SHIFT 6 +#define GRSPW2_TC_TCTRL_MASK 0xc0U +#define GRSPW2_TC_TCTRL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_TC_TCTRL_MASK ) >> \ + GRSPW2_TC_TCTRL_SHIFT ) +#define GRSPW2_TC_TCTRL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_TC_TCTRL_MASK ) | \ + ( ( ( _val ) << GRSPW2_TC_TCTRL_SHIFT ) & \ + GRSPW2_TC_TCTRL_MASK ) ) +#define GRSPW2_TC_TCTRL( _val ) \ + ( ( ( _val ) << GRSPW2_TC_TCTRL_SHIFT ) & \ + GRSPW2_TC_TCTRL_MASK ) + +#define GRSPW2_TC_TIMECNT_SHIFT 0 +#define GRSPW2_TC_TIMECNT_MASK 0x3fU +#define GRSPW2_TC_TIMECNT_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_TC_TIMECNT_MASK ) >> \ + GRSPW2_TC_TIMECNT_SHIFT ) +#define GRSPW2_TC_TIMECNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_TC_TIMECNT_MASK ) | \ + ( ( ( _val ) << GRSPW2_TC_TIMECNT_SHIFT ) & \ + GRSPW2_TC_TIMECNT_MASK ) ) +#define GRSPW2_TC_TIMECNT( _val ) \ + ( ( ( _val ) << GRSPW2_TC_TIMECNT_SHIFT ) & \ + GRSPW2_TC_TIMECNT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2INTCTRL Interrupt distribution control (INTCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_INTCTRL_INTNUM_SHIFT 26 +#define GRSPW2_INTCTRL_INTNUM_MASK 0xfc000000U +#define GRSPW2_INTCTRL_INTNUM_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCTRL_INTNUM_MASK ) >> \ + GRSPW2_INTCTRL_INTNUM_SHIFT ) +#define GRSPW2_INTCTRL_INTNUM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCTRL_INTNUM_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCTRL_INTNUM_SHIFT ) & \ + GRSPW2_INTCTRL_INTNUM_MASK ) ) +#define GRSPW2_INTCTRL_INTNUM( _val ) \ + ( ( ( _val ) << GRSPW2_INTCTRL_INTNUM_SHIFT ) & \ + GRSPW2_INTCTRL_INTNUM_MASK ) + +#define GRSPW2_INTCTRL_RS 0x2000000U + +#define GRSPW2_INTCTRL_EE 0x1000000U + +#define GRSPW2_INTCTRL_IA 0x800000U + +#define GRSPW2_INTCTRL_RES 0x2U + +#define GRSPW2_INTCTRL_TQ_SHIFT 21 +#define GRSPW2_INTCTRL_TQ_MASK 0x600000U +#define GRSPW2_INTCTRL_TQ_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCTRL_TQ_MASK ) >> \ + GRSPW2_INTCTRL_TQ_SHIFT ) +#define GRSPW2_INTCTRL_TQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCTRL_TQ_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCTRL_TQ_SHIFT ) & \ + GRSPW2_INTCTRL_TQ_MASK ) ) +#define GRSPW2_INTCTRL_TQ( _val ) \ + ( ( ( _val ) << GRSPW2_INTCTRL_TQ_SHIFT ) & \ + GRSPW2_INTCTRL_TQ_MASK ) + +#define GRSPW2_INTCTRL_AQ 0x100000U + +#define GRSPW2_INTCTRL_IQ 0x80000U + +#define GRSPW2_INTCTRL_RES 0x40000U + +#define GRSPW2_INTCTRL_AA_SHIFT 16 +#define GRSPW2_INTCTRL_AA_MASK 0x30000U +#define GRSPW2_INTCTRL_AA_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCTRL_AA_MASK ) >> \ + GRSPW2_INTCTRL_AA_SHIFT ) +#define GRSPW2_INTCTRL_AA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCTRL_AA_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCTRL_AA_SHIFT ) & \ + GRSPW2_INTCTRL_AA_MASK ) ) +#define GRSPW2_INTCTRL_AA( _val ) \ + ( ( ( _val ) << GRSPW2_INTCTRL_AA_SHIFT ) & \ + GRSPW2_INTCTRL_AA_MASK ) + +#define GRSPW2_INTCTRL_AT 0x8000U + +#define GRSPW2_INTCTRL_IT 0x4000U + +#define GRSPW2_INTCTRL_RES 0x2000U + +#define GRSPW2_INTCTRL_ID_SHIFT 8 +#define GRSPW2_INTCTRL_ID_MASK 0x1f00U +#define GRSPW2_INTCTRL_ID_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCTRL_ID_MASK ) >> \ + GRSPW2_INTCTRL_ID_SHIFT ) +#define GRSPW2_INTCTRL_ID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCTRL_ID_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCTRL_ID_SHIFT ) & \ + GRSPW2_INTCTRL_ID_MASK ) ) +#define GRSPW2_INTCTRL_ID( _val ) \ + ( ( ( _val ) << GRSPW2_INTCTRL_ID_SHIFT ) & \ + GRSPW2_INTCTRL_ID_MASK ) + +#define GRSPW2_INTCTRL_II 0x80U + +#define GRSPW2_INTCTRL_TXINT 0x40U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2INTRX Interrupt-code receive (INTRX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_INTRX_RXIRQ_SHIFT 0 +#define GRSPW2_INTRX_RXIRQ_MASK 0xffffffffU +#define GRSPW2_INTRX_RXIRQ_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTRX_RXIRQ_MASK ) >> \ + GRSPW2_INTRX_RXIRQ_SHIFT ) +#define GRSPW2_INTRX_RXIRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTRX_RXIRQ_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTRX_RXIRQ_SHIFT ) & \ + GRSPW2_INTRX_RXIRQ_MASK ) ) +#define GRSPW2_INTRX_RXIRQ( _val ) \ + ( ( ( _val ) << GRSPW2_INTRX_RXIRQ_SHIFT ) & \ + GRSPW2_INTRX_RXIRQ_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2INTTO Interrupt timeout (INTTO) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_INTTO_INTTO_SHIFT 0 +#define GRSPW2_INTTO_INTTO_MASK 0xffffffffU +#define GRSPW2_INTTO_INTTO_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTTO_INTTO_MASK ) >> \ + GRSPW2_INTTO_INTTO_SHIFT ) +#define GRSPW2_INTTO_INTTO_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTTO_INTTO_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTTO_INTTO_SHIFT ) & \ + GRSPW2_INTTO_INTTO_MASK ) ) +#define GRSPW2_INTTO_INTTO( _val ) \ + ( ( ( _val ) << GRSPW2_INTTO_INTTO_SHIFT ) & \ + GRSPW2_INTTO_INTTO_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2INTTOEXT Interrupt timeout extended (INTTOEXT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_INTTOEXT_INTTOEXT_SHIFT 0 +#define GRSPW2_INTTOEXT_INTTOEXT_MASK 0xffffffffU +#define GRSPW2_INTTOEXT_INTTOEXT_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTTOEXT_INTTOEXT_MASK ) >> \ + GRSPW2_INTTOEXT_INTTOEXT_SHIFT ) +#define GRSPW2_INTTOEXT_INTTOEXT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTTOEXT_INTTOEXT_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTTOEXT_INTTOEXT_SHIFT ) & \ + GRSPW2_INTTOEXT_INTTOEXT_MASK ) ) +#define GRSPW2_INTTOEXT_INTTOEXT( _val ) \ + ( ( ( _val ) << GRSPW2_INTTOEXT_INTTOEXT_SHIFT ) & \ + GRSPW2_INTTOEXT_INTTOEXT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2TICKMASK Interrupt tick-out mask (TICKMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_TICKMASK_MASK_SHIFT 0 +#define GRSPW2_TICKMASK_MASK_MASK 0xffffffffU +#define GRSPW2_TICKMASK_MASK_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_TICKMASK_MASK_MASK ) >> \ + GRSPW2_TICKMASK_MASK_SHIFT ) +#define GRSPW2_TICKMASK_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_TICKMASK_MASK_MASK ) | \ + ( ( ( _val ) << GRSPW2_TICKMASK_MASK_SHIFT ) & \ + GRSPW2_TICKMASK_MASK_MASK ) ) +#define GRSPW2_TICKMASK_MASK( _val ) \ + ( ( ( _val ) << GRSPW2_TICKMASK_MASK_SHIFT ) & \ + GRSPW2_TICKMASK_MASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2AUTOACKTICKMASKEXT \ + * Interrupt-code auto acknowledge mask / interrupt tick-out mask extended (AUTOACK_TICKMASKEXT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_SHIFT 0 +#define GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_MASK 0xffffffffU +#define GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_MASK ) >> \ + GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_SHIFT ) +#define GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_MASK ) | \ + ( ( ( _val ) << GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_SHIFT ) & \ + GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_MASK ) ) +#define GRSPW2_AUTOACK_TICKMASKEXT_AAMASK( _val ) \ + ( ( ( _val ) << GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_SHIFT ) & \ + GRSPW2_AUTOACK_TICKMASKEXT_AAMASK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2INTCFG \ + * Interrupt distribution configuration (INTCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_INTCFG_INTNUM3_SHIFT 26 +#define GRSPW2_INTCFG_INTNUM3_MASK 0xfc000000U +#define GRSPW2_INTCFG_INTNUM3_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCFG_INTNUM3_MASK ) >> \ + GRSPW2_INTCFG_INTNUM3_SHIFT ) +#define GRSPW2_INTCFG_INTNUM3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCFG_INTNUM3_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM3_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM3_MASK ) ) +#define GRSPW2_INTCFG_INTNUM3( _val ) \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM3_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM3_MASK ) + +#define GRSPW2_INTCFG_INTNUM2_SHIFT 20 +#define GRSPW2_INTCFG_INTNUM2_MASK 0x3f00000U +#define GRSPW2_INTCFG_INTNUM2_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCFG_INTNUM2_MASK ) >> \ + GRSPW2_INTCFG_INTNUM2_SHIFT ) +#define GRSPW2_INTCFG_INTNUM2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCFG_INTNUM2_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM2_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM2_MASK ) ) +#define GRSPW2_INTCFG_INTNUM2( _val ) \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM2_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM2_MASK ) + +#define GRSPW2_INTCFG_INTNUM1_SHIFT 14 +#define GRSPW2_INTCFG_INTNUM1_MASK 0xfc000U +#define GRSPW2_INTCFG_INTNUM1_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCFG_INTNUM1_MASK ) >> \ + GRSPW2_INTCFG_INTNUM1_SHIFT ) +#define GRSPW2_INTCFG_INTNUM1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCFG_INTNUM1_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM1_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM1_MASK ) ) +#define GRSPW2_INTCFG_INTNUM1( _val ) \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM1_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM1_MASK ) + +#define GRSPW2_INTCFG_INTNUM0_SHIFT 8 +#define GRSPW2_INTCFG_INTNUM0_MASK 0x3f00U +#define GRSPW2_INTCFG_INTNUM0_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCFG_INTNUM0_MASK ) >> \ + GRSPW2_INTCFG_INTNUM0_SHIFT ) +#define GRSPW2_INTCFG_INTNUM0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCFG_INTNUM0_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM0_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM0_MASK ) ) +#define GRSPW2_INTCFG_INTNUM0( _val ) \ + ( ( ( _val ) << GRSPW2_INTCFG_INTNUM0_SHIFT ) & \ + GRSPW2_INTCFG_INTNUM0_MASK ) + +#define GRSPW2_INTCFG_NUMINT_SHIFT 4 +#define GRSPW2_INTCFG_NUMINT_MASK 0xf0U +#define GRSPW2_INTCFG_NUMINT_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_INTCFG_NUMINT_MASK ) >> \ + GRSPW2_INTCFG_NUMINT_SHIFT ) +#define GRSPW2_INTCFG_NUMINT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_INTCFG_NUMINT_MASK ) | \ + ( ( ( _val ) << GRSPW2_INTCFG_NUMINT_SHIFT ) & \ + GRSPW2_INTCFG_NUMINT_MASK ) ) +#define GRSPW2_INTCFG_NUMINT( _val ) \ + ( ( ( _val ) << GRSPW2_INTCFG_NUMINT_SHIFT ) & \ + GRSPW2_INTCFG_NUMINT_MASK ) + +#define GRSPW2_INTCFG_PR 0x8U + +#define GRSPW2_INTCFG_IR 0x4U + +#define GRSPW2_INTCFG_IT 0x2U + +#define GRSPW2_INTCFG_EE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2ISR Interrupt distribution ISR (ISR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_ISR_ISR_SHIFT 0 +#define GRSPW2_ISR_ISR_MASK 0xffffffffU +#define GRSPW2_ISR_ISR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_ISR_ISR_MASK ) >> \ + GRSPW2_ISR_ISR_SHIFT ) +#define GRSPW2_ISR_ISR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_ISR_ISR_MASK ) | \ + ( ( ( _val ) << GRSPW2_ISR_ISR_SHIFT ) & \ + GRSPW2_ISR_ISR_MASK ) ) +#define GRSPW2_ISR_ISR( _val ) \ + ( ( ( _val ) << GRSPW2_ISR_ISR_SHIFT ) & \ + GRSPW2_ISR_ISR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2ISREXT \ + * Interrupt distribution ISR extended (ISREXT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_ISREXT_ISR_SHIFT 0 +#define GRSPW2_ISREXT_ISR_MASK 0xffffffffU +#define GRSPW2_ISREXT_ISR_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_ISREXT_ISR_MASK ) >> \ + GRSPW2_ISREXT_ISR_SHIFT ) +#define GRSPW2_ISREXT_ISR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_ISREXT_ISR_MASK ) | \ + ( ( ( _val ) << GRSPW2_ISREXT_ISR_SHIFT ) & \ + GRSPW2_ISREXT_ISR_MASK ) ) +#define GRSPW2_ISREXT_ISR( _val ) \ + ( ( ( _val ) << GRSPW2_ISREXT_ISR_SHIFT ) & \ + GRSPW2_ISREXT_ISR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PRESCALER \ + * Interrupt distribution prescaler reload (PRESCALER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PRESCALER_R 0x80000000U + +#define GRSPW2_PRESCALER_RL_SHIFT 0 +#define GRSPW2_PRESCALER_RL_MASK 0x7fffffffU +#define GRSPW2_PRESCALER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PRESCALER_RL_MASK ) >> \ + GRSPW2_PRESCALER_RL_SHIFT ) +#define GRSPW2_PRESCALER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PRESCALER_RL_MASK ) | \ + ( ( ( _val ) << GRSPW2_PRESCALER_RL_SHIFT ) & \ + GRSPW2_PRESCALER_RL_MASK ) ) +#define GRSPW2_PRESCALER_RL( _val ) \ + ( ( ( _val ) << GRSPW2_PRESCALER_RL_SHIFT ) & \ + GRSPW2_PRESCALER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2ISRTIMER \ + * Interrupt distribution ISR timer reload (ISRTIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_ISRTIMER_EN 0x80000000U + +#define GRSPW2_ISRTIMER_RL_SHIFT 0 +#define GRSPW2_ISRTIMER_RL_MASK 0x7fffffffU +#define GRSPW2_ISRTIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_ISRTIMER_RL_MASK ) >> \ + GRSPW2_ISRTIMER_RL_SHIFT ) +#define GRSPW2_ISRTIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_ISRTIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPW2_ISRTIMER_RL_SHIFT ) & \ + GRSPW2_ISRTIMER_RL_MASK ) ) +#define GRSPW2_ISRTIMER_RL( _val ) \ + ( ( ( _val ) << GRSPW2_ISRTIMER_RL_SHIFT ) & \ + GRSPW2_ISRTIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2IATIMER \ + * Interrupt distribution INT / ACK timer reload (IATIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_IATIMER_EN 0x80000000U + +#define GRSPW2_IATIMER_RL_SHIFT 0 +#define GRSPW2_IATIMER_RL_MASK 0x7fffffffU +#define GRSPW2_IATIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_IATIMER_RL_MASK ) >> \ + GRSPW2_IATIMER_RL_SHIFT ) +#define GRSPW2_IATIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_IATIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPW2_IATIMER_RL_SHIFT ) & \ + GRSPW2_IATIMER_RL_MASK ) ) +#define GRSPW2_IATIMER_RL( _val ) \ + ( ( ( _val ) << GRSPW2_IATIMER_RL_SHIFT ) & \ + GRSPW2_IATIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2ICTIMER \ + * Interrupt distribution change timer reload (ICTIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_ICTIMER_EN 0x80000000U + +#define GRSPW2_ICTIMER_RL_SHIFT 0 +#define GRSPW2_ICTIMER_RL_MASK 0x7fffffffU +#define GRSPW2_ICTIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_ICTIMER_RL_MASK ) >> \ + GRSPW2_ICTIMER_RL_SHIFT ) +#define GRSPW2_ICTIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_ICTIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPW2_ICTIMER_RL_SHIFT ) & \ + GRSPW2_ICTIMER_RL_MASK ) ) +#define GRSPW2_ICTIMER_RL( _val ) \ + ( ( ( _val ) << GRSPW2_ICTIMER_RL_SHIFT ) & \ + GRSPW2_ICTIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPVEND \ + * SpaceWire Plug-and-Play - Device Vendor and Product ID (PNPVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPVEND_VEND_SHIFT 16 +#define GRSPW2_PNPVEND_VEND_MASK 0xffff0000U +#define GRSPW2_PNPVEND_VEND_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPVEND_VEND_MASK ) >> \ + GRSPW2_PNPVEND_VEND_SHIFT ) +#define GRSPW2_PNPVEND_VEND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPVEND_VEND_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPVEND_VEND_SHIFT ) & \ + GRSPW2_PNPVEND_VEND_MASK ) ) +#define GRSPW2_PNPVEND_VEND( _val ) \ + ( ( ( _val ) << GRSPW2_PNPVEND_VEND_SHIFT ) & \ + GRSPW2_PNPVEND_VEND_MASK ) + +#define GRSPW2_PNPVEND_PROD_SHIFT 0 +#define GRSPW2_PNPVEND_PROD_MASK 0xffffU +#define GRSPW2_PNPVEND_PROD_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPVEND_PROD_MASK ) >> \ + GRSPW2_PNPVEND_PROD_SHIFT ) +#define GRSPW2_PNPVEND_PROD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPVEND_PROD_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPVEND_PROD_SHIFT ) & \ + GRSPW2_PNPVEND_PROD_MASK ) ) +#define GRSPW2_PNPVEND_PROD( _val ) \ + ( ( ( _val ) << GRSPW2_PNPVEND_PROD_SHIFT ) & \ + GRSPW2_PNPVEND_PROD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPOA0 \ + * SpaceWire Plug-and-Play - Owner Address 0 (PNPOA0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPOA0_RA_SHIFT 0 +#define GRSPW2_PNPOA0_RA_MASK 0xffffffffU +#define GRSPW2_PNPOA0_RA_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPOA0_RA_MASK ) >> \ + GRSPW2_PNPOA0_RA_SHIFT ) +#define GRSPW2_PNPOA0_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPOA0_RA_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPOA0_RA_SHIFT ) & \ + GRSPW2_PNPOA0_RA_MASK ) ) +#define GRSPW2_PNPOA0_RA( _val ) \ + ( ( ( _val ) << GRSPW2_PNPOA0_RA_SHIFT ) & \ + GRSPW2_PNPOA0_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPOA1 \ + * SpaceWire Plug-and-Play - Owner Address 1 (PNPOA1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPOA1_RA_SHIFT 0 +#define GRSPW2_PNPOA1_RA_MASK 0xffffffffU +#define GRSPW2_PNPOA1_RA_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPOA1_RA_MASK ) >> \ + GRSPW2_PNPOA1_RA_SHIFT ) +#define GRSPW2_PNPOA1_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPOA1_RA_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPOA1_RA_SHIFT ) & \ + GRSPW2_PNPOA1_RA_MASK ) ) +#define GRSPW2_PNPOA1_RA( _val ) \ + ( ( ( _val ) << GRSPW2_PNPOA1_RA_SHIFT ) & \ + GRSPW2_PNPOA1_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPOA2 \ + * SpaceWire Plug-and-Play - Owner Address 2 (PNPOA2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPOA2_RA_SHIFT 0 +#define GRSPW2_PNPOA2_RA_MASK 0xffffffffU +#define GRSPW2_PNPOA2_RA_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPOA2_RA_MASK ) >> \ + GRSPW2_PNPOA2_RA_SHIFT ) +#define GRSPW2_PNPOA2_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPOA2_RA_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPOA2_RA_SHIFT ) & \ + GRSPW2_PNPOA2_RA_MASK ) ) +#define GRSPW2_PNPOA2_RA( _val ) \ + ( ( ( _val ) << GRSPW2_PNPOA2_RA_SHIFT ) & \ + GRSPW2_PNPOA2_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPDEVID \ + * SpaceWire Plug-and-Play - Device ID (PNPDEVID) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPDEVID_DID_SHIFT 0 +#define GRSPW2_PNPDEVID_DID_MASK 0xffffffffU +#define GRSPW2_PNPDEVID_DID_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPDEVID_DID_MASK ) >> \ + GRSPW2_PNPDEVID_DID_SHIFT ) +#define GRSPW2_PNPDEVID_DID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPDEVID_DID_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPDEVID_DID_SHIFT ) & \ + GRSPW2_PNPDEVID_DID_MASK ) ) +#define GRSPW2_PNPDEVID_DID( _val ) \ + ( ( ( _val ) << GRSPW2_PNPDEVID_DID_SHIFT ) & \ + GRSPW2_PNPDEVID_DID_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPUVEND \ + * SpaceWire Plug-and-Play - Unit Vendor and Product ID (PNPUVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPUVEND_VEND_SHIFT 16 +#define GRSPW2_PNPUVEND_VEND_MASK 0xffff0000U +#define GRSPW2_PNPUVEND_VEND_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPUVEND_VEND_MASK ) >> \ + GRSPW2_PNPUVEND_VEND_SHIFT ) +#define GRSPW2_PNPUVEND_VEND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPUVEND_VEND_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPUVEND_VEND_SHIFT ) & \ + GRSPW2_PNPUVEND_VEND_MASK ) ) +#define GRSPW2_PNPUVEND_VEND( _val ) \ + ( ( ( _val ) << GRSPW2_PNPUVEND_VEND_SHIFT ) & \ + GRSPW2_PNPUVEND_VEND_MASK ) + +#define GRSPW2_PNPUVEND_PROD_SHIFT 0 +#define GRSPW2_PNPUVEND_PROD_MASK 0xffffU +#define GRSPW2_PNPUVEND_PROD_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPUVEND_PROD_MASK ) >> \ + GRSPW2_PNPUVEND_PROD_SHIFT ) +#define GRSPW2_PNPUVEND_PROD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPUVEND_PROD_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPUVEND_PROD_SHIFT ) & \ + GRSPW2_PNPUVEND_PROD_MASK ) ) +#define GRSPW2_PNPUVEND_PROD( _val ) \ + ( ( ( _val ) << GRSPW2_PNPUVEND_PROD_SHIFT ) & \ + GRSPW2_PNPUVEND_PROD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPW2PNPUSN \ + * SpaceWire Plug-and-Play - Unit Serial Number (PNPUSN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPW2_PNPUSN_USN_SHIFT 0 +#define GRSPW2_PNPUSN_USN_MASK 0xffffffffU +#define GRSPW2_PNPUSN_USN_GET( _reg ) \ + ( ( ( _reg ) & GRSPW2_PNPUSN_USN_MASK ) >> \ + GRSPW2_PNPUSN_USN_SHIFT ) +#define GRSPW2_PNPUSN_USN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPW2_PNPUSN_USN_MASK ) | \ + ( ( ( _val ) << GRSPW2_PNPUSN_USN_SHIFT ) & \ + GRSPW2_PNPUSN_USN_MASK ) ) +#define GRSPW2_PNPUSN_USN( _val ) \ + ( ( ( _val ) << GRSPW2_PNPUSN_USN_SHIFT ) & \ + GRSPW2_PNPUSN_USN_MASK ) + +/** @} */ + +/** + * @brief This structure defines the GRSPW2 register block memory map. + */ +typedef struct grspw2 { + /** + * @brief See @ref RTEMSDeviceGRSPW2CTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRSPW2STS. + */ + uint32_t sts; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DEFADDR. + */ + uint32_t defaddr; + + /** + * @brief See @ref RTEMSDeviceGRSPW2CLKDIV. + */ + uint32_t clkdiv; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DKEY. + */ + uint32_t dkey; + + /** + * @brief See @ref RTEMSDeviceGRSPW2TC. + */ + uint32_t tc; + + uint32_t reserved_18_20[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPW2DMA. + */ + grspw2_dma dma[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPW2INTCTRL. + */ + uint32_t intctrl; + + /** + * @brief See @ref RTEMSDeviceGRSPW2INTRX. + */ + uint32_t intrx; + + uint32_t reserved_a8_ac; + + /** + * @brief See @ref RTEMSDeviceGRSPW2INTTO. + */ + uint32_t intto; + + /** + * @brief See @ref RTEMSDeviceGRSPW2INTTOEXT. + */ + uint32_t inttoext; + + /** + * @brief See @ref RTEMSDeviceGRSPW2TICKMASK. + */ + uint32_t tickmask; + + /** + * @brief See @ref RTEMSDeviceGRSPW2AUTOACKTICKMASKEXT. + */ + uint32_t autoack_tickmaskext; + + /** + * @brief See @ref RTEMSDeviceGRSPW2INTCFG. + */ + uint32_t intcfg; + + uint32_t reserved_c0_c4; + + /** + * @brief See @ref RTEMSDeviceGRSPW2ISR. + */ + uint32_t isr; + + /** + * @brief See @ref RTEMSDeviceGRSPW2ISREXT. + */ + uint32_t isrext; + + uint32_t reserved_cc_d0; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PRESCALER. + */ + uint32_t prescaler; + + /** + * @brief See @ref RTEMSDeviceGRSPW2ISRTIMER. + */ + uint32_t isrtimer; + + /** + * @brief See @ref RTEMSDeviceGRSPW2IATIMER. + */ + uint32_t iatimer; + + /** + * @brief See @ref RTEMSDeviceGRSPW2ICTIMER. + */ + uint32_t ictimer; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPVEND. + */ + uint32_t pnpvend; + + uint32_t reserved_e4_e8; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPOA0. + */ + uint32_t pnpoa0; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPOA1. + */ + uint32_t pnpoa1; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPOA2. + */ + uint32_t pnpoa2; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPDEVID. + */ + uint32_t pnpdevid; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPUVEND. + */ + uint32_t pnpuvend; + + /** + * @brief See @ref RTEMSDeviceGRSPW2PNPUSN. + */ + uint32_t pnpusn; +} grspw2; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRSPW2_REGS_H */ diff --git a/bsps/include/grlib/grspw_pkt.h b/bsps/include/grlib/grspw_pkt.h index ede60b72a8..489f240098 100644 --- a/bsps/include/grlib/grspw_pkt.h +++ b/bsps/include/grlib/grspw_pkt.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRSPW/GRSPW2 SpaceWire Kernel Library Interface * * COPYRIGHT (c) 2011 * Cobham Gaisler AB * - * 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. + * 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 __GRSPW_PKT_H__ diff --git a/bsps/include/grlib/grspw_router.h b/bsps/include/grlib/grspw_router.h index 8547f19de3..55c67b599c 100644 --- a/bsps/include/grlib/grspw_router.h +++ b/bsps/include/grlib/grspw_router.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRSPW ROUTER APB-Register Driver. * * COPYRIGHT (c) 2010-2017. * Cobham Gaisler AB. * - * 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. + * 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 __GRSPW_ROUTER_H__ diff --git a/bsps/include/grlib/grspwrouter-regs.h b/bsps/include/grlib/grspwrouter-regs.h new file mode 100644 index 0000000000..5b18ea8cad --- /dev/null +++ b/bsps/include/grlib/grspwrouter-regs.h @@ -0,0 +1,1759 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRSPWROUTER + * + * @brief This header file defines the GRSPWROUTER register block interface. + */ + +/* + * Copyright (C) 2021, 2023 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/grspwrouter-header */ + +#ifndef _GRLIB_GRSPWROUTER_REGS_H +#define _GRLIB_GRSPWROUTER_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/grspwrouter-portstats */ + +/** + * @defgroup RTEMSDeviceGRSPWRouterPortStats SpaceWire Router Port Statistics + * + * @ingroup RTEMSDeviceGRSPWROUTER + * + * @brief This group contains the SpaceWire Router Port Statistics interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRSPWRouterPortStatsOCHARCNT \ + * Outgoing character counter, ports > 0 (OCHARCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_OCHARCNT_OR 0x80000000U + +#define GRSPWROUTER_OCHARCNT_CC_SHIFT 0 +#define GRSPWROUTER_OCHARCNT_CC_MASK 0x7fffffffU +#define GRSPWROUTER_OCHARCNT_CC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_OCHARCNT_CC_MASK ) >> \ + GRSPWROUTER_OCHARCNT_CC_SHIFT ) +#define GRSPWROUTER_OCHARCNT_CC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_OCHARCNT_CC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_OCHARCNT_CC_SHIFT ) & \ + GRSPWROUTER_OCHARCNT_CC_MASK ) ) +#define GRSPWROUTER_OCHARCNT_CC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_OCHARCNT_CC_SHIFT ) & \ + GRSPWROUTER_OCHARCNT_CC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWRouterPortStatsICHARCNT \ + * Incoming character counter, ports > 0 (ICHARCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ICHARCNT_OR 0x80000000U + +#define GRSPWROUTER_ICHARCNT_CC_SHIFT 0 +#define GRSPWROUTER_ICHARCNT_CC_MASK 0x7fffffffU +#define GRSPWROUTER_ICHARCNT_CC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ICHARCNT_CC_MASK ) >> \ + GRSPWROUTER_ICHARCNT_CC_SHIFT ) +#define GRSPWROUTER_ICHARCNT_CC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ICHARCNT_CC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ICHARCNT_CC_SHIFT ) & \ + GRSPWROUTER_ICHARCNT_CC_MASK ) ) +#define GRSPWROUTER_ICHARCNT_CC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ICHARCNT_CC_SHIFT ) & \ + GRSPWROUTER_ICHARCNT_CC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWRouterPortStatsOPKTCNT \ + * Outgoing packet counter, ports > 0 (OPKTCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_OPKTCNT_OR 0x80000000U + +#define GRSPWROUTER_OPKTCNT_PC_SHIFT 0 +#define GRSPWROUTER_OPKTCNT_PC_MASK 0x7fffffffU +#define GRSPWROUTER_OPKTCNT_PC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_OPKTCNT_PC_MASK ) >> \ + GRSPWROUTER_OPKTCNT_PC_SHIFT ) +#define GRSPWROUTER_OPKTCNT_PC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_OPKTCNT_PC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_OPKTCNT_PC_SHIFT ) & \ + GRSPWROUTER_OPKTCNT_PC_MASK ) ) +#define GRSPWROUTER_OPKTCNT_PC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_OPKTCNT_PC_SHIFT ) & \ + GRSPWROUTER_OPKTCNT_PC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWRouterPortStatsIPKTCNT \ + * Incoming packet counter, ports > 0 (IPKTCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_IPKTCNT_OR 0x80000000U + +#define GRSPWROUTER_IPKTCNT_PC_SHIFT 0 +#define GRSPWROUTER_IPKTCNT_PC_MASK 0x7fffffffU +#define GRSPWROUTER_IPKTCNT_PC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_IPKTCNT_PC_MASK ) >> \ + GRSPWROUTER_IPKTCNT_PC_SHIFT ) +#define GRSPWROUTER_IPKTCNT_PC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_IPKTCNT_PC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_IPKTCNT_PC_SHIFT ) & \ + GRSPWROUTER_IPKTCNT_PC_MASK ) ) +#define GRSPWROUTER_IPKTCNT_PC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_IPKTCNT_PC_SHIFT ) & \ + GRSPWROUTER_IPKTCNT_PC_MASK ) + +/** @} */ + +/** + * @brief This structure defines the SpaceWire Router Port Statistics register + * block memory map. + */ +typedef struct grspwrouter_portstats { + /** + * @brief See @ref RTEMSDeviceGRSPWRouterPortStatsOCHARCNT. + */ + uint32_t ocharcnt; + + /** + * @brief See @ref RTEMSDeviceGRSPWRouterPortStatsICHARCNT. + */ + uint32_t icharcnt; + + /** + * @brief See @ref RTEMSDeviceGRSPWRouterPortStatsOPKTCNT. + */ + uint32_t opktcnt; + + /** + * @brief See @ref RTEMSDeviceGRSPWRouterPortStatsIPKTCNT. + */ + uint32_t ipktcnt; +} grspwrouter_portstats; + +/** @} */ + +/* Generated from spec:/dev/grlib/if/grspwrouter */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTER SpaceWire Router + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the SpaceWire Router interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERRTPMAP \ + * Routing table port mapping, addresses 1-31 and 32-255 (RTPMAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_RTPMAP_PE_SHIFT 1 +#define GRSPWROUTER_RTPMAP_PE_MASK 0xfffffffeU +#define GRSPWROUTER_RTPMAP_PE_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_RTPMAP_PE_MASK ) >> \ + GRSPWROUTER_RTPMAP_PE_SHIFT ) +#define GRSPWROUTER_RTPMAP_PE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_RTPMAP_PE_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_RTPMAP_PE_SHIFT ) & \ + GRSPWROUTER_RTPMAP_PE_MASK ) ) +#define GRSPWROUTER_RTPMAP_PE( _val ) \ + ( ( ( _val ) << GRSPWROUTER_RTPMAP_PE_SHIFT ) & \ + GRSPWROUTER_RTPMAP_PE_MASK ) + +#define GRSPWROUTER_RTPMAP_PD 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERRTACTRL \ + * Routing table address control, addresses 1-31 and 32-255 (RTACTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_RTACTRL_SR 0x8U + +#define GRSPWROUTER_RTACTRL_EN 0x4U + +#define GRSPWROUTER_RTACTRL_PR 0x2U + +#define GRSPWROUTER_RTACTRL_HD 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPCTRLCFG \ + * Port control, port 0 (configuration port) (PCTRLCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PCTRLCFG_PL 0x20000U + +#define GRSPWROUTER_PCTRLCFG_TS 0x10000U + +#define GRSPWROUTER_PCTRLCFG_TR 0x200U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPCTRL Port control, ports > 0 (PCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PCTRL_RD_SHIFT 24 +#define GRSPWROUTER_PCTRL_RD_MASK 0xff000000U +#define GRSPWROUTER_PCTRL_RD_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL_RD_MASK ) >> \ + GRSPWROUTER_PCTRL_RD_SHIFT ) +#define GRSPWROUTER_PCTRL_RD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL_RD_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL_RD_SHIFT ) & \ + GRSPWROUTER_PCTRL_RD_MASK ) ) +#define GRSPWROUTER_PCTRL_RD( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL_RD_SHIFT ) & \ + GRSPWROUTER_PCTRL_RD_MASK ) + +#define GRSPWROUTER_PCTRL_RES_SHIFT 22 +#define GRSPWROUTER_PCTRL_RES_MASK 0xc00000U +#define GRSPWROUTER_PCTRL_RES_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL_RES_MASK ) >> \ + GRSPWROUTER_PCTRL_RES_SHIFT ) +#define GRSPWROUTER_PCTRL_RES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL_RES_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL_RES_SHIFT ) & \ + GRSPWROUTER_PCTRL_RES_MASK ) ) +#define GRSPWROUTER_PCTRL_RES( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL_RES_SHIFT ) & \ + GRSPWROUTER_PCTRL_RES_MASK ) + +#define GRSPWROUTER_PCTRL_ST 0x200000U + +#define GRSPWROUTER_PCTRL_SR 0x100000U + +#define GRSPWROUTER_PCTRL_AD 0x80000U + +#define GRSPWROUTER_PCTRL_LR 0x40000U + +#define GRSPWROUTER_PCTRL_PL 0x20000U + +#define GRSPWROUTER_PCTRL_TS 0x10000U + +#define GRSPWROUTER_PCTRL_IC 0x8000U + +#define GRSPWROUTER_PCTRL_ET 0x4000U + +#define GRSPWROUTER_PCTRL_NF 0x2000U + +#define GRSPWROUTER_PCTRL_PS 0x1000U + +#define GRSPWROUTER_PCTRL_BE 0x800U + +#define GRSPWROUTER_PCTRL_DI 0x400U + +#define GRSPWROUTER_PCTRL_TR 0x200U + +#define GRSPWROUTER_PCTRL_PR 0x100U + +#define GRSPWROUTER_PCTRL_TF 0x80U + +#define GRSPWROUTER_PCTRL_RS 0x40U + +#define GRSPWROUTER_PCTRL_TE 0x20U + +#define GRSPWROUTER_PCTRL_R 0x10U + +#define GRSPWROUTER_PCTRL_CE 0x8U + +#define GRSPWROUTER_PCTRL_AS 0x4U + +#define GRSPWROUTER_PCTRL_LS 0x2U + +#define GRSPWROUTER_PCTRL_LD 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPSTSCFG \ + * Port status, port 0 (configuration port) (PSTSCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PSTSCFG_EO 0x80000000U + +#define GRSPWROUTER_PSTSCFG_EE 0x40000000U + +#define GRSPWROUTER_PSTSCFG_PL 0x20000000U + +#define GRSPWROUTER_PSTSCFG_TT 0x10000000U + +#define GRSPWROUTER_PSTSCFG_PT 0x8000000U + +#define GRSPWROUTER_PSTSCFG_HC 0x4000000U + +#define GRSPWROUTER_PSTSCFG_PI 0x2000000U + +#define GRSPWROUTER_PSTSCFG_CE 0x1000000U + +#define GRSPWROUTER_PSTSCFG_EC_SHIFT 20 +#define GRSPWROUTER_PSTSCFG_EC_MASK 0xf00000U +#define GRSPWROUTER_PSTSCFG_EC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTSCFG_EC_MASK ) >> \ + GRSPWROUTER_PSTSCFG_EC_SHIFT ) +#define GRSPWROUTER_PSTSCFG_EC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTSCFG_EC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_EC_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_EC_MASK ) ) +#define GRSPWROUTER_PSTSCFG_EC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_EC_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_EC_MASK ) + +#define GRSPWROUTER_PSTSCFG_R 0x80000U + +#define GRSPWROUTER_PSTSCFG_TS 0x40000U + +#define GRSPWROUTER_PSTSCFG_ME 0x20000U + +#define GRSPWROUTER_PSTSCFG_IP_SHIFT 7 +#define GRSPWROUTER_PSTSCFG_IP_MASK 0xf80U +#define GRSPWROUTER_PSTSCFG_IP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTSCFG_IP_MASK ) >> \ + GRSPWROUTER_PSTSCFG_IP_SHIFT ) +#define GRSPWROUTER_PSTSCFG_IP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTSCFG_IP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_IP_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_IP_MASK ) ) +#define GRSPWROUTER_PSTSCFG_IP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_IP_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_IP_MASK ) + +#define GRSPWROUTER_PSTSCFG_RES_SHIFT 5 +#define GRSPWROUTER_PSTSCFG_RES_MASK 0x60U +#define GRSPWROUTER_PSTSCFG_RES_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTSCFG_RES_MASK ) >> \ + GRSPWROUTER_PSTSCFG_RES_SHIFT ) +#define GRSPWROUTER_PSTSCFG_RES_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTSCFG_RES_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_RES_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_RES_MASK ) ) +#define GRSPWROUTER_PSTSCFG_RES( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_RES_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_RES_MASK ) + +#define GRSPWROUTER_PSTSCFG_CP 0x10U + +#define GRSPWROUTER_PSTSCFG_PC_SHIFT 0 +#define GRSPWROUTER_PSTSCFG_PC_MASK 0xfU +#define GRSPWROUTER_PSTSCFG_PC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTSCFG_PC_MASK ) >> \ + GRSPWROUTER_PSTSCFG_PC_SHIFT ) +#define GRSPWROUTER_PSTSCFG_PC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTSCFG_PC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_PC_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_PC_MASK ) ) +#define GRSPWROUTER_PSTSCFG_PC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTSCFG_PC_SHIFT ) & \ + GRSPWROUTER_PSTSCFG_PC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPSTS Port status, ports > 0 (PSTS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PSTS_PT_SHIFT 30 +#define GRSPWROUTER_PSTS_PT_MASK 0xc0000000U +#define GRSPWROUTER_PSTS_PT_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTS_PT_MASK ) >> \ + GRSPWROUTER_PSTS_PT_SHIFT ) +#define GRSPWROUTER_PSTS_PT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTS_PT_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTS_PT_SHIFT ) & \ + GRSPWROUTER_PSTS_PT_MASK ) ) +#define GRSPWROUTER_PSTS_PT( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTS_PT_SHIFT ) & \ + GRSPWROUTER_PSTS_PT_MASK ) + +#define GRSPWROUTER_PSTS_PL 0x20000000U + +#define GRSPWROUTER_PSTS_TT 0x10000000U + +#define GRSPWROUTER_PSTS_RS 0x8000000U + +#define GRSPWROUTER_PSTS_SR 0x4000000U + +#define GRSPWROUTER_PSTS_LR 0x400000U + +#define GRSPWROUTER_PSTS_SP 0x200000U + +#define GRSPWROUTER_PSTS_AC 0x100000U + +#define GRSPWROUTER_PSTS_AP 0x80000U + +#define GRSPWROUTER_PSTS_TS 0x40000U + +#define GRSPWROUTER_PSTS_ME 0x20000U + +#define GRSPWROUTER_PSTS_TF 0x10000U + +#define GRSPWROUTER_PSTS_RE 0x8000U + +#define GRSPWROUTER_PSTS_LS_SHIFT 12 +#define GRSPWROUTER_PSTS_LS_MASK 0x7000U +#define GRSPWROUTER_PSTS_LS_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTS_LS_MASK ) >> \ + GRSPWROUTER_PSTS_LS_SHIFT ) +#define GRSPWROUTER_PSTS_LS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTS_LS_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTS_LS_SHIFT ) & \ + GRSPWROUTER_PSTS_LS_MASK ) ) +#define GRSPWROUTER_PSTS_LS( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTS_LS_SHIFT ) & \ + GRSPWROUTER_PSTS_LS_MASK ) + +#define GRSPWROUTER_PSTS_IP_SHIFT 7 +#define GRSPWROUTER_PSTS_IP_MASK 0xf80U +#define GRSPWROUTER_PSTS_IP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PSTS_IP_MASK ) >> \ + GRSPWROUTER_PSTS_IP_SHIFT ) +#define GRSPWROUTER_PSTS_IP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PSTS_IP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PSTS_IP_SHIFT ) & \ + GRSPWROUTER_PSTS_IP_MASK ) ) +#define GRSPWROUTER_PSTS_IP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PSTS_IP_SHIFT ) & \ + GRSPWROUTER_PSTS_IP_MASK ) + +#define GRSPWROUTER_PSTS_PR 0x40U + +#define GRSPWROUTER_PSTS_PB 0x20U + +#define GRSPWROUTER_PSTS_IA 0x10U + +#define GRSPWROUTER_PSTS_CE 0x8U + +#define GRSPWROUTER_PSTS_ER 0x4U + +#define GRSPWROUTER_PSTS_DE 0x2U + +#define GRSPWROUTER_PSTS_PE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPTIMER Port timer reload (PTIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PTIMER_RL_SHIFT 0 +#define GRSPWROUTER_PTIMER_RL_MASK 0x3ffU +#define GRSPWROUTER_PTIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PTIMER_RL_MASK ) >> \ + GRSPWROUTER_PTIMER_RL_SHIFT ) +#define GRSPWROUTER_PTIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PTIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PTIMER_RL_SHIFT ) & \ + GRSPWROUTER_PTIMER_RL_MASK ) ) +#define GRSPWROUTER_PTIMER_RL( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PTIMER_RL_SHIFT ) & \ + GRSPWROUTER_PTIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPCTRL2CFG \ + * Port control 2, port 0 (configuration port) (PCTRL2CFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PCTRL2CFG_SM_SHIFT 24 +#define GRSPWROUTER_PCTRL2CFG_SM_MASK 0xff000000U +#define GRSPWROUTER_PCTRL2CFG_SM_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL2CFG_SM_MASK ) >> \ + GRSPWROUTER_PCTRL2CFG_SM_SHIFT ) +#define GRSPWROUTER_PCTRL2CFG_SM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL2CFG_SM_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2CFG_SM_SHIFT ) & \ + GRSPWROUTER_PCTRL2CFG_SM_MASK ) ) +#define GRSPWROUTER_PCTRL2CFG_SM( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2CFG_SM_SHIFT ) & \ + GRSPWROUTER_PCTRL2CFG_SM_MASK ) + +#define GRSPWROUTER_PCTRL2CFG_SV_SHIFT 16 +#define GRSPWROUTER_PCTRL2CFG_SV_MASK 0xff0000U +#define GRSPWROUTER_PCTRL2CFG_SV_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL2CFG_SV_MASK ) >> \ + GRSPWROUTER_PCTRL2CFG_SV_SHIFT ) +#define GRSPWROUTER_PCTRL2CFG_SV_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL2CFG_SV_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2CFG_SV_SHIFT ) & \ + GRSPWROUTER_PCTRL2CFG_SV_MASK ) ) +#define GRSPWROUTER_PCTRL2CFG_SV( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2CFG_SV_SHIFT ) & \ + GRSPWROUTER_PCTRL2CFG_SV_MASK ) + +#define GRSPWROUTER_PCTRL2CFG_OR 0x8000U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPCTRL2 Port control 2, ports > 0 (PCTRL2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PCTRL2_SM_SHIFT 24 +#define GRSPWROUTER_PCTRL2_SM_MASK 0xff000000U +#define GRSPWROUTER_PCTRL2_SM_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL2_SM_MASK ) >> \ + GRSPWROUTER_PCTRL2_SM_SHIFT ) +#define GRSPWROUTER_PCTRL2_SM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL2_SM_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SM_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SM_MASK ) ) +#define GRSPWROUTER_PCTRL2_SM( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SM_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SM_MASK ) + +#define GRSPWROUTER_PCTRL2_SV_SHIFT 16 +#define GRSPWROUTER_PCTRL2_SV_MASK 0xff0000U +#define GRSPWROUTER_PCTRL2_SV_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL2_SV_MASK ) >> \ + GRSPWROUTER_PCTRL2_SV_SHIFT ) +#define GRSPWROUTER_PCTRL2_SV_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL2_SV_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SV_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SV_MASK ) ) +#define GRSPWROUTER_PCTRL2_SV( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SV_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SV_MASK ) + +#define GRSPWROUTER_PCTRL2_OR 0x8000U + +#define GRSPWROUTER_PCTRL2_UR 0x4000U + +#define GRSPWROUTER_PCTRL2_R 0x2000U + +#define GRSPWROUTER_PCTRL2_AT 0x1000U + +#define GRSPWROUTER_PCTRL2_AR 0x800U + +#define GRSPWROUTER_PCTRL2_IT 0x400U + +#define GRSPWROUTER_PCTRL2_IR 0x200U + +#define GRSPWROUTER_PCTRL2_SD_SHIFT 1 +#define GRSPWROUTER_PCTRL2_SD_MASK 0x3eU +#define GRSPWROUTER_PCTRL2_SD_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PCTRL2_SD_MASK ) >> \ + GRSPWROUTER_PCTRL2_SD_SHIFT ) +#define GRSPWROUTER_PCTRL2_SD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PCTRL2_SD_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SD_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SD_MASK ) ) +#define GRSPWROUTER_PCTRL2_SD( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PCTRL2_SD_SHIFT ) & \ + GRSPWROUTER_PCTRL2_SD_MASK ) + +#define GRSPWROUTER_PCTRL2_SC 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERRTRCFG \ + * Router configuration / status (RTRCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_RTRCFG_SP_SHIFT 27 +#define GRSPWROUTER_RTRCFG_SP_MASK 0xf8000000U +#define GRSPWROUTER_RTRCFG_SP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_RTRCFG_SP_MASK ) >> \ + GRSPWROUTER_RTRCFG_SP_SHIFT ) +#define GRSPWROUTER_RTRCFG_SP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_RTRCFG_SP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_SP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_SP_MASK ) ) +#define GRSPWROUTER_RTRCFG_SP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_SP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_SP_MASK ) + +#define GRSPWROUTER_RTRCFG_AP_SHIFT 22 +#define GRSPWROUTER_RTRCFG_AP_MASK 0x7c00000U +#define GRSPWROUTER_RTRCFG_AP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_RTRCFG_AP_MASK ) >> \ + GRSPWROUTER_RTRCFG_AP_SHIFT ) +#define GRSPWROUTER_RTRCFG_AP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_RTRCFG_AP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_AP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_AP_MASK ) ) +#define GRSPWROUTER_RTRCFG_AP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_AP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_AP_MASK ) + +#define GRSPWROUTER_RTRCFG_FP_SHIFT 17 +#define GRSPWROUTER_RTRCFG_FP_MASK 0x3e0000U +#define GRSPWROUTER_RTRCFG_FP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_RTRCFG_FP_MASK ) >> \ + GRSPWROUTER_RTRCFG_FP_SHIFT ) +#define GRSPWROUTER_RTRCFG_FP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_RTRCFG_FP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_FP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_FP_MASK ) ) +#define GRSPWROUTER_RTRCFG_FP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_RTRCFG_FP_SHIFT ) & \ + GRSPWROUTER_RTRCFG_FP_MASK ) + +#define GRSPWROUTER_RTRCFG_R 0x10000U + +#define GRSPWROUTER_RTRCFG_SR 0x8000U + +#define GRSPWROUTER_RTRCFG_PE 0x4000U + +#define GRSPWROUTER_RTRCFG_IC 0x2000U + +#define GRSPWROUTER_RTRCFG_IS 0x1000U + +#define GRSPWROUTER_RTRCFG_IP 0x800U + +#define GRSPWROUTER_RTRCFG_AI 0x400U + +#define GRSPWROUTER_RTRCFG_AT 0x200U + +#define GRSPWROUTER_RTRCFG_IE 0x100U + +#define GRSPWROUTER_RTRCFG_RE 0x80U + +#define GRSPWROUTER_RTRCFG_EE 0x40U + +#define GRSPWROUTER_RTRCFG_R 0x20U + +#define GRSPWROUTER_RTRCFG_SA 0x10U + +#define GRSPWROUTER_RTRCFG_TF 0x8U + +#define GRSPWROUTER_RTRCFG_RM 0x4U + +#define GRSPWROUTER_RTRCFG_TA 0x2U + +#define GRSPWROUTER_RTRCFG_PP 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERTC Time-code (TC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_TC_RE 0x200U + +#define GRSPWROUTER_TC_EN 0x100U + +#define GRSPWROUTER_TC_CF_SHIFT 6 +#define GRSPWROUTER_TC_CF_MASK 0xc0U +#define GRSPWROUTER_TC_CF_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_TC_CF_MASK ) >> \ + GRSPWROUTER_TC_CF_SHIFT ) +#define GRSPWROUTER_TC_CF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_TC_CF_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_TC_CF_SHIFT ) & \ + GRSPWROUTER_TC_CF_MASK ) ) +#define GRSPWROUTER_TC_CF( _val ) \ + ( ( ( _val ) << GRSPWROUTER_TC_CF_SHIFT ) & \ + GRSPWROUTER_TC_CF_MASK ) + +#define GRSPWROUTER_TC_TC_SHIFT 0 +#define GRSPWROUTER_TC_TC_MASK 0x3fU +#define GRSPWROUTER_TC_TC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_TC_TC_MASK ) >> \ + GRSPWROUTER_TC_TC_SHIFT ) +#define GRSPWROUTER_TC_TC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_TC_TC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_TC_TC_SHIFT ) & \ + GRSPWROUTER_TC_TC_MASK ) ) +#define GRSPWROUTER_TC_TC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_TC_TC_SHIFT ) & \ + GRSPWROUTER_TC_TC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERVER Version / instance ID (VER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_VER_MA_SHIFT 24 +#define GRSPWROUTER_VER_MA_MASK 0xff000000U +#define GRSPWROUTER_VER_MA_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_VER_MA_MASK ) >> \ + GRSPWROUTER_VER_MA_SHIFT ) +#define GRSPWROUTER_VER_MA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_VER_MA_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_VER_MA_SHIFT ) & \ + GRSPWROUTER_VER_MA_MASK ) ) +#define GRSPWROUTER_VER_MA( _val ) \ + ( ( ( _val ) << GRSPWROUTER_VER_MA_SHIFT ) & \ + GRSPWROUTER_VER_MA_MASK ) + +#define GRSPWROUTER_VER_MI_SHIFT 16 +#define GRSPWROUTER_VER_MI_MASK 0xff0000U +#define GRSPWROUTER_VER_MI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_VER_MI_MASK ) >> \ + GRSPWROUTER_VER_MI_SHIFT ) +#define GRSPWROUTER_VER_MI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_VER_MI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_VER_MI_SHIFT ) & \ + GRSPWROUTER_VER_MI_MASK ) ) +#define GRSPWROUTER_VER_MI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_VER_MI_SHIFT ) & \ + GRSPWROUTER_VER_MI_MASK ) + +#define GRSPWROUTER_VER_PA_SHIFT 8 +#define GRSPWROUTER_VER_PA_MASK 0xff00U +#define GRSPWROUTER_VER_PA_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_VER_PA_MASK ) >> \ + GRSPWROUTER_VER_PA_SHIFT ) +#define GRSPWROUTER_VER_PA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_VER_PA_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_VER_PA_SHIFT ) & \ + GRSPWROUTER_VER_PA_MASK ) ) +#define GRSPWROUTER_VER_PA( _val ) \ + ( ( ( _val ) << GRSPWROUTER_VER_PA_SHIFT ) & \ + GRSPWROUTER_VER_PA_MASK ) + +#define GRSPWROUTER_VER_ID_SHIFT 0 +#define GRSPWROUTER_VER_ID_MASK 0xffU +#define GRSPWROUTER_VER_ID_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_VER_ID_MASK ) >> \ + GRSPWROUTER_VER_ID_SHIFT ) +#define GRSPWROUTER_VER_ID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_VER_ID_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_VER_ID_SHIFT ) & \ + GRSPWROUTER_VER_ID_MASK ) ) +#define GRSPWROUTER_VER_ID( _val ) \ + ( ( ( _val ) << GRSPWROUTER_VER_ID_SHIFT ) & \ + GRSPWROUTER_VER_ID_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERIDIV Initialization divisor (IDIV) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_IDIV_ID_SHIFT 0 +#define GRSPWROUTER_IDIV_ID_MASK 0xffU +#define GRSPWROUTER_IDIV_ID_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_IDIV_ID_MASK ) >> \ + GRSPWROUTER_IDIV_ID_SHIFT ) +#define GRSPWROUTER_IDIV_ID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_IDIV_ID_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_IDIV_ID_SHIFT ) & \ + GRSPWROUTER_IDIV_ID_MASK ) ) +#define GRSPWROUTER_IDIV_ID( _val ) \ + ( ( ( _val ) << GRSPWROUTER_IDIV_ID_SHIFT ) & \ + GRSPWROUTER_IDIV_ID_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERCFGWE \ + * Configuration port write enable (CFGWE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_CFGWE_WE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPRESCALER Timer prescaler reload (PRESCALER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PRESCALER_RL_SHIFT 0 +#define GRSPWROUTER_PRESCALER_RL_MASK 0xffffffffU +#define GRSPWROUTER_PRESCALER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PRESCALER_RL_MASK ) >> \ + GRSPWROUTER_PRESCALER_RL_SHIFT ) +#define GRSPWROUTER_PRESCALER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PRESCALER_RL_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PRESCALER_RL_SHIFT ) & \ + GRSPWROUTER_PRESCALER_RL_MASK ) ) +#define GRSPWROUTER_PRESCALER_RL( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PRESCALER_RL_SHIFT ) & \ + GRSPWROUTER_PRESCALER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERIMASK Interrupt mask (IMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_IMASK_PE 0x400U + +#define GRSPWROUTER_IMASK_SR 0x200U + +#define GRSPWROUTER_IMASK_RS 0x100U + +#define GRSPWROUTER_IMASK_TT 0x80U + +#define GRSPWROUTER_IMASK_PL 0x40U + +#define GRSPWROUTER_IMASK_TS 0x20U + +#define GRSPWROUTER_IMASK_AC 0x10U + +#define GRSPWROUTER_IMASK_RE 0x8U + +#define GRSPWROUTER_IMASK_IA 0x4U + +#define GRSPWROUTER_IMASK_LE 0x2U + +#define GRSPWROUTER_IMASK_ME 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERIPMASK Interrupt port mask (IPMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_IPMASK_IE_SHIFT 0 +#define GRSPWROUTER_IPMASK_IE_MASK 0xffffffffU +#define GRSPWROUTER_IPMASK_IE_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_IPMASK_IE_MASK ) >> \ + GRSPWROUTER_IPMASK_IE_SHIFT ) +#define GRSPWROUTER_IPMASK_IE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_IPMASK_IE_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_IPMASK_IE_SHIFT ) & \ + GRSPWROUTER_IPMASK_IE_MASK ) ) +#define GRSPWROUTER_IPMASK_IE( _val ) \ + ( ( ( _val ) << GRSPWROUTER_IPMASK_IE_SHIFT ) & \ + GRSPWROUTER_IPMASK_IE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPIP Port interrupt pending (PIP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PIP_IP_SHIFT 0 +#define GRSPWROUTER_PIP_IP_MASK 0xffffffffU +#define GRSPWROUTER_PIP_IP_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PIP_IP_MASK ) >> \ + GRSPWROUTER_PIP_IP_SHIFT ) +#define GRSPWROUTER_PIP_IP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PIP_IP_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PIP_IP_SHIFT ) & \ + GRSPWROUTER_PIP_IP_MASK ) ) +#define GRSPWROUTER_PIP_IP( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PIP_IP_SHIFT ) & \ + GRSPWROUTER_PIP_IP_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERICODEGEN \ + * Interrupt code generation (ICODEGEN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ICODEGEN_HI 0x200000U + +#define GRSPWROUTER_ICODEGEN_UA 0x100000U + +#define GRSPWROUTER_ICODEGEN_AH 0x80000U + +#define GRSPWROUTER_ICODEGEN_IT 0x40000U + +#define GRSPWROUTER_ICODEGEN_TE 0x1U + +#define GRSPWROUTER_ICODEGEN_EN 0x20000U + +#define GRSPWROUTER_ICODEGEN_IN_SHIFT 6 +#define GRSPWROUTER_ICODEGEN_IN_MASK 0xffc0U +#define GRSPWROUTER_ICODEGEN_IN_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ICODEGEN_IN_MASK ) >> \ + GRSPWROUTER_ICODEGEN_IN_SHIFT ) +#define GRSPWROUTER_ICODEGEN_IN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ICODEGEN_IN_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ICODEGEN_IN_SHIFT ) & \ + GRSPWROUTER_ICODEGEN_IN_MASK ) ) +#define GRSPWROUTER_ICODEGEN_IN( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ICODEGEN_IN_SHIFT ) & \ + GRSPWROUTER_ICODEGEN_IN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERISR0 \ + * Interrupt code distribution ISR register, interrupt 0-31 (ISR0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ISR0_IB_SHIFT 0 +#define GRSPWROUTER_ISR0_IB_MASK 0xffffffffU +#define GRSPWROUTER_ISR0_IB_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ISR0_IB_MASK ) >> \ + GRSPWROUTER_ISR0_IB_SHIFT ) +#define GRSPWROUTER_ISR0_IB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ISR0_IB_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ISR0_IB_SHIFT ) & \ + GRSPWROUTER_ISR0_IB_MASK ) ) +#define GRSPWROUTER_ISR0_IB( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ISR0_IB_SHIFT ) & \ + GRSPWROUTER_ISR0_IB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERISR1 \ + * Interrupt code distribution ISR register, interrupt 32-63 (ISR1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ISR1_IB_SHIFT 0 +#define GRSPWROUTER_ISR1_IB_MASK 0xffffffffU +#define GRSPWROUTER_ISR1_IB_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ISR1_IB_MASK ) >> \ + GRSPWROUTER_ISR1_IB_SHIFT ) +#define GRSPWROUTER_ISR1_IB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ISR1_IB_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ISR1_IB_SHIFT ) & \ + GRSPWROUTER_ISR1_IB_MASK ) ) +#define GRSPWROUTER_ISR1_IB( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ISR1_IB_SHIFT ) & \ + GRSPWROUTER_ISR1_IB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERISRTIMER \ + * Interrupt code distribution ISR timer reload (ISRTIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ISRTIMER_RL_SHIFT 0 +#define GRSPWROUTER_ISRTIMER_RL_MASK 0xffffffffU +#define GRSPWROUTER_ISRTIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ISRTIMER_RL_MASK ) >> \ + GRSPWROUTER_ISRTIMER_RL_SHIFT ) +#define GRSPWROUTER_ISRTIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ISRTIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ISRTIMER_RL_SHIFT ) & \ + GRSPWROUTER_ISRTIMER_RL_MASK ) ) +#define GRSPWROUTER_ISRTIMER_RL( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ISRTIMER_RL_SHIFT ) & \ + GRSPWROUTER_ISRTIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERAITIMER \ + * Interrupt code distribution ACK-to-INT timer reload (AITIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_AITIMER_RL_SHIFT 0 +#define GRSPWROUTER_AITIMER_RL_MASK 0xffffffffU +#define GRSPWROUTER_AITIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_AITIMER_RL_MASK ) >> \ + GRSPWROUTER_AITIMER_RL_SHIFT ) +#define GRSPWROUTER_AITIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_AITIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_AITIMER_RL_SHIFT ) & \ + GRSPWROUTER_AITIMER_RL_MASK ) ) +#define GRSPWROUTER_AITIMER_RL( _val ) \ + ( ( ( _val ) << GRSPWROUTER_AITIMER_RL_SHIFT ) & \ + GRSPWROUTER_AITIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERISRCTIMER \ + * Interrupt code distribution ISR change timer reload (ISRCTIMER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_ISRCTIMER_RL_SHIFT 0 +#define GRSPWROUTER_ISRCTIMER_RL_MASK 0x1fU +#define GRSPWROUTER_ISRCTIMER_RL_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_ISRCTIMER_RL_MASK ) >> \ + GRSPWROUTER_ISRCTIMER_RL_SHIFT ) +#define GRSPWROUTER_ISRCTIMER_RL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_ISRCTIMER_RL_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_ISRCTIMER_RL_SHIFT ) & \ + GRSPWROUTER_ISRCTIMER_RL_MASK ) ) +#define GRSPWROUTER_ISRCTIMER_RL( _val ) \ + ( ( ( _val ) << GRSPWROUTER_ISRCTIMER_RL_SHIFT ) & \ + GRSPWROUTER_ISRCTIMER_RL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERLRUNSTAT Link running status (LRUNSTAT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_LRUNSTAT_LR_SHIFT 1 +#define GRSPWROUTER_LRUNSTAT_LR_MASK 0xfffffffeU +#define GRSPWROUTER_LRUNSTAT_LR_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_LRUNSTAT_LR_MASK ) >> \ + GRSPWROUTER_LRUNSTAT_LR_SHIFT ) +#define GRSPWROUTER_LRUNSTAT_LR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_LRUNSTAT_LR_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_LRUNSTAT_LR_SHIFT ) & \ + GRSPWROUTER_LRUNSTAT_LR_MASK ) ) +#define GRSPWROUTER_LRUNSTAT_LR( _val ) \ + ( ( ( _val ) << GRSPWROUTER_LRUNSTAT_LR_SHIFT ) & \ + GRSPWROUTER_LRUNSTAT_LR_MASK ) + +#define GRSPWROUTER_LRUNSTAT_R 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERCAP Capability (CAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_CAP_AF_SHIFT 24 +#define GRSPWROUTER_CAP_AF_MASK 0x3000000U +#define GRSPWROUTER_CAP_AF_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CAP_AF_MASK ) >> \ + GRSPWROUTER_CAP_AF_SHIFT ) +#define GRSPWROUTER_CAP_AF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CAP_AF_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CAP_AF_SHIFT ) & \ + GRSPWROUTER_CAP_AF_MASK ) ) +#define GRSPWROUTER_CAP_AF( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CAP_AF_SHIFT ) & \ + GRSPWROUTER_CAP_AF_MASK ) + +#define GRSPWROUTER_CAP_R 0x800000U + +#define GRSPWROUTER_CAP_PF_SHIFT 20 +#define GRSPWROUTER_CAP_PF_MASK 0x700000U +#define GRSPWROUTER_CAP_PF_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CAP_PF_MASK ) >> \ + GRSPWROUTER_CAP_PF_SHIFT ) +#define GRSPWROUTER_CAP_PF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CAP_PF_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CAP_PF_SHIFT ) & \ + GRSPWROUTER_CAP_PF_MASK ) ) +#define GRSPWROUTER_CAP_PF( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CAP_PF_SHIFT ) & \ + GRSPWROUTER_CAP_PF_MASK ) + +#define GRSPWROUTER_CAP_R 0x80000U + +#define GRSPWROUTER_CAP_RM_SHIFT 16 +#define GRSPWROUTER_CAP_RM_MASK 0x70000U +#define GRSPWROUTER_CAP_RM_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CAP_RM_MASK ) >> \ + GRSPWROUTER_CAP_RM_SHIFT ) +#define GRSPWROUTER_CAP_RM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CAP_RM_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CAP_RM_SHIFT ) & \ + GRSPWROUTER_CAP_RM_MASK ) ) +#define GRSPWROUTER_CAP_RM( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CAP_RM_SHIFT ) & \ + GRSPWROUTER_CAP_RM_MASK ) + +#define GRSPWROUTER_CAP_R 0x8000U + +#define GRSPWROUTER_CAP_AA 0x4000U + +#define GRSPWROUTER_CAP_AX 0x2000U + +#define GRSPWROUTER_CAP_DP 0x1000U + +#define GRSPWROUTER_CAP_ID 0x800U + +#define GRSPWROUTER_CAP_SD 0x400U + +#define GRSPWROUTER_CAP_PC_SHIFT 5 +#define GRSPWROUTER_CAP_PC_MASK 0x3e0U +#define GRSPWROUTER_CAP_PC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CAP_PC_MASK ) >> \ + GRSPWROUTER_CAP_PC_SHIFT ) +#define GRSPWROUTER_CAP_PC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CAP_PC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CAP_PC_SHIFT ) & \ + GRSPWROUTER_CAP_PC_MASK ) ) +#define GRSPWROUTER_CAP_PC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CAP_PC_SHIFT ) & \ + GRSPWROUTER_CAP_PC_MASK ) + +#define GRSPWROUTER_CAP_CC_SHIFT 0 +#define GRSPWROUTER_CAP_CC_MASK 0x1fU +#define GRSPWROUTER_CAP_CC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CAP_CC_MASK ) >> \ + GRSPWROUTER_CAP_CC_SHIFT ) +#define GRSPWROUTER_CAP_CC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CAP_CC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CAP_CC_SHIFT ) & \ + GRSPWROUTER_CAP_CC_MASK ) ) +#define GRSPWROUTER_CAP_CC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CAP_CC_SHIFT ) & \ + GRSPWROUTER_CAP_CC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPNPVEND \ + * SpaceWire Plug-and-Play - Device Vendor and Product ID (PNPVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PNPVEND_VI_SHIFT 16 +#define GRSPWROUTER_PNPVEND_VI_MASK 0xffff0000U +#define GRSPWROUTER_PNPVEND_VI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPVEND_VI_MASK ) >> \ + GRSPWROUTER_PNPVEND_VI_SHIFT ) +#define GRSPWROUTER_PNPVEND_VI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPVEND_VI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPVEND_VI_SHIFT ) & \ + GRSPWROUTER_PNPVEND_VI_MASK ) ) +#define GRSPWROUTER_PNPVEND_VI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPVEND_VI_SHIFT ) & \ + GRSPWROUTER_PNPVEND_VI_MASK ) + +#define GRSPWROUTER_PNPVEND_PI_SHIFT 0 +#define GRSPWROUTER_PNPVEND_PI_MASK 0x3ffffffU +#define GRSPWROUTER_PNPVEND_PI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPVEND_PI_MASK ) >> \ + GRSPWROUTER_PNPVEND_PI_SHIFT ) +#define GRSPWROUTER_PNPVEND_PI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPVEND_PI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPVEND_PI_SHIFT ) & \ + GRSPWROUTER_PNPVEND_PI_MASK ) ) +#define GRSPWROUTER_PNPVEND_PI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPVEND_PI_SHIFT ) & \ + GRSPWROUTER_PNPVEND_PI_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPNPUVEND \ + * SpaceWire Plug-and-Play - Unit Vendor and Product ID (PNPUVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PNPUVEND_VI_SHIFT 16 +#define GRSPWROUTER_PNPUVEND_VI_MASK 0xffff0000U +#define GRSPWROUTER_PNPUVEND_VI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPUVEND_VI_MASK ) >> \ + GRSPWROUTER_PNPUVEND_VI_SHIFT ) +#define GRSPWROUTER_PNPUVEND_VI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPUVEND_VI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPUVEND_VI_SHIFT ) & \ + GRSPWROUTER_PNPUVEND_VI_MASK ) ) +#define GRSPWROUTER_PNPUVEND_VI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPUVEND_VI_SHIFT ) & \ + GRSPWROUTER_PNPUVEND_VI_MASK ) + +#define GRSPWROUTER_PNPUVEND_PI_SHIFT 0 +#define GRSPWROUTER_PNPUVEND_PI_MASK 0x3ffffffU +#define GRSPWROUTER_PNPUVEND_PI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPUVEND_PI_MASK ) >> \ + GRSPWROUTER_PNPUVEND_PI_SHIFT ) +#define GRSPWROUTER_PNPUVEND_PI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPUVEND_PI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPUVEND_PI_SHIFT ) & \ + GRSPWROUTER_PNPUVEND_PI_MASK ) ) +#define GRSPWROUTER_PNPUVEND_PI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPUVEND_PI_SHIFT ) & \ + GRSPWROUTER_PNPUVEND_PI_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPNPUSN \ + * SpaceWire Plug-and-Play - Unit Serial Number (PNPUSN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PNPUSN_SN_SHIFT 0 +#define GRSPWROUTER_PNPUSN_SN_MASK 0xffffffffU +#define GRSPWROUTER_PNPUSN_SN_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPUSN_SN_MASK ) >> \ + GRSPWROUTER_PNPUSN_SN_SHIFT ) +#define GRSPWROUTER_PNPUSN_SN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPUSN_SN_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPUSN_SN_SHIFT ) & \ + GRSPWROUTER_PNPUSN_SN_MASK ) ) +#define GRSPWROUTER_PNPUSN_SN( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPUSN_SN_SHIFT ) & \ + GRSPWROUTER_PNPUSN_SN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERPNPNETDISC \ + * SpaceWire Plug-and-Play - Port network discovery enable (PNPNETDISC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_PNPNETDISC_ND_SHIFT 0 +#define GRSPWROUTER_PNPNETDISC_ND_MASK 0xffffffffU +#define GRSPWROUTER_PNPNETDISC_ND_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_PNPNETDISC_ND_MASK ) >> \ + GRSPWROUTER_PNPNETDISC_ND_SHIFT ) +#define GRSPWROUTER_PNPNETDISC_ND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_PNPNETDISC_ND_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_PNPNETDISC_ND_SHIFT ) & \ + GRSPWROUTER_PNPNETDISC_ND_MASK ) ) +#define GRSPWROUTER_PNPNETDISC_ND( _val ) \ + ( ( ( _val ) << GRSPWROUTER_PNPNETDISC_ND_SHIFT ) & \ + GRSPWROUTER_PNPNETDISC_ND_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERMAXPLEN \ + * Maximum packet length, ports > 0 (MAXPLEN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_MAXPLEN_ML_SHIFT 0 +#define GRSPWROUTER_MAXPLEN_ML_MASK 0x1ffffffU +#define GRSPWROUTER_MAXPLEN_ML_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_MAXPLEN_ML_MASK ) >> \ + GRSPWROUTER_MAXPLEN_ML_SHIFT ) +#define GRSPWROUTER_MAXPLEN_ML_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_MAXPLEN_ML_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_MAXPLEN_ML_SHIFT ) & \ + GRSPWROUTER_MAXPLEN_ML_MASK ) ) +#define GRSPWROUTER_MAXPLEN_ML( _val ) \ + ( ( ( _val ) << GRSPWROUTER_MAXPLEN_ML_SHIFT ) & \ + GRSPWROUTER_MAXPLEN_ML_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERCREDCNT \ + * Credit counter, SpaceWire ports (CREDCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_CREDCNT_OC_SHIFT 6 +#define GRSPWROUTER_CREDCNT_OC_MASK 0xfc0U +#define GRSPWROUTER_CREDCNT_OC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CREDCNT_OC_MASK ) >> \ + GRSPWROUTER_CREDCNT_OC_SHIFT ) +#define GRSPWROUTER_CREDCNT_OC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CREDCNT_OC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CREDCNT_OC_SHIFT ) & \ + GRSPWROUTER_CREDCNT_OC_MASK ) ) +#define GRSPWROUTER_CREDCNT_OC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CREDCNT_OC_SHIFT ) & \ + GRSPWROUTER_CREDCNT_OC_MASK ) + +#define GRSPWROUTER_CREDCNT_IC_SHIFT 0 +#define GRSPWROUTER_CREDCNT_IC_MASK 0x3fU +#define GRSPWROUTER_CREDCNT_IC_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_CREDCNT_IC_MASK ) >> \ + GRSPWROUTER_CREDCNT_IC_SHIFT ) +#define GRSPWROUTER_CREDCNT_IC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_CREDCNT_IC_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_CREDCNT_IC_SHIFT ) & \ + GRSPWROUTER_CREDCNT_IC_MASK ) ) +#define GRSPWROUTER_CREDCNT_IC( _val ) \ + ( ( ( _val ) << GRSPWROUTER_CREDCNT_IC_SHIFT ) & \ + GRSPWROUTER_CREDCNT_IC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERGPO \ + * General purpose out, bits 0-31, 32-63, 64-95, and 96-127 (GPO) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_GPO_GPO_SHIFT 0 +#define GRSPWROUTER_GPO_GPO_MASK 0xffffffffU +#define GRSPWROUTER_GPO_GPO_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_GPO_GPO_MASK ) >> \ + GRSPWROUTER_GPO_GPO_SHIFT ) +#define GRSPWROUTER_GPO_GPO_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_GPO_GPO_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_GPO_GPO_SHIFT ) & \ + GRSPWROUTER_GPO_GPO_MASK ) ) +#define GRSPWROUTER_GPO_GPO( _val ) \ + ( ( ( _val ) << GRSPWROUTER_GPO_GPO_SHIFT ) & \ + GRSPWROUTER_GPO_GPO_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERGPI \ + * General purpose in, bits 0-31, 32-63, 64-95, and 96-127 (GPI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_GPI_GPI_SHIFT 0 +#define GRSPWROUTER_GPI_GPI_MASK 0xffffffffU +#define GRSPWROUTER_GPI_GPI_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_GPI_GPI_MASK ) >> \ + GRSPWROUTER_GPI_GPI_SHIFT ) +#define GRSPWROUTER_GPI_GPI_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_GPI_GPI_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_GPI_GPI_SHIFT ) & \ + GRSPWROUTER_GPI_GPI_MASK ) ) +#define GRSPWROUTER_GPI_GPI( _val ) \ + ( ( ( _val ) << GRSPWROUTER_GPI_GPI_SHIFT ) & \ + GRSPWROUTER_GPI_GPI_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERRTCOMB \ + * Routing table, combined port mapping and address control, addresses 1-255 (RTCOMB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_RTCOMB_SR 0x80000000U + +#define GRSPWROUTER_RTCOMB_EN 0x40000000U + +#define GRSPWROUTER_RTCOMB_PR 0x20000000U + +#define GRSPWROUTER_RTCOMB_HD 0x10000000U + +#define GRSPWROUTER_RTCOMB_PE_SHIFT 1 +#define GRSPWROUTER_RTCOMB_PE_MASK 0xffffffeU +#define GRSPWROUTER_RTCOMB_PE_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_RTCOMB_PE_MASK ) >> \ + GRSPWROUTER_RTCOMB_PE_SHIFT ) +#define GRSPWROUTER_RTCOMB_PE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_RTCOMB_PE_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_RTCOMB_PE_SHIFT ) & \ + GRSPWROUTER_RTCOMB_PE_MASK ) ) +#define GRSPWROUTER_RTCOMB_PE( _val ) \ + ( ( ( _val ) << GRSPWROUTER_RTCOMB_PE_SHIFT ) & \ + GRSPWROUTER_RTCOMB_PE_MASK ) + +#define GRSPWROUTER_RTCOMB_PD 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRSPWROUTERAPBAREA APB address area (APBAREA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define GRSPWROUTER_APBAREA_APB_SHIFT 0 +#define GRSPWROUTER_APBAREA_APB_MASK 0xffffffffU +#define GRSPWROUTER_APBAREA_APB_GET( _reg ) \ + ( ( ( _reg ) & GRSPWROUTER_APBAREA_APB_MASK ) >> \ + GRSPWROUTER_APBAREA_APB_SHIFT ) +#define GRSPWROUTER_APBAREA_APB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~GRSPWROUTER_APBAREA_APB_MASK ) | \ + ( ( ( _val ) << GRSPWROUTER_APBAREA_APB_SHIFT ) & \ + GRSPWROUTER_APBAREA_APB_MASK ) ) +#define GRSPWROUTER_APBAREA_APB( _val ) \ + ( ( ( _val ) << GRSPWROUTER_APBAREA_APB_SHIFT ) & \ + GRSPWROUTER_APBAREA_APB_MASK ) + +/** @} */ + +/** + * @brief This structure defines the SpaceWire Router register block memory + * map. + */ +typedef struct grspwrouter { + uint32_t reserved_0_4; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERRTPMAP. + */ + uint32_t rtpmap[ 255 ]; + + uint32_t reserved_400_404; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERRTACTRL. + */ + uint32_t rtactrl[ 255 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPCTRLCFG. + */ + uint32_t pctrlcfg; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPCTRL. + */ + uint32_t pctrl[ 31 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPSTSCFG. + */ + uint32_t pstscfg; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPSTS. + */ + uint32_t psts[ 31 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPTIMER. + */ + uint32_t ptimer[ 32 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPCTRL2CFG. + */ + uint32_t pctrl2cfg; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPCTRL2. + */ + uint32_t pctrl2[ 31 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERRTRCFG. + */ + uint32_t rtrcfg; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERTC. + */ + uint32_t tc; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERVER. + */ + uint32_t ver; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERIDIV. + */ + uint32_t idiv; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERCFGWE. + */ + uint32_t cfgwe; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPRESCALER. + */ + uint32_t prescaler; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERIMASK. + */ + uint32_t imask; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERIPMASK. + */ + uint32_t ipmask; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPIP. + */ + uint32_t pip; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERICODEGEN. + */ + uint32_t icodegen; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERISR0. + */ + uint32_t isr0; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERISR1. + */ + uint32_t isr1; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERISRTIMER. + */ + uint32_t isrtimer; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERAITIMER. + */ + uint32_t aitimer; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERISRCTIMER. + */ + uint32_t isrctimer; + + uint32_t reserved_a3c_a40; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERLRUNSTAT. + */ + uint32_t lrunstat; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERCAP. + */ + uint32_t cap; + + uint32_t reserved_a48_a50[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPNPVEND. + */ + uint32_t pnpvend; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPNPUVEND. + */ + uint32_t pnpuvend; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPNPUSN. + */ + uint32_t pnpusn; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERPNPNETDISC. + */ + uint32_t pnpnetdisc; + + uint32_t reserved_a60_c10[ 108 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWRouterPortStats. + */ + grspwrouter_portstats portstats[ 31 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERMAXPLEN. + */ + uint32_t maxplen[ 32 ]; + + uint32_t reserved_e80_e84; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERCREDCNT. + */ + uint32_t credcnt[ 31 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERGPO. + */ + uint32_t gpo[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERGPI. + */ + uint32_t gpi[ 4 ]; + + uint32_t reserved_f20_1004[ 57 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERRTCOMB. + */ + uint32_t rtcomb[ 255 ]; + + uint32_t reserved_1400_2000[ 768 ]; + + /** + * @brief See @ref RTEMSDeviceGRSPWROUTERAPBAREA. + */ + uint32_t apbarea[ 1024 ]; +} grspwrouter; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_GRSPWROUTER_REGS_H */ diff --git a/bsps/include/grlib/grtc.h b/bsps/include/grlib/grtc.h index 3ee1fa547c..17ad165e9b 100644 --- a/bsps/include/grlib/grtc.h +++ b/bsps/include/grlib/grtc.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GRTC Telecommand (TC) decoder driver interface * * COPYRIGHT (c) 2007. * Cobham Gaisler AB. * - * 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. + * 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 __GRTC_H__ diff --git a/bsps/include/grlib/grtm.h b/bsps/include/grlib/grtm.h index 625f8389b7..8e667faa97 100644 --- a/bsps/include/grlib/grtm.h +++ b/bsps/include/grlib/grtm.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* GRTM Telemetry (TM) driver interface * * COPYRIGHT (c) 2007. * Cobham Gaisler AB. * - * 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. + * 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 __GRTM_H__ diff --git a/bsps/include/grlib/i2cmst.h b/bsps/include/grlib/i2cmst.h index 01dbcf5bfb..a37583ec04 100644 --- a/bsps/include/grlib/i2cmst.h +++ b/bsps/include/grlib/i2cmst.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup i2c @@ -7,9 +9,26 @@ * COPYRIGHT (c) 2007 Cobham Gaisler AB * with parts from the RTEMS MPC83xx I2C driver (c) 2007 Embedded Brains GmbH. * - * 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. + * 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 _I2CMST_H diff --git a/bsps/include/grlib/irqamp-regs.h b/bsps/include/grlib/irqamp-regs.h new file mode 100644 index 0000000000..ee7b8ce9cf --- /dev/null +++ b/bsps/include/grlib/irqamp-regs.h @@ -0,0 +1,874 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBIRQAMP + * + * @brief This header file defines the IRQAMP register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/irqamp-header */ + +#ifndef _GRLIB_IRQAMP_REGS_H +#define _GRLIB_IRQAMP_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/irqamp-timestamp */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPTimestamp IRQ(A)MP Timestamp + * + * @ingroup RTEMSDeviceGRLIBIRQAMP + * + * @brief This group contains the IRQ(A)MP Timestamp interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPTimestampITCNT \ + * Interrupt timestamp counter n register (ITCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ITCNT_TCNT_SHIFT 0 +#define IRQAMP_ITCNT_TCNT_MASK 0xffffffffU +#define IRQAMP_ITCNT_TCNT_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ITCNT_TCNT_MASK ) >> \ + IRQAMP_ITCNT_TCNT_SHIFT ) +#define IRQAMP_ITCNT_TCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ITCNT_TCNT_MASK ) | \ + ( ( ( _val ) << IRQAMP_ITCNT_TCNT_SHIFT ) & \ + IRQAMP_ITCNT_TCNT_MASK ) ) +#define IRQAMP_ITCNT_TCNT( _val ) \ + ( ( ( _val ) << IRQAMP_ITCNT_TCNT_SHIFT ) & \ + IRQAMP_ITCNT_TCNT_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPTimestampITSTMPC \ + * Interrupt timestamp n control register (ITSTMPC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ITSTMPC_TSTAMP_SHIFT 27 +#define IRQAMP_ITSTMPC_TSTAMP_MASK 0xf8000000U +#define IRQAMP_ITSTMPC_TSTAMP_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ITSTMPC_TSTAMP_MASK ) >> \ + IRQAMP_ITSTMPC_TSTAMP_SHIFT ) +#define IRQAMP_ITSTMPC_TSTAMP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ITSTMPC_TSTAMP_MASK ) | \ + ( ( ( _val ) << IRQAMP_ITSTMPC_TSTAMP_SHIFT ) & \ + IRQAMP_ITSTMPC_TSTAMP_MASK ) ) +#define IRQAMP_ITSTMPC_TSTAMP( _val ) \ + ( ( ( _val ) << IRQAMP_ITSTMPC_TSTAMP_SHIFT ) & \ + IRQAMP_ITSTMPC_TSTAMP_MASK ) + +#define IRQAMP_ITSTMPC_S1 0x4000000U + +#define IRQAMP_ITSTMPC_S2 0x2000000U + +#define IRQAMP_ITSTMPC_KS 0x20U + +#define IRQAMP_ITSTMPC_TSISEL_SHIFT 0 +#define IRQAMP_ITSTMPC_TSISEL_MASK 0x1fU +#define IRQAMP_ITSTMPC_TSISEL_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ITSTMPC_TSISEL_MASK ) >> \ + IRQAMP_ITSTMPC_TSISEL_SHIFT ) +#define IRQAMP_ITSTMPC_TSISEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ITSTMPC_TSISEL_MASK ) | \ + ( ( ( _val ) << IRQAMP_ITSTMPC_TSISEL_SHIFT ) & \ + IRQAMP_ITSTMPC_TSISEL_MASK ) ) +#define IRQAMP_ITSTMPC_TSISEL( _val ) \ + ( ( ( _val ) << IRQAMP_ITSTMPC_TSISEL_SHIFT ) & \ + IRQAMP_ITSTMPC_TSISEL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPTimestampITSTMPAS \ + * Interrupt Assertion Timestamp n register (ITSTMPAS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ITSTMPAS_TASSERTION_SHIFT 0 +#define IRQAMP_ITSTMPAS_TASSERTION_MASK 0xffffffffU +#define IRQAMP_ITSTMPAS_TASSERTION_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ITSTMPAS_TASSERTION_MASK ) >> \ + IRQAMP_ITSTMPAS_TASSERTION_SHIFT ) +#define IRQAMP_ITSTMPAS_TASSERTION_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ITSTMPAS_TASSERTION_MASK ) | \ + ( ( ( _val ) << IRQAMP_ITSTMPAS_TASSERTION_SHIFT ) & \ + IRQAMP_ITSTMPAS_TASSERTION_MASK ) ) +#define IRQAMP_ITSTMPAS_TASSERTION( _val ) \ + ( ( ( _val ) << IRQAMP_ITSTMPAS_TASSERTION_SHIFT ) & \ + IRQAMP_ITSTMPAS_TASSERTION_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPTimestampITSTMPAC \ + * Interrupt Acknowledge Timestamp n register (ITSTMPAC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT 0 +#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK 0xffffffffU +#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK ) >> \ + IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT ) +#define IRQAMP_ITSTMPAC_TACKNOWLEDGE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK ) | \ + ( ( ( _val ) << IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT ) & \ + IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK ) ) +#define IRQAMP_ITSTMPAC_TACKNOWLEDGE( _val ) \ + ( ( ( _val ) << IRQAMP_ITSTMPAC_TACKNOWLEDGE_SHIFT ) & \ + IRQAMP_ITSTMPAC_TACKNOWLEDGE_MASK ) + +/** @} */ + +/** + * @brief This structure defines the IRQ(A)MP Timestamp register block memory + * map. + */ +typedef struct irqamp_timestamp { + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPTimestampITCNT. + */ + uint32_t itcnt; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPTimestampITSTMPC. + */ + uint32_t itstmpc; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPTimestampITSTMPAS. + */ + uint32_t itstmpas; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPTimestampITSTMPAC. + */ + uint32_t itstmpac; +} irqamp_timestamp; + +/** @} */ + +/* Generated from spec:/dev/grlib/if/irqamp */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMP IRQ(A)MP + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the IRQ(A)MP interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPILEVEL Interrupt level register (ILEVEL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ILEVEL_IL_15_1_SHIFT 1 +#define IRQAMP_ILEVEL_IL_15_1_MASK 0xfffeU +#define IRQAMP_ILEVEL_IL_15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ILEVEL_IL_15_1_MASK ) >> \ + IRQAMP_ILEVEL_IL_15_1_SHIFT ) +#define IRQAMP_ILEVEL_IL_15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ILEVEL_IL_15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_ILEVEL_IL_15_1_SHIFT ) & \ + IRQAMP_ILEVEL_IL_15_1_MASK ) ) +#define IRQAMP_ILEVEL_IL_15_1( _val ) \ + ( ( ( _val ) << IRQAMP_ILEVEL_IL_15_1_SHIFT ) & \ + IRQAMP_ILEVEL_IL_15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPIPEND Interrupt pending register (IPEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_IPEND_EIP_31_16_SHIFT 16 +#define IRQAMP_IPEND_EIP_31_16_MASK 0xffff0000U +#define IRQAMP_IPEND_EIP_31_16_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IPEND_EIP_31_16_MASK ) >> \ + IRQAMP_IPEND_EIP_31_16_SHIFT ) +#define IRQAMP_IPEND_EIP_31_16_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IPEND_EIP_31_16_MASK ) | \ + ( ( ( _val ) << IRQAMP_IPEND_EIP_31_16_SHIFT ) & \ + IRQAMP_IPEND_EIP_31_16_MASK ) ) +#define IRQAMP_IPEND_EIP_31_16( _val ) \ + ( ( ( _val ) << IRQAMP_IPEND_EIP_31_16_SHIFT ) & \ + IRQAMP_IPEND_EIP_31_16_MASK ) + +#define IRQAMP_IPEND_IP_15_1_SHIFT 1 +#define IRQAMP_IPEND_IP_15_1_MASK 0xfffeU +#define IRQAMP_IPEND_IP_15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IPEND_IP_15_1_MASK ) >> \ + IRQAMP_IPEND_IP_15_1_SHIFT ) +#define IRQAMP_IPEND_IP_15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IPEND_IP_15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_IPEND_IP_15_1_SHIFT ) & \ + IRQAMP_IPEND_IP_15_1_MASK ) ) +#define IRQAMP_IPEND_IP_15_1( _val ) \ + ( ( ( _val ) << IRQAMP_IPEND_IP_15_1_SHIFT ) & \ + IRQAMP_IPEND_IP_15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPIFORCE0 \ + * Interrupt force register for processor 0 (IFORCE0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_IFORCE0_IF_15_1_SHIFT 1 +#define IRQAMP_IFORCE0_IF_15_1_MASK 0xfffeU +#define IRQAMP_IFORCE0_IF_15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IFORCE0_IF_15_1_MASK ) >> \ + IRQAMP_IFORCE0_IF_15_1_SHIFT ) +#define IRQAMP_IFORCE0_IF_15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IFORCE0_IF_15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_IFORCE0_IF_15_1_SHIFT ) & \ + IRQAMP_IFORCE0_IF_15_1_MASK ) ) +#define IRQAMP_IFORCE0_IF_15_1( _val ) \ + ( ( ( _val ) << IRQAMP_IFORCE0_IF_15_1_SHIFT ) & \ + IRQAMP_IFORCE0_IF_15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPICLEAR Interrupt clear register (ICLEAR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ICLEAR_EIC_31_16_SHIFT 16 +#define IRQAMP_ICLEAR_EIC_31_16_MASK 0xffff0000U +#define IRQAMP_ICLEAR_EIC_31_16_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICLEAR_EIC_31_16_MASK ) >> \ + IRQAMP_ICLEAR_EIC_31_16_SHIFT ) +#define IRQAMP_ICLEAR_EIC_31_16_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICLEAR_EIC_31_16_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICLEAR_EIC_31_16_SHIFT ) & \ + IRQAMP_ICLEAR_EIC_31_16_MASK ) ) +#define IRQAMP_ICLEAR_EIC_31_16( _val ) \ + ( ( ( _val ) << IRQAMP_ICLEAR_EIC_31_16_SHIFT ) & \ + IRQAMP_ICLEAR_EIC_31_16_MASK ) + +#define IRQAMP_ICLEAR_IC_15_1_SHIFT 1 +#define IRQAMP_ICLEAR_IC_15_1_MASK 0xfffeU +#define IRQAMP_ICLEAR_IC_15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICLEAR_IC_15_1_MASK ) >> \ + IRQAMP_ICLEAR_IC_15_1_SHIFT ) +#define IRQAMP_ICLEAR_IC_15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICLEAR_IC_15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICLEAR_IC_15_1_SHIFT ) & \ + IRQAMP_ICLEAR_IC_15_1_MASK ) ) +#define IRQAMP_ICLEAR_IC_15_1( _val ) \ + ( ( ( _val ) << IRQAMP_ICLEAR_IC_15_1_SHIFT ) & \ + IRQAMP_ICLEAR_IC_15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPMPSTAT \ + * Multiprocessor status register (MPSTAT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_MPSTAT_NCPU_SHIFT 28 +#define IRQAMP_MPSTAT_NCPU_MASK 0xf0000000U +#define IRQAMP_MPSTAT_NCPU_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_MPSTAT_NCPU_MASK ) >> \ + IRQAMP_MPSTAT_NCPU_SHIFT ) +#define IRQAMP_MPSTAT_NCPU_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_MPSTAT_NCPU_MASK ) | \ + ( ( ( _val ) << IRQAMP_MPSTAT_NCPU_SHIFT ) & \ + IRQAMP_MPSTAT_NCPU_MASK ) ) +#define IRQAMP_MPSTAT_NCPU( _val ) \ + ( ( ( _val ) << IRQAMP_MPSTAT_NCPU_SHIFT ) & \ + IRQAMP_MPSTAT_NCPU_MASK ) + +#define IRQAMP_MPSTAT_BA 0x8000000U + +#define IRQAMP_MPSTAT_ER 0x4000000U + +#define IRQAMP_MPSTAT_EIRQ_SHIFT 16 +#define IRQAMP_MPSTAT_EIRQ_MASK 0xf0000U +#define IRQAMP_MPSTAT_EIRQ_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_MPSTAT_EIRQ_MASK ) >> \ + IRQAMP_MPSTAT_EIRQ_SHIFT ) +#define IRQAMP_MPSTAT_EIRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_MPSTAT_EIRQ_MASK ) | \ + ( ( ( _val ) << IRQAMP_MPSTAT_EIRQ_SHIFT ) & \ + IRQAMP_MPSTAT_EIRQ_MASK ) ) +#define IRQAMP_MPSTAT_EIRQ( _val ) \ + ( ( ( _val ) << IRQAMP_MPSTAT_EIRQ_SHIFT ) & \ + IRQAMP_MPSTAT_EIRQ_MASK ) + +#define IRQAMP_MPSTAT_STATUS_SHIFT 0 +#define IRQAMP_MPSTAT_STATUS_MASK 0xfU +#define IRQAMP_MPSTAT_STATUS_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_MPSTAT_STATUS_MASK ) >> \ + IRQAMP_MPSTAT_STATUS_SHIFT ) +#define IRQAMP_MPSTAT_STATUS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_MPSTAT_STATUS_MASK ) | \ + ( ( ( _val ) << IRQAMP_MPSTAT_STATUS_SHIFT ) & \ + IRQAMP_MPSTAT_STATUS_MASK ) ) +#define IRQAMP_MPSTAT_STATUS( _val ) \ + ( ( ( _val ) << IRQAMP_MPSTAT_STATUS_SHIFT ) & \ + IRQAMP_MPSTAT_STATUS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPBRDCST Broadcast register (BRDCST) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_BRDCST_BM15_1_SHIFT 1 +#define IRQAMP_BRDCST_BM15_1_MASK 0xfffeU +#define IRQAMP_BRDCST_BM15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_BRDCST_BM15_1_MASK ) >> \ + IRQAMP_BRDCST_BM15_1_SHIFT ) +#define IRQAMP_BRDCST_BM15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_BRDCST_BM15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_BRDCST_BM15_1_SHIFT ) & \ + IRQAMP_BRDCST_BM15_1_MASK ) ) +#define IRQAMP_BRDCST_BM15_1( _val ) \ + ( ( ( _val ) << IRQAMP_BRDCST_BM15_1_SHIFT ) & \ + IRQAMP_BRDCST_BM15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPERRSTAT Error Mode Status Register (ERRSTAT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ERRSTAT_ERRMODE_3_0_SHIFT 0 +#define IRQAMP_ERRSTAT_ERRMODE_3_0_MASK 0xfU +#define IRQAMP_ERRSTAT_ERRMODE_3_0_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ERRSTAT_ERRMODE_3_0_MASK ) >> \ + IRQAMP_ERRSTAT_ERRMODE_3_0_SHIFT ) +#define IRQAMP_ERRSTAT_ERRMODE_3_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ERRSTAT_ERRMODE_3_0_MASK ) | \ + ( ( ( _val ) << IRQAMP_ERRSTAT_ERRMODE_3_0_SHIFT ) & \ + IRQAMP_ERRSTAT_ERRMODE_3_0_MASK ) ) +#define IRQAMP_ERRSTAT_ERRMODE_3_0( _val ) \ + ( ( ( _val ) << IRQAMP_ERRSTAT_ERRMODE_3_0_SHIFT ) & \ + IRQAMP_ERRSTAT_ERRMODE_3_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPWDOGCTRL \ + * Watchdog control register (WDOGCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_WDOGCTRL_NWDOG_SHIFT 27 +#define IRQAMP_WDOGCTRL_NWDOG_MASK 0xf8000000U +#define IRQAMP_WDOGCTRL_NWDOG_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_WDOGCTRL_NWDOG_MASK ) >> \ + IRQAMP_WDOGCTRL_NWDOG_SHIFT ) +#define IRQAMP_WDOGCTRL_NWDOG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_WDOGCTRL_NWDOG_MASK ) | \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_NWDOG_SHIFT ) & \ + IRQAMP_WDOGCTRL_NWDOG_MASK ) ) +#define IRQAMP_WDOGCTRL_NWDOG( _val ) \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_NWDOG_SHIFT ) & \ + IRQAMP_WDOGCTRL_NWDOG_MASK ) + +#define IRQAMP_WDOGCTRL_WDOGIRQ_SHIFT 16 +#define IRQAMP_WDOGCTRL_WDOGIRQ_MASK 0xf0000U +#define IRQAMP_WDOGCTRL_WDOGIRQ_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_WDOGCTRL_WDOGIRQ_MASK ) >> \ + IRQAMP_WDOGCTRL_WDOGIRQ_SHIFT ) +#define IRQAMP_WDOGCTRL_WDOGIRQ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_WDOGCTRL_WDOGIRQ_MASK ) | \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_WDOGIRQ_SHIFT ) & \ + IRQAMP_WDOGCTRL_WDOGIRQ_MASK ) ) +#define IRQAMP_WDOGCTRL_WDOGIRQ( _val ) \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_WDOGIRQ_SHIFT ) & \ + IRQAMP_WDOGCTRL_WDOGIRQ_MASK ) + +#define IRQAMP_WDOGCTRL_WDOGMSK_SHIFT 0 +#define IRQAMP_WDOGCTRL_WDOGMSK_MASK 0xfU +#define IRQAMP_WDOGCTRL_WDOGMSK_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_WDOGCTRL_WDOGMSK_MASK ) >> \ + IRQAMP_WDOGCTRL_WDOGMSK_SHIFT ) +#define IRQAMP_WDOGCTRL_WDOGMSK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_WDOGCTRL_WDOGMSK_MASK ) | \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_WDOGMSK_SHIFT ) & \ + IRQAMP_WDOGCTRL_WDOGMSK_MASK ) ) +#define IRQAMP_WDOGCTRL_WDOGMSK( _val ) \ + ( ( ( _val ) << IRQAMP_WDOGCTRL_WDOGMSK_SHIFT ) & \ + IRQAMP_WDOGCTRL_WDOGMSK_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPASMPCTRL \ + * Asymmetric multiprocessing control register (ASMPCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ASMPCTRL_NCTRL_SHIFT 28 +#define IRQAMP_ASMPCTRL_NCTRL_MASK 0xf0000000U +#define IRQAMP_ASMPCTRL_NCTRL_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ASMPCTRL_NCTRL_MASK ) >> \ + IRQAMP_ASMPCTRL_NCTRL_SHIFT ) +#define IRQAMP_ASMPCTRL_NCTRL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ASMPCTRL_NCTRL_MASK ) | \ + ( ( ( _val ) << IRQAMP_ASMPCTRL_NCTRL_SHIFT ) & \ + IRQAMP_ASMPCTRL_NCTRL_MASK ) ) +#define IRQAMP_ASMPCTRL_NCTRL( _val ) \ + ( ( ( _val ) << IRQAMP_ASMPCTRL_NCTRL_SHIFT ) & \ + IRQAMP_ASMPCTRL_NCTRL_MASK ) + +#define IRQAMP_ASMPCTRL_ICF 0x2U + +#define IRQAMP_ASMPCTRL_L 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPICSELR \ + * Interrupt controller select register (ICSELR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_ICSELR_ICSEL0_SHIFT 28 +#define IRQAMP_ICSELR_ICSEL0_MASK 0xf0000000U +#define IRQAMP_ICSELR_ICSEL0_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICSELR_ICSEL0_MASK ) >> \ + IRQAMP_ICSELR_ICSEL0_SHIFT ) +#define IRQAMP_ICSELR_ICSEL0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICSELR_ICSEL0_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL0_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL0_MASK ) ) +#define IRQAMP_ICSELR_ICSEL0( _val ) \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL0_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL0_MASK ) + +#define IRQAMP_ICSELR_ICSEL1_SHIFT 24 +#define IRQAMP_ICSELR_ICSEL1_MASK 0xf000000U +#define IRQAMP_ICSELR_ICSEL1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICSELR_ICSEL1_MASK ) >> \ + IRQAMP_ICSELR_ICSEL1_SHIFT ) +#define IRQAMP_ICSELR_ICSEL1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICSELR_ICSEL1_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL1_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL1_MASK ) ) +#define IRQAMP_ICSELR_ICSEL1( _val ) \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL1_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL1_MASK ) + +#define IRQAMP_ICSELR_ICSEL2_SHIFT 20 +#define IRQAMP_ICSELR_ICSEL2_MASK 0xf00000U +#define IRQAMP_ICSELR_ICSEL2_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICSELR_ICSEL2_MASK ) >> \ + IRQAMP_ICSELR_ICSEL2_SHIFT ) +#define IRQAMP_ICSELR_ICSEL2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICSELR_ICSEL2_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL2_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL2_MASK ) ) +#define IRQAMP_ICSELR_ICSEL2( _val ) \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL2_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL2_MASK ) + +#define IRQAMP_ICSELR_ICSEL3_SHIFT 16 +#define IRQAMP_ICSELR_ICSEL3_MASK 0xf0000U +#define IRQAMP_ICSELR_ICSEL3_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_ICSELR_ICSEL3_MASK ) >> \ + IRQAMP_ICSELR_ICSEL3_SHIFT ) +#define IRQAMP_ICSELR_ICSEL3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_ICSELR_ICSEL3_MASK ) | \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL3_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL3_MASK ) ) +#define IRQAMP_ICSELR_ICSEL3( _val ) \ + ( ( ( _val ) << IRQAMP_ICSELR_ICSEL3_SHIFT ) & \ + IRQAMP_ICSELR_ICSEL3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPPIMASK \ + * Processor n interrupt mask register (PIMASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_PIMASK_EIM_31_16_SHIFT 16 +#define IRQAMP_PIMASK_EIM_31_16_MASK 0xffff0000U +#define IRQAMP_PIMASK_EIM_31_16_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_PIMASK_EIM_31_16_MASK ) >> \ + IRQAMP_PIMASK_EIM_31_16_SHIFT ) +#define IRQAMP_PIMASK_EIM_31_16_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_PIMASK_EIM_31_16_MASK ) | \ + ( ( ( _val ) << IRQAMP_PIMASK_EIM_31_16_SHIFT ) & \ + IRQAMP_PIMASK_EIM_31_16_MASK ) ) +#define IRQAMP_PIMASK_EIM_31_16( _val ) \ + ( ( ( _val ) << IRQAMP_PIMASK_EIM_31_16_SHIFT ) & \ + IRQAMP_PIMASK_EIM_31_16_MASK ) + +#define IRQAMP_PIMASK_IM15_1_SHIFT 1 +#define IRQAMP_PIMASK_IM15_1_MASK 0xfffeU +#define IRQAMP_PIMASK_IM15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_PIMASK_IM15_1_MASK ) >> \ + IRQAMP_PIMASK_IM15_1_SHIFT ) +#define IRQAMP_PIMASK_IM15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_PIMASK_IM15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_PIMASK_IM15_1_SHIFT ) & \ + IRQAMP_PIMASK_IM15_1_MASK ) ) +#define IRQAMP_PIMASK_IM15_1( _val ) \ + ( ( ( _val ) << IRQAMP_PIMASK_IM15_1_SHIFT ) & \ + IRQAMP_PIMASK_IM15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPPIFORCE \ + * Processor n interrupt force register (PIFORCE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_PIFORCE_FC_15_1_SHIFT 17 +#define IRQAMP_PIFORCE_FC_15_1_MASK 0xfffe0000U +#define IRQAMP_PIFORCE_FC_15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_PIFORCE_FC_15_1_MASK ) >> \ + IRQAMP_PIFORCE_FC_15_1_SHIFT ) +#define IRQAMP_PIFORCE_FC_15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_PIFORCE_FC_15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_PIFORCE_FC_15_1_SHIFT ) & \ + IRQAMP_PIFORCE_FC_15_1_MASK ) ) +#define IRQAMP_PIFORCE_FC_15_1( _val ) \ + ( ( ( _val ) << IRQAMP_PIFORCE_FC_15_1_SHIFT ) & \ + IRQAMP_PIFORCE_FC_15_1_MASK ) + +#define IRQAMP_PIFORCE_IF15_1_SHIFT 1 +#define IRQAMP_PIFORCE_IF15_1_MASK 0xfffeU +#define IRQAMP_PIFORCE_IF15_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_PIFORCE_IF15_1_MASK ) >> \ + IRQAMP_PIFORCE_IF15_1_SHIFT ) +#define IRQAMP_PIFORCE_IF15_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_PIFORCE_IF15_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_PIFORCE_IF15_1_SHIFT ) & \ + IRQAMP_PIFORCE_IF15_1_MASK ) ) +#define IRQAMP_PIFORCE_IF15_1( _val ) \ + ( ( ( _val ) << IRQAMP_PIFORCE_IF15_1_SHIFT ) & \ + IRQAMP_PIFORCE_IF15_1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPPEXTACK \ + * Processor n extended interrupt acknowledge register (PEXTACK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_PEXTACK_EID_4_0_SHIFT 0 +#define IRQAMP_PEXTACK_EID_4_0_MASK 0x1fU +#define IRQAMP_PEXTACK_EID_4_0_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_PEXTACK_EID_4_0_MASK ) >> \ + IRQAMP_PEXTACK_EID_4_0_SHIFT ) +#define IRQAMP_PEXTACK_EID_4_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_PEXTACK_EID_4_0_MASK ) | \ + ( ( ( _val ) << IRQAMP_PEXTACK_EID_4_0_SHIFT ) & \ + IRQAMP_PEXTACK_EID_4_0_MASK ) ) +#define IRQAMP_PEXTACK_EID_4_0( _val ) \ + ( ( ( _val ) << IRQAMP_PEXTACK_EID_4_0_SHIFT ) & \ + IRQAMP_PEXTACK_EID_4_0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPBADDR \ + * Processor n Boot Address register (BADDR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_BADDR_BOOTADDR_31_3_SHIFT 3 +#define IRQAMP_BADDR_BOOTADDR_31_3_MASK 0xfffffff8U +#define IRQAMP_BADDR_BOOTADDR_31_3_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_BADDR_BOOTADDR_31_3_MASK ) >> \ + IRQAMP_BADDR_BOOTADDR_31_3_SHIFT ) +#define IRQAMP_BADDR_BOOTADDR_31_3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_BADDR_BOOTADDR_31_3_MASK ) | \ + ( ( ( _val ) << IRQAMP_BADDR_BOOTADDR_31_3_SHIFT ) & \ + IRQAMP_BADDR_BOOTADDR_31_3_MASK ) ) +#define IRQAMP_BADDR_BOOTADDR_31_3( _val ) \ + ( ( ( _val ) << IRQAMP_BADDR_BOOTADDR_31_3_SHIFT ) & \ + IRQAMP_BADDR_BOOTADDR_31_3_MASK ) + +#define IRQAMP_BADDR_AS 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBIRQAMPIRQMAP Interrupt map register n (IRQMAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define IRQAMP_IRQMAP_IRQMAP_4_N_0_SHIFT 24 +#define IRQAMP_IRQMAP_IRQMAP_4_N_0_MASK 0xff000000U +#define IRQAMP_IRQMAP_IRQMAP_4_N_0_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IRQMAP_IRQMAP_4_N_0_MASK ) >> \ + IRQAMP_IRQMAP_IRQMAP_4_N_0_SHIFT ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IRQMAP_IRQMAP_4_N_0_MASK ) | \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_0_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_0_MASK ) ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_0( _val ) \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_0_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_0_MASK ) + +#define IRQAMP_IRQMAP_IRQMAP_4_N_1_SHIFT 16 +#define IRQAMP_IRQMAP_IRQMAP_4_N_1_MASK 0xff0000U +#define IRQAMP_IRQMAP_IRQMAP_4_N_1_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IRQMAP_IRQMAP_4_N_1_MASK ) >> \ + IRQAMP_IRQMAP_IRQMAP_4_N_1_SHIFT ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IRQMAP_IRQMAP_4_N_1_MASK ) | \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_1_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_1_MASK ) ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_1( _val ) \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_1_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_1_MASK ) + +#define IRQAMP_IRQMAP_IRQMAP_4_N_2_SHIFT 8 +#define IRQAMP_IRQMAP_IRQMAP_4_N_2_MASK 0xff00U +#define IRQAMP_IRQMAP_IRQMAP_4_N_2_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IRQMAP_IRQMAP_4_N_2_MASK ) >> \ + IRQAMP_IRQMAP_IRQMAP_4_N_2_SHIFT ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IRQMAP_IRQMAP_4_N_2_MASK ) | \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_2_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_2_MASK ) ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_2( _val ) \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_2_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_2_MASK ) + +#define IRQAMP_IRQMAP_IRQMAP_4_N_3_SHIFT 0 +#define IRQAMP_IRQMAP_IRQMAP_4_N_3_MASK 0xffU +#define IRQAMP_IRQMAP_IRQMAP_4_N_3_GET( _reg ) \ + ( ( ( _reg ) & IRQAMP_IRQMAP_IRQMAP_4_N_3_MASK ) >> \ + IRQAMP_IRQMAP_IRQMAP_4_N_3_SHIFT ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~IRQAMP_IRQMAP_IRQMAP_4_N_3_MASK ) | \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_3_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_3_MASK ) ) +#define IRQAMP_IRQMAP_IRQMAP_4_N_3( _val ) \ + ( ( ( _val ) << IRQAMP_IRQMAP_IRQMAP_4_N_3_SHIFT ) & \ + IRQAMP_IRQMAP_IRQMAP_4_N_3_MASK ) + +/** @} */ + +/** + * @brief This structure defines the IRQ(A)MP register block memory map. + */ +typedef struct irqamp { + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPILEVEL. + */ + uint32_t ilevel; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPIPEND. + */ + uint32_t ipend; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPIFORCE0. + */ + uint32_t iforce0; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPICLEAR. + */ + uint32_t iclear; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPMPSTAT. + */ + uint32_t mpstat; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPBRDCST. + */ + uint32_t brdcst; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPERRSTAT. + */ + uint32_t errstat; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPWDOGCTRL. + */ + uint32_t wdogctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPASMPCTRL. + */ + uint32_t asmpctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPICSELR. + */ + uint32_t icselr[ 2 ]; + + uint32_t reserved_2c_40[ 5 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPPIMASK. + */ + uint32_t pimask[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPPIFORCE. + */ + uint32_t piforce[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPPEXTACK. + */ + uint32_t pextack[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPTimestamp. + */ + irqamp_timestamp itstmp[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPBADDR. + */ + uint32_t baddr[ 16 ]; + + uint32_t reserved_240_300[ 48 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBIRQAMPIRQMAP. + */ + uint32_t irqmap[ 16 ]; + + uint32_t reserved_340_400[ 48 ]; +} irqamp; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_IRQAMP_REGS_H */ diff --git a/bsps/include/grlib/irqamp.h b/bsps/include/grlib/irqamp.h new file mode 100644 index 0000000000..dd7c5235f0 --- /dev/null +++ b/bsps/include/grlib/irqamp.h @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBIRQAMP + * + * @brief This header file defines the IRQ(A)MP interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/irqamp-header-2 */ + +#ifndef _GRLIB_IRQAMP_H +#define _GRLIB_IRQAMP_H + +#include <stddef.h> +#include <grlib/io.h> +#include <grlib/irqamp-regs.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/irqamp-get-timestamp */ + +/** + * @ingroup RTEMSDeviceGRLIBIRQAMP + * + * @brief Gets the interrupt timestamping register bock. + * + * @param irqamp_regs is the IRQ(A)MP register block. + * + * @retval NULL The IRQ(A)MP does not support the interrupt timestamping + * feature. + * + * @return Returns the interrupt timestamping register block. + */ +static inline irqamp_timestamp *irqamp_get_timestamp_registers( + irqamp *irqamp_regs +) +{ + irqamp_timestamp *timestamp_regs; + uint32_t itstmpc; + + timestamp_regs = &irqamp_regs->itstmp[ 0 ]; + itstmpc = grlib_load_32( ×tamp_regs->itstmpc ); + + if ( IRQAMP_ITSTMPC_TSTAMP_GET( itstmpc ) == 0 ) { + return NULL; + } + + return timestamp_regs; +} + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_IRQAMP_H */ diff --git a/bsps/include/grlib/l2c.h b/bsps/include/grlib/l2c.h index 52473ddf2a..2867d5bca5 100644 --- a/bsps/include/grlib/l2c.h +++ b/bsps/include/grlib/l2c.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * GRLIB L2CACHE Driver * * COPYRIGHT (c) 2017 * Cobham Gaisler AB * - * 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. + * 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. * * OVERVIEW * ======== diff --git a/bsps/include/grlib/l2cache-regs.h b/bsps/include/grlib/l2cache-regs.h new file mode 100644 index 0000000000..24d2e561b1 --- /dev/null +++ b/bsps/include/grlib/l2cache-regs.h @@ -0,0 +1,807 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBL2CACHE + * + * @brief This header file defines the L2CACHE register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/l2cache-header */ + +#ifndef _GRLIB_L2CACHE_REGS_H +#define _GRLIB_L2CACHE_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/l2cache */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHE L2CACHE + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the L2CACHE interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CC L2C Control register (L2CC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CC_EN 0x80000000U + +#define L2CACHE_L2CC_EDAC 0x40000000U + +#define L2CACHE_L2CC_REPL_SHIFT 28 +#define L2CACHE_L2CC_REPL_MASK 0x30000000U +#define L2CACHE_L2CC_REPL_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CC_REPL_MASK ) >> \ + L2CACHE_L2CC_REPL_SHIFT ) +#define L2CACHE_L2CC_REPL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CC_REPL_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CC_REPL_SHIFT ) & \ + L2CACHE_L2CC_REPL_MASK ) ) +#define L2CACHE_L2CC_REPL( _val ) \ + ( ( ( _val ) << L2CACHE_L2CC_REPL_SHIFT ) & \ + L2CACHE_L2CC_REPL_MASK ) + +#define L2CACHE_L2CC_BBS_SHIFT 16 +#define L2CACHE_L2CC_BBS_MASK 0x70000U +#define L2CACHE_L2CC_BBS_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CC_BBS_MASK ) >> \ + L2CACHE_L2CC_BBS_SHIFT ) +#define L2CACHE_L2CC_BBS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CC_BBS_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CC_BBS_SHIFT ) & \ + L2CACHE_L2CC_BBS_MASK ) ) +#define L2CACHE_L2CC_BBS( _val ) \ + ( ( ( _val ) << L2CACHE_L2CC_BBS_SHIFT ) & \ + L2CACHE_L2CC_BBS_MASK ) + +#define L2CACHE_L2CC_INDEX_WAY_SHIFT 12 +#define L2CACHE_L2CC_INDEX_WAY_MASK 0xf000U +#define L2CACHE_L2CC_INDEX_WAY_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CC_INDEX_WAY_MASK ) >> \ + L2CACHE_L2CC_INDEX_WAY_SHIFT ) +#define L2CACHE_L2CC_INDEX_WAY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CC_INDEX_WAY_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CC_INDEX_WAY_SHIFT ) & \ + L2CACHE_L2CC_INDEX_WAY_MASK ) ) +#define L2CACHE_L2CC_INDEX_WAY( _val ) \ + ( ( ( _val ) << L2CACHE_L2CC_INDEX_WAY_SHIFT ) & \ + L2CACHE_L2CC_INDEX_WAY_MASK ) + +#define L2CACHE_L2CC_LOCK_SHIFT 8 +#define L2CACHE_L2CC_LOCK_MASK 0xf00U +#define L2CACHE_L2CC_LOCK_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CC_LOCK_MASK ) >> \ + L2CACHE_L2CC_LOCK_SHIFT ) +#define L2CACHE_L2CC_LOCK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CC_LOCK_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CC_LOCK_SHIFT ) & \ + L2CACHE_L2CC_LOCK_MASK ) ) +#define L2CACHE_L2CC_LOCK( _val ) \ + ( ( ( _val ) << L2CACHE_L2CC_LOCK_SHIFT ) & \ + L2CACHE_L2CC_LOCK_MASK ) + +#define L2CACHE_L2CC_HPRHB 0x20U + +#define L2CACHE_L2CC_HPB 0x10U + +#define L2CACHE_L2CC_UC 0x8U + +#define L2CACHE_L2CC_HC 0x4U + +#define L2CACHE_L2CC_WP 0x2U + +#define L2CACHE_L2CC_HP 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CS L2C Status register (L2CS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CS_LS 0x1000000U + +#define L2CACHE_L2CS_AT 0x800000U + +#define L2CACHE_L2CS_MP 0x400000U + +#define L2CACHE_L2CS_MTRR_SHIFT 16 +#define L2CACHE_L2CS_MTRR_MASK 0x3f0000U +#define L2CACHE_L2CS_MTRR_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CS_MTRR_MASK ) >> \ + L2CACHE_L2CS_MTRR_SHIFT ) +#define L2CACHE_L2CS_MTRR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CS_MTRR_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CS_MTRR_SHIFT ) & \ + L2CACHE_L2CS_MTRR_MASK ) ) +#define L2CACHE_L2CS_MTRR( _val ) \ + ( ( ( _val ) << L2CACHE_L2CS_MTRR_SHIFT ) & \ + L2CACHE_L2CS_MTRR_MASK ) + +#define L2CACHE_L2CS_BBUS_W_SHIFT 13 +#define L2CACHE_L2CS_BBUS_W_MASK 0xe000U +#define L2CACHE_L2CS_BBUS_W_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CS_BBUS_W_MASK ) >> \ + L2CACHE_L2CS_BBUS_W_SHIFT ) +#define L2CACHE_L2CS_BBUS_W_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CS_BBUS_W_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CS_BBUS_W_SHIFT ) & \ + L2CACHE_L2CS_BBUS_W_MASK ) ) +#define L2CACHE_L2CS_BBUS_W( _val ) \ + ( ( ( _val ) << L2CACHE_L2CS_BBUS_W_SHIFT ) & \ + L2CACHE_L2CS_BBUS_W_MASK ) + +#define L2CACHE_L2CS_WAY_SIZE_SHIFT 2 +#define L2CACHE_L2CS_WAY_SIZE_MASK 0x1ffcU +#define L2CACHE_L2CS_WAY_SIZE_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CS_WAY_SIZE_MASK ) >> \ + L2CACHE_L2CS_WAY_SIZE_SHIFT ) +#define L2CACHE_L2CS_WAY_SIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CS_WAY_SIZE_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CS_WAY_SIZE_SHIFT ) & \ + L2CACHE_L2CS_WAY_SIZE_MASK ) ) +#define L2CACHE_L2CS_WAY_SIZE( _val ) \ + ( ( ( _val ) << L2CACHE_L2CS_WAY_SIZE_SHIFT ) & \ + L2CACHE_L2CS_WAY_SIZE_MASK ) + +#define L2CACHE_L2CS_WAY_SHIFT 0 +#define L2CACHE_L2CS_WAY_MASK 0x3U +#define L2CACHE_L2CS_WAY_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CS_WAY_MASK ) >> \ + L2CACHE_L2CS_WAY_SHIFT ) +#define L2CACHE_L2CS_WAY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CS_WAY_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CS_WAY_SHIFT ) & \ + L2CACHE_L2CS_WAY_MASK ) ) +#define L2CACHE_L2CS_WAY( _val ) \ + ( ( ( _val ) << L2CACHE_L2CS_WAY_SHIFT ) & \ + L2CACHE_L2CS_WAY_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CFMA \ + * L2C Flush (Memory address) register (L2CFMA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CFMA_ADDR_SHIFT 5 +#define L2CACHE_L2CFMA_ADDR_MASK 0xffffffe0U +#define L2CACHE_L2CFMA_ADDR_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFMA_ADDR_MASK ) >> \ + L2CACHE_L2CFMA_ADDR_SHIFT ) +#define L2CACHE_L2CFMA_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFMA_ADDR_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFMA_ADDR_SHIFT ) & \ + L2CACHE_L2CFMA_ADDR_MASK ) ) +#define L2CACHE_L2CFMA_ADDR( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFMA_ADDR_SHIFT ) & \ + L2CACHE_L2CFMA_ADDR_MASK ) + +#define L2CACHE_L2CFMA_DI 0x8U + +#define L2CACHE_L2CFMA_FMODE_SHIFT 0 +#define L2CACHE_L2CFMA_FMODE_MASK 0x7U +#define L2CACHE_L2CFMA_FMODE_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFMA_FMODE_MASK ) >> \ + L2CACHE_L2CFMA_FMODE_SHIFT ) +#define L2CACHE_L2CFMA_FMODE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFMA_FMODE_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFMA_FMODE_SHIFT ) & \ + L2CACHE_L2CFMA_FMODE_MASK ) ) +#define L2CACHE_L2CFMA_FMODE( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFMA_FMODE_SHIFT ) & \ + L2CACHE_L2CFMA_FMODE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CFSI \ + * L2C Flush (Set, Index) register (L2CFSI) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CFSI_INDEX_SHIFT 16 +#define L2CACHE_L2CFSI_INDEX_MASK 0xffff0000U +#define L2CACHE_L2CFSI_INDEX_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFSI_INDEX_MASK ) >> \ + L2CACHE_L2CFSI_INDEX_SHIFT ) +#define L2CACHE_L2CFSI_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFSI_INDEX_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFSI_INDEX_SHIFT ) & \ + L2CACHE_L2CFSI_INDEX_MASK ) ) +#define L2CACHE_L2CFSI_INDEX( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFSI_INDEX_SHIFT ) & \ + L2CACHE_L2CFSI_INDEX_MASK ) + +#define L2CACHE_L2CFSI_TAG_SHIFT 10 +#define L2CACHE_L2CFSI_TAG_MASK 0xfffffc00U +#define L2CACHE_L2CFSI_TAG_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFSI_TAG_MASK ) >> \ + L2CACHE_L2CFSI_TAG_SHIFT ) +#define L2CACHE_L2CFSI_TAG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFSI_TAG_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFSI_TAG_SHIFT ) & \ + L2CACHE_L2CFSI_TAG_MASK ) ) +#define L2CACHE_L2CFSI_TAG( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFSI_TAG_SHIFT ) & \ + L2CACHE_L2CFSI_TAG_MASK ) + +#define L2CACHE_L2CFSI_FL 0x200U + +#define L2CACHE_L2CFSI_VB 0x100U + +#define L2CACHE_L2CFSI_DB 0x80U + +#define L2CACHE_L2CFSI_WAY_SHIFT 4 +#define L2CACHE_L2CFSI_WAY_MASK 0x30U +#define L2CACHE_L2CFSI_WAY_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFSI_WAY_MASK ) >> \ + L2CACHE_L2CFSI_WAY_SHIFT ) +#define L2CACHE_L2CFSI_WAY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFSI_WAY_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFSI_WAY_SHIFT ) & \ + L2CACHE_L2CFSI_WAY_MASK ) ) +#define L2CACHE_L2CFSI_WAY( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFSI_WAY_SHIFT ) & \ + L2CACHE_L2CFSI_WAY_MASK ) + +#define L2CACHE_L2CFSI_DI 0x8U + +#define L2CACHE_L2CFSI_WF 0x4U + +#define L2CACHE_L2CFSI_FMODE_SHIFT 0 +#define L2CACHE_L2CFSI_FMODE_MASK 0x3U +#define L2CACHE_L2CFSI_FMODE_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CFSI_FMODE_MASK ) >> \ + L2CACHE_L2CFSI_FMODE_SHIFT ) +#define L2CACHE_L2CFSI_FMODE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CFSI_FMODE_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CFSI_FMODE_SHIFT ) & \ + L2CACHE_L2CFSI_FMODE_MASK ) ) +#define L2CACHE_L2CFSI_FMODE( _val ) \ + ( ( ( _val ) << L2CACHE_L2CFSI_FMODE_SHIFT ) & \ + L2CACHE_L2CFSI_FMODE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CERR \ + * L2CError status/control register (L2CERR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CERR_AHB_MASTER_INDEX_SHIFT 28 +#define L2CACHE_L2CERR_AHB_MASTER_INDEX_MASK 0xf0000000U +#define L2CACHE_L2CERR_AHB_MASTER_INDEX_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_AHB_MASTER_INDEX_MASK ) >> \ + L2CACHE_L2CERR_AHB_MASTER_INDEX_SHIFT ) +#define L2CACHE_L2CERR_AHB_MASTER_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_AHB_MASTER_INDEX_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_AHB_MASTER_INDEX_SHIFT ) & \ + L2CACHE_L2CERR_AHB_MASTER_INDEX_MASK ) ) +#define L2CACHE_L2CERR_AHB_MASTER_INDEX( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_AHB_MASTER_INDEX_SHIFT ) & \ + L2CACHE_L2CERR_AHB_MASTER_INDEX_MASK ) + +#define L2CACHE_L2CERR_SCRUB 0x8000000U + +#define L2CACHE_L2CERR_TYPE_SHIFT 24 +#define L2CACHE_L2CERR_TYPE_MASK 0x7000000U +#define L2CACHE_L2CERR_TYPE_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_TYPE_MASK ) >> \ + L2CACHE_L2CERR_TYPE_SHIFT ) +#define L2CACHE_L2CERR_TYPE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_TYPE_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_TYPE_SHIFT ) & \ + L2CACHE_L2CERR_TYPE_MASK ) ) +#define L2CACHE_L2CERR_TYPE( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_TYPE_SHIFT ) & \ + L2CACHE_L2CERR_TYPE_MASK ) + +#define L2CACHE_L2CERR_TAG_DATA 0x800000U + +#define L2CACHE_L2CERR_COR_UCOR 0x400000U + +#define L2CACHE_L2CERR_MULTI 0x200000U + +#define L2CACHE_L2CERR_VALID 0x100000U + +#define L2CACHE_L2CERR_DISERESP 0x80000U + +#define L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_SHIFT 16 +#define L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_MASK 0x70000U +#define L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_MASK ) >> \ + L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_SHIFT ) +#define L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_SHIFT ) & \ + L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_MASK ) ) +#define L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_SHIFT ) & \ + L2CACHE_L2CERR_CORRECTABLE_ERROR_COUNTER_MASK ) + +#define L2CACHE_L2CERR_IRQ_PENDING_SHIFT 12 +#define L2CACHE_L2CERR_IRQ_PENDING_MASK 0xf000U +#define L2CACHE_L2CERR_IRQ_PENDING_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_IRQ_PENDING_MASK ) >> \ + L2CACHE_L2CERR_IRQ_PENDING_SHIFT ) +#define L2CACHE_L2CERR_IRQ_PENDING_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_IRQ_PENDING_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_IRQ_PENDING_SHIFT ) & \ + L2CACHE_L2CERR_IRQ_PENDING_MASK ) ) +#define L2CACHE_L2CERR_IRQ_PENDING( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_IRQ_PENDING_SHIFT ) & \ + L2CACHE_L2CERR_IRQ_PENDING_MASK ) + +#define L2CACHE_L2CERR_IRQ_MASK_SHIFT 8 +#define L2CACHE_L2CERR_IRQ_MASK_MASK 0xf00U +#define L2CACHE_L2CERR_IRQ_MASK_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_IRQ_MASK_MASK ) >> \ + L2CACHE_L2CERR_IRQ_MASK_SHIFT ) +#define L2CACHE_L2CERR_IRQ_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_IRQ_MASK_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_IRQ_MASK_SHIFT ) & \ + L2CACHE_L2CERR_IRQ_MASK_MASK ) ) +#define L2CACHE_L2CERR_IRQ_MASK( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_IRQ_MASK_SHIFT ) & \ + L2CACHE_L2CERR_IRQ_MASK_MASK ) + +#define L2CACHE_L2CERR_SELECT_CB_SHIFT 6 +#define L2CACHE_L2CERR_SELECT_CB_MASK 0xc0U +#define L2CACHE_L2CERR_SELECT_CB_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_SELECT_CB_MASK ) >> \ + L2CACHE_L2CERR_SELECT_CB_SHIFT ) +#define L2CACHE_L2CERR_SELECT_CB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_SELECT_CB_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_SELECT_CB_SHIFT ) & \ + L2CACHE_L2CERR_SELECT_CB_MASK ) ) +#define L2CACHE_L2CERR_SELECT_CB( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_SELECT_CB_SHIFT ) & \ + L2CACHE_L2CERR_SELECT_CB_MASK ) + +#define L2CACHE_L2CERR_SELECT_TCB_SHIFT 4 +#define L2CACHE_L2CERR_SELECT_TCB_MASK 0x30U +#define L2CACHE_L2CERR_SELECT_TCB_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERR_SELECT_TCB_MASK ) >> \ + L2CACHE_L2CERR_SELECT_TCB_SHIFT ) +#define L2CACHE_L2CERR_SELECT_TCB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERR_SELECT_TCB_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERR_SELECT_TCB_SHIFT ) & \ + L2CACHE_L2CERR_SELECT_TCB_MASK ) ) +#define L2CACHE_L2CERR_SELECT_TCB( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERR_SELECT_TCB_SHIFT ) & \ + L2CACHE_L2CERR_SELECT_TCB_MASK ) + +#define L2CACHE_L2CERR_XCB 0x8U + +#define L2CACHE_L2CERR_RCB 0x4U + +#define L2CACHE_L2CERR_COMP 0x2U + +#define L2CACHE_L2CERR_RST 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CERRA \ + * L2C Error address register (L2CERRA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CERRA_EADDR_SHIFT 0 +#define L2CACHE_L2CERRA_EADDR_MASK 0xffffffffU +#define L2CACHE_L2CERRA_EADDR_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CERRA_EADDR_MASK ) >> \ + L2CACHE_L2CERRA_EADDR_SHIFT ) +#define L2CACHE_L2CERRA_EADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CERRA_EADDR_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CERRA_EADDR_SHIFT ) & \ + L2CACHE_L2CERRA_EADDR_MASK ) ) +#define L2CACHE_L2CERRA_EADDR( _val ) \ + ( ( ( _val ) << L2CACHE_L2CERRA_EADDR_SHIFT ) & \ + L2CACHE_L2CERRA_EADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CTCB L2C TAG-Check-Bits register (L2CTCB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CTCB_TCB_SHIFT 0 +#define L2CACHE_L2CTCB_TCB_MASK 0x7fU +#define L2CACHE_L2CTCB_TCB_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CTCB_TCB_MASK ) >> \ + L2CACHE_L2CTCB_TCB_SHIFT ) +#define L2CACHE_L2CTCB_TCB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CTCB_TCB_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CTCB_TCB_SHIFT ) & \ + L2CACHE_L2CTCB_TCB_MASK ) ) +#define L2CACHE_L2CTCB_TCB( _val ) \ + ( ( ( _val ) << L2CACHE_L2CTCB_TCB_SHIFT ) & \ + L2CACHE_L2CTCB_TCB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CCB L2C Data-Check-Bits register (L2CCB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CCB_CB_SHIFT 0 +#define L2CACHE_L2CCB_CB_MASK 0xfffffffU +#define L2CACHE_L2CCB_CB_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CCB_CB_MASK ) >> \ + L2CACHE_L2CCB_CB_SHIFT ) +#define L2CACHE_L2CCB_CB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CCB_CB_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CCB_CB_SHIFT ) & \ + L2CACHE_L2CCB_CB_MASK ) ) +#define L2CACHE_L2CCB_CB( _val ) \ + ( ( ( _val ) << L2CACHE_L2CCB_CB_SHIFT ) & \ + L2CACHE_L2CCB_CB_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CSCRUB \ + * L2C Scrub control/status register (L2CSCRUB) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CSCRUB_INDEX_SHIFT 16 +#define L2CACHE_L2CSCRUB_INDEX_MASK 0xffff0000U +#define L2CACHE_L2CSCRUB_INDEX_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CSCRUB_INDEX_MASK ) >> \ + L2CACHE_L2CSCRUB_INDEX_SHIFT ) +#define L2CACHE_L2CSCRUB_INDEX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CSCRUB_INDEX_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CSCRUB_INDEX_SHIFT ) & \ + L2CACHE_L2CSCRUB_INDEX_MASK ) ) +#define L2CACHE_L2CSCRUB_INDEX( _val ) \ + ( ( ( _val ) << L2CACHE_L2CSCRUB_INDEX_SHIFT ) & \ + L2CACHE_L2CSCRUB_INDEX_MASK ) + +#define L2CACHE_L2CSCRUB_WAY_SHIFT 2 +#define L2CACHE_L2CSCRUB_WAY_MASK 0xcU +#define L2CACHE_L2CSCRUB_WAY_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CSCRUB_WAY_MASK ) >> \ + L2CACHE_L2CSCRUB_WAY_SHIFT ) +#define L2CACHE_L2CSCRUB_WAY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CSCRUB_WAY_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CSCRUB_WAY_SHIFT ) & \ + L2CACHE_L2CSCRUB_WAY_MASK ) ) +#define L2CACHE_L2CSCRUB_WAY( _val ) \ + ( ( ( _val ) << L2CACHE_L2CSCRUB_WAY_SHIFT ) & \ + L2CACHE_L2CSCRUB_WAY_MASK ) + +#define L2CACHE_L2CSCRUB_PEN 0x2U + +#define L2CACHE_L2CSCRUB_EN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CSDEL L2C Scrub delay register (L2CSDEL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CSDEL_DEL_SHIFT 0 +#define L2CACHE_L2CSDEL_DEL_MASK 0xffffU +#define L2CACHE_L2CSDEL_DEL_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CSDEL_DEL_MASK ) >> \ + L2CACHE_L2CSDEL_DEL_SHIFT ) +#define L2CACHE_L2CSDEL_DEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CSDEL_DEL_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CSDEL_DEL_SHIFT ) & \ + L2CACHE_L2CSDEL_DEL_MASK ) ) +#define L2CACHE_L2CSDEL_DEL( _val ) \ + ( ( ( _val ) << L2CACHE_L2CSDEL_DEL_SHIFT ) & \ + L2CACHE_L2CSDEL_DEL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CEINJ \ + * L2C Error injection register (L2CEINJ) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CEINJ_ADDR_SHIFT 2 +#define L2CACHE_L2CEINJ_ADDR_MASK 0xfffffffcU +#define L2CACHE_L2CEINJ_ADDR_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CEINJ_ADDR_MASK ) >> \ + L2CACHE_L2CEINJ_ADDR_SHIFT ) +#define L2CACHE_L2CEINJ_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CEINJ_ADDR_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CEINJ_ADDR_SHIFT ) & \ + L2CACHE_L2CEINJ_ADDR_MASK ) ) +#define L2CACHE_L2CEINJ_ADDR( _val ) \ + ( ( ( _val ) << L2CACHE_L2CEINJ_ADDR_SHIFT ) & \ + L2CACHE_L2CEINJ_ADDR_MASK ) + +#define L2CACHE_L2CEINJ_INJ 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CACCC \ + * L2C Access control register (L2CACCC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CACCC_DSC 0x4000U + +#define L2CACHE_L2CACCC_SH 0x2000U + +#define L2CACHE_L2CACCC_SPLITQ 0x400U + +#define L2CACHE_L2CACCC_NHM 0x200U + +#define L2CACHE_L2CACCC_BERR 0x100U + +#define L2CACHE_L2CACCC_OAPM 0x80U + +#define L2CACHE_L2CACCC_FLINE 0x40U + +#define L2CACHE_L2CACCC_DBPF 0x20U + +#define L2CACHE_L2CACCC_128WF 0x10U + +#define L2CACHE_L2CACCC_DBPWS 0x4U + +#define L2CACHE_L2CACCC_SPLIT 0x2U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CEINJCFG \ + * L2C injection configuration register (L2CEINJCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CEINJCFG_EDI 0x400U + +#define L2CACHE_L2CEINJCFG_TER 0x200U + +#define L2CACHE_L2CEINJCFG_IMD 0x100U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL2CACHEL2CMTRR \ + * L2C Memory type range register (L2CMTRR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L2CACHE_L2CMTRR_ADDR_SHIFT 18 +#define L2CACHE_L2CMTRR_ADDR_MASK 0xfffc0000U +#define L2CACHE_L2CMTRR_ADDR_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CMTRR_ADDR_MASK ) >> \ + L2CACHE_L2CMTRR_ADDR_SHIFT ) +#define L2CACHE_L2CMTRR_ADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CMTRR_ADDR_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CMTRR_ADDR_SHIFT ) & \ + L2CACHE_L2CMTRR_ADDR_MASK ) ) +#define L2CACHE_L2CMTRR_ADDR( _val ) \ + ( ( ( _val ) << L2CACHE_L2CMTRR_ADDR_SHIFT ) & \ + L2CACHE_L2CMTRR_ADDR_MASK ) + +#define L2CACHE_L2CMTRR_ACC_SHIFT 16 +#define L2CACHE_L2CMTRR_ACC_MASK 0x30000U +#define L2CACHE_L2CMTRR_ACC_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CMTRR_ACC_MASK ) >> \ + L2CACHE_L2CMTRR_ACC_SHIFT ) +#define L2CACHE_L2CMTRR_ACC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CMTRR_ACC_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CMTRR_ACC_SHIFT ) & \ + L2CACHE_L2CMTRR_ACC_MASK ) ) +#define L2CACHE_L2CMTRR_ACC( _val ) \ + ( ( ( _val ) << L2CACHE_L2CMTRR_ACC_SHIFT ) & \ + L2CACHE_L2CMTRR_ACC_MASK ) + +#define L2CACHE_L2CMTRR_MASK_SHIFT 2 +#define L2CACHE_L2CMTRR_MASK_MASK 0xfffcU +#define L2CACHE_L2CMTRR_MASK_GET( _reg ) \ + ( ( ( _reg ) & L2CACHE_L2CMTRR_MASK_MASK ) >> \ + L2CACHE_L2CMTRR_MASK_SHIFT ) +#define L2CACHE_L2CMTRR_MASK_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L2CACHE_L2CMTRR_MASK_MASK ) | \ + ( ( ( _val ) << L2CACHE_L2CMTRR_MASK_SHIFT ) & \ + L2CACHE_L2CMTRR_MASK_MASK ) ) +#define L2CACHE_L2CMTRR_MASK( _val ) \ + ( ( ( _val ) << L2CACHE_L2CMTRR_MASK_SHIFT ) & \ + L2CACHE_L2CMTRR_MASK_MASK ) + +#define L2CACHE_L2CMTRR_WP 0x2U + +#define L2CACHE_L2CMTRR_AC 0x1U + +/** @} */ + +/** + * @brief This structure defines the L2CACHE register block memory map. + */ +typedef struct l2cache { + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CC. + */ + uint32_t l2cc; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CS. + */ + uint32_t l2cs; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CFMA. + */ + uint32_t l2cfma; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CFSI. + */ + uint32_t l2cfsi; + + uint32_t reserved_10_20[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CERR. + */ + uint32_t l2cerr; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CERRA. + */ + uint32_t l2cerra; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CTCB. + */ + uint32_t l2ctcb; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CCB. + */ + uint32_t l2ccb; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CSCRUB. + */ + uint32_t l2cscrub; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CSDEL. + */ + uint32_t l2csdel; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CEINJ. + */ + uint32_t l2ceinj; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CACCC. + */ + uint32_t l2caccc; + + uint32_t reserved_40_4c[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CEINJCFG. + */ + uint32_t l2ceinjcfg; + + uint32_t reserved_50_80[ 12 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL2CACHEL2CMTRR. + */ + uint32_t l2cmtrr; +} l2cache; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_L2CACHE_REGS_H */ diff --git a/bsps/include/grlib/l4stat-regs.h b/bsps/include/grlib/l4stat-regs.h new file mode 100644 index 0000000000..971898f476 --- /dev/null +++ b/bsps/include/grlib/l4stat-regs.h @@ -0,0 +1,297 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBL4STAT + * + * @brief This header file defines the L4STAT register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/l4stat-header */ + +#ifndef _GRLIB_L4STAT_REGS_H +#define _GRLIB_L4STAT_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/l4stat */ + +/** + * @defgroup RTEMSDeviceGRLIBL4STAT L4STAT + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the L4STAT interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBL4STATCVAL Counter 0-15 value register (CVAL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L4STAT_CVAL_CVAL_SHIFT 0 +#define L4STAT_CVAL_CVAL_MASK 0xffffffffU +#define L4STAT_CVAL_CVAL_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CVAL_CVAL_MASK ) >> \ + L4STAT_CVAL_CVAL_SHIFT ) +#define L4STAT_CVAL_CVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CVAL_CVAL_MASK ) | \ + ( ( ( _val ) << L4STAT_CVAL_CVAL_SHIFT ) & \ + L4STAT_CVAL_CVAL_MASK ) ) +#define L4STAT_CVAL_CVAL( _val ) \ + ( ( ( _val ) << L4STAT_CVAL_CVAL_SHIFT ) & \ + L4STAT_CVAL_CVAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL4STATCCTRL Counter 0-15 control register (CCTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L4STAT_CCTRL_NCPU_SHIFT 28 +#define L4STAT_CCTRL_NCPU_MASK 0xf0000000U +#define L4STAT_CCTRL_NCPU_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CCTRL_NCPU_MASK ) >> \ + L4STAT_CCTRL_NCPU_SHIFT ) +#define L4STAT_CCTRL_NCPU_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CCTRL_NCPU_MASK ) | \ + ( ( ( _val ) << L4STAT_CCTRL_NCPU_SHIFT ) & \ + L4STAT_CCTRL_NCPU_MASK ) ) +#define L4STAT_CCTRL_NCPU( _val ) \ + ( ( ( _val ) << L4STAT_CCTRL_NCPU_SHIFT ) & \ + L4STAT_CCTRL_NCPU_MASK ) + +#define L4STAT_CCTRL_NCNT_SHIFT 23 +#define L4STAT_CCTRL_NCNT_MASK 0xf800000U +#define L4STAT_CCTRL_NCNT_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CCTRL_NCNT_MASK ) >> \ + L4STAT_CCTRL_NCNT_SHIFT ) +#define L4STAT_CCTRL_NCNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CCTRL_NCNT_MASK ) | \ + ( ( ( _val ) << L4STAT_CCTRL_NCNT_SHIFT ) & \ + L4STAT_CCTRL_NCNT_MASK ) ) +#define L4STAT_CCTRL_NCNT( _val ) \ + ( ( ( _val ) << L4STAT_CCTRL_NCNT_SHIFT ) & \ + L4STAT_CCTRL_NCNT_MASK ) + +#define L4STAT_CCTRL_MC 0x400000U + +#define L4STAT_CCTRL_IA 0x200000U + +#define L4STAT_CCTRL_DS 0x100000U + +#define L4STAT_CCTRL_EE 0x80000U + +#define L4STAT_CCTRL_AE 0x40000U + +#define L4STAT_CCTRL_EL 0x20000U + +#define L4STAT_CCTRL_CD 0x10000U + +#define L4STAT_CCTRL_SU_SHIFT 14 +#define L4STAT_CCTRL_SU_MASK 0xc000U +#define L4STAT_CCTRL_SU_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CCTRL_SU_MASK ) >> \ + L4STAT_CCTRL_SU_SHIFT ) +#define L4STAT_CCTRL_SU_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CCTRL_SU_MASK ) | \ + ( ( ( _val ) << L4STAT_CCTRL_SU_SHIFT ) & \ + L4STAT_CCTRL_SU_MASK ) ) +#define L4STAT_CCTRL_SU( _val ) \ + ( ( ( _val ) << L4STAT_CCTRL_SU_SHIFT ) & \ + L4STAT_CCTRL_SU_MASK ) + +#define L4STAT_CCTRL_CL 0x2000U + +#define L4STAT_CCTRL_EN 0x1000U + +#define L4STAT_CCTRL_EVENT_ID_SHIFT 4 +#define L4STAT_CCTRL_EVENT_ID_MASK 0xff0U +#define L4STAT_CCTRL_EVENT_ID_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CCTRL_EVENT_ID_MASK ) >> \ + L4STAT_CCTRL_EVENT_ID_SHIFT ) +#define L4STAT_CCTRL_EVENT_ID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CCTRL_EVENT_ID_MASK ) | \ + ( ( ( _val ) << L4STAT_CCTRL_EVENT_ID_SHIFT ) & \ + L4STAT_CCTRL_EVENT_ID_MASK ) ) +#define L4STAT_CCTRL_EVENT_ID( _val ) \ + ( ( ( _val ) << L4STAT_CCTRL_EVENT_ID_SHIFT ) & \ + L4STAT_CCTRL_EVENT_ID_MASK ) + +#define L4STAT_CCTRL_CPU_AHBM_SHIFT 0 +#define L4STAT_CCTRL_CPU_AHBM_MASK 0xfU +#define L4STAT_CCTRL_CPU_AHBM_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CCTRL_CPU_AHBM_MASK ) >> \ + L4STAT_CCTRL_CPU_AHBM_SHIFT ) +#define L4STAT_CCTRL_CPU_AHBM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CCTRL_CPU_AHBM_MASK ) | \ + ( ( ( _val ) << L4STAT_CCTRL_CPU_AHBM_SHIFT ) & \ + L4STAT_CCTRL_CPU_AHBM_MASK ) ) +#define L4STAT_CCTRL_CPU_AHBM( _val ) \ + ( ( ( _val ) << L4STAT_CCTRL_CPU_AHBM_SHIFT ) & \ + L4STAT_CCTRL_CPU_AHBM_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL4STATCSVAL \ + * Counter 0-15 max/latch register (CSVAL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L4STAT_CSVAL_CSVAL_SHIFT 0 +#define L4STAT_CSVAL_CSVAL_MASK 0xffffffffU +#define L4STAT_CSVAL_CSVAL_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_CSVAL_CSVAL_MASK ) >> \ + L4STAT_CSVAL_CSVAL_SHIFT ) +#define L4STAT_CSVAL_CSVAL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_CSVAL_CSVAL_MASK ) | \ + ( ( ( _val ) << L4STAT_CSVAL_CSVAL_SHIFT ) & \ + L4STAT_CSVAL_CSVAL_MASK ) ) +#define L4STAT_CSVAL_CSVAL( _val ) \ + ( ( ( _val ) << L4STAT_CSVAL_CSVAL_SHIFT ) & \ + L4STAT_CSVAL_CSVAL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBL4STATTSTAMP Timestamp register (TSTAMP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define L4STAT_TSTAMP_TSTAMP_SHIFT 0 +#define L4STAT_TSTAMP_TSTAMP_MASK 0xffffffffU +#define L4STAT_TSTAMP_TSTAMP_GET( _reg ) \ + ( ( ( _reg ) & L4STAT_TSTAMP_TSTAMP_MASK ) >> \ + L4STAT_TSTAMP_TSTAMP_SHIFT ) +#define L4STAT_TSTAMP_TSTAMP_SET( _reg, _val ) \ + ( ( ( _reg ) & ~L4STAT_TSTAMP_TSTAMP_MASK ) | \ + ( ( ( _val ) << L4STAT_TSTAMP_TSTAMP_SHIFT ) & \ + L4STAT_TSTAMP_TSTAMP_MASK ) ) +#define L4STAT_TSTAMP_TSTAMP( _val ) \ + ( ( ( _val ) << L4STAT_TSTAMP_TSTAMP_SHIFT ) & \ + L4STAT_TSTAMP_TSTAMP_MASK ) + +/** @} */ + +/** + * @brief This structure defines the L4STAT register block memory map. + */ +typedef struct l4stat { + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCVAL. + */ + uint32_t cval_0; + + uint32_t reserved_4_3c[ 14 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCVAL. + */ + uint32_t cval_1; + + uint32_t reserved_40_80[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCCTRL. + */ + uint32_t cctrl_0; + + uint32_t reserved_84_cc[ 18 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCCTRL. + */ + uint32_t cctrl_1; + + uint32_t reserved_d0_100[ 12 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCSVAL. + */ + uint32_t csval_0; + + uint32_t reserved_104_13c[ 14 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATCSVAL. + */ + uint32_t csval_1; + + uint32_t reserved_140_180[ 16 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBL4STATTSTAMP. + */ + uint32_t tstamp; +} l4stat; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_L4STAT_REGS_H */ diff --git a/bsps/include/grlib/l4stat.h b/bsps/include/grlib/l4stat.h index 94fbe4b095..ddbde084ce 100644 --- a/bsps/include/grlib/l4stat.h +++ b/bsps/include/grlib/l4stat.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * L4STAT APB-Register Driver. * * COPYRIGHT (c) 2017. * Cobham Gaisler AB. * - * 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. + * 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 __L4STAT_H__ diff --git a/bsps/include/grlib/mctrl.h b/bsps/include/grlib/mctrl.h index db449cb11a..e2d7eadb43 100644 --- a/bsps/include/grlib/mctrl.h +++ b/bsps/include/grlib/mctrl.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Memory Controller driver interface * * COPYRIGHT (c) 2015. * Cobham Gaisler. * - * 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. + * 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 __MCTRL_H__ diff --git a/bsps/include/grlib/memscrub-regs.h b/bsps/include/grlib/memscrub-regs.h new file mode 100644 index 0000000000..bfeacc7d20 --- /dev/null +++ b/bsps/include/grlib/memscrub-regs.h @@ -0,0 +1,568 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBMEMSCRUB + * + * @brief This header file defines the MEMSCRUB register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/memscrub-header */ + +#ifndef _GRLIB_MEMSCRUB_REGS_H +#define _GRLIB_MEMSCRUB_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/memscrub */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUB MEMSCRUB + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the MEMSCRUB interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBAHBS AHB Status register (AHBS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_AHBS_CECNT_SHIFT 22 +#define MEMSCRUB_AHBS_CECNT_MASK 0xffc00000U +#define MEMSCRUB_AHBS_CECNT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBS_CECNT_MASK ) >> \ + MEMSCRUB_AHBS_CECNT_SHIFT ) +#define MEMSCRUB_AHBS_CECNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBS_CECNT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBS_CECNT_SHIFT ) & \ + MEMSCRUB_AHBS_CECNT_MASK ) ) +#define MEMSCRUB_AHBS_CECNT( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBS_CECNT_SHIFT ) & \ + MEMSCRUB_AHBS_CECNT_MASK ) + +#define MEMSCRUB_AHBS_UECNT_SHIFT 14 +#define MEMSCRUB_AHBS_UECNT_MASK 0x3fc000U +#define MEMSCRUB_AHBS_UECNT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBS_UECNT_MASK ) >> \ + MEMSCRUB_AHBS_UECNT_SHIFT ) +#define MEMSCRUB_AHBS_UECNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBS_UECNT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBS_UECNT_SHIFT ) & \ + MEMSCRUB_AHBS_UECNT_MASK ) ) +#define MEMSCRUB_AHBS_UECNT( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBS_UECNT_SHIFT ) & \ + MEMSCRUB_AHBS_UECNT_MASK ) + +#define MEMSCRUB_AHBS_DONE 0x2000U + +#define MEMSCRUB_AHBS_SEC 0x800U + +#define MEMSCRUB_AHBS_SBC 0x400U + +#define MEMSCRUB_AHBS_CE 0x200U + +#define MEMSCRUB_AHBS_NE 0x100U + +#define MEMSCRUB_AHBS_HWRITE 0x80U + +#define MEMSCRUB_AHBS_HMASTER_SHIFT 3 +#define MEMSCRUB_AHBS_HMASTER_MASK 0x78U +#define MEMSCRUB_AHBS_HMASTER_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBS_HMASTER_MASK ) >> \ + MEMSCRUB_AHBS_HMASTER_SHIFT ) +#define MEMSCRUB_AHBS_HMASTER_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBS_HMASTER_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBS_HMASTER_SHIFT ) & \ + MEMSCRUB_AHBS_HMASTER_MASK ) ) +#define MEMSCRUB_AHBS_HMASTER( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBS_HMASTER_SHIFT ) & \ + MEMSCRUB_AHBS_HMASTER_MASK ) + +#define MEMSCRUB_AHBS_HSIZE_SHIFT 0 +#define MEMSCRUB_AHBS_HSIZE_MASK 0x7U +#define MEMSCRUB_AHBS_HSIZE_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBS_HSIZE_MASK ) >> \ + MEMSCRUB_AHBS_HSIZE_SHIFT ) +#define MEMSCRUB_AHBS_HSIZE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBS_HSIZE_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBS_HSIZE_SHIFT ) & \ + MEMSCRUB_AHBS_HSIZE_MASK ) ) +#define MEMSCRUB_AHBS_HSIZE( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBS_HSIZE_SHIFT ) & \ + MEMSCRUB_AHBS_HSIZE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBAHBFAR \ + * AHB Failing Address Register (AHBFAR) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_SHIFT 0 +#define MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_MASK 0xffffffffU +#define MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_MASK ) >> \ + MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_SHIFT ) +#define MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_SHIFT ) & \ + MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_MASK ) ) +#define MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_SHIFT ) & \ + MEMSCRUB_AHBFAR_AHB_FAILING_ADDRESS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBAHBERC \ + * AHB Error configuration register (AHBERC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_AHBERC_CECNTT_SHIFT 22 +#define MEMSCRUB_AHBERC_CECNTT_MASK 0xffc00000U +#define MEMSCRUB_AHBERC_CECNTT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBERC_CECNTT_MASK ) >> \ + MEMSCRUB_AHBERC_CECNTT_SHIFT ) +#define MEMSCRUB_AHBERC_CECNTT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBERC_CECNTT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBERC_CECNTT_SHIFT ) & \ + MEMSCRUB_AHBERC_CECNTT_MASK ) ) +#define MEMSCRUB_AHBERC_CECNTT( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBERC_CECNTT_SHIFT ) & \ + MEMSCRUB_AHBERC_CECNTT_MASK ) + +#define MEMSCRUB_AHBERC_UECNTT_SHIFT 14 +#define MEMSCRUB_AHBERC_UECNTT_MASK 0x3fc000U +#define MEMSCRUB_AHBERC_UECNTT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_AHBERC_UECNTT_MASK ) >> \ + MEMSCRUB_AHBERC_UECNTT_SHIFT ) +#define MEMSCRUB_AHBERC_UECNTT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_AHBERC_UECNTT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_AHBERC_UECNTT_SHIFT ) & \ + MEMSCRUB_AHBERC_UECNTT_MASK ) ) +#define MEMSCRUB_AHBERC_UECNTT( _val ) \ + ( ( ( _val ) << MEMSCRUB_AHBERC_UECNTT_SHIFT ) & \ + MEMSCRUB_AHBERC_UECNTT_MASK ) + +#define MEMSCRUB_AHBERC_CECTE 0x2U + +#define MEMSCRUB_AHBERC_UECTE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBSTAT Status register (STAT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_STAT_RUNCOUNT_SHIFT 22 +#define MEMSCRUB_STAT_RUNCOUNT_MASK 0xffc00000U +#define MEMSCRUB_STAT_RUNCOUNT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_STAT_RUNCOUNT_MASK ) >> \ + MEMSCRUB_STAT_RUNCOUNT_SHIFT ) +#define MEMSCRUB_STAT_RUNCOUNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_STAT_RUNCOUNT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_STAT_RUNCOUNT_SHIFT ) & \ + MEMSCRUB_STAT_RUNCOUNT_MASK ) ) +#define MEMSCRUB_STAT_RUNCOUNT( _val ) \ + ( ( ( _val ) << MEMSCRUB_STAT_RUNCOUNT_SHIFT ) & \ + MEMSCRUB_STAT_RUNCOUNT_MASK ) + +#define MEMSCRUB_STAT_BLKCOUNT_SHIFT 14 +#define MEMSCRUB_STAT_BLKCOUNT_MASK 0x3fc000U +#define MEMSCRUB_STAT_BLKCOUNT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_STAT_BLKCOUNT_MASK ) >> \ + MEMSCRUB_STAT_BLKCOUNT_SHIFT ) +#define MEMSCRUB_STAT_BLKCOUNT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_STAT_BLKCOUNT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_STAT_BLKCOUNT_SHIFT ) & \ + MEMSCRUB_STAT_BLKCOUNT_MASK ) ) +#define MEMSCRUB_STAT_BLKCOUNT( _val ) \ + ( ( ( _val ) << MEMSCRUB_STAT_BLKCOUNT_SHIFT ) & \ + MEMSCRUB_STAT_BLKCOUNT_MASK ) + +#define MEMSCRUB_STAT_DONE 0x2000U + +#define MEMSCRUB_STAT_BURSTLEN_SHIFT 1 +#define MEMSCRUB_STAT_BURSTLEN_MASK 0x1eU +#define MEMSCRUB_STAT_BURSTLEN_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_STAT_BURSTLEN_MASK ) >> \ + MEMSCRUB_STAT_BURSTLEN_SHIFT ) +#define MEMSCRUB_STAT_BURSTLEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_STAT_BURSTLEN_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_STAT_BURSTLEN_SHIFT ) & \ + MEMSCRUB_STAT_BURSTLEN_MASK ) ) +#define MEMSCRUB_STAT_BURSTLEN( _val ) \ + ( ( ( _val ) << MEMSCRUB_STAT_BURSTLEN_SHIFT ) & \ + MEMSCRUB_STAT_BURSTLEN_MASK ) + +#define MEMSCRUB_STAT_ACTIVE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBCONFIG Configuration register (CONFIG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_CONFIG_DELAY_SHIFT 8 +#define MEMSCRUB_CONFIG_DELAY_MASK 0xff00U +#define MEMSCRUB_CONFIG_DELAY_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_CONFIG_DELAY_MASK ) >> \ + MEMSCRUB_CONFIG_DELAY_SHIFT ) +#define MEMSCRUB_CONFIG_DELAY_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_CONFIG_DELAY_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_CONFIG_DELAY_SHIFT ) & \ + MEMSCRUB_CONFIG_DELAY_MASK ) ) +#define MEMSCRUB_CONFIG_DELAY( _val ) \ + ( ( ( _val ) << MEMSCRUB_CONFIG_DELAY_SHIFT ) & \ + MEMSCRUB_CONFIG_DELAY_MASK ) + +#define MEMSCRUB_CONFIG_IRQD 0x80U + +#define MEMSCRUB_CONFIG_SERA 0x20U + +#define MEMSCRUB_CONFIG_LOOP 0x10U + +#define MEMSCRUB_CONFIG_MODE_SHIFT 2 +#define MEMSCRUB_CONFIG_MODE_MASK 0xcU +#define MEMSCRUB_CONFIG_MODE_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_CONFIG_MODE_MASK ) >> \ + MEMSCRUB_CONFIG_MODE_SHIFT ) +#define MEMSCRUB_CONFIG_MODE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_CONFIG_MODE_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_CONFIG_MODE_SHIFT ) & \ + MEMSCRUB_CONFIG_MODE_MASK ) ) +#define MEMSCRUB_CONFIG_MODE( _val ) \ + ( ( ( _val ) << MEMSCRUB_CONFIG_MODE_SHIFT ) & \ + MEMSCRUB_CONFIG_MODE_MASK ) + +#define MEMSCRUB_CONFIG_ES 0x2U + +#define MEMSCRUB_CONFIG_SCEN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBRANGEL Range low address register (RANGEL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_RANGEL_RLADDR_SHIFT 0 +#define MEMSCRUB_RANGEL_RLADDR_MASK 0xffffffffU +#define MEMSCRUB_RANGEL_RLADDR_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_RANGEL_RLADDR_MASK ) >> \ + MEMSCRUB_RANGEL_RLADDR_SHIFT ) +#define MEMSCRUB_RANGEL_RLADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_RANGEL_RLADDR_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_RANGEL_RLADDR_SHIFT ) & \ + MEMSCRUB_RANGEL_RLADDR_MASK ) ) +#define MEMSCRUB_RANGEL_RLADDR( _val ) \ + ( ( ( _val ) << MEMSCRUB_RANGEL_RLADDR_SHIFT ) & \ + MEMSCRUB_RANGEL_RLADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBRANGEH \ + * Range high address register (RANGEH) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_RANGEH_RHADDR_SHIFT 0 +#define MEMSCRUB_RANGEH_RHADDR_MASK 0xffffffffU +#define MEMSCRUB_RANGEH_RHADDR_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_RANGEH_RHADDR_MASK ) >> \ + MEMSCRUB_RANGEH_RHADDR_SHIFT ) +#define MEMSCRUB_RANGEH_RHADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_RANGEH_RHADDR_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_RANGEH_RHADDR_SHIFT ) & \ + MEMSCRUB_RANGEH_RHADDR_MASK ) ) +#define MEMSCRUB_RANGEH_RHADDR( _val ) \ + ( ( ( _val ) << MEMSCRUB_RANGEH_RHADDR_SHIFT ) & \ + MEMSCRUB_RANGEH_RHADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBPOS Position register (POS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_POS_POSITION_SHIFT 0 +#define MEMSCRUB_POS_POSITION_MASK 0xffffffffU +#define MEMSCRUB_POS_POSITION_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_POS_POSITION_MASK ) >> \ + MEMSCRUB_POS_POSITION_SHIFT ) +#define MEMSCRUB_POS_POSITION_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_POS_POSITION_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_POS_POSITION_SHIFT ) & \ + MEMSCRUB_POS_POSITION_MASK ) ) +#define MEMSCRUB_POS_POSITION( _val ) \ + ( ( ( _val ) << MEMSCRUB_POS_POSITION_SHIFT ) & \ + MEMSCRUB_POS_POSITION_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBETHRES Error threshold register (ETHRES) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_ETHRES_RECT_SHIFT 22 +#define MEMSCRUB_ETHRES_RECT_MASK 0xffc00000U +#define MEMSCRUB_ETHRES_RECT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_ETHRES_RECT_MASK ) >> \ + MEMSCRUB_ETHRES_RECT_SHIFT ) +#define MEMSCRUB_ETHRES_RECT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_ETHRES_RECT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_ETHRES_RECT_SHIFT ) & \ + MEMSCRUB_ETHRES_RECT_MASK ) ) +#define MEMSCRUB_ETHRES_RECT( _val ) \ + ( ( ( _val ) << MEMSCRUB_ETHRES_RECT_SHIFT ) & \ + MEMSCRUB_ETHRES_RECT_MASK ) + +#define MEMSCRUB_ETHRES_BECT_SHIFT 14 +#define MEMSCRUB_ETHRES_BECT_MASK 0x3fc000U +#define MEMSCRUB_ETHRES_BECT_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_ETHRES_BECT_MASK ) >> \ + MEMSCRUB_ETHRES_BECT_SHIFT ) +#define MEMSCRUB_ETHRES_BECT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_ETHRES_BECT_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_ETHRES_BECT_SHIFT ) & \ + MEMSCRUB_ETHRES_BECT_MASK ) ) +#define MEMSCRUB_ETHRES_BECT( _val ) \ + ( ( ( _val ) << MEMSCRUB_ETHRES_BECT_SHIFT ) & \ + MEMSCRUB_ETHRES_BECT_MASK ) + +#define MEMSCRUB_ETHRES_RECTE 0x2U + +#define MEMSCRUB_ETHRES_BECTE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBINIT Initialisation data register (INIT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_INIT_DATA_SHIFT 0 +#define MEMSCRUB_INIT_DATA_MASK 0xffffffffU +#define MEMSCRUB_INIT_DATA_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_INIT_DATA_MASK ) >> \ + MEMSCRUB_INIT_DATA_SHIFT ) +#define MEMSCRUB_INIT_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_INIT_DATA_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_INIT_DATA_SHIFT ) & \ + MEMSCRUB_INIT_DATA_MASK ) ) +#define MEMSCRUB_INIT_DATA( _val ) \ + ( ( ( _val ) << MEMSCRUB_INIT_DATA_SHIFT ) & \ + MEMSCRUB_INIT_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBRANGEL2 \ + * Second range low address register (RANGEL2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_RANGEL2_RLADDR_SHIFT 0 +#define MEMSCRUB_RANGEL2_RLADDR_MASK 0xffffffffU +#define MEMSCRUB_RANGEL2_RLADDR_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_RANGEL2_RLADDR_MASK ) >> \ + MEMSCRUB_RANGEL2_RLADDR_SHIFT ) +#define MEMSCRUB_RANGEL2_RLADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_RANGEL2_RLADDR_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_RANGEL2_RLADDR_SHIFT ) & \ + MEMSCRUB_RANGEL2_RLADDR_MASK ) ) +#define MEMSCRUB_RANGEL2_RLADDR( _val ) \ + ( ( ( _val ) << MEMSCRUB_RANGEL2_RLADDR_SHIFT ) & \ + MEMSCRUB_RANGEL2_RLADDR_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMEMSCRUBRANGEH2 \ + * Second range high address register (RANGEH2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MEMSCRUB_RANGEH2_RHADDR_SHIFT 0 +#define MEMSCRUB_RANGEH2_RHADDR_MASK 0xffffffffU +#define MEMSCRUB_RANGEH2_RHADDR_GET( _reg ) \ + ( ( ( _reg ) & MEMSCRUB_RANGEH2_RHADDR_MASK ) >> \ + MEMSCRUB_RANGEH2_RHADDR_SHIFT ) +#define MEMSCRUB_RANGEH2_RHADDR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MEMSCRUB_RANGEH2_RHADDR_MASK ) | \ + ( ( ( _val ) << MEMSCRUB_RANGEH2_RHADDR_SHIFT ) & \ + MEMSCRUB_RANGEH2_RHADDR_MASK ) ) +#define MEMSCRUB_RANGEH2_RHADDR( _val ) \ + ( ( ( _val ) << MEMSCRUB_RANGEH2_RHADDR_SHIFT ) & \ + MEMSCRUB_RANGEH2_RHADDR_MASK ) + +/** @} */ + +/** + * @brief This structure defines the MEMSCRUB register block memory map. + */ +typedef struct memscrub { + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBAHBS. + */ + uint32_t ahbs; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBAHBFAR. + */ + uint32_t ahbfar; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBAHBERC. + */ + uint32_t ahberc; + + uint32_t reserved_c_10; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBSTAT. + */ + uint32_t stat; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBCONFIG. + */ + uint32_t config; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBRANGEL. + */ + uint32_t rangel; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBRANGEH. + */ + uint32_t rangeh; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBPOS. + */ + uint32_t pos; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBETHRES. + */ + uint32_t ethres; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBINIT. + */ + uint32_t init; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBRANGEL2. + */ + uint32_t rangel2; + + /** + * @brief See @ref RTEMSDeviceGRLIBMEMSCRUBRANGEH2. + */ + uint32_t rangeh2; +} memscrub; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_MEMSCRUB_REGS_H */ diff --git a/bsps/include/grlib/memscrub.h b/bsps/include/grlib/memscrub.h index 1e55d8e127..84919927c3 100644 --- a/bsps/include/grlib/memscrub.h +++ b/bsps/include/grlib/memscrub.h @@ -1,11 +1,30 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* MEMSCRUB driver interface * * COPYRIGHT (c) 2017. * Cobham Gaisler AB. * - * 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. + * 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 __MEMSCRUB_H__ diff --git a/bsps/include/grlib/mmctrl-regs.h b/bsps/include/grlib/mmctrl-regs.h new file mode 100644 index 0000000000..3e860ef96a --- /dev/null +++ b/bsps/include/grlib/mmctrl-regs.h @@ -0,0 +1,434 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBMMCTRL + * + * @brief This header file defines the MMCTRL register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/mmctrl-header */ + +#ifndef _GRLIB_MMCTRL_REGS_H +#define _GRLIB_MMCTRL_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/mmctrl */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRL MMCTRL + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the MMCTRL interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLSDCFG1 \ + * SDRAM configuration register 1 (SDCFG1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_SDCFG1_RF 0x80000000U + +#define MMCTRL_SDCFG1_TRP 0x40000000U + +#define MMCTRL_SDCFG1_TRFC_SHIFT 27 +#define MMCTRL_SDCFG1_TRFC_MASK 0x38000000U +#define MMCTRL_SDCFG1_TRFC_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_SDCFG1_TRFC_MASK ) >> \ + MMCTRL_SDCFG1_TRFC_SHIFT ) +#define MMCTRL_SDCFG1_TRFC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_SDCFG1_TRFC_MASK ) | \ + ( ( ( _val ) << MMCTRL_SDCFG1_TRFC_SHIFT ) & \ + MMCTRL_SDCFG1_TRFC_MASK ) ) +#define MMCTRL_SDCFG1_TRFC( _val ) \ + ( ( ( _val ) << MMCTRL_SDCFG1_TRFC_SHIFT ) & \ + MMCTRL_SDCFG1_TRFC_MASK ) + +#define MMCTRL_SDCFG1_TC 0x4000000U + +#define MMCTRL_SDCFG1_BANKSZ_SHIFT 23 +#define MMCTRL_SDCFG1_BANKSZ_MASK 0x3800000U +#define MMCTRL_SDCFG1_BANKSZ_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_SDCFG1_BANKSZ_MASK ) >> \ + MMCTRL_SDCFG1_BANKSZ_SHIFT ) +#define MMCTRL_SDCFG1_BANKSZ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_SDCFG1_BANKSZ_MASK ) | \ + ( ( ( _val ) << MMCTRL_SDCFG1_BANKSZ_SHIFT ) & \ + MMCTRL_SDCFG1_BANKSZ_MASK ) ) +#define MMCTRL_SDCFG1_BANKSZ( _val ) \ + ( ( ( _val ) << MMCTRL_SDCFG1_BANKSZ_SHIFT ) & \ + MMCTRL_SDCFG1_BANKSZ_MASK ) + +#define MMCTRL_SDCFG1_COLSZ_SHIFT 21 +#define MMCTRL_SDCFG1_COLSZ_MASK 0x600000U +#define MMCTRL_SDCFG1_COLSZ_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_SDCFG1_COLSZ_MASK ) >> \ + MMCTRL_SDCFG1_COLSZ_SHIFT ) +#define MMCTRL_SDCFG1_COLSZ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_SDCFG1_COLSZ_MASK ) | \ + ( ( ( _val ) << MMCTRL_SDCFG1_COLSZ_SHIFT ) & \ + MMCTRL_SDCFG1_COLSZ_MASK ) ) +#define MMCTRL_SDCFG1_COLSZ( _val ) \ + ( ( ( _val ) << MMCTRL_SDCFG1_COLSZ_SHIFT ) & \ + MMCTRL_SDCFG1_COLSZ_MASK ) + +#define MMCTRL_SDCFG1_COMMAND_SHIFT 18 +#define MMCTRL_SDCFG1_COMMAND_MASK 0x1c0000U +#define MMCTRL_SDCFG1_COMMAND_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_SDCFG1_COMMAND_MASK ) >> \ + MMCTRL_SDCFG1_COMMAND_SHIFT ) +#define MMCTRL_SDCFG1_COMMAND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_SDCFG1_COMMAND_MASK ) | \ + ( ( ( _val ) << MMCTRL_SDCFG1_COMMAND_SHIFT ) & \ + MMCTRL_SDCFG1_COMMAND_MASK ) ) +#define MMCTRL_SDCFG1_COMMAND( _val ) \ + ( ( ( _val ) << MMCTRL_SDCFG1_COMMAND_SHIFT ) & \ + MMCTRL_SDCFG1_COMMAND_MASK ) + +#define MMCTRL_SDCFG1_MS 0x10000U + +#define MMCTRL_SDCFG1_64 0x8000U + +#define MMCTRL_SDCFG1_RFLOAD_SHIFT 0 +#define MMCTRL_SDCFG1_RFLOAD_MASK 0x7fffU +#define MMCTRL_SDCFG1_RFLOAD_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_SDCFG1_RFLOAD_MASK ) >> \ + MMCTRL_SDCFG1_RFLOAD_SHIFT ) +#define MMCTRL_SDCFG1_RFLOAD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_SDCFG1_RFLOAD_MASK ) | \ + ( ( ( _val ) << MMCTRL_SDCFG1_RFLOAD_SHIFT ) & \ + MMCTRL_SDCFG1_RFLOAD_MASK ) ) +#define MMCTRL_SDCFG1_RFLOAD( _val ) \ + ( ( ( _val ) << MMCTRL_SDCFG1_RFLOAD_SHIFT ) & \ + MMCTRL_SDCFG1_RFLOAD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLSDCFG2 \ + * SDRAM configuration register 2 (SDCFG2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_SDCFG2_CE 0x40000000U + +#define MMCTRL_SDCFG2_EN2T 0x8000U + +#define MMCTRL_SDCFG2_DCS 0x4000U + +#define MMCTRL_SDCFG2_BPARK 0x2000U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLMUXCFG Mux configuration register (MUXCFG) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_MUXCFG_ERRLOC_SHIFT 20 +#define MMCTRL_MUXCFG_ERRLOC_MASK 0xfff00000U +#define MMCTRL_MUXCFG_ERRLOC_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_MUXCFG_ERRLOC_MASK ) >> \ + MMCTRL_MUXCFG_ERRLOC_SHIFT ) +#define MMCTRL_MUXCFG_ERRLOC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_MUXCFG_ERRLOC_MASK ) | \ + ( ( ( _val ) << MMCTRL_MUXCFG_ERRLOC_SHIFT ) & \ + MMCTRL_MUXCFG_ERRLOC_MASK ) ) +#define MMCTRL_MUXCFG_ERRLOC( _val ) \ + ( ( ( _val ) << MMCTRL_MUXCFG_ERRLOC_SHIFT ) & \ + MMCTRL_MUXCFG_ERRLOC_MASK ) + +#define MMCTRL_MUXCFG_DDERR 0x80000U + +#define MMCTRL_MUXCFG_DWIDTH_SHIFT 16 +#define MMCTRL_MUXCFG_DWIDTH_MASK 0x70000U +#define MMCTRL_MUXCFG_DWIDTH_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_MUXCFG_DWIDTH_MASK ) >> \ + MMCTRL_MUXCFG_DWIDTH_SHIFT ) +#define MMCTRL_MUXCFG_DWIDTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_MUXCFG_DWIDTH_MASK ) | \ + ( ( ( _val ) << MMCTRL_MUXCFG_DWIDTH_SHIFT ) & \ + MMCTRL_MUXCFG_DWIDTH_MASK ) ) +#define MMCTRL_MUXCFG_DWIDTH( _val ) \ + ( ( ( _val ) << MMCTRL_MUXCFG_DWIDTH_SHIFT ) & \ + MMCTRL_MUXCFG_DWIDTH_MASK ) + +#define MMCTRL_MUXCFG_BEID_SHIFT 12 +#define MMCTRL_MUXCFG_BEID_MASK 0xf000U +#define MMCTRL_MUXCFG_BEID_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_MUXCFG_BEID_MASK ) >> \ + MMCTRL_MUXCFG_BEID_SHIFT ) +#define MMCTRL_MUXCFG_BEID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_MUXCFG_BEID_MASK ) | \ + ( ( ( _val ) << MMCTRL_MUXCFG_BEID_SHIFT ) & \ + MMCTRL_MUXCFG_BEID_MASK ) ) +#define MMCTRL_MUXCFG_BEID( _val ) \ + ( ( ( _val ) << MMCTRL_MUXCFG_BEID_SHIFT ) & \ + MMCTRL_MUXCFG_BEID_MASK ) + +#define MMCTRL_MUXCFG_DATAMUX_SHIFT 5 +#define MMCTRL_MUXCFG_DATAMUX_MASK 0xe0U +#define MMCTRL_MUXCFG_DATAMUX_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_MUXCFG_DATAMUX_MASK ) >> \ + MMCTRL_MUXCFG_DATAMUX_SHIFT ) +#define MMCTRL_MUXCFG_DATAMUX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_MUXCFG_DATAMUX_MASK ) | \ + ( ( ( _val ) << MMCTRL_MUXCFG_DATAMUX_SHIFT ) & \ + MMCTRL_MUXCFG_DATAMUX_MASK ) ) +#define MMCTRL_MUXCFG_DATAMUX( _val ) \ + ( ( ( _val ) << MMCTRL_MUXCFG_DATAMUX_SHIFT ) & \ + MMCTRL_MUXCFG_DATAMUX_MASK ) + +#define MMCTRL_MUXCFG_CEN 0x10U + +#define MMCTRL_MUXCFG_BAUPD 0x8U + +#define MMCTRL_MUXCFG_BAEN 0x4U + +#define MMCTRL_MUXCFG_CODE 0x2U + +#define MMCTRL_MUXCFG_EDEN 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLFTDA FT diagnostic address register (FTDA) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_FTDA_FTDA_SHIFT 2 +#define MMCTRL_FTDA_FTDA_MASK 0xfffffffcU +#define MMCTRL_FTDA_FTDA_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDA_FTDA_MASK ) >> \ + MMCTRL_FTDA_FTDA_SHIFT ) +#define MMCTRL_FTDA_FTDA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDA_FTDA_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDA_FTDA_SHIFT ) & \ + MMCTRL_FTDA_FTDA_MASK ) ) +#define MMCTRL_FTDA_FTDA( _val ) \ + ( ( ( _val ) << MMCTRL_FTDA_FTDA_SHIFT ) & \ + MMCTRL_FTDA_FTDA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLFTDC FT diagnostic checkbits register (FTDC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_FTDC_CBD_SHIFT 24 +#define MMCTRL_FTDC_CBD_MASK 0xff000000U +#define MMCTRL_FTDC_CBD_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDC_CBD_MASK ) >> \ + MMCTRL_FTDC_CBD_SHIFT ) +#define MMCTRL_FTDC_CBD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDC_CBD_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDC_CBD_SHIFT ) & \ + MMCTRL_FTDC_CBD_MASK ) ) +#define MMCTRL_FTDC_CBD( _val ) \ + ( ( ( _val ) << MMCTRL_FTDC_CBD_SHIFT ) & \ + MMCTRL_FTDC_CBD_MASK ) + +#define MMCTRL_FTDC_CBC_SHIFT 16 +#define MMCTRL_FTDC_CBC_MASK 0xff0000U +#define MMCTRL_FTDC_CBC_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDC_CBC_MASK ) >> \ + MMCTRL_FTDC_CBC_SHIFT ) +#define MMCTRL_FTDC_CBC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDC_CBC_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDC_CBC_SHIFT ) & \ + MMCTRL_FTDC_CBC_MASK ) ) +#define MMCTRL_FTDC_CBC( _val ) \ + ( ( ( _val ) << MMCTRL_FTDC_CBC_SHIFT ) & \ + MMCTRL_FTDC_CBC_MASK ) + +#define MMCTRL_FTDC_CBB_SHIFT 8 +#define MMCTRL_FTDC_CBB_MASK 0xff00U +#define MMCTRL_FTDC_CBB_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDC_CBB_MASK ) >> \ + MMCTRL_FTDC_CBB_SHIFT ) +#define MMCTRL_FTDC_CBB_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDC_CBB_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDC_CBB_SHIFT ) & \ + MMCTRL_FTDC_CBB_MASK ) ) +#define MMCTRL_FTDC_CBB( _val ) \ + ( ( ( _val ) << MMCTRL_FTDC_CBB_SHIFT ) & \ + MMCTRL_FTDC_CBB_MASK ) + +#define MMCTRL_FTDC_CBA_SHIFT 0 +#define MMCTRL_FTDC_CBA_MASK 0xffU +#define MMCTRL_FTDC_CBA_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDC_CBA_MASK ) >> \ + MMCTRL_FTDC_CBA_SHIFT ) +#define MMCTRL_FTDC_CBA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDC_CBA_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDC_CBA_SHIFT ) & \ + MMCTRL_FTDC_CBA_MASK ) ) +#define MMCTRL_FTDC_CBA( _val ) \ + ( ( ( _val ) << MMCTRL_FTDC_CBA_SHIFT ) & \ + MMCTRL_FTDC_CBA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLFTDD FT diagnostic data register (FTDD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_FTDD_DATA_SHIFT 0 +#define MMCTRL_FTDD_DATA_MASK 0xffffffffU +#define MMCTRL_FTDD_DATA_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTDD_DATA_MASK ) >> \ + MMCTRL_FTDD_DATA_SHIFT ) +#define MMCTRL_FTDD_DATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTDD_DATA_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTDD_DATA_SHIFT ) & \ + MMCTRL_FTDD_DATA_MASK ) ) +#define MMCTRL_FTDD_DATA( _val ) \ + ( ( ( _val ) << MMCTRL_FTDD_DATA_SHIFT ) & \ + MMCTRL_FTDD_DATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBMMCTRLFTBND FT boundary address register (FTBND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define MMCTRL_FTBND_FTBND_31_3_SHIFT 3 +#define MMCTRL_FTBND_FTBND_31_3_MASK 0xfffffff8U +#define MMCTRL_FTBND_FTBND_31_3_GET( _reg ) \ + ( ( ( _reg ) & MMCTRL_FTBND_FTBND_31_3_MASK ) >> \ + MMCTRL_FTBND_FTBND_31_3_SHIFT ) +#define MMCTRL_FTBND_FTBND_31_3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~MMCTRL_FTBND_FTBND_31_3_MASK ) | \ + ( ( ( _val ) << MMCTRL_FTBND_FTBND_31_3_SHIFT ) & \ + MMCTRL_FTBND_FTBND_31_3_MASK ) ) +#define MMCTRL_FTBND_FTBND_31_3( _val ) \ + ( ( ( _val ) << MMCTRL_FTBND_FTBND_31_3_SHIFT ) & \ + MMCTRL_FTBND_FTBND_31_3_MASK ) + +/** @} */ + +/** + * @brief This structure defines the MMCTRL register block memory map. + */ +typedef struct mmctrl { + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLSDCFG1. + */ + uint32_t sdcfg1; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLSDCFG2. + */ + uint32_t sdcfg2; + + uint32_t reserved_8_20[ 6 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLMUXCFG. + */ + uint32_t muxcfg; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLFTDA. + */ + uint32_t ftda; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLFTDC. + */ + uint32_t ftdc; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLFTDD. + */ + uint32_t ftdd; + + /** + * @brief See @ref RTEMSDeviceGRLIBMMCTRLFTBND. + */ + uint32_t ftbnd; +} mmctrl; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_MMCTRL_REGS_H */ diff --git a/bsps/include/grlib/occan.h b/bsps/include/grlib/occan.h index 1112a3e8dc..ea851b3fad 100644 --- a/bsps/include/grlib/occan.h +++ b/bsps/include/grlib/occan.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * @ingroup can @@ -8,9 +10,26 @@ * COPYRIGHT (c) 2007. * Cobham Gaisler AB. * - * 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. + * 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 __OCCAN_DRIVER_H__ diff --git a/bsps/include/grlib/pcif.h b/bsps/include/grlib/pcif.h index 0221fcdd50..0875db86e7 100644 --- a/bsps/include/grlib/pcif.h +++ b/bsps/include/grlib/pcif.h @@ -1,3 +1,32 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/* + * COPYRIGHT (c) 2015. + * Cobham Gaisler. + * + * 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 __PCIF_H__ #define __PCIF_H__ diff --git a/bsps/include/grlib/satcan.h b/bsps/include/grlib/satcan.h index ab9f5e0cd4..229b1fd099 100644 --- a/bsps/include/grlib/satcan.h +++ b/bsps/include/grlib/satcan.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Header file for RTEMS SATCAN FPGA driver * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __SATCAN_H__ diff --git a/bsps/include/grlib/spictrl-regs.h b/bsps/include/grlib/spictrl-regs.h new file mode 100644 index 0000000000..c70f7545b1 --- /dev/null +++ b/bsps/include/grlib/spictrl-regs.h @@ -0,0 +1,464 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBSPICTRL + * + * @brief This header file defines the SPICTRL register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/spictrl-header */ + +#ifndef _GRLIB_SPICTRL_REGS_H +#define _GRLIB_SPICTRL_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/spictrl */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRL SPICTRL + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the SPICTRL interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLCAP Capability register (CAP) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_CAP_SSSZ_SHIFT 24 +#define SPICTRL_CAP_SSSZ_MASK 0xff000000U +#define SPICTRL_CAP_SSSZ_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_CAP_SSSZ_MASK ) >> \ + SPICTRL_CAP_SSSZ_SHIFT ) +#define SPICTRL_CAP_SSSZ_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_CAP_SSSZ_MASK ) | \ + ( ( ( _val ) << SPICTRL_CAP_SSSZ_SHIFT ) & \ + SPICTRL_CAP_SSSZ_MASK ) ) +#define SPICTRL_CAP_SSSZ( _val ) \ + ( ( ( _val ) << SPICTRL_CAP_SSSZ_SHIFT ) & \ + SPICTRL_CAP_SSSZ_MASK ) + +#define SPICTRL_CAP_MAXWLEN_SHIFT 20 +#define SPICTRL_CAP_MAXWLEN_MASK 0xf00000U +#define SPICTRL_CAP_MAXWLEN_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_CAP_MAXWLEN_MASK ) >> \ + SPICTRL_CAP_MAXWLEN_SHIFT ) +#define SPICTRL_CAP_MAXWLEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_CAP_MAXWLEN_MASK ) | \ + ( ( ( _val ) << SPICTRL_CAP_MAXWLEN_SHIFT ) & \ + SPICTRL_CAP_MAXWLEN_MASK ) ) +#define SPICTRL_CAP_MAXWLEN( _val ) \ + ( ( ( _val ) << SPICTRL_CAP_MAXWLEN_SHIFT ) & \ + SPICTRL_CAP_MAXWLEN_MASK ) + +#define SPICTRL_CAP_TWEN 0x80000U + +#define SPICTRL_CAP_AMODE 0x40000U + +#define SPICTRL_CAP_ASELA 0x20000U + +#define SPICTRL_CAP_SSEN 0x10000U + +#define SPICTRL_CAP_FDEPTH_SHIFT 8 +#define SPICTRL_CAP_FDEPTH_MASK 0xff00U +#define SPICTRL_CAP_FDEPTH_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_CAP_FDEPTH_MASK ) >> \ + SPICTRL_CAP_FDEPTH_SHIFT ) +#define SPICTRL_CAP_FDEPTH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_CAP_FDEPTH_MASK ) | \ + ( ( ( _val ) << SPICTRL_CAP_FDEPTH_SHIFT ) & \ + SPICTRL_CAP_FDEPTH_MASK ) ) +#define SPICTRL_CAP_FDEPTH( _val ) \ + ( ( ( _val ) << SPICTRL_CAP_FDEPTH_SHIFT ) & \ + SPICTRL_CAP_FDEPTH_MASK ) + +#define SPICTRL_CAP_SR 0x80U + +#define SPICTRL_CAP_FT_SHIFT 5 +#define SPICTRL_CAP_FT_MASK 0x60U +#define SPICTRL_CAP_FT_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_CAP_FT_MASK ) >> \ + SPICTRL_CAP_FT_SHIFT ) +#define SPICTRL_CAP_FT_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_CAP_FT_MASK ) | \ + ( ( ( _val ) << SPICTRL_CAP_FT_SHIFT ) & \ + SPICTRL_CAP_FT_MASK ) ) +#define SPICTRL_CAP_FT( _val ) \ + ( ( ( _val ) << SPICTRL_CAP_FT_SHIFT ) & \ + SPICTRL_CAP_FT_MASK ) + +#define SPICTRL_CAP_REV_SHIFT 0 +#define SPICTRL_CAP_REV_MASK 0x1fU +#define SPICTRL_CAP_REV_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_CAP_REV_MASK ) >> \ + SPICTRL_CAP_REV_SHIFT ) +#define SPICTRL_CAP_REV_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_CAP_REV_MASK ) | \ + ( ( ( _val ) << SPICTRL_CAP_REV_SHIFT ) & \ + SPICTRL_CAP_REV_MASK ) ) +#define SPICTRL_CAP_REV( _val ) \ + ( ( ( _val ) << SPICTRL_CAP_REV_SHIFT ) & \ + SPICTRL_CAP_REV_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLMODE Mode register (MODE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_MODE_LOOP 0x40000000U + +#define SPICTRL_MODE_CPOL 0x20000000U + +#define SPICTRL_MODE_CPHA 0x10000000U + +#define SPICTRL_MODE_DIV_16 0x8000000U + +#define SPICTRL_MODE_REV 0x4000000U + +#define SPICTRL_MODE_MX 0x2000000U + +#define SPICTRL_MODE_EN 0x1000000U + +#define SPICTRL_MODE_LEN_SHIFT 20 +#define SPICTRL_MODE_LEN_MASK 0xf00000U +#define SPICTRL_MODE_LEN_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_MODE_LEN_MASK ) >> \ + SPICTRL_MODE_LEN_SHIFT ) +#define SPICTRL_MODE_LEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_MODE_LEN_MASK ) | \ + ( ( ( _val ) << SPICTRL_MODE_LEN_SHIFT ) & \ + SPICTRL_MODE_LEN_MASK ) ) +#define SPICTRL_MODE_LEN( _val ) \ + ( ( ( _val ) << SPICTRL_MODE_LEN_SHIFT ) & \ + SPICTRL_MODE_LEN_MASK ) + +#define SPICTRL_MODE_PM_SHIFT 16 +#define SPICTRL_MODE_PM_MASK 0xf0000U +#define SPICTRL_MODE_PM_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_MODE_PM_MASK ) >> \ + SPICTRL_MODE_PM_SHIFT ) +#define SPICTRL_MODE_PM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_MODE_PM_MASK ) | \ + ( ( ( _val ) << SPICTRL_MODE_PM_SHIFT ) & \ + SPICTRL_MODE_PM_MASK ) ) +#define SPICTRL_MODE_PM( _val ) \ + ( ( ( _val ) << SPICTRL_MODE_PM_SHIFT ) & \ + SPICTRL_MODE_PM_MASK ) + +#define SPICTRL_MODE_TWEN 0x8000U + +#define SPICTRL_MODE_ASEL 0x4000U + +#define SPICTRL_MODE_FACT 0x2000U + +#define SPICTRL_MODE_OD 0x1000U + +#define SPICTRL_MODE_CG_SHIFT 7 +#define SPICTRL_MODE_CG_MASK 0xf80U +#define SPICTRL_MODE_CG_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_MODE_CG_MASK ) >> \ + SPICTRL_MODE_CG_SHIFT ) +#define SPICTRL_MODE_CG_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_MODE_CG_MASK ) | \ + ( ( ( _val ) << SPICTRL_MODE_CG_SHIFT ) & \ + SPICTRL_MODE_CG_MASK ) ) +#define SPICTRL_MODE_CG( _val ) \ + ( ( ( _val ) << SPICTRL_MODE_CG_SHIFT ) & \ + SPICTRL_MODE_CG_MASK ) + +#define SPICTRL_MODE_ASELDEL_SHIFT 5 +#define SPICTRL_MODE_ASELDEL_MASK 0x60U +#define SPICTRL_MODE_ASELDEL_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_MODE_ASELDEL_MASK ) >> \ + SPICTRL_MODE_ASELDEL_SHIFT ) +#define SPICTRL_MODE_ASELDEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_MODE_ASELDEL_MASK ) | \ + ( ( ( _val ) << SPICTRL_MODE_ASELDEL_SHIFT ) & \ + SPICTRL_MODE_ASELDEL_MASK ) ) +#define SPICTRL_MODE_ASELDEL( _val ) \ + ( ( ( _val ) << SPICTRL_MODE_ASELDEL_SHIFT ) & \ + SPICTRL_MODE_ASELDEL_MASK ) + +#define SPICTRL_MODE_TAC 0x10U + +#define SPICTRL_MODE_TTO 0x8U + +#define SPICTRL_MODE_IGSEL 0x4U + +#define SPICTRL_MODE_CITE 0x2U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLEVENT Event register (EVENT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_EVENT_TIP 0x80000000U + +#define SPICTRL_EVENT_LT 0x4000U + +#define SPICTRL_EVENT_OV 0x1000U + +#define SPICTRL_EVENT_UN 0x800U + +#define SPICTRL_EVENT_MME 0x400U + +#define SPICTRL_EVENT_NE 0x200U + +#define SPICTRL_EVENT_NF 0x100U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLMASK Mask register (MASK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_MASK_TIPE 0x80000000U + +#define SPICTRL_MASK_LTE 0x4000U + +#define SPICTRL_MASK_OVE 0x1000U + +#define SPICTRL_MASK_UNE 0x800U + +#define SPICTRL_MASK_MMEE 0x400U + +#define SPICTRL_MASK_NEEE 0x200U + +#define SPICTRL_MASK_NFE 0x100U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLCMD Command register (CMD) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_CMD_LST 0x400000U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLTX Transmit register (TX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_TX_TDATA_SHIFT 0 +#define SPICTRL_TX_TDATA_MASK 0xffffffffU +#define SPICTRL_TX_TDATA_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_TX_TDATA_MASK ) >> \ + SPICTRL_TX_TDATA_SHIFT ) +#define SPICTRL_TX_TDATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_TX_TDATA_MASK ) | \ + ( ( ( _val ) << SPICTRL_TX_TDATA_SHIFT ) & \ + SPICTRL_TX_TDATA_MASK ) ) +#define SPICTRL_TX_TDATA( _val ) \ + ( ( ( _val ) << SPICTRL_TX_TDATA_SHIFT ) & \ + SPICTRL_TX_TDATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLRX Receive register (RX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_RX_RDATA_SHIFT 0 +#define SPICTRL_RX_RDATA_MASK 0xffffffffU +#define SPICTRL_RX_RDATA_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_RX_RDATA_MASK ) >> \ + SPICTRL_RX_RDATA_SHIFT ) +#define SPICTRL_RX_RDATA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_RX_RDATA_MASK ) | \ + ( ( ( _val ) << SPICTRL_RX_RDATA_SHIFT ) & \ + SPICTRL_RX_RDATA_MASK ) ) +#define SPICTRL_RX_RDATA( _val ) \ + ( ( ( _val ) << SPICTRL_RX_RDATA_SHIFT ) & \ + SPICTRL_RX_RDATA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLSLVSEL Slave select register (SLVSEL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_SLVSEL_SLVSEL_SHIFT 0 +#define SPICTRL_SLVSEL_SLVSEL_MASK 0x3U +#define SPICTRL_SLVSEL_SLVSEL_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_SLVSEL_SLVSEL_MASK ) >> \ + SPICTRL_SLVSEL_SLVSEL_SHIFT ) +#define SPICTRL_SLVSEL_SLVSEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_SLVSEL_SLVSEL_MASK ) | \ + ( ( ( _val ) << SPICTRL_SLVSEL_SLVSEL_SHIFT ) & \ + SPICTRL_SLVSEL_SLVSEL_MASK ) ) +#define SPICTRL_SLVSEL_SLVSEL( _val ) \ + ( ( ( _val ) << SPICTRL_SLVSEL_SLVSEL_SHIFT ) & \ + SPICTRL_SLVSEL_SLVSEL_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPICTRLASLVSEL \ + * Automatic slave select register (ASLVSEL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPICTRL_ASLVSEL_ASLVSEL_SHIFT 0 +#define SPICTRL_ASLVSEL_ASLVSEL_MASK 0x3U +#define SPICTRL_ASLVSEL_ASLVSEL_GET( _reg ) \ + ( ( ( _reg ) & SPICTRL_ASLVSEL_ASLVSEL_MASK ) >> \ + SPICTRL_ASLVSEL_ASLVSEL_SHIFT ) +#define SPICTRL_ASLVSEL_ASLVSEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPICTRL_ASLVSEL_ASLVSEL_MASK ) | \ + ( ( ( _val ) << SPICTRL_ASLVSEL_ASLVSEL_SHIFT ) & \ + SPICTRL_ASLVSEL_ASLVSEL_MASK ) ) +#define SPICTRL_ASLVSEL_ASLVSEL( _val ) \ + ( ( ( _val ) << SPICTRL_ASLVSEL_ASLVSEL_SHIFT ) & \ + SPICTRL_ASLVSEL_ASLVSEL_MASK ) + +/** @} */ + +/** + * @brief This structure defines the SPICTRL register block memory map. + */ +typedef struct spictrl { + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLCAP. + */ + uint32_t cap; + + uint32_t reserved_4_20[ 7 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLMODE. + */ + uint32_t mode; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLEVENT. + */ + uint32_t event; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLMASK. + */ + uint32_t mask; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLCMD. + */ + uint32_t cmd; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLTX. + */ + uint32_t tx; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLRX. + */ + uint32_t rx; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLSLVSEL. + */ + uint32_t slvsel; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPICTRLASLVSEL. + */ + uint32_t aslvsel; +} spictrl; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_SPICTRL_REGS_H */ diff --git a/bsps/include/grlib/spictrl.h b/bsps/include/grlib/spictrl.h index 98922fbd30..a4232c3a6d 100644 --- a/bsps/include/grlib/spictrl.h +++ b/bsps/include/grlib/spictrl.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * SPICTRL SPI Driver interface. * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __SPICTRL_H__ diff --git a/bsps/include/grlib/spwcuc.h b/bsps/include/grlib/spwcuc.h index e420367640..15d44a0a7e 100644 --- a/bsps/include/grlib/spwcuc.h +++ b/bsps/include/grlib/spwcuc.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* SPWCUC - SpaceWire - CCSDS unsegmented Code Transfer Protocol GRLIB core * register driver interface. * * COPYRIGHT (c) 2009. * Cobham Gaisler AB. * - * 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. + * 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 __SPWCUC_H__ diff --git a/bsps/include/grlib/spwpnp-regs.h b/bsps/include/grlib/spwpnp-regs.h new file mode 100644 index 0000000000..00c688bc55 --- /dev/null +++ b/bsps/include/grlib/spwpnp-regs.h @@ -0,0 +1,553 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBSPWPNP + * + * @brief This header file defines the SPWPNP register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/spwpnp-header */ + +#ifndef _GRLIB_SPWPNP_REGS_H +#define _GRLIB_SPWPNP_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/spwpnp */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNP SpaceWire Plug-and-Play + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the SpaceWire Plug-and-Play interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPVEND \ + * SpaceWire Plug-and-Play - Device Vendor and Product ID (PNPVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPVEND_VEND_SHIFT 16 +#define SPWPNP_PNPVEND_VEND_MASK 0xffff0000U +#define SPWPNP_PNPVEND_VEND_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVEND_VEND_MASK ) >> \ + SPWPNP_PNPVEND_VEND_SHIFT ) +#define SPWPNP_PNPVEND_VEND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVEND_VEND_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVEND_VEND_SHIFT ) & \ + SPWPNP_PNPVEND_VEND_MASK ) ) +#define SPWPNP_PNPVEND_VEND( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVEND_VEND_SHIFT ) & \ + SPWPNP_PNPVEND_VEND_MASK ) + +#define SPWPNP_PNPVEND_PROD_SHIFT 0 +#define SPWPNP_PNPVEND_PROD_MASK 0xffffU +#define SPWPNP_PNPVEND_PROD_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVEND_PROD_MASK ) >> \ + SPWPNP_PNPVEND_PROD_SHIFT ) +#define SPWPNP_PNPVEND_PROD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVEND_PROD_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVEND_PROD_SHIFT ) & \ + SPWPNP_PNPVEND_PROD_MASK ) ) +#define SPWPNP_PNPVEND_PROD( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVEND_PROD_SHIFT ) & \ + SPWPNP_PNPVEND_PROD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPVER \ + * SpaceWire Plug-and-Play - Version (PNPVER) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPVER_MAJOR_SHIFT 24 +#define SPWPNP_PNPVER_MAJOR_MASK 0xff000000U +#define SPWPNP_PNPVER_MAJOR_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVER_MAJOR_MASK ) >> \ + SPWPNP_PNPVER_MAJOR_SHIFT ) +#define SPWPNP_PNPVER_MAJOR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVER_MAJOR_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVER_MAJOR_SHIFT ) & \ + SPWPNP_PNPVER_MAJOR_MASK ) ) +#define SPWPNP_PNPVER_MAJOR( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVER_MAJOR_SHIFT ) & \ + SPWPNP_PNPVER_MAJOR_MASK ) + +#define SPWPNP_PNPVER_MINOR_SHIFT 16 +#define SPWPNP_PNPVER_MINOR_MASK 0xff0000U +#define SPWPNP_PNPVER_MINOR_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVER_MINOR_MASK ) >> \ + SPWPNP_PNPVER_MINOR_SHIFT ) +#define SPWPNP_PNPVER_MINOR_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVER_MINOR_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVER_MINOR_SHIFT ) & \ + SPWPNP_PNPVER_MINOR_MASK ) ) +#define SPWPNP_PNPVER_MINOR( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVER_MINOR_SHIFT ) & \ + SPWPNP_PNPVER_MINOR_MASK ) + +#define SPWPNP_PNPVER_PATCH_SHIFT 8 +#define SPWPNP_PNPVER_PATCH_MASK 0xff00U +#define SPWPNP_PNPVER_PATCH_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVER_PATCH_MASK ) >> \ + SPWPNP_PNPVER_PATCH_SHIFT ) +#define SPWPNP_PNPVER_PATCH_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVER_PATCH_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVER_PATCH_SHIFT ) & \ + SPWPNP_PNPVER_PATCH_MASK ) ) +#define SPWPNP_PNPVER_PATCH( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVER_PATCH_SHIFT ) & \ + SPWPNP_PNPVER_PATCH_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPDEVSTS \ + * SpaceWire Plug-and-Play - Device Status (PNPDEVSTS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPDEVSTS_STATUS_SHIFT 0 +#define SPWPNP_PNPDEVSTS_STATUS_MASK 0xffU +#define SPWPNP_PNPDEVSTS_STATUS_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPDEVSTS_STATUS_MASK ) >> \ + SPWPNP_PNPDEVSTS_STATUS_SHIFT ) +#define SPWPNP_PNPDEVSTS_STATUS_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPDEVSTS_STATUS_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPDEVSTS_STATUS_SHIFT ) & \ + SPWPNP_PNPDEVSTS_STATUS_MASK ) ) +#define SPWPNP_PNPDEVSTS_STATUS( _val ) \ + ( ( ( _val ) << SPWPNP_PNPDEVSTS_STATUS_SHIFT ) & \ + SPWPNP_PNPDEVSTS_STATUS_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPACTLNK \ + * SpaceWire Plug-and-Play - Active Links (PNPACTLNK) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPACTLNK_ACTIVE_SHIFT 1 +#define SPWPNP_PNPACTLNK_ACTIVE_MASK 0xfffffffeU +#define SPWPNP_PNPACTLNK_ACTIVE_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPACTLNK_ACTIVE_MASK ) >> \ + SPWPNP_PNPACTLNK_ACTIVE_SHIFT ) +#define SPWPNP_PNPACTLNK_ACTIVE_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPACTLNK_ACTIVE_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPACTLNK_ACTIVE_SHIFT ) & \ + SPWPNP_PNPACTLNK_ACTIVE_MASK ) ) +#define SPWPNP_PNPACTLNK_ACTIVE( _val ) \ + ( ( ( _val ) << SPWPNP_PNPACTLNK_ACTIVE_SHIFT ) & \ + SPWPNP_PNPACTLNK_ACTIVE_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPOA0 \ + * SpaceWire Plug-and-Play - Owner Address 0 (PNPOA0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPOA0_RA_SHIFT 0 +#define SPWPNP_PNPOA0_RA_MASK 0xffffffffU +#define SPWPNP_PNPOA0_RA_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPOA0_RA_MASK ) >> \ + SPWPNP_PNPOA0_RA_SHIFT ) +#define SPWPNP_PNPOA0_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPOA0_RA_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPOA0_RA_SHIFT ) & \ + SPWPNP_PNPOA0_RA_MASK ) ) +#define SPWPNP_PNPOA0_RA( _val ) \ + ( ( ( _val ) << SPWPNP_PNPOA0_RA_SHIFT ) & \ + SPWPNP_PNPOA0_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPOA1 \ + * SpaceWire Plug-and-Play - Owner Address 1 (PNPOA1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPOA1_RA_SHIFT 0 +#define SPWPNP_PNPOA1_RA_MASK 0xffffffffU +#define SPWPNP_PNPOA1_RA_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPOA1_RA_MASK ) >> \ + SPWPNP_PNPOA1_RA_SHIFT ) +#define SPWPNP_PNPOA1_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPOA1_RA_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPOA1_RA_SHIFT ) & \ + SPWPNP_PNPOA1_RA_MASK ) ) +#define SPWPNP_PNPOA1_RA( _val ) \ + ( ( ( _val ) << SPWPNP_PNPOA1_RA_SHIFT ) & \ + SPWPNP_PNPOA1_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPOA2 \ + * SpaceWire Plug-and-Play - Owner Address 2 (PNPOA2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPOA2_RA_SHIFT 0 +#define SPWPNP_PNPOA2_RA_MASK 0xffffffffU +#define SPWPNP_PNPOA2_RA_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPOA2_RA_MASK ) >> \ + SPWPNP_PNPOA2_RA_SHIFT ) +#define SPWPNP_PNPOA2_RA_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPOA2_RA_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPOA2_RA_SHIFT ) & \ + SPWPNP_PNPOA2_RA_MASK ) ) +#define SPWPNP_PNPOA2_RA( _val ) \ + ( ( ( _val ) << SPWPNP_PNPOA2_RA_SHIFT ) & \ + SPWPNP_PNPOA2_RA_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPDEVID \ + * SpaceWire Plug-and-Play - Device ID (PNPDEVID) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPDEVID_DID_SHIFT 0 +#define SPWPNP_PNPDEVID_DID_MASK 0xffffffffU +#define SPWPNP_PNPDEVID_DID_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPDEVID_DID_MASK ) >> \ + SPWPNP_PNPDEVID_DID_SHIFT ) +#define SPWPNP_PNPDEVID_DID_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPDEVID_DID_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPDEVID_DID_SHIFT ) & \ + SPWPNP_PNPDEVID_DID_MASK ) ) +#define SPWPNP_PNPDEVID_DID( _val ) \ + ( ( ( _val ) << SPWPNP_PNPDEVID_DID_SHIFT ) & \ + SPWPNP_PNPDEVID_DID_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPUVEND \ + * SpaceWire Plug-and-Play - Unit Vendor and Product ID (PNPUVEND) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPUVEND_VEND_SHIFT 16 +#define SPWPNP_PNPUVEND_VEND_MASK 0xffff0000U +#define SPWPNP_PNPUVEND_VEND_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPUVEND_VEND_MASK ) >> \ + SPWPNP_PNPUVEND_VEND_SHIFT ) +#define SPWPNP_PNPUVEND_VEND_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPUVEND_VEND_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPUVEND_VEND_SHIFT ) & \ + SPWPNP_PNPUVEND_VEND_MASK ) ) +#define SPWPNP_PNPUVEND_VEND( _val ) \ + ( ( ( _val ) << SPWPNP_PNPUVEND_VEND_SHIFT ) & \ + SPWPNP_PNPUVEND_VEND_MASK ) + +#define SPWPNP_PNPUVEND_PROD_SHIFT 0 +#define SPWPNP_PNPUVEND_PROD_MASK 0xffffU +#define SPWPNP_PNPUVEND_PROD_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPUVEND_PROD_MASK ) >> \ + SPWPNP_PNPUVEND_PROD_SHIFT ) +#define SPWPNP_PNPUVEND_PROD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPUVEND_PROD_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPUVEND_PROD_SHIFT ) & \ + SPWPNP_PNPUVEND_PROD_MASK ) ) +#define SPWPNP_PNPUVEND_PROD( _val ) \ + ( ( ( _val ) << SPWPNP_PNPUVEND_PROD_SHIFT ) & \ + SPWPNP_PNPUVEND_PROD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPUSN \ + * SpaceWire Plug-and-Play - Unit Serial Number (PNPUSN) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPUSN_USN_SHIFT 0 +#define SPWPNP_PNPUSN_USN_MASK 0xffffffffU +#define SPWPNP_PNPUSN_USN_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPUSN_USN_MASK ) >> \ + SPWPNP_PNPUSN_USN_SHIFT ) +#define SPWPNP_PNPUSN_USN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPUSN_USN_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPUSN_USN_SHIFT ) & \ + SPWPNP_PNPUSN_USN_MASK ) ) +#define SPWPNP_PNPUSN_USN( _val ) \ + ( ( ( _val ) << SPWPNP_PNPUSN_USN_SHIFT ) & \ + SPWPNP_PNPUSN_USN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPVSTRL \ + * SpaceWire Plug-and-Play - Vendor String Length (PNPVSTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPVSTRL_LEN_SHIFT 0 +#define SPWPNP_PNPVSTRL_LEN_MASK 0x7fffU +#define SPWPNP_PNPVSTRL_LEN_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPVSTRL_LEN_MASK ) >> \ + SPWPNP_PNPVSTRL_LEN_SHIFT ) +#define SPWPNP_PNPVSTRL_LEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPVSTRL_LEN_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPVSTRL_LEN_SHIFT ) & \ + SPWPNP_PNPVSTRL_LEN_MASK ) ) +#define SPWPNP_PNPVSTRL_LEN( _val ) \ + ( ( ( _val ) << SPWPNP_PNPVSTRL_LEN_SHIFT ) & \ + SPWPNP_PNPVSTRL_LEN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPPSTRL \ + * SpaceWire Plug-and-Play - Product String Length (PNPPSTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPPSTRL_LEN_SHIFT 0 +#define SPWPNP_PNPPSTRL_LEN_MASK 0x7fffU +#define SPWPNP_PNPPSTRL_LEN_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPPSTRL_LEN_MASK ) >> \ + SPWPNP_PNPPSTRL_LEN_SHIFT ) +#define SPWPNP_PNPPSTRL_LEN_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPPSTRL_LEN_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPPSTRL_LEN_SHIFT ) & \ + SPWPNP_PNPPSTRL_LEN_MASK ) ) +#define SPWPNP_PNPPSTRL_LEN( _val ) \ + ( ( ( _val ) << SPWPNP_PNPPSTRL_LEN_SHIFT ) & \ + SPWPNP_PNPPSTRL_LEN_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPPCNT \ + * SpaceWire Plug-and-Play - Protocol Count (PNPPCNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPPCNT_PC_SHIFT 0 +#define SPWPNP_PNPPCNT_PC_MASK 0x1fU +#define SPWPNP_PNPPCNT_PC_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPPCNT_PC_MASK ) >> \ + SPWPNP_PNPPCNT_PC_SHIFT ) +#define SPWPNP_PNPPCNT_PC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPPCNT_PC_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPPCNT_PC_SHIFT ) & \ + SPWPNP_PNPPCNT_PC_MASK ) ) +#define SPWPNP_PNPPCNT_PC( _val ) \ + ( ( ( _val ) << SPWPNP_PNPPCNT_PC_SHIFT ) & \ + SPWPNP_PNPPCNT_PC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWPNPPNPACNT \ + * SpaceWire Plug-and-Play - Application Count (PNPACNT) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWPNP_PNPACNT_AC_SHIFT 0 +#define SPWPNP_PNPACNT_AC_MASK 0xffU +#define SPWPNP_PNPACNT_AC_GET( _reg ) \ + ( ( ( _reg ) & SPWPNP_PNPACNT_AC_MASK ) >> \ + SPWPNP_PNPACNT_AC_SHIFT ) +#define SPWPNP_PNPACNT_AC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWPNP_PNPACNT_AC_MASK ) | \ + ( ( ( _val ) << SPWPNP_PNPACNT_AC_SHIFT ) & \ + SPWPNP_PNPACNT_AC_MASK ) ) +#define SPWPNP_PNPACNT_AC( _val ) \ + ( ( ( _val ) << SPWPNP_PNPACNT_AC_SHIFT ) & \ + SPWPNP_PNPACNT_AC_MASK ) + +/** @} */ + +/** + * @brief This set of defines the SpaceWire Plug-and-Play address map. + */ +typedef struct spwpnp { + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPVEND. + */ + uint32_t pnpvend; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPVER. + */ + uint32_t pnpver; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPDEVSTS. + */ + uint32_t pnpdevsts; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPACTLNK. + */ + uint32_t pnpactlnk; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPOA0. + */ + uint32_t pnpoa0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPOA1. + */ + uint32_t pnpoa1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPOA2. + */ + uint32_t pnpoa2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPDEVID. + */ + uint32_t pnpdevid; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPUVEND. + */ + uint32_t pnpuvend; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPUSN. + */ + uint32_t pnpusn; + + uint16_t reserved_e_4000[ 8185 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPVSTRL. + */ + uint32_t pnpvstrl; + + uint32_t reserved_4004_6000[ 2047 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPPSTRL. + */ + uint32_t pnppstrl; + + uint32_t reserved_6004_8000[ 2047 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPPCNT. + */ + uint32_t pnppcnt; + + uint32_t reserved_8004_c000[ 4095 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWPNPPNPACNT. + */ + uint32_t pnpacnt; +} spwpnp; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_SPWPNP_REGS_H */ diff --git a/bsps/include/grlib/spwtdp-regs.h b/bsps/include/grlib/spwtdp-regs.h new file mode 100644 index 0000000000..2e951e4544 --- /dev/null +++ b/bsps/include/grlib/spwtdp-regs.h @@ -0,0 +1,1268 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSDeviceGRLIBSPWTDP + * + * @brief This header file defines the SPWTDP register block interface. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH & Co. KG + * + * 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. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +/* Generated from spec:/dev/grlib/if/spwtdp-header */ + +#ifndef _GRLIB_SPWTDP_REGS_H +#define _GRLIB_SPWTDP_REGS_H + +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* Generated from spec:/dev/grlib/if/spwtdp */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDP SPWTDP + * + * @ingroup RTEMSDeviceGRLIB + * + * @brief This group contains the SPWTDP interfaces. + * + * @{ + */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCONF0 Configuration 0 (CONF0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CONF0_JE 0x1000000U + +#define SPWTDP_CONF0_ST 0x200000U + +#define SPWTDP_CONF0_EP 0x100000U + +#define SPWTDP_CONF0_ET 0x80000U + +#define SPWTDP_CONF0_SP 0x40000U + +#define SPWTDP_CONF0_SE 0x20000U + +#define SPWTDP_CONF0_LE 0x10000U + +#define SPWTDP_CONF0_AE 0x8000U + +#define SPWTDP_CONF0_MAPPING_SHIFT 8 +#define SPWTDP_CONF0_MAPPING_MASK 0x1f00U +#define SPWTDP_CONF0_MAPPING_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CONF0_MAPPING_MASK ) >> \ + SPWTDP_CONF0_MAPPING_SHIFT ) +#define SPWTDP_CONF0_MAPPING_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CONF0_MAPPING_MASK ) | \ + ( ( ( _val ) << SPWTDP_CONF0_MAPPING_SHIFT ) & \ + SPWTDP_CONF0_MAPPING_MASK ) ) +#define SPWTDP_CONF0_MAPPING( _val ) \ + ( ( ( _val ) << SPWTDP_CONF0_MAPPING_SHIFT ) & \ + SPWTDP_CONF0_MAPPING_MASK ) + +#define SPWTDP_CONF0_TD 0x80U + +#define SPWTDP_CONF0_MU 0x40U + +#define SPWTDP_CONF0_SEL_SHIFT 4 +#define SPWTDP_CONF0_SEL_MASK 0x30U +#define SPWTDP_CONF0_SEL_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CONF0_SEL_MASK ) >> \ + SPWTDP_CONF0_SEL_SHIFT ) +#define SPWTDP_CONF0_SEL_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CONF0_SEL_MASK ) | \ + ( ( ( _val ) << SPWTDP_CONF0_SEL_SHIFT ) & \ + SPWTDP_CONF0_SEL_MASK ) ) +#define SPWTDP_CONF0_SEL( _val ) \ + ( ( ( _val ) << SPWTDP_CONF0_SEL_SHIFT ) & \ + SPWTDP_CONF0_SEL_MASK ) + +#define SPWTDP_CONF0_ME 0x8U + +#define SPWTDP_CONF0_RE 0x4U + +#define SPWTDP_CONF0_TE 0x2U + +#define SPWTDP_CONF0_RS 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCONF3 Configuration 3 (CONF3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CONF3_STM_SHIFT 16 +#define SPWTDP_CONF3_STM_MASK 0x3f0000U +#define SPWTDP_CONF3_STM_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CONF3_STM_MASK ) >> \ + SPWTDP_CONF3_STM_SHIFT ) +#define SPWTDP_CONF3_STM_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CONF3_STM_MASK ) | \ + ( ( ( _val ) << SPWTDP_CONF3_STM_SHIFT ) & \ + SPWTDP_CONF3_STM_MASK ) ) +#define SPWTDP_CONF3_STM( _val ) \ + ( ( ( _val ) << SPWTDP_CONF3_STM_SHIFT ) & \ + SPWTDP_CONF3_STM_MASK ) + +#define SPWTDP_CONF3_DI64R 0x2000U + +#define SPWTDP_CONF3_DI64T 0x1000U + +#define SPWTDP_CONF3_DI64 0x800U + +#define SPWTDP_CONF3_DI 0x400U + +#define SPWTDP_CONF3_INRX_SHIFT 5 +#define SPWTDP_CONF3_INRX_MASK 0x3e0U +#define SPWTDP_CONF3_INRX_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CONF3_INRX_MASK ) >> \ + SPWTDP_CONF3_INRX_SHIFT ) +#define SPWTDP_CONF3_INRX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CONF3_INRX_MASK ) | \ + ( ( ( _val ) << SPWTDP_CONF3_INRX_SHIFT ) & \ + SPWTDP_CONF3_INRX_MASK ) ) +#define SPWTDP_CONF3_INRX( _val ) \ + ( ( ( _val ) << SPWTDP_CONF3_INRX_SHIFT ) & \ + SPWTDP_CONF3_INRX_MASK ) + +#define SPWTDP_CONF3_INTX_SHIFT 0 +#define SPWTDP_CONF3_INTX_MASK 0x1fU +#define SPWTDP_CONF3_INTX_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CONF3_INTX_MASK ) >> \ + SPWTDP_CONF3_INTX_SHIFT ) +#define SPWTDP_CONF3_INTX_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CONF3_INTX_MASK ) | \ + ( ( ( _val ) << SPWTDP_CONF3_INTX_SHIFT ) & \ + SPWTDP_CONF3_INTX_MASK ) ) +#define SPWTDP_CONF3_INTX( _val ) \ + ( ( ( _val ) << SPWTDP_CONF3_INTX_SHIFT ) & \ + SPWTDP_CONF3_INTX_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCTRL Control (CTRL) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CTRL_NC 0x80000000U + +#define SPWTDP_CTRL_IS 0x40000000U + +#define SPWTDP_CTRL_SPWTC_SHIFT 16 +#define SPWTDP_CTRL_SPWTC_MASK 0xff0000U +#define SPWTDP_CTRL_SPWTC_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CTRL_SPWTC_MASK ) >> \ + SPWTDP_CTRL_SPWTC_SHIFT ) +#define SPWTDP_CTRL_SPWTC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CTRL_SPWTC_MASK ) | \ + ( ( ( _val ) << SPWTDP_CTRL_SPWTC_SHIFT ) & \ + SPWTDP_CTRL_SPWTC_MASK ) ) +#define SPWTDP_CTRL_SPWTC( _val ) \ + ( ( ( _val ) << SPWTDP_CTRL_SPWTC_SHIFT ) & \ + SPWTDP_CTRL_SPWTC_MASK ) + +#define SPWTDP_CTRL_CPF_SHIFT 0 +#define SPWTDP_CTRL_CPF_MASK 0xffffU +#define SPWTDP_CTRL_CPF_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CTRL_CPF_MASK ) >> \ + SPWTDP_CTRL_CPF_SHIFT ) +#define SPWTDP_CTRL_CPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CTRL_CPF_MASK ) | \ + ( ( ( _val ) << SPWTDP_CTRL_CPF_SHIFT ) & \ + SPWTDP_CTRL_CPF_MASK ) ) +#define SPWTDP_CTRL_CPF( _val ) \ + ( ( ( _val ) << SPWTDP_CTRL_CPF_SHIFT ) & \ + SPWTDP_CTRL_CPF_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCET0 Command Elapsed Time 0 (CET0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CET0_CET0_SHIFT 0 +#define SPWTDP_CET0_CET0_MASK 0xffffffffU +#define SPWTDP_CET0_CET0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CET0_CET0_MASK ) >> \ + SPWTDP_CET0_CET0_SHIFT ) +#define SPWTDP_CET0_CET0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CET0_CET0_MASK ) | \ + ( ( ( _val ) << SPWTDP_CET0_CET0_SHIFT ) & \ + SPWTDP_CET0_CET0_MASK ) ) +#define SPWTDP_CET0_CET0( _val ) \ + ( ( ( _val ) << SPWTDP_CET0_CET0_SHIFT ) & \ + SPWTDP_CET0_CET0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCET1 Command Elapsed Time 1 (CET1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CET1_CET1_SHIFT 0 +#define SPWTDP_CET1_CET1_MASK 0xffffffffU +#define SPWTDP_CET1_CET1_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CET1_CET1_MASK ) >> \ + SPWTDP_CET1_CET1_SHIFT ) +#define SPWTDP_CET1_CET1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CET1_CET1_MASK ) | \ + ( ( ( _val ) << SPWTDP_CET1_CET1_SHIFT ) & \ + SPWTDP_CET1_CET1_MASK ) ) +#define SPWTDP_CET1_CET1( _val ) \ + ( ( ( _val ) << SPWTDP_CET1_CET1_SHIFT ) & \ + SPWTDP_CET1_CET1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCET2 Command Elapsed Time 2 (CET2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CET2_CET2_SHIFT 0 +#define SPWTDP_CET2_CET2_MASK 0xffffffffU +#define SPWTDP_CET2_CET2_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CET2_CET2_MASK ) >> \ + SPWTDP_CET2_CET2_SHIFT ) +#define SPWTDP_CET2_CET2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CET2_CET2_MASK ) | \ + ( ( ( _val ) << SPWTDP_CET2_CET2_SHIFT ) & \ + SPWTDP_CET2_CET2_MASK ) ) +#define SPWTDP_CET2_CET2( _val ) \ + ( ( ( _val ) << SPWTDP_CET2_CET2_SHIFT ) & \ + SPWTDP_CET2_CET2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCET3 Command Elapsed Time 3 (CET3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CET3_CET3_SHIFT 0 +#define SPWTDP_CET3_CET3_MASK 0xffffffffU +#define SPWTDP_CET3_CET3_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CET3_CET3_MASK ) >> \ + SPWTDP_CET3_CET3_SHIFT ) +#define SPWTDP_CET3_CET3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CET3_CET3_MASK ) | \ + ( ( ( _val ) << SPWTDP_CET3_CET3_SHIFT ) & \ + SPWTDP_CET3_CET3_MASK ) ) +#define SPWTDP_CET3_CET3( _val ) \ + ( ( ( _val ) << SPWTDP_CET3_CET3_SHIFT ) & \ + SPWTDP_CET3_CET3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPCET4 Command Elapsed Time 4 (CET4) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_CET4_CET4_SHIFT 24 +#define SPWTDP_CET4_CET4_MASK 0xff000000U +#define SPWTDP_CET4_CET4_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_CET4_CET4_MASK ) >> \ + SPWTDP_CET4_CET4_SHIFT ) +#define SPWTDP_CET4_CET4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_CET4_CET4_MASK ) | \ + ( ( ( _val ) << SPWTDP_CET4_CET4_SHIFT ) & \ + SPWTDP_CET4_CET4_MASK ) ) +#define SPWTDP_CET4_CET4( _val ) \ + ( ( ( _val ) << SPWTDP_CET4_CET4_SHIFT ) & \ + SPWTDP_CET4_CET4_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDPF Datation Preamble Field (DPF) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DPF_DPF_SHIFT 0 +#define SPWTDP_DPF_DPF_MASK 0xffffU +#define SPWTDP_DPF_DPF_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DPF_DPF_MASK ) >> \ + SPWTDP_DPF_DPF_SHIFT ) +#define SPWTDP_DPF_DPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DPF_DPF_MASK ) | \ + ( ( ( _val ) << SPWTDP_DPF_DPF_SHIFT ) & \ + SPWTDP_DPF_DPF_MASK ) ) +#define SPWTDP_DPF_DPF( _val ) \ + ( ( ( _val ) << SPWTDP_DPF_DPF_SHIFT ) & \ + SPWTDP_DPF_DPF_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDET0 Datation Elapsed Time 0 (DET0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DET0_DET0_SHIFT 0 +#define SPWTDP_DET0_DET0_MASK 0xffffffffU +#define SPWTDP_DET0_DET0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DET0_DET0_MASK ) >> \ + SPWTDP_DET0_DET0_SHIFT ) +#define SPWTDP_DET0_DET0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DET0_DET0_MASK ) | \ + ( ( ( _val ) << SPWTDP_DET0_DET0_SHIFT ) & \ + SPWTDP_DET0_DET0_MASK ) ) +#define SPWTDP_DET0_DET0( _val ) \ + ( ( ( _val ) << SPWTDP_DET0_DET0_SHIFT ) & \ + SPWTDP_DET0_DET0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDET1 Datation Elapsed Time 1 (DET1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DET1_DET1_SHIFT 0 +#define SPWTDP_DET1_DET1_MASK 0xffffffffU +#define SPWTDP_DET1_DET1_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DET1_DET1_MASK ) >> \ + SPWTDP_DET1_DET1_SHIFT ) +#define SPWTDP_DET1_DET1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DET1_DET1_MASK ) | \ + ( ( ( _val ) << SPWTDP_DET1_DET1_SHIFT ) & \ + SPWTDP_DET1_DET1_MASK ) ) +#define SPWTDP_DET1_DET1( _val ) \ + ( ( ( _val ) << SPWTDP_DET1_DET1_SHIFT ) & \ + SPWTDP_DET1_DET1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDET2 Datation Elapsed Time 2 (DET2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DET2_DET2_SHIFT 0 +#define SPWTDP_DET2_DET2_MASK 0xffffffffU +#define SPWTDP_DET2_DET2_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DET2_DET2_MASK ) >> \ + SPWTDP_DET2_DET2_SHIFT ) +#define SPWTDP_DET2_DET2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DET2_DET2_MASK ) | \ + ( ( ( _val ) << SPWTDP_DET2_DET2_SHIFT ) & \ + SPWTDP_DET2_DET2_MASK ) ) +#define SPWTDP_DET2_DET2( _val ) \ + ( ( ( _val ) << SPWTDP_DET2_DET2_SHIFT ) & \ + SPWTDP_DET2_DET2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDET3 Datation Elapsed Time 3 (DET3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DET3_DET3_SHIFT 0 +#define SPWTDP_DET3_DET3_MASK 0xffffffffU +#define SPWTDP_DET3_DET3_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DET3_DET3_MASK ) >> \ + SPWTDP_DET3_DET3_SHIFT ) +#define SPWTDP_DET3_DET3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DET3_DET3_MASK ) | \ + ( ( ( _val ) << SPWTDP_DET3_DET3_SHIFT ) & \ + SPWTDP_DET3_DET3_MASK ) ) +#define SPWTDP_DET3_DET3( _val ) \ + ( ( ( _val ) << SPWTDP_DET3_DET3_SHIFT ) & \ + SPWTDP_DET3_DET3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDET4 Datation Elapsed Time 4 (DET4) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DET4_DET4_SHIFT 24 +#define SPWTDP_DET4_DET4_MASK 0xff000000U +#define SPWTDP_DET4_DET4_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DET4_DET4_MASK ) >> \ + SPWTDP_DET4_DET4_SHIFT ) +#define SPWTDP_DET4_DET4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DET4_DET4_MASK ) | \ + ( ( ( _val ) << SPWTDP_DET4_DET4_SHIFT ) & \ + SPWTDP_DET4_DET4_MASK ) ) +#define SPWTDP_DET4_DET4( _val ) \ + ( ( ( _val ) << SPWTDP_DET4_DET4_SHIFT ) & \ + SPWTDP_DET4_DET4_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTRPFRX Time-Stamp Preamble Field Rx (TRPFRX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TRPFRX_TRPF_SHIFT 0 +#define SPWTDP_TRPFRX_TRPF_MASK 0xffffU +#define SPWTDP_TRPFRX_TRPF_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TRPFRX_TRPF_MASK ) >> \ + SPWTDP_TRPFRX_TRPF_SHIFT ) +#define SPWTDP_TRPFRX_TRPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TRPFRX_TRPF_MASK ) | \ + ( ( ( _val ) << SPWTDP_TRPFRX_TRPF_SHIFT ) & \ + SPWTDP_TRPFRX_TRPF_MASK ) ) +#define SPWTDP_TRPFRX_TRPF( _val ) \ + ( ( ( _val ) << SPWTDP_TRPFRX_TRPF_SHIFT ) & \ + SPWTDP_TRPFRX_TRPF_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTR0 Time Stamp Elapsed Time 0 Rx (TR0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TR0_TR0_SHIFT 0 +#define SPWTDP_TR0_TR0_MASK 0xffffffffU +#define SPWTDP_TR0_TR0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TR0_TR0_MASK ) >> \ + SPWTDP_TR0_TR0_SHIFT ) +#define SPWTDP_TR0_TR0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TR0_TR0_MASK ) | \ + ( ( ( _val ) << SPWTDP_TR0_TR0_SHIFT ) & \ + SPWTDP_TR0_TR0_MASK ) ) +#define SPWTDP_TR0_TR0( _val ) \ + ( ( ( _val ) << SPWTDP_TR0_TR0_SHIFT ) & \ + SPWTDP_TR0_TR0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTR1 Time Stamp Elapsed Time 1 Rx (TR1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TR1_TR1_SHIFT 0 +#define SPWTDP_TR1_TR1_MASK 0xffffffffU +#define SPWTDP_TR1_TR1_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TR1_TR1_MASK ) >> \ + SPWTDP_TR1_TR1_SHIFT ) +#define SPWTDP_TR1_TR1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TR1_TR1_MASK ) | \ + ( ( ( _val ) << SPWTDP_TR1_TR1_SHIFT ) & \ + SPWTDP_TR1_TR1_MASK ) ) +#define SPWTDP_TR1_TR1( _val ) \ + ( ( ( _val ) << SPWTDP_TR1_TR1_SHIFT ) & \ + SPWTDP_TR1_TR1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTR2 Time Stamp Elapsed Time 2 Rx (TR2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TR2_TR2_SHIFT 0 +#define SPWTDP_TR2_TR2_MASK 0xffffffffU +#define SPWTDP_TR2_TR2_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TR2_TR2_MASK ) >> \ + SPWTDP_TR2_TR2_SHIFT ) +#define SPWTDP_TR2_TR2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TR2_TR2_MASK ) | \ + ( ( ( _val ) << SPWTDP_TR2_TR2_SHIFT ) & \ + SPWTDP_TR2_TR2_MASK ) ) +#define SPWTDP_TR2_TR2( _val ) \ + ( ( ( _val ) << SPWTDP_TR2_TR2_SHIFT ) & \ + SPWTDP_TR2_TR2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTR3 Time Stamp Elapsed Time 3 Rx (TR3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TR3_TR3_SHIFT 0 +#define SPWTDP_TR3_TR3_MASK 0xffffffffU +#define SPWTDP_TR3_TR3_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TR3_TR3_MASK ) >> \ + SPWTDP_TR3_TR3_SHIFT ) +#define SPWTDP_TR3_TR3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TR3_TR3_MASK ) | \ + ( ( ( _val ) << SPWTDP_TR3_TR3_SHIFT ) & \ + SPWTDP_TR3_TR3_MASK ) ) +#define SPWTDP_TR3_TR3( _val ) \ + ( ( ( _val ) << SPWTDP_TR3_TR3_SHIFT ) & \ + SPWTDP_TR3_TR3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTR4 Time Stamp Elapsed Time 4 Rx (TR4) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TR4_TR4_SHIFT 24 +#define SPWTDP_TR4_TR4_MASK 0xff000000U +#define SPWTDP_TR4_TR4_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TR4_TR4_MASK ) >> \ + SPWTDP_TR4_TR4_SHIFT ) +#define SPWTDP_TR4_TR4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TR4_TR4_MASK ) | \ + ( ( ( _val ) << SPWTDP_TR4_TR4_SHIFT ) & \ + SPWTDP_TR4_TR4_MASK ) ) +#define SPWTDP_TR4_TR4( _val ) \ + ( ( ( _val ) << SPWTDP_TR4_TR4_SHIFT ) & \ + SPWTDP_TR4_TR4_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTTPFTX \ + * Time-Stamp SpaceWire Time-Code and Preamble Field Tx (TTPFTX) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TTPFTX_TSTC_SHIFT 24 +#define SPWTDP_TTPFTX_TSTC_MASK 0xff000000U +#define SPWTDP_TTPFTX_TSTC_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TTPFTX_TSTC_MASK ) >> \ + SPWTDP_TTPFTX_TSTC_SHIFT ) +#define SPWTDP_TTPFTX_TSTC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TTPFTX_TSTC_MASK ) | \ + ( ( ( _val ) << SPWTDP_TTPFTX_TSTC_SHIFT ) & \ + SPWTDP_TTPFTX_TSTC_MASK ) ) +#define SPWTDP_TTPFTX_TSTC( _val ) \ + ( ( ( _val ) << SPWTDP_TTPFTX_TSTC_SHIFT ) & \ + SPWTDP_TTPFTX_TSTC_MASK ) + +#define SPWTDP_TTPFTX_TTPF_SHIFT 0 +#define SPWTDP_TTPFTX_TTPF_MASK 0xffffU +#define SPWTDP_TTPFTX_TTPF_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TTPFTX_TTPF_MASK ) >> \ + SPWTDP_TTPFTX_TTPF_SHIFT ) +#define SPWTDP_TTPFTX_TTPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TTPFTX_TTPF_MASK ) | \ + ( ( ( _val ) << SPWTDP_TTPFTX_TTPF_SHIFT ) & \ + SPWTDP_TTPFTX_TTPF_MASK ) ) +#define SPWTDP_TTPFTX_TTPF( _val ) \ + ( ( ( _val ) << SPWTDP_TTPFTX_TTPF_SHIFT ) & \ + SPWTDP_TTPFTX_TTPF_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTT0 Time Stamp Elapsed Time 0 Tx (TT0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TT0_TT0_SHIFT 0 +#define SPWTDP_TT0_TT0_MASK 0xffffffffU +#define SPWTDP_TT0_TT0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TT0_TT0_MASK ) >> \ + SPWTDP_TT0_TT0_SHIFT ) +#define SPWTDP_TT0_TT0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TT0_TT0_MASK ) | \ + ( ( ( _val ) << SPWTDP_TT0_TT0_SHIFT ) & \ + SPWTDP_TT0_TT0_MASK ) ) +#define SPWTDP_TT0_TT0( _val ) \ + ( ( ( _val ) << SPWTDP_TT0_TT0_SHIFT ) & \ + SPWTDP_TT0_TT0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTT1 Time Stamp Elapsed Time 1 Tx (TT1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TT1_TT1_SHIFT 0 +#define SPWTDP_TT1_TT1_MASK 0xffffffffU +#define SPWTDP_TT1_TT1_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TT1_TT1_MASK ) >> \ + SPWTDP_TT1_TT1_SHIFT ) +#define SPWTDP_TT1_TT1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TT1_TT1_MASK ) | \ + ( ( ( _val ) << SPWTDP_TT1_TT1_SHIFT ) & \ + SPWTDP_TT1_TT1_MASK ) ) +#define SPWTDP_TT1_TT1( _val ) \ + ( ( ( _val ) << SPWTDP_TT1_TT1_SHIFT ) & \ + SPWTDP_TT1_TT1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTT2 Time Stamp Elapsed Time 2 Tx (TT2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TT2_TT2_SHIFT 0 +#define SPWTDP_TT2_TT2_MASK 0xffffffffU +#define SPWTDP_TT2_TT2_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TT2_TT2_MASK ) >> \ + SPWTDP_TT2_TT2_SHIFT ) +#define SPWTDP_TT2_TT2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TT2_TT2_MASK ) | \ + ( ( ( _val ) << SPWTDP_TT2_TT2_SHIFT ) & \ + SPWTDP_TT2_TT2_MASK ) ) +#define SPWTDP_TT2_TT2( _val ) \ + ( ( ( _val ) << SPWTDP_TT2_TT2_SHIFT ) & \ + SPWTDP_TT2_TT2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTT3 Time Stamp Elapsed Time 3 Tx (TT3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TT3_TT3_SHIFT 0 +#define SPWTDP_TT3_TT3_MASK 0xffffffffU +#define SPWTDP_TT3_TT3_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TT3_TT3_MASK ) >> \ + SPWTDP_TT3_TT3_SHIFT ) +#define SPWTDP_TT3_TT3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TT3_TT3_MASK ) | \ + ( ( ( _val ) << SPWTDP_TT3_TT3_SHIFT ) & \ + SPWTDP_TT3_TT3_MASK ) ) +#define SPWTDP_TT3_TT3( _val ) \ + ( ( ( _val ) << SPWTDP_TT3_TT3_SHIFT ) & \ + SPWTDP_TT3_TT3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPTT4 Time Stamp Elapsed Time 4 Tx (TT4) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_TT4_TT4_SHIFT 24 +#define SPWTDP_TT4_TT4_MASK 0xff000000U +#define SPWTDP_TT4_TT4_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_TT4_TT4_MASK ) >> \ + SPWTDP_TT4_TT4_SHIFT ) +#define SPWTDP_TT4_TT4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_TT4_TT4_MASK ) | \ + ( ( ( _val ) << SPWTDP_TT4_TT4_SHIFT ) & \ + SPWTDP_TT4_TT4_MASK ) ) +#define SPWTDP_TT4_TT4( _val ) \ + ( ( ( _val ) << SPWTDP_TT4_TT4_SHIFT ) & \ + SPWTDP_TT4_TT4_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPLPF Latency Preamble Field (LPF) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_LPF_LPF_SHIFT 0 +#define SPWTDP_LPF_LPF_MASK 0xffffU +#define SPWTDP_LPF_LPF_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_LPF_LPF_MASK ) >> \ + SPWTDP_LPF_LPF_SHIFT ) +#define SPWTDP_LPF_LPF_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_LPF_LPF_MASK ) | \ + ( ( ( _val ) << SPWTDP_LPF_LPF_SHIFT ) & \ + SPWTDP_LPF_LPF_MASK ) ) +#define SPWTDP_LPF_LPF( _val ) \ + ( ( ( _val ) << SPWTDP_LPF_LPF_SHIFT ) & \ + SPWTDP_LPF_LPF_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPIE Interrupt Enable (IE) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_IE_NCTCE 0x80000U + +#define SPWTDP_IE_SETE 0x400U + +#define SPWTDP_IE_EDIE3 0x200U + +#define SPWTDP_IE_EDIE2 0x100U + +#define SPWTDP_IE_EDIE1 0x80U + +#define SPWTDP_IE_EDIE0 0x40U + +#define SPWTDP_IE_DITE 0x20U + +#define SPWTDP_IE_DIRE 0x10U + +#define SPWTDP_IE_TTE 0x8U + +#define SPWTDP_IE_TME 0x4U + +#define SPWTDP_IE_TRE 0x2U + +#define SPWTDP_IE_SE 0x1U + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDC Delay Count (DC) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DC_DC_SHIFT 0 +#define SPWTDP_DC_DC_MASK 0x7fffU +#define SPWTDP_DC_DC_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DC_DC_MASK ) >> \ + SPWTDP_DC_DC_SHIFT ) +#define SPWTDP_DC_DC_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DC_DC_MASK ) | \ + ( ( ( _val ) << SPWTDP_DC_DC_SHIFT ) & \ + SPWTDP_DC_DC_MASK ) ) +#define SPWTDP_DC_DC( _val ) \ + ( ( ( _val ) << SPWTDP_DC_DC_SHIFT ) & \ + SPWTDP_DC_DC_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPDS Disable Sync (DS) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_DS_EN 0x80000000U + +#define SPWTDP_DS_CD_SHIFT 0 +#define SPWTDP_DS_CD_MASK 0xffffffU +#define SPWTDP_DS_CD_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_DS_CD_MASK ) >> \ + SPWTDP_DS_CD_SHIFT ) +#define SPWTDP_DS_CD_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_DS_CD_MASK ) | \ + ( ( ( _val ) << SPWTDP_DS_CD_SHIFT ) & \ + SPWTDP_DS_CD_MASK ) ) +#define SPWTDP_DS_CD( _val ) \ + ( ( ( _val ) << SPWTDP_DS_CD_SHIFT ) & \ + SPWTDP_DS_CD_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPEDM0 External Datation 0 Mask (EDM0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_EDM0_EDM0_SHIFT 0 +#define SPWTDP_EDM0_EDM0_MASK 0xffffffffU +#define SPWTDP_EDM0_EDM0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_EDM0_EDM0_MASK ) >> \ + SPWTDP_EDM0_EDM0_SHIFT ) +#define SPWTDP_EDM0_EDM0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_EDM0_EDM0_MASK ) | \ + ( ( ( _val ) << SPWTDP_EDM0_EDM0_SHIFT ) & \ + SPWTDP_EDM0_EDM0_MASK ) ) +#define SPWTDP_EDM0_EDM0( _val ) \ + ( ( ( _val ) << SPWTDP_EDM0_EDM0_SHIFT ) & \ + SPWTDP_EDM0_EDM0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPEDPF0 \ + * External Datation 0 Preamble Field (EDPF0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_EDPF0_EDPF0_SHIFT 0 +#define SPWTDP_EDPF0_EDPF0_MASK 0xffffU +#define SPWTDP_EDPF0_EDPF0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_EDPF0_EDPF0_MASK ) >> \ + SPWTDP_EDPF0_EDPF0_SHIFT ) +#define SPWTDP_EDPF0_EDPF0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_EDPF0_EDPF0_MASK ) | \ + ( ( ( _val ) << SPWTDP_EDPF0_EDPF0_SHIFT ) & \ + SPWTDP_EDPF0_EDPF0_MASK ) ) +#define SPWTDP_EDPF0_EDPF0( _val ) \ + ( ( ( _val ) << SPWTDP_EDPF0_EDPF0_SHIFT ) & \ + SPWTDP_EDPF0_EDPF0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPED0ET0 \ + * External Datation 0 Elapsed Time 0 (ED0ET0) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_ED0ET0_ED0ET0_SHIFT 0 +#define SPWTDP_ED0ET0_ED0ET0_MASK 0xffffffffU +#define SPWTDP_ED0ET0_ED0ET0_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_ED0ET0_ED0ET0_MASK ) >> \ + SPWTDP_ED0ET0_ED0ET0_SHIFT ) +#define SPWTDP_ED0ET0_ED0ET0_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_ED0ET0_ED0ET0_MASK ) | \ + ( ( ( _val ) << SPWTDP_ED0ET0_ED0ET0_SHIFT ) & \ + SPWTDP_ED0ET0_ED0ET0_MASK ) ) +#define SPWTDP_ED0ET0_ED0ET0( _val ) \ + ( ( ( _val ) << SPWTDP_ED0ET0_ED0ET0_SHIFT ) & \ + SPWTDP_ED0ET0_ED0ET0_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPED0ET1 \ + * External Datation 0 Elapsed Time 1 (ED0ET1) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_ED0ET1_ED0ET1_SHIFT 0 +#define SPWTDP_ED0ET1_ED0ET1_MASK 0xffffffffU +#define SPWTDP_ED0ET1_ED0ET1_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_ED0ET1_ED0ET1_MASK ) >> \ + SPWTDP_ED0ET1_ED0ET1_SHIFT ) +#define SPWTDP_ED0ET1_ED0ET1_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_ED0ET1_ED0ET1_MASK ) | \ + ( ( ( _val ) << SPWTDP_ED0ET1_ED0ET1_SHIFT ) & \ + SPWTDP_ED0ET1_ED0ET1_MASK ) ) +#define SPWTDP_ED0ET1_ED0ET1( _val ) \ + ( ( ( _val ) << SPWTDP_ED0ET1_ED0ET1_SHIFT ) & \ + SPWTDP_ED0ET1_ED0ET1_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPED0ET2 \ + * External Datation 0 Elapsed Time 2 (ED0ET2) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_ED0ET2_ED0ET2_SHIFT 0 +#define SPWTDP_ED0ET2_ED0ET2_MASK 0xffffffffU +#define SPWTDP_ED0ET2_ED0ET2_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_ED0ET2_ED0ET2_MASK ) >> \ + SPWTDP_ED0ET2_ED0ET2_SHIFT ) +#define SPWTDP_ED0ET2_ED0ET2_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_ED0ET2_ED0ET2_MASK ) | \ + ( ( ( _val ) << SPWTDP_ED0ET2_ED0ET2_SHIFT ) & \ + SPWTDP_ED0ET2_ED0ET2_MASK ) ) +#define SPWTDP_ED0ET2_ED0ET2( _val ) \ + ( ( ( _val ) << SPWTDP_ED0ET2_ED0ET2_SHIFT ) & \ + SPWTDP_ED0ET2_ED0ET2_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPED0ET3 \ + * External Datation 0 Elapsed Time 3 (ED0ET3) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_ED0ET3_ED0ET3_SHIFT 0 +#define SPWTDP_ED0ET3_ED0ET3_MASK 0xffffffffU +#define SPWTDP_ED0ET3_ED0ET3_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_ED0ET3_ED0ET3_MASK ) >> \ + SPWTDP_ED0ET3_ED0ET3_SHIFT ) +#define SPWTDP_ED0ET3_ED0ET3_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_ED0ET3_ED0ET3_MASK ) | \ + ( ( ( _val ) << SPWTDP_ED0ET3_ED0ET3_SHIFT ) & \ + SPWTDP_ED0ET3_ED0ET3_MASK ) ) +#define SPWTDP_ED0ET3_ED0ET3( _val ) \ + ( ( ( _val ) << SPWTDP_ED0ET3_ED0ET3_SHIFT ) & \ + SPWTDP_ED0ET3_ED0ET3_MASK ) + +/** @} */ + +/** + * @defgroup RTEMSDeviceGRLIBSPWTDPED0ET4 \ + * External Datation 0 Elapsed Time 4 (ED0ET4) + * + * @brief This group contains register bit definitions. + * + * @{ + */ + +#define SPWTDP_ED0ET4_ED0ET4_SHIFT 24 +#define SPWTDP_ED0ET4_ED0ET4_MASK 0xff000000U +#define SPWTDP_ED0ET4_ED0ET4_GET( _reg ) \ + ( ( ( _reg ) & SPWTDP_ED0ET4_ED0ET4_MASK ) >> \ + SPWTDP_ED0ET4_ED0ET4_SHIFT ) +#define SPWTDP_ED0ET4_ED0ET4_SET( _reg, _val ) \ + ( ( ( _reg ) & ~SPWTDP_ED0ET4_ED0ET4_MASK ) | \ + ( ( ( _val ) << SPWTDP_ED0ET4_ED0ET4_SHIFT ) & \ + SPWTDP_ED0ET4_ED0ET4_MASK ) ) +#define SPWTDP_ED0ET4_ED0ET4( _val ) \ + ( ( ( _val ) << SPWTDP_ED0ET4_ED0ET4_SHIFT ) & \ + SPWTDP_ED0ET4_ED0ET4_MASK ) + +/** @} */ + +/** + * @brief This structure defines the SPWTDP register block memory map. + */ +typedef struct spwtdp { + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCONF0. + */ + uint32_t conf0; + + uint32_t reserved_4_c[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCONF3. + */ + uint32_t conf3; + + uint32_t reserved_10_20[ 4 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCTRL. + */ + uint32_t ctrl; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCET0. + */ + uint32_t cet0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCET1. + */ + uint32_t cet1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCET2. + */ + uint32_t cet2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCET3. + */ + uint32_t cet3; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPCET4. + */ + uint32_t cet4; + + uint32_t reserved_38_40[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDPF. + */ + uint32_t dpf; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDET0. + */ + uint32_t det0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDET1. + */ + uint32_t det1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDET2. + */ + uint32_t det2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDET3. + */ + uint32_t det3; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDET4. + */ + uint32_t det4; + + uint32_t reserved_58_60[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTRPFRX. + */ + uint32_t trpfrx; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTR0. + */ + uint32_t tr0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTR1. + */ + uint32_t tr1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTR2. + */ + uint32_t tr2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTR3. + */ + uint32_t tr3; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTR4. + */ + uint32_t tr4; + + uint32_t reserved_78_80[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTTPFTX. + */ + uint32_t ttpftx; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTT0. + */ + uint32_t tt0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTT1. + */ + uint32_t tt1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTT2. + */ + uint32_t tt2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTT3. + */ + uint32_t tt3; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPTT4. + */ + uint32_t tt4; + + uint32_t reserved_98_a0[ 2 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPLPF. + */ + uint32_t lpf; + + uint32_t reserved_a4_c0[ 7 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPIE. + */ + uint32_t ie; + + uint32_t reserved_c4_c8; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDC. + */ + uint32_t dc; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPDS. + */ + uint32_t ds; + + uint32_t reserved_d0_100[ 12 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPEDM0. + */ + uint32_t edm0; + + uint32_t reserved_104_110[ 3 ]; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPEDPF0. + */ + uint32_t edpf0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPED0ET0. + */ + uint32_t ed0et0; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPED0ET1. + */ + uint32_t ed0et1; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPED0ET2. + */ + uint32_t ed0et2; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPED0ET3. + */ + uint32_t ed0et3; + + /** + * @brief See @ref RTEMSDeviceGRLIBSPWTDPED0ET4. + */ + uint32_t ed0et4; +} spwtdp; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GRLIB_SPWTDP_REGS_H */ diff --git a/bsps/include/grlib/spwtdp.h b/bsps/include/grlib/spwtdp.h index b2fa29889f..c9870c4edd 100644 --- a/bsps/include/grlib/spwtdp.h +++ b/bsps/include/grlib/spwtdp.h @@ -1,12 +1,31 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* SPWTDP - SpaceWire Time Distribution Protocol. The driver provides * device discovery and interrupt management. * * COPYRIGHT (c) 2017. * Cobham Gaisler AB * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. + * 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. * */ diff --git a/bsps/include/grlib/tlib.h b/bsps/include/grlib/tlib.h index debb8c8215..b2e8984489 100644 --- a/bsps/include/grlib/tlib.h +++ b/bsps/include/grlib/tlib.h @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* * Timer Library (TLIB) * @@ -11,9 +13,26 @@ * COPYRIGHT (c) 2011. * Cobham Gaisler AB. * - * 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. + * 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 __TLIB_H__ |