From 563f8f1464525f6b20b57a2090a4c53145a188dd Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Tue, 11 Jul 2017 10:38:09 -0500 Subject: [PATCH] i2c: mcux: Convert to supporting device tree Update the MCUX I2C driver and related platforms to get their I2C information from the device tree. We also updated a few of the sensor drivers found on the FRDM & Hexiwear boards to get their I2C bus name from the device tree instead of directly from Kconfig. Signed-off-by: Kumar Gala --- boards/arm/frdm_k64f/Kconfig.defconfig | 9 ------- boards/arm/frdm_kl25z/Kconfig.defconfig | 3 --- boards/arm/frdm_kw41z/Kconfig.defconfig | 6 ----- boards/arm/hexiwear_k64/Kconfig.defconfig | 19 ------------- boards/arm/hexiwear_kw40z/Kconfig.defconfig | 3 --- drivers/i2c/Kconfig | 1 + drivers/i2c/i2c_mcux.c | 12 ++++----- drivers/sensor/fxas21002/Kconfig | 1 + drivers/sensor/fxos8700/Kconfig | 2 +- drivers/sensor/max30101/Kconfig | 1 + dts/arm/frdm_k64f.dts | 7 +++++ dts/arm/frdm_k64f.fixup | 6 +++++ dts/arm/frdm_kl25z.dts | 6 +++++ dts/arm/frdm_kl25z.fixup | 5 ++++ dts/arm/frdm_kw41z.dts | 6 +++++ dts/arm/frdm_kw41z.fixup | 6 +++++ dts/arm/hexiwear_k64.dts | 11 ++++++++ dts/arm/hexiwear_k64.fixup | 13 +++++++++ dts/arm/hexiwear_kw40z.dts | 6 +++++ dts/arm/hexiwear_kw40z.fixup | 5 ++++ dts/arm/nxp/nxp_k6x.dtsi | 30 +++++++++++++++++++++ dts/arm/nxp/nxp_kl25z.dtsi | 20 ++++++++++++++ dts/arm/nxp/nxp_kw40z.dtsi | 20 ++++++++++++++ dts/arm/nxp/nxp_kw41z.dtsi | 20 ++++++++++++++ dts/arm/yaml/nxp,kinetis-i2c.yaml | 28 +++++++++++++++++++ 25 files changed, 199 insertions(+), 47 deletions(-) create mode 100644 dts/arm/yaml/nxp,kinetis-i2c.yaml diff --git a/boards/arm/frdm_k64f/Kconfig.defconfig b/boards/arm/frdm_k64f/Kconfig.defconfig index 45ea3662e31..8f3e6941a96 100644 --- a/boards/arm/frdm_k64f/Kconfig.defconfig +++ b/boards/arm/frdm_k64f/Kconfig.defconfig @@ -86,9 +86,6 @@ if I2C_0 config I2C_0_DEFAULT_CFG default 0x12 -config I2C_0_IRQ_PRI - default 0 - endif # I2C_0 config I2C_1 @@ -99,9 +96,6 @@ if I2C_1 config I2C_1_DEFAULT_CFG default 0x12 -config I2C_1_IRQ_PRI - default 0 - endif # I2C_1 endif # I2C @@ -115,9 +109,6 @@ endif # ADC if FXOS8700 -config FXOS8700_I2C_NAME - default I2C_0_NAME - config FXOS8700_I2C_ADDRESS default 0x1d diff --git a/boards/arm/frdm_kl25z/Kconfig.defconfig b/boards/arm/frdm_kl25z/Kconfig.defconfig index 8f62baefe3d..658cdbc4305 100644 --- a/boards/arm/frdm_kl25z/Kconfig.defconfig +++ b/boards/arm/frdm_kl25z/Kconfig.defconfig @@ -83,9 +83,6 @@ if I2C_0 config I2C_0_DEFAULT_CFG default 0x12 -config I2C_0_IRQ_PRI - default 0 - endif # I2C_0 endif # I2C diff --git a/boards/arm/frdm_kw41z/Kconfig.defconfig b/boards/arm/frdm_kw41z/Kconfig.defconfig index 3adc33750ca..970fb522fdc 100644 --- a/boards/arm/frdm_kw41z/Kconfig.defconfig +++ b/boards/arm/frdm_kw41z/Kconfig.defconfig @@ -65,9 +65,6 @@ if I2C_1 config I2C_1_DEFAULT_CFG default 0x12 -config I2C_1_IRQ_PRI - default 0 - endif # I2C_1 endif # I2C @@ -81,9 +78,6 @@ endif # ADC if FXOS8700 -config FXOS8700_I2C_NAME - default I2C_1_NAME - config FXOS8700_I2C_ADDRESS default 0x1f diff --git a/boards/arm/hexiwear_k64/Kconfig.defconfig b/boards/arm/hexiwear_k64/Kconfig.defconfig index a7a0748a581..bdbd7cee52b 100644 --- a/boards/arm/hexiwear_k64/Kconfig.defconfig +++ b/boards/arm/hexiwear_k64/Kconfig.defconfig @@ -86,9 +86,6 @@ if I2C_0 config I2C_0_DEFAULT_CFG default 0x12 -config I2C_0_IRQ_PRI - default 0 - endif # I2C_0 config I2C_1 @@ -99,9 +96,6 @@ if I2C_1 config I2C_1_DEFAULT_CFG default 0x12 -config I2C_1_IRQ_PRI - default 0 - endif # I2C_1 endif # I2C @@ -115,9 +109,6 @@ endif # ADC if FXOS8700 -config FXOS8700_I2C_NAME - default I2C_1_NAME - config FXOS8700_I2C_ADDRESS default 0x1e @@ -131,9 +122,6 @@ endif # FXOS8700 if FXAS21002 -config FXAS21002_I2C_NAME - default I2C_1_NAME - config FXAS21002_I2C_ADDRESS default 0x20 @@ -145,13 +133,6 @@ config FXAS21002_GPIO_PIN endif # FXAS21002 -if MAX30101 - -config MAX30101_I2C_NAME - default I2C_0_NAME - -endif # MAX30101 - if PWM_K64_FTM config PWM_K64_FTM_0 diff --git a/boards/arm/hexiwear_kw40z/Kconfig.defconfig b/boards/arm/hexiwear_kw40z/Kconfig.defconfig index 8639d1558c9..f665a6bfada 100644 --- a/boards/arm/hexiwear_kw40z/Kconfig.defconfig +++ b/boards/arm/hexiwear_kw40z/Kconfig.defconfig @@ -57,9 +57,6 @@ if I2C config I2C_1 def_bool y -config I2C_1_IRQ_PRI - default 0 - endif # I2C if ADC diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index 9c1a0a1ff79..d2bee95a7ce 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig @@ -63,6 +63,7 @@ config TWIHS_SAM config I2C_MCUX bool "MCUX I2C driver" depends on HAS_MCUX + select HAS_DTS_I2C default n help Enable the mcux I2C driver. diff --git a/drivers/i2c/i2c_mcux.c b/drivers/i2c/i2c_mcux.c index 195e430c7a6..b0f441e314e 100644 --- a/drivers/i2c/i2c_mcux.c +++ b/drivers/i2c/i2c_mcux.c @@ -186,7 +186,7 @@ static const struct i2c_driver_api i2c_mcux_driver_api = { static void i2c_mcux_config_func_0(struct device *dev); static const struct i2c_mcux_config i2c_mcux_config_0 = { - .base = I2C0, + .base = (I2C_Type *)CONFIG_I2C_MCUX_0_BASE_ADDRESS, .clock_source = I2C0_CLK_SRC, .irq_config_func = i2c_mcux_config_func_0, .default_cfg.raw = CONFIG_I2C_0_DEFAULT_CFG, @@ -203,10 +203,10 @@ static void i2c_mcux_config_func_0(struct device *dev) { ARG_UNUSED(dev); - IRQ_CONNECT(IRQ_I2C0, CONFIG_I2C_0_IRQ_PRI, + IRQ_CONNECT(CONFIG_I2C_MCUX_0_IRQ, CONFIG_I2C_MCUX_0_IRQ_PRI, i2c_mcux_isr, DEVICE_GET(i2c_mcux_0), 0); - irq_enable(I2C0_IRQn); + irq_enable(CONFIG_I2C_MCUX_0_IRQ); } #endif /* CONFIG_I2C_0 */ @@ -214,7 +214,7 @@ static void i2c_mcux_config_func_0(struct device *dev) static void i2c_mcux_config_func_1(struct device *dev); static const struct i2c_mcux_config i2c_mcux_config_1 = { - .base = I2C1, + .base = (I2C_Type *)CONFIG_I2C_MCUX_1_BASE_ADDRESS, .clock_source = I2C1_CLK_SRC, .irq_config_func = i2c_mcux_config_func_1, .default_cfg.raw = CONFIG_I2C_1_DEFAULT_CFG, @@ -229,9 +229,9 @@ DEVICE_AND_API_INIT(i2c_mcux_1, CONFIG_I2C_1_NAME, &i2c_mcux_init, static void i2c_mcux_config_func_1(struct device *dev) { - IRQ_CONNECT(IRQ_I2C1, CONFIG_I2C_1_IRQ_PRI, + IRQ_CONNECT(CONFIG_I2C_MCUX_1_IRQ, CONFIG_I2C_MCUX_1_IRQ_PRI, i2c_mcux_isr, DEVICE_GET(i2c_mcux_1), 0); - irq_enable(I2C1_IRQn); + irq_enable(CONFIG_I2C_MCUX_1_IRQ); } #endif /* CONFIG_I2C_1 */ diff --git a/drivers/sensor/fxas21002/Kconfig b/drivers/sensor/fxas21002/Kconfig index 263be459af2..d403fd3cd33 100644 --- a/drivers/sensor/fxas21002/Kconfig +++ b/drivers/sensor/fxas21002/Kconfig @@ -20,6 +20,7 @@ config FXAS21002_NAME config FXAS21002_I2C_NAME string "I2C device name" + depends on !HAS_DTS_I2C default I2C_0_NAME config FXAS21002_I2C_ADDRESS diff --git a/drivers/sensor/fxos8700/Kconfig b/drivers/sensor/fxos8700/Kconfig index 8bc19c69f30..356825f6da1 100644 --- a/drivers/sensor/fxos8700/Kconfig +++ b/drivers/sensor/fxos8700/Kconfig @@ -19,7 +19,7 @@ config FXOS8700_NAME config FXOS8700_I2C_NAME string "I2C device name" - depends on FXOS8700 + depends on FXOS8700 && !HAS_DTS_I2C default I2C_0_NAME config FXOS8700_I2C_ADDRESS diff --git a/drivers/sensor/max30101/Kconfig b/drivers/sensor/max30101/Kconfig index f14b61b108d..dc97bec777f 100644 --- a/drivers/sensor/max30101/Kconfig +++ b/drivers/sensor/max30101/Kconfig @@ -21,6 +21,7 @@ config MAX30101_NAME config MAX30101_I2C_NAME string prompt "I2C device name" + depends on !HAS_DTS_I2C default "I2C_0" config MAX30101_SMP_AVE diff --git a/dts/arm/frdm_k64f.dts b/dts/arm/frdm_k64f.dts index 717b1500f77..b2d60c5144f 100644 --- a/dts/arm/frdm_k64f.dts +++ b/dts/arm/frdm_k64f.dts @@ -21,6 +21,9 @@ gpio_c = &gpioc; gpio_d = &gpiod; gpio_e = &gpioe; + i2c_0 = &i2c0; + i2c_1 = &i2c1; + i2c_2 = &i2c2; }; chosen { @@ -39,6 +42,10 @@ status = "ok"; }; +&i2c0 { + status = "ok"; +}; + &uart0 { status = "ok"; current-speed = <115200>; diff --git a/dts/arm/frdm_k64f.fixup b/dts/arm/frdm_k64f.fixup index 74fbf3e72cf..931900acf47 100644 --- a/dts/arm/frdm_k64f.fixup +++ b/dts/arm/frdm_k64f.fixup @@ -33,3 +33,9 @@ #define CONFIG_ADC_1_IRQ NXP_KINETIS_ADC16_400BB000_IRQ_0 #define CONFIG_ADC_1_IRQ_PRI NXP_KINETIS_ADC16_400BB000_IRQ_0_PRIORITY #define CONFIG_ADC_1_NAME NXP_KINETIS_ADC16_400BB000_LABEL + +#define CONFIG_I2C_0_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_FXOS8700_I2C_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_I2C_MCUX_0_BASE_ADDRESS NXP_KINETIS_I2C_40066000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_0_IRQ NXP_KINETIS_I2C_40066000_IRQ_0 +#define CONFIG_I2C_MCUX_0_IRQ_PRI NXP_KINETIS_I2C_40066000_IRQ_0_PRIORITY diff --git a/dts/arm/frdm_kl25z.dts b/dts/arm/frdm_kl25z.dts index 77d150f15dd..6c166dd9c45 100644 --- a/dts/arm/frdm_kl25z.dts +++ b/dts/arm/frdm_kl25z.dts @@ -9,6 +9,8 @@ aliases { adc_0 = &adc0; uart_0 = &uart0; + i2c_0 = &i2c0; + i2c_1 = &i2c1; }; chosen { @@ -22,6 +24,10 @@ status = "ok"; }; +&i2c0 { + status = "ok"; +}; + &uart0 { status = "ok"; current-speed = <115200>; diff --git a/dts/arm/frdm_kl25z.fixup b/dts/arm/frdm_kl25z.fixup index 8a3a2b2a967..f68b6a3e72b 100644 --- a/dts/arm/frdm_kl25z.fixup +++ b/dts/arm/frdm_kl25z.fixup @@ -5,3 +5,8 @@ #define CONFIG_ADC_0_IRQ NXP_KINETIS_ADC16_4003B000_IRQ_0 #define CONFIG_ADC_0_IRQ_PRI NXP_KINETIS_ADC16_4003B000_IRQ_0_PRIORITY #define CONFIG_ADC_0_NAME NXP_KINETIS_ADC16_4003B000_LABEL + +#define CONFIG_I2C_0_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_I2C_MCUX_0_BASE_ADDRESS NXP_KINETIS_I2C_40066000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_0_IRQ NXP_KINETIS_I2C_40066000_IRQ_0 +#define CONFIG_I2C_MCUX_0_IRQ_PRI NXP_KINETIS_I2C_40066000_IRQ_0_PRIORITY diff --git a/dts/arm/frdm_kw41z.dts b/dts/arm/frdm_kw41z.dts index 057d0e685f0..9fa948343d1 100644 --- a/dts/arm/frdm_kw41z.dts +++ b/dts/arm/frdm_kw41z.dts @@ -15,6 +15,8 @@ gpio_a = &gpioa; gpio_b = &gpiob; gpio_c = &gpioc; + i2c_0 = &i2c0; + i2c_1 = &i2c1; }; chosen { @@ -28,6 +30,10 @@ status = "ok"; }; +&i2c1 { + status = "ok"; +}; + &lpuart0 { status = "ok"; current-speed = <115200>; diff --git a/dts/arm/frdm_kw41z.fixup b/dts/arm/frdm_kw41z.fixup index dbe2561b3c6..ba21cc533f0 100644 --- a/dts/arm/frdm_kw41z.fixup +++ b/dts/arm/frdm_kw41z.fixup @@ -8,3 +8,9 @@ #define CONFIG_ADC_0_IRQ NXP_KINETIS_ADC16_4003B000_IRQ_0 #define CONFIG_ADC_0_IRQ_PRI NXP_KINETIS_ADC16_4003B000_IRQ_0_PRIORITY #define CONFIG_ADC_0_NAME NXP_KINETIS_ADC16_4003B000_LABEL + +#define CONFIG_I2C_1_NAME NXP_KINETIS_I2C_40067000_LABEL +#define CONFIG_FXOS8700_I2C_NAME NXP_KINETIS_I2C_40067000_LABEL +#define CONFIG_I2C_MCUX_1_BASE_ADDRESS NXP_KINETIS_I2C_40067000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_1_IRQ NXP_KINETIS_I2C_40067000_IRQ_0 +#define CONFIG_I2C_MCUX_1_IRQ_PRI NXP_KINETIS_I2C_40067000_IRQ_0_PRIORITY diff --git a/dts/arm/hexiwear_k64.dts b/dts/arm/hexiwear_k64.dts index e1345cf6afa..b8bb5714b82 100644 --- a/dts/arm/hexiwear_k64.dts +++ b/dts/arm/hexiwear_k64.dts @@ -21,6 +21,9 @@ gpio_c = &gpioc; gpio_d = &gpiod; gpio_e = &gpioe; + i2c_0 = &i2c0; + i2c_1 = &i2c1; + i2c_2 = &i2c2; }; chosen { @@ -39,6 +42,14 @@ status = "ok"; }; +&i2c0 { + status = "ok"; +}; + +&i2c1 { + status = "ok"; +}; + &uart0 { status = "ok"; current-speed = <115200>; diff --git a/dts/arm/hexiwear_k64.fixup b/dts/arm/hexiwear_k64.fixup index 74fbf3e72cf..170d16b3c02 100644 --- a/dts/arm/hexiwear_k64.fixup +++ b/dts/arm/hexiwear_k64.fixup @@ -33,3 +33,16 @@ #define CONFIG_ADC_1_IRQ NXP_KINETIS_ADC16_400BB000_IRQ_0 #define CONFIG_ADC_1_IRQ_PRI NXP_KINETIS_ADC16_400BB000_IRQ_0_PRIORITY #define CONFIG_ADC_1_NAME NXP_KINETIS_ADC16_400BB000_LABEL + +#define CONFIG_I2C_0_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_MAX30101_I2C_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_I2C_MCUX_0_BASE_ADDRESS NXP_KINETIS_I2C_40066000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_0_IRQ NXP_KINETIS_I2C_40066000_IRQ_0 +#define CONFIG_I2C_MCUX_0_IRQ_PRI NXP_KINETIS_I2C_40066000_IRQ_0_PRIORITY + +#define CONFIG_I2C_1_NAME NXP_KINETIS_I2C_40067000_LABEL +#define CONFIG_FXOS8700_I2C_NAME NXP_KINETIS_I2C_40067000_LABEL +#define CONFIG_FXAS21002_I2C_NAME NXP_KINETIS_I2C_40067000_LABEL +#define CONFIG_I2C_MCUX_1_BASE_ADDRESS NXP_KINETIS_I2C_40067000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_1_IRQ NXP_KINETIS_I2C_40067000_IRQ_0 +#define CONFIG_I2C_MCUX_1_IRQ_PRI NXP_KINETIS_I2C_40067000_IRQ_0_PRIORITY diff --git a/dts/arm/hexiwear_kw40z.dts b/dts/arm/hexiwear_kw40z.dts index 90a2db6e3c9..0afe73c55f7 100644 --- a/dts/arm/hexiwear_kw40z.dts +++ b/dts/arm/hexiwear_kw40z.dts @@ -15,6 +15,8 @@ gpio_a = &gpioa; gpio_b = &gpiob; gpio_c = &gpioc; + i2c_0 = &i2c0; + i2c_1 = &i2c1; }; chosen { @@ -27,6 +29,10 @@ status = "ok"; }; +&i2c0 { + status = "ok"; +}; + &lpuart0 { status = "ok"; current-speed = <115200>; diff --git a/dts/arm/hexiwear_kw40z.fixup b/dts/arm/hexiwear_kw40z.fixup index dbe2561b3c6..46d61c2301b 100644 --- a/dts/arm/hexiwear_kw40z.fixup +++ b/dts/arm/hexiwear_kw40z.fixup @@ -8,3 +8,8 @@ #define CONFIG_ADC_0_IRQ NXP_KINETIS_ADC16_4003B000_IRQ_0 #define CONFIG_ADC_0_IRQ_PRI NXP_KINETIS_ADC16_4003B000_IRQ_0_PRIORITY #define CONFIG_ADC_0_NAME NXP_KINETIS_ADC16_4003B000_LABEL + +#define CONFIG_I2C_0_NAME NXP_KINETIS_I2C_40066000_LABEL +#define CONFIG_I2C_MCUX_0_BASE_ADDRESS NXP_KINETIS_I2C_40066000_BASE_ADDRESS_0 +#define CONFIG_I2C_MCUX_0_IRQ NXP_KINETIS_I2C_40066000_IRQ_0 +#define CONFIG_I2C_MCUX_0_IRQ_PRI NXP_KINETIS_I2C_40066000_IRQ_0_PRIORITY diff --git a/dts/arm/nxp/nxp_k6x.dtsi b/dts/arm/nxp/nxp_k6x.dtsi index 0ce2f1cd1e4..4de96319d16 100644 --- a/dts/arm/nxp/nxp_k6x.dtsi +++ b/dts/arm/nxp/nxp_k6x.dtsi @@ -73,6 +73,36 @@ }; }; + i2c0: i2c@40066000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40066000 0x1000>; + interrupts = <24 0>; + label = "I2C_0"; + status = "disabled"; + }; + + i2c1: i2c@40067000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40067000 0x1000>; + interrupts = <25 0>; + label = "I2C_1"; + status = "disabled"; + }; + + i2c2: i2c@400e6000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x400e6000 0x1000>; + interrupts = <74 0>; + label = "I2C_2"; + status = "disabled"; + }; + uart0: uart@4006a000 { compatible = "nxp,kinetis-uart"; reg = <0x4006a000 0x1000>; diff --git a/dts/arm/nxp/nxp_kl25z.dtsi b/dts/arm/nxp/nxp_kl25z.dtsi index 958f0a38adb..d756fb1c7cf 100644 --- a/dts/arm/nxp/nxp_kl25z.dtsi +++ b/dts/arm/nxp/nxp_kl25z.dtsi @@ -22,6 +22,26 @@ reg = <0 0x20000>; }; + i2c0: i2c@40066000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40066000 0x1000>; + interrupts = <8 0>; + label = "I2C_0"; + status = "disabled"; + }; + + i2c1: i2c@40067000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40067000 0x1000>; + interrupts = <9 0>; + label = "I2C_1"; + status = "disabled"; + }; + uart0: uart@4006A000 { compatible = "nxp,kinetis-lpsci"; reg = <0x4006A000 0xc>; diff --git a/dts/arm/nxp/nxp_kw40z.dtsi b/dts/arm/nxp/nxp_kw40z.dtsi index 273fa46f028..c10115bf153 100644 --- a/dts/arm/nxp/nxp_kw40z.dtsi +++ b/dts/arm/nxp/nxp_kw40z.dtsi @@ -49,6 +49,26 @@ reg = <0 0x80000>; }; + i2c0: i2c@40066000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40066000 0x1000>; + interrupts = <8 0>; + label = "I2C_0"; + status = "disabled"; + }; + + i2c1: i2c@40067000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40067000 0x1000>; + interrupts = <9 0>; + label = "I2C_1"; + status = "disabled"; + }; + lpuart0: lpuart@40054000 { compatible = "nxp,kinetis-lpuart"; reg = <0x40054000 0x18>; diff --git a/dts/arm/nxp/nxp_kw41z.dtsi b/dts/arm/nxp/nxp_kw41z.dtsi index 13902cfa944..5f1d7618ffd 100644 --- a/dts/arm/nxp/nxp_kw41z.dtsi +++ b/dts/arm/nxp/nxp_kw41z.dtsi @@ -49,6 +49,26 @@ reg = <0 0x80000>; }; + i2c0: i2c@40066000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40066000 0x1000>; + interrupts = <8 0>; + label = "I2C_0"; + status = "disabled"; + }; + + i2c1: i2c@40067000 { + compatible = "nxp,kinetis-i2c"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x40067000 0x1000>; + interrupts = <9 0>; + label = "I2C_1"; + status = "disabled"; + }; + lpuart0: lpuart@40054000 { compatible = "nxp,kinetis-lpuart"; reg = <0x40054000 0x18>; diff --git a/dts/arm/yaml/nxp,kinetis-i2c.yaml b/dts/arm/yaml/nxp,kinetis-i2c.yaml new file mode 100644 index 00000000000..bb17cb5f61a --- /dev/null +++ b/dts/arm/yaml/nxp,kinetis-i2c.yaml @@ -0,0 +1,28 @@ +--- +title: Kinetis I2C Controller +version: 0.1 + +description: > + This is a representation of the Kinetis I2C nodes + +inherits: + - !include i2c.yaml + +properties: + - compatible: + type: string + category: required + description: compatible strings + constraint: "nxp,kinetis-i2c" + + - reg: + type: int + description: mmio register space + generation: define + category: required + + - interrupts: + type: compound + category: required + description: required interrupts + generation: define