soc: nxp: ke1xf: add I2C support

Add support for the Low Power Inter-Integrated Circuit (LPI2C)
controllers found in the NXP Kinetis KE1xF SoC series.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
Henrik Brix Andersen 2019-05-14 17:03:22 +02:00 committed by Maureen Helm
commit efa2b23fcd
5 changed files with 55 additions and 0 deletions

View file

@ -14,6 +14,8 @@
uart-0 = &uart0;
uart-1 = &uart1;
uart-2 = &uart2;
i2c-0 = &i2c0;
i2c-1 = &i2c1;
pinmux-a = &pinmux_a;
pinmux-b = &pinmux_b;
pinmux-c = &pinmux_c;
@ -115,6 +117,30 @@
status = "disabled";
};
i2c0: i2c@40066000 {
compatible = "nxp,imx-lpi2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40066000 0x1000>;
interrupts = <24 0>;
clocks = <&pcc 0x198>;
label = "I2C_0";
status = "disabled";
};
i2c1: i2c@40067000 {
compatible = "nxp,imx-lpi2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40067000 0x1000>;
interrupts = <25 0>;
clocks = <&pcc 0x19c>;
label = "I2C_1";
status = "disabled";
};
pinmux_a: pinmux@40049000 {
compatible = "nxp,kinetis-pinmux";
reg = <0x40049000 0x1000>;

View file

@ -70,6 +70,13 @@ config UART_MCUX_LPUART
endif # SERIAL
if I2C
config I2C_MCUX_LPI2C
default y
endif # I2C
source "soc/arm/nxp_kinetis/ke1xf/Kconfig.defconfig.mke*"
endif # SOC_SERIES_KINETIS_KE1XF

View file

@ -15,6 +15,7 @@ config SOC_SERIES_KINETIS_KE1XF
select HAS_MCUX
select HAS_MCUX_CACHE
select HAS_MCUX_FTFX
select HAS_MCUX_LPI2C
select HAS_MCUX_LPUART
select HAS_MCUX_PCC
select HAS_MCUX_RTC

View file

@ -59,3 +59,18 @@
#define DT_UART_MCUX_LPUART_2_CLOCK_NAME DT_NXP_KINETIS_LPUART_4006C000_CLOCK_CONTROLLER
#define DT_UART_MCUX_LPUART_2_CLOCK_SUBSYS DT_NXP_KINETIS_LPUART_4006C000_CLOCK_NAME
#define CONFIG_I2C_0_NAME DT_NXP_IMX_LPI2C_40066000_LABEL
#define DT_I2C_MCUX_LPI2C_0_BASE_ADDRESS DT_NXP_IMX_LPI2C_40066000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_0_IRQ DT_NXP_IMX_LPI2C_40066000_IRQ_0
#define DT_I2C_MCUX_LPI2C_0_IRQ_PRI DT_NXP_IMX_LPI2C_40066000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_0_BITRATE DT_NXP_IMX_LPI2C_40066000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_0_CLOCK_NAME DT_NXP_IMX_LPI2C_40066000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_0_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_40066000_CLOCK_NAME
#define CONFIG_I2C_1_NAME DT_NXP_IMX_LPI2C_40067000_LABEL
#define DT_I2C_MCUX_LPI2C_1_BASE_ADDRESS DT_NXP_IMX_LPI2C_40067000_BASE_ADDRESS
#define DT_I2C_MCUX_LPI2C_1_IRQ DT_NXP_IMX_LPI2C_40067000_IRQ_0
#define DT_I2C_MCUX_LPI2C_1_IRQ_PRI DT_NXP_IMX_LPI2C_40067000_IRQ_0_PRIORITY
#define DT_I2C_MCUX_LPI2C_1_BITRATE DT_NXP_IMX_LPI2C_40067000_CLOCK_FREQUENCY
#define DT_I2C_MCUX_LPI2C_1_CLOCK_NAME DT_NXP_IMX_LPI2C_40067000_CLOCK_CONTROLLER
#define DT_I2C_MCUX_LPI2C_1_CLOCK_SUBSYS DT_NXP_IMX_LPI2C_40067000_CLOCK_NAME

View file

@ -202,6 +202,12 @@ static ALWAYS_INLINE void clk_init(void)
#ifdef CONFIG_UART_MCUX_LPUART_2
CLOCK_SetIpSrc(kCLOCK_Lpuart2, kCLOCK_IpSrcFircAsync);
#endif
#ifdef CONFIG_I2C_0
CLOCK_SetIpSrc(kCLOCK_Lpi2c0, kCLOCK_IpSrcFircAsync);
#endif
#ifdef CONFIG_I2C_1
CLOCK_SetIpSrc(kCLOCK_Lpi2c1, kCLOCK_IpSrcFircAsync);
#endif
#ifdef DT_NXP_KINETIS_SCG_0_CLKOUT_SOURCE
CLOCK_SetClkOutSel(DT_NXP_KINETIS_SCG_0_CLKOUT_SOURCE);
#endif