diff --git a/boards/arm/frdm_k64f/Kconfig.defconfig b/boards/arm/frdm_k64f/Kconfig.defconfig index d755f344afd..7b007ab3702 100644 --- a/boards/arm/frdm_k64f/Kconfig.defconfig +++ b/boards/arm/frdm_k64f/Kconfig.defconfig @@ -78,23 +78,9 @@ if I2C config I2C_0 def_bool y -if I2C_0 - -config I2C_0_DEFAULT_CFG - default 0x12 - -endif # I2C_0 - config I2C_1 def_bool n -if I2C_1 - -config I2C_1_DEFAULT_CFG - default 0x12 - -endif # I2C_1 - endif # I2C if ADC diff --git a/boards/arm/frdm_kl25z/Kconfig.defconfig b/boards/arm/frdm_kl25z/Kconfig.defconfig index 658cdbc4305..4f1c9ce162a 100644 --- a/boards/arm/frdm_kl25z/Kconfig.defconfig +++ b/boards/arm/frdm_kl25z/Kconfig.defconfig @@ -78,13 +78,6 @@ if I2C config I2C_0 def_bool y -if I2C_0 - -config I2C_0_DEFAULT_CFG - default 0x12 - -endif # I2C_0 - endif # I2C if ADC diff --git a/boards/arm/frdm_kw41z/Kconfig.defconfig b/boards/arm/frdm_kw41z/Kconfig.defconfig index 970fb522fdc..fcbce490c99 100644 --- a/boards/arm/frdm_kw41z/Kconfig.defconfig +++ b/boards/arm/frdm_kw41z/Kconfig.defconfig @@ -60,13 +60,6 @@ if I2C config I2C_1 def_bool y -if I2C_1 - -config I2C_1_DEFAULT_CFG - default 0x12 - -endif # I2C_1 - endif # I2C if ADC diff --git a/boards/arm/hexiwear_k64/Kconfig.defconfig b/boards/arm/hexiwear_k64/Kconfig.defconfig index 6793f3d0a1a..a666dca17b2 100644 --- a/boards/arm/hexiwear_k64/Kconfig.defconfig +++ b/boards/arm/hexiwear_k64/Kconfig.defconfig @@ -78,23 +78,9 @@ if I2C config I2C_0 def_bool y -if I2C_0 - -config I2C_0_DEFAULT_CFG - default 0x12 - -endif # I2C_0 - config I2C_1 def_bool y -if I2C_1 - -config I2C_1_DEFAULT_CFG - default 0x12 - -endif # I2C_1 - endif # I2C if ADC diff --git a/drivers/i2c/i2c_mcux.c b/drivers/i2c/i2c_mcux.c index b0f441e314e..55fa47f7208 100644 --- a/drivers/i2c/i2c_mcux.c +++ b/drivers/i2c/i2c_mcux.c @@ -10,6 +10,7 @@ #include #include #include +#include "i2c-priv.h" #define DEV_CFG(dev) \ ((const struct i2c_mcux_config * const)(dev)->config->config_info) @@ -22,7 +23,7 @@ struct i2c_mcux_config { I2C_Type *base; clock_name_t clock_source; void (*irq_config_func)(struct device *dev); - union dev_config default_cfg; + u32_t bitrate; }; struct i2c_mcux_data { @@ -155,7 +156,7 @@ static int i2c_mcux_init(struct device *dev) I2C_Type *base = DEV_BASE(dev); const struct i2c_mcux_config *config = DEV_CFG(dev); struct i2c_mcux_data *data = DEV_DATA(dev); - u32_t clock_freq; + u32_t clock_freq, bitrate_cfg; i2c_master_config_t master_config; int error; @@ -167,7 +168,9 @@ static int i2c_mcux_init(struct device *dev) I2C_MasterTransferCreateHandle(base, &data->handle, i2c_mcux_master_transfer_callback, dev); - error = i2c_mcux_configure(dev, config->default_cfg.raw); + bitrate_cfg = _i2c_map_dt_bitrate(config->bitrate); + + error = i2c_mcux_configure(dev, I2C_MODE_MASTER | bitrate_cfg); if (error) { return error; } @@ -189,7 +192,7 @@ static const struct i2c_mcux_config i2c_mcux_config_0 = { .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, + .bitrate = CONFIG_I2C_MCUX_0_BITRATE, }; static struct i2c_mcux_data i2c_mcux_data_0; @@ -217,7 +220,7 @@ static const struct i2c_mcux_config i2c_mcux_config_1 = { .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, + .bitrate = CONFIG_I2C_MCUX_1_BITRATE, }; static struct i2c_mcux_data i2c_mcux_data_1; diff --git a/dts/arm/frdm_k64f.fixup b/dts/arm/frdm_k64f.fixup index 299af2b4cc8..773151e855d 100644 --- a/dts/arm/frdm_k64f.fixup +++ b/dts/arm/frdm_k64f.fixup @@ -62,3 +62,4 @@ #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_MCUX_0_BITRATE NXP_KINETIS_I2C_40066000_CLOCK_FREQUENCY diff --git a/dts/arm/frdm_kl25z.fixup b/dts/arm/frdm_kl25z.fixup index 6bd7e904c2c..40dd2647dd5 100644 --- a/dts/arm/frdm_kl25z.fixup +++ b/dts/arm/frdm_kl25z.fixup @@ -10,3 +10,4 @@ #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_MCUX_0_BITRATE NXP_KINETIS_I2C_40066000_CLOCK_FREQUENCY diff --git a/dts/arm/frdm_kw41z.fixup b/dts/arm/frdm_kw41z.fixup index 6633c10bfbb..72f7aab7efa 100644 --- a/dts/arm/frdm_kw41z.fixup +++ b/dts/arm/frdm_kw41z.fixup @@ -15,3 +15,4 @@ #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 +#define CONFIG_I2C_MCUX_1_BITRATE NXP_KINETIS_I2C_40067000_CLOCK_FREQUENCY diff --git a/dts/arm/hexiwear_k64.fixup b/dts/arm/hexiwear_k64.fixup index 1c02c519c32..6c0b2e60ad0 100644 --- a/dts/arm/hexiwear_k64.fixup +++ b/dts/arm/hexiwear_k64.fixup @@ -62,6 +62,7 @@ #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_MCUX_0_BITRATE NXP_KINETIS_I2C_40066000_CLOCK_FREQUENCY #define CONFIG_I2C_1_NAME NXP_KINETIS_I2C_40067000_LABEL #define CONFIG_FXOS8700_I2C_NAME NXP_KINETIS_I2C_40067000_LABEL @@ -69,3 +70,4 @@ #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 +#define CONFIG_I2C_MCUX_1_BITRATE NXP_KINETIS_I2C_40067000_CLOCK_FREQUENCY diff --git a/dts/arm/hexiwear_kw40z.fixup b/dts/arm/hexiwear_kw40z.fixup index 40e8ec31f29..e1571f0afd6 100644 --- a/dts/arm/hexiwear_kw40z.fixup +++ b/dts/arm/hexiwear_kw40z.fixup @@ -14,3 +14,4 @@ #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 +#define CONFIG_I2C_MCUX_1_BITRATE NXP_KINETIS_I2C_40067000_CLOCK_FREQUENCY diff --git a/dts/arm/nxp/nxp_k6x.dtsi b/dts/arm/nxp/nxp_k6x.dtsi index add32dbdc51..c381b9ab752 100644 --- a/dts/arm/nxp/nxp_k6x.dtsi +++ b/dts/arm/nxp/nxp_k6x.dtsi @@ -1,4 +1,5 @@ #include +#include / { cpus { @@ -76,6 +77,7 @@ i2c0: i2c@40066000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40066000 0x1000>; @@ -86,6 +88,7 @@ i2c1: i2c@40067000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40067000 0x1000>; @@ -96,6 +99,7 @@ i2c2: i2c@400e6000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x400e6000 0x1000>; diff --git a/dts/arm/nxp/nxp_kl25z.dtsi b/dts/arm/nxp/nxp_kl25z.dtsi index 5724379341f..99ab9ea6d9e 100644 --- a/dts/arm/nxp/nxp_kl25z.dtsi +++ b/dts/arm/nxp/nxp_kl25z.dtsi @@ -1,4 +1,5 @@ #include "armv6-m.dtsi" +#include / { cpus { @@ -25,6 +26,7 @@ i2c0: i2c@40066000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40066000 0x1000>; @@ -35,6 +37,7 @@ i2c1: i2c@40067000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40067000 0x1000>; diff --git a/dts/arm/nxp/nxp_kw40z.dtsi b/dts/arm/nxp/nxp_kw40z.dtsi index 2b0cb74ae37..b3adc72b9d3 100644 --- a/dts/arm/nxp/nxp_kw40z.dtsi +++ b/dts/arm/nxp/nxp_kw40z.dtsi @@ -1,4 +1,5 @@ #include "armv6-m.dtsi" +#include / { cpus { @@ -52,6 +53,7 @@ i2c0: i2c@40066000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40066000 0x1000>; @@ -62,6 +64,7 @@ i2c1: i2c@40067000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40067000 0x1000>; diff --git a/dts/arm/nxp/nxp_kw41z.dtsi b/dts/arm/nxp/nxp_kw41z.dtsi index 4bd16c44aaa..73c6bfb41e2 100644 --- a/dts/arm/nxp/nxp_kw41z.dtsi +++ b/dts/arm/nxp/nxp_kw41z.dtsi @@ -1,4 +1,5 @@ #include +#include / { cpus { @@ -52,6 +53,7 @@ i2c0: i2c@40066000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40066000 0x1000>; @@ -62,6 +64,7 @@ i2c1: i2c@40067000 { compatible = "nxp,kinetis-i2c"; + clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x40067000 0x1000>;