soc: nxp: rt: Add CSI video support

Add CSI node to generic nxp rt dtsi.
Add corresponding dts binding.
Add CSI capability for rt MCUs.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
This commit is contained in:
Loic Poulain 2019-07-01 14:47:14 +02:00 committed by Maureen Helm
commit a019e92d23
7 changed files with 62 additions and 0 deletions

View file

@ -547,6 +547,14 @@
clocks = <&ccm IMX_CCM_USDHC2_CLK 0 0>;
label = "USDHC_2";
};
csi: csi@402bc000 {
compatible = "nxp,imx-csi";
reg = <0x402BC000 0x4000>;
interrupts = <43 1>;
status = "disabled";
label = "CSI";
};
};
};

View file

@ -0,0 +1,26 @@
#
# Copyright (c) 2019, Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#
title: NXP MCUX CSI module
description: >
This binding gives a base representation of NXP MCUX CMOS Sensor Interface
compatible: "nxp,imx-csi"
include: base.yaml
properties:
interrupts:
required: true
label:
required: true
sensor-label:
required: true
type: string
description: label of connected sensor device

View file

@ -152,4 +152,9 @@ config HAS_MCUX_SMC
help
Set if the SMC module is present in the SoC.
config HAS_MCUX_CSI
bool
help
Set if the CMOS Sensor Interface module is present in the SoC.
endif # HAS_MCUX

View file

@ -165,6 +165,13 @@ config USB_DC_NXP_EHCI
endif # USB
if VIDEO
config VIDEO_MCUX_CSI
default y if HAS_MCUX_CSI
endif
source "soc/arm/nxp_imx/rt/Kconfig.defconfig.mimxrt*"
endif # SOC_SERIES_IMX_RT

View file

@ -70,6 +70,7 @@ config SOC_MIMXRT1051
select HAS_MCUX_USB_EHCI
select HAS_MCUX_USDHC1
select HAS_MCUX_USDHC2
select HAS_MCUX_CSI
config SOC_MIMXRT1052
bool "SOC_MIMXRT1052"
@ -93,6 +94,7 @@ config SOC_MIMXRT1052
select HAS_MCUX_USB_EHCI
select HAS_MCUX_USDHC1
select HAS_MCUX_USDHC2
select HAS_MCUX_CSI
config SOC_MIMXRT1061
bool "SOC_MIMXRT1061"
@ -113,6 +115,7 @@ config SOC_MIMXRT1061
select HAS_MCUX_USB_EHCI
select HAS_MCUX_USDHC1
select HAS_MCUX_USDHC2
select HAS_MCUX_CSI
config SOC_MIMXRT1062
bool "SOC_MIMXRT1062"
@ -136,6 +139,7 @@ config SOC_MIMXRT1062
select HAS_MCUX_USB_EHCI
select HAS_MCUX_USDHC1
select HAS_MCUX_USDHC2
select HAS_MCUX_CSI
config SOC_MIMXRT1064
bool "SOC_MIMXRT1064"
@ -159,6 +163,7 @@ config SOC_MIMXRT1064
select HAS_MCUX_USB_EHCI
select HAS_MCUX_USDHC1
select HAS_MCUX_USDHC2
select HAS_MCUX_CSI
endchoice

View file

@ -233,4 +233,10 @@
#define DT_PWM_MCUX_15_NAME DT_NXP_IMX_PWM_403E8000_PWM3_LABEL
#define DT_PWM_MCUX_15_INDEX DT_NXP_IMX_PWM_403E8000_PWM3_INDEX
#define DT_VIDEO_MCUX_CSI_BASE_ADDRESS DT_NXP_IMX_CSI_402BC000_BASE_ADDRESS
#define DT_VIDEO_MCUX_CSI_IRQ DT_NXP_IMX_CSI_402BC000_IRQ_0
#define DT_VIDEO_MCUX_CSI_IRQ_PRI DT_NXP_IMX_CSI_402BC000_IRQ_0_PRIORITY
#define DT_VIDEO_MCUX_CSI_NAME DT_NXP_IMX_CSI_402BC000_LABEL
#define DT_VIDEO_MCUX_CSI_SENSOR_NAME DT_NXP_IMX_CSI_402BC000_SENSOR_LABEL
/* End of SoC Level DTS fixup file */

View file

@ -199,6 +199,11 @@ static ALWAYS_INLINE void clock_init(void)
CLOCK_SetMux(kCLOCK_Usdhc2Mux, 1U);
CLOCK_EnableClock(kCLOCK_Usdhc2);
#endif
#endif
#ifdef CONFIG_VIDEO_MCUX_CSI
CLOCK_EnableClock(kCLOCK_Csi); /* Disable CSI clock gate */
CLOCK_SetDiv(kCLOCK_CsiDiv, 0); /* Set CSI divider to 1 */
CLOCK_SetMux(kCLOCK_CsiMux, 0); /* Set CSI source to OSC 24M */
#endif
/* Keep the system clock running so SYSTICK can wake up the system from