[PATCH rtems v1 2/2] bsps/zynqmp: Added I2C support for ZynqMP
Chris Johns
chrisj at rtems.org
Tue Aug 24 02:37:57 UTC 2021
On 24/8/21 8:24 am, Stephen Clark wrote:
> Added I2C drivers for ZynqMP and updated build system accordingly.
> ---
> bsps/aarch64/xilinx-zynqmp/include/bsp.h | 4 ++
> bsps/aarch64/xilinx-zynqmp/include/bsp/i2c.h | 63 +++++++++++++++++++
> bsps/aarch64/xilinx-zynqmp/include/bsp/irq.h | 2 +
> bsps/aarch64/xilinx-zynqmp/start/bspstart.c | 10 +++
> spec/build/bsps/aarch64/xilinx-zynqmp/grp.yml | 4 ++
> .../bsps/aarch64/xilinx-zynqmp/grp_zu3eg.yml | 2 +
> .../aarch64/xilinx-zynqmp/objcadencei2c.yml | 19 ++++++
> .../bsps/aarch64/xilinx-zynqmp/optclki2c0.yml | 19 ++++++
> .../bsps/aarch64/xilinx-zynqmp/optclki2c1.yml | 19 ++++++
> 9 files changed, 142 insertions(+)
> create mode 100644 bsps/aarch64/xilinx-zynqmp/include/bsp/i2c.h
> create mode 100644 spec/build/bsps/aarch64/xilinx-zynqmp/objcadencei2c.yml
> create mode 100644 spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c0.yml
> create mode 100644 spec/build/bsps/aarch64/xilinx-zynqmp/optclki2c1.yml
>
> diff --git a/bsps/aarch64/xilinx-zynqmp/include/bsp.h b/bsps/aarch64/xilinx-zynqmp/include/bsp.h
> index 83f2e2f4e4..6d49b9ad2a 100644
> --- a/bsps/aarch64/xilinx-zynqmp/include/bsp.h
> +++ b/bsps/aarch64/xilinx-zynqmp/include/bsp.h
> @@ -70,6 +70,10 @@ BSP_START_TEXT_SECTION void zynqmp_setup_mmu_and_cache(void);
>
> void zynqmp_debug_console_flush(void);
>
> +uint32_t zynqmp_clock_i2c0(void);
> +
> +uint32_t zynqmp_clock_i2c1(void);
> +
> #ifdef __cplusplus
> }
> #endif /* __cplusplus */
> diff --git a/bsps/aarch64/xilinx-zynqmp/include/bsp/i2c.h b/bsps/aarch64/xilinx-zynqmp/include/bsp/i2c.h
> new file mode 100644
> index 0000000000..e09747d414
> --- /dev/null
> +++ b/bsps/aarch64/xilinx-zynqmp/include/bsp/i2c.h
> @@ -0,0 +1,63 @@
> +/*
> + * SPDX-License-Identifier: BSD-2-Clause
> + *
> + * Copyright (C) 2021 On-Line Applications Research (OAR)
> + *
> + * 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 LIBBSP_ARM_XILINX_ZYNQ_I2C_H
> +#define LIBBSP_ARM_XILINX_ZYNQ_I2C_H
> +
> +#include <dev/i2c/cadence-i2c.h>
> +#include <bsp/irq.h>
> +#include <bsp.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif /* __cplusplus */
> +
> +static inline int zynqmp_register_i2c_0(void)
> +{
> + return i2c_bus_register_cadence(
> + "/dev/i2c-0",
> + 0x00FF020000,
> + zynqmp_clock_i2c0(),
> + ZYNQMP_IRQ_I2C_0
> + );
> +}
> +
> +static inline int zynqmp_register_i2c_1(void)
> +{
> + return i2c_bus_register_cadence(
> + "/dev/i2c-1",
> + 0x00FF030000,
> + zynqmp_clock_i2c1(),
> + ZYNQMP_IRQ_I2C_1
> + );
I know these are currently inlined but I do not know why they are. It is the
only BSP that does this. Should they be moved to a .c file seem they are being
touched?
Chris
More information about the devel
mailing list