From d600b0fcbbfe877f67fb8b89e4d09aeb376c01d1 Mon Sep 17 00:00:00 2001 From: Rasmus Villemoes Date: Fri, 24 Mar 2023 09:09:22 +0100 Subject: [PATCH 1/9] i2c: designware_i2c: remove apparently redundant read of 'i2c, speeds' DT property This code first figures out if there is an i2c,speeds property, if so its size in u32s, and then reads the value into the local speeds[] array. Both 'size' and 'speeds' are completely unused thereafter. It's not at all clear what this is supposed to do. Of course, it could be seen as a sanity check that the DT node does have an i2c,speeds property with an appropriate number of elements, but for that one wouldn't actually need to read it into speeds[]. Also, I can't find anywhere else in the U-Boot code which makes use of values from that property (this is is the only C code referencing "i2c,speeds"), so it seems pointless to insist that it's there. Signed-off-by: Rasmus Villemoes --- drivers/i2c/designware_i2c_pci.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/drivers/i2c/designware_i2c_pci.c b/drivers/i2c/designware_i2c_pci.c index 46c2545f214..28495a3f428 100644 --- a/drivers/i2c/designware_i2c_pci.c +++ b/drivers/i2c/designware_i2c_pci.c @@ -147,9 +147,7 @@ static int dw_i2c_acpi_fill_ssdt(const struct udevice *dev, { struct dw_i2c_speed_config config; char path[ACPI_PATH_MAX]; - u32 speeds[4]; uint speed; - int size; int ret; /* If no device-tree node, ignore this since we assume it isn't used */ @@ -160,18 +158,6 @@ static int dw_i2c_acpi_fill_ssdt(const struct udevice *dev, if (ret) return log_msg_ret("path", ret); - size = dev_read_size(dev, "i2c,speeds"); - if (size < 0) - return log_msg_ret("i2c,speeds", -EINVAL); - - size /= sizeof(u32); - if (size > ARRAY_SIZE(speeds)) - return log_msg_ret("array", -E2BIG); - - ret = dev_read_u32_array(dev, "i2c,speeds", speeds, size); - if (ret) - return log_msg_ret("read", -E2BIG); - speed = dev_read_u32_default(dev, "clock-frequency", 100000); acpigen_write_scope(ctx, path); ret = dw_i2c_gen_speed_config(dev, speed, &config); From 7f6a2e6e0f7694bf9557683db1d6ef2fc75ef1c8 Mon Sep 17 00:00:00 2001 From: Haibo Chen Date: Mon, 27 Mar 2023 19:21:43 +0800 Subject: [PATCH 2/9] i2c: correct I2C deblock logic Current code use dm_gpio_get_value() to get SDA and SCL value, and the value depends on whether DTS file config the GPIO_ACTIVE_LOW. In ususal case for i2c GPIO, DTS need to set GPIO_ACTIVE_LOW for SCL/SDA pins. So here the logic is not correct. And we must not use GPIOD_ACTIVE_LOW in client code include the dm_gpio_set_dir_flags(), it is DTS's responsibility for this flag. So remove GPIOD_ACTIVE_LOW here. Fixes: aa54192d4a87 ("dm: i2c: implement gpio-based I2C deblock") Signed-off-by: Haibo Chen Reviewed-by: Alexander Kochetkov > --- drivers/i2c/i2c-uclass.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c index 8d9a89ed890..8867a560bd8 100644 --- a/drivers/i2c/i2c-uclass.c +++ b/drivers/i2c/i2c-uclass.c @@ -508,13 +508,13 @@ static void i2c_gpio_set_pin(struct gpio_desc *pin, int bit) dm_gpio_set_dir_flags(pin, GPIOD_IS_IN); else dm_gpio_set_dir_flags(pin, GPIOD_IS_OUT | - GPIOD_ACTIVE_LOW | GPIOD_IS_OUT_ACTIVE); } static int i2c_gpio_get_pin(struct gpio_desc *pin) { - return dm_gpio_get_value(pin); + /* DTS need config GPIO_ACTIVE_LOW */ + return !dm_gpio_get_value(pin); } int i2c_deblock_gpio_loop(struct gpio_desc *sda_pin, From b4004c2949732ad8a6cb42f27a1c472d39216b72 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Thu, 6 Apr 2023 18:26:35 +0800 Subject: [PATCH 3/9] i2c: imx_lpi2c: Fix misuse the IS_ENABLED for DM clock The IS_ENABLED, which does not consider SPL build, should be replaced by CONFIG_IS_ENABLED. For the case that we only enable DM CLK for u-boot but not in SPL, the IS_ENABLED(CONFIG_CLK) still returns true, then cause clock failure. Reviewed-by: Peng Fan Signed-off-by: Ye Li Signed-off-by: Peng Fan --- drivers/i2c/imx_lpi2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/imx_lpi2c.c b/drivers/i2c/imx_lpi2c.c index 92c500327b4..ad9293c92e1 100644 --- a/drivers/i2c/imx_lpi2c.c +++ b/drivers/i2c/imx_lpi2c.c @@ -282,7 +282,7 @@ static int bus_i2c_set_bus_speed(struct udevice *bus, int speed) bool mode; int i; - if (IS_ENABLED(CONFIG_CLK)) { + if (CONFIG_IS_ENABLED(CLK)) { clock_rate = clk_get_rate(&i2c_bus->per_clk); if (clock_rate <= 0) { dev_err(bus, "Failed to get i2c clk: %d\n", clock_rate); @@ -462,7 +462,7 @@ static int imx_lpi2c_probe(struct udevice *bus) return ret; } - if (IS_ENABLED(CONFIG_CLK)) { + if (CONFIG_IS_ENABLED(CLK)) { ret = clk_get_by_name(bus, "per", &i2c_bus->per_clk); if (ret) { dev_err(bus, "Failed to get per clk\n"); From 5d3a5f330d6bdb53ea17cff1ec724f6256521366 Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:23 +0200 Subject: [PATCH 4/9] m68k: move CONFIG_SYS_I2C to CFG_ namespace Move CONFIG_SYS_I2C_X to CFG_ namespace. This is a preliminary step to move to dm i2c. Signed-off-by: Angelo Dureghello --- arch/m68k/cpu/mcf5445x/cpu_init.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/m68k/cpu/mcf5445x/cpu_init.c b/arch/m68k/cpu/mcf5445x/cpu_init.c index 1ce244872f1..bc3a2f3aed6 100644 --- a/arch/m68k/cpu/mcf5445x/cpu_init.c +++ b/arch/m68k/cpu/mcf5445x/cpu_init.c @@ -159,14 +159,14 @@ void cpu_init_f(void) /* NAND */ out_8(&pm->pmcr0, 63); -#ifdef CONFIG_SYS_I2C_0 +#ifdef CFG_SYS_I2C_0 out_8(&gpio->par_cani2c, 0xF0); /* I2C0 pull up */ out_be16(&gpio->pcr_b, 0x003C); /* I2C0 max speed */ out_8(&gpio->srcr_cani2c, 0x03); #endif -#ifdef CONFIG_SYS_I2C_2 +#ifdef CFG_SYS_I2C_2 /* I2C2 */ out_8(&gpio->par_ssi0h, 0xA0); /* I2C2, UART7 */ @@ -184,7 +184,7 @@ void cpu_init_f(void) /* I2C2 pull up */ out_be16(&gpio->pcr_h, 0xF000); #endif -#ifdef CONFIG_SYS_I2C_5 +#ifdef CFG_SYS_I2C_5 /* I2C5 */ out_8(&gpio->par_uart1, 0x0A); /* I2C5 pull up */ From db457e682a91b0f013eab5a244824433c8bd0c45 Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:24 +0200 Subject: [PATCH 5/9] board: stmark2: add i2c0 pinmux pad configuration Add CFG option to enable proper pinmux pad setting for i2c0. Signed-off-by: Angelo Dureghello --- include/configs/stmark2.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/configs/stmark2.h b/include/configs/stmark2.h index 05de376f0e6..6edaf73d61b 100644 --- a/include/configs/stmark2.h +++ b/include/configs/stmark2.h @@ -97,4 +97,6 @@ #define CFG_MCFTMR +#define CFG_SYS_I2C_0 + #endif /* __STMARK2_CONFIG_H */ From 987e20e5931df5b8e30f4ab363fe6c6adf94704f Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:25 +0200 Subject: [PATCH 6/9] m68k: mcf5441x: fix CONFIG_SYS_FSL_I2C definition Fix CONFIG_SYS_FSL_I2C to correct name CONFIG_SYS_I2C_FSL. Signed-off-by: Angelo Dureghello --- arch/m68k/cpu/mcf5445x/speed.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/m68k/cpu/mcf5445x/speed.c b/arch/m68k/cpu/mcf5445x/speed.c index eb73da68c6b..5c78eb98349 100644 --- a/arch/m68k/cpu/mcf5445x/speed.c +++ b/arch/m68k/cpu/mcf5445x/speed.c @@ -129,9 +129,8 @@ int get_clocks(void) setup_5441x_clocks(); #endif -#ifdef CONFIG_SYS_FSL_I2C - gd->arch.i2c1_clk = gd->bus_clk; -#endif + if (IS_ENABLED(CONFIG_SYS_I2C_FSL)) + gd->arch.i2c1_clk = gd->bus_clk; return (0); } From b6afa7cf62d7d3c618454009707a458a15a22942 Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:26 +0200 Subject: [PATCH 7/9] i2c: fsl_i2c: fix m68k transferts This driver is actually used for powerpc and m68k/ColdFire. On ColdFire SoC's, interrupt flag get not set if IIEN flag (mbcr bit6, interrupt enabled) is not set appropriately before each transfert. As a result, the transfert hangs forever waiting for IIEN. This patch set IIEN before each transfert, while considering this fix as not harming powerpc arch. Signed-off-by: Angelo Dureghello --- arch/m68k/include/asm/fsl_i2c.h | 10 ++++++++++ drivers/i2c/fsl_i2c.c | 16 +++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/arch/m68k/include/asm/fsl_i2c.h b/arch/m68k/include/asm/fsl_i2c.h index 9c54fdea77c..dc6b37a575f 100644 --- a/arch/m68k/include/asm/fsl_i2c.h +++ b/arch/m68k/include/asm/fsl_i2c.h @@ -57,4 +57,14 @@ typedef struct fsl_i2c_base { #define I2C_DR_RES ~(I2C_DR) } fsl_i2c_t; +#if CONFIG_IS_ENABLED(DM_I2C) +struct fsl_i2c_dev { + struct fsl_i2c_base __iomem *base; /* register base */ + u32 i2c_clk; + u32 index; + u8 slaveadd; + uint speed; +}; +#endif + #endif /* _ASM_I2C_H_ */ diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c index d312f35f044..d9d8ee81d2e 100644 --- a/drivers/i2c/fsl_i2c.c +++ b/drivers/i2c/fsl_i2c.c @@ -278,7 +278,8 @@ static void __i2c_init(const struct fsl_i2c_base *base, int speed, int set_i2c_bus_speed(base, i2c_clk, speed); writeb(slaveadd << 1, &base->adr);/* write slave address */ writeb(0x0, &base->sr); /* clear status register */ - writeb(I2C_CR_MEN, &base->cr); /* start I2C controller */ + /* start I2C controller */ + writeb(I2C_CR_MEN | I2C_CR_MIEN, &base->cr); timeval = get_ticks(); while (readb(&base->sr) & I2C_SR_MBB) { @@ -346,7 +347,7 @@ static int i2c_wait(const struct fsl_i2c_base *base, int write) static int i2c_write_addr(const struct fsl_i2c_base *base, u8 dev, u8 dir, int rsta) { - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | I2C_CR_MTX | (rsta ? I2C_CR_RSTA : 0), &base->cr); @@ -378,7 +379,8 @@ static int __i2c_read_data(const struct fsl_i2c_base *base, u8 *data, { int i; - writeb(I2C_CR_MEN | I2C_CR_MSTA | ((length == 1) ? I2C_CR_TXAK : 0), + writeb(I2C_CR_MEN | I2C_CR_MIEN | + I2C_CR_MSTA | ((length == 1) ? I2C_CR_TXAK : 0), &base->cr); /* dummy read */ @@ -390,13 +392,13 @@ static int __i2c_read_data(const struct fsl_i2c_base *base, u8 *data, /* Generate ack on last next to last byte */ if (i == length - 2) - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_TXAK, - &base->cr); + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | + I2C_CR_TXAK, &base->cr); /* Do not generate stop on last byte */ if (i == length - 1) - writeb(I2C_CR_MEN | I2C_CR_MSTA | I2C_CR_MTX, - &base->cr); + writeb(I2C_CR_MEN | I2C_CR_MIEN | I2C_CR_MSTA | + I2C_CR_MTX, &base->cr); data[i] = readb(&base->dr); } From 96283b83da57e5ce7f1be9a2432e5b26aff39efb Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:27 +0200 Subject: [PATCH 8/9] m68k: dts: add i2c nodes Add all the i2c nodes for each family, and add specific i2c overwrites in the related board-specific dts. Signed-off-by: Angelo Dureghello --- arch/m68k/dts/M5208EVBE.dts | 6 +++ arch/m68k/dts/M5253DEMO.dts | 5 +++ arch/m68k/dts/M5275EVB.dts | 6 +++ arch/m68k/dts/M53017EVB.dts | 6 +++ arch/m68k/dts/M5329AFEE.dts | 6 +++ arch/m68k/dts/M5329BFEE.dts | 6 +++ arch/m68k/dts/M5373EVB.dts | 4 ++ arch/m68k/dts/astro_mcf5373l.dts | 5 +++ arch/m68k/dts/eb_cpu5282.dts | 9 ++++ arch/m68k/dts/eb_cpu5282_internal.dts | 9 ++++ arch/m68k/dts/mcf5208.dtsi | 10 +++++ arch/m68k/dts/mcf523x.dtsi | 10 +++++ arch/m68k/dts/mcf5249.dtsi | 28 +++++++++++++ arch/m68k/dts/mcf5253.dtsi | 28 +++++++++++++ arch/m68k/dts/mcf5271.dtsi | 10 +++++ arch/m68k/dts/mcf5275.dtsi | 10 +++++ arch/m68k/dts/mcf5282.dtsi | 10 +++++ arch/m68k/dts/mcf5301x.dtsi | 10 +++++ arch/m68k/dts/mcf5307.dtsi | 10 +++++ arch/m68k/dts/mcf5329.dtsi | 10 +++++ arch/m68k/dts/mcf537x.dtsi | 10 +++++ arch/m68k/dts/mcf5441x.dtsi | 60 +++++++++++++++++++++++++++ arch/m68k/dts/stmark2.dts | 4 ++ 23 files changed, 272 insertions(+) diff --git a/arch/m68k/dts/M5208EVBE.dts b/arch/m68k/dts/M5208EVBE.dts index 78973fca57d..1c32718af40 100644 --- a/arch/m68k/dts/M5208EVBE.dts +++ b/arch/m68k/dts/M5208EVBE.dts @@ -23,3 +23,9 @@ &fec0 { status = "okay"; }; + +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M5253DEMO.dts b/arch/m68k/dts/M5253DEMO.dts index 515484ae933..a3f070661ea 100644 --- a/arch/m68k/dts/M5253DEMO.dts +++ b/arch/m68k/dts/M5253DEMO.dts @@ -20,3 +20,8 @@ status = "okay"; }; +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M5275EVB.dts b/arch/m68k/dts/M5275EVB.dts index 4737f927db8..d79f8a78857 100644 --- a/arch/m68k/dts/M5275EVB.dts +++ b/arch/m68k/dts/M5275EVB.dts @@ -27,3 +27,9 @@ &fec1 { status = "okay"; }; + +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M53017EVB.dts b/arch/m68k/dts/M53017EVB.dts index 31c50b65c22..90851dd0af4 100644 --- a/arch/m68k/dts/M53017EVB.dts +++ b/arch/m68k/dts/M53017EVB.dts @@ -27,3 +27,9 @@ &fec1 { status = "okay"; }; + +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M5329AFEE.dts b/arch/m68k/dts/M5329AFEE.dts index de4af4743d5..c1cd2845a38 100644 --- a/arch/m68k/dts/M5329AFEE.dts +++ b/arch/m68k/dts/M5329AFEE.dts @@ -23,3 +23,9 @@ &fec0 { status = "okay"; }; + +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M5329BFEE.dts b/arch/m68k/dts/M5329BFEE.dts index 2b2aae2cf98..51ec4b5d1aa 100644 --- a/arch/m68k/dts/M5329BFEE.dts +++ b/arch/m68k/dts/M5329BFEE.dts @@ -23,3 +23,9 @@ &fec0 { status = "okay"; }; + +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/M5373EVB.dts b/arch/m68k/dts/M5373EVB.dts index 7df8206d630..27ce800caeb 100644 --- a/arch/m68k/dts/M5373EVB.dts +++ b/arch/m68k/dts/M5373EVB.dts @@ -23,3 +23,7 @@ &fec0 { status = "okay"; }; + +&i2c0 { + status = "okay"; +}; diff --git a/arch/m68k/dts/astro_mcf5373l.dts b/arch/m68k/dts/astro_mcf5373l.dts index d3caf12db1a..40f84dd64b6 100644 --- a/arch/m68k/dts/astro_mcf5373l.dts +++ b/arch/m68k/dts/astro_mcf5373l.dts @@ -20,3 +20,8 @@ status = "okay"; }; +&i2c0 { + clock-frequency = <80000>; + u-boot,i2c-slave-addr = <0x7f>; + status = "okay"; +}; diff --git a/arch/m68k/dts/eb_cpu5282.dts b/arch/m68k/dts/eb_cpu5282.dts index 925f9af3a84..27f33b9f900 100644 --- a/arch/m68k/dts/eb_cpu5282.dts +++ b/arch/m68k/dts/eb_cpu5282.dts @@ -23,3 +23,12 @@ &fec0 { status = "okay"; }; + +&i2c0 { + status = "okay"; + + rtc@68 { + compatible = "dallas,ds1338"; + reg = <0x68>; + }; +}; diff --git a/arch/m68k/dts/eb_cpu5282_internal.dts b/arch/m68k/dts/eb_cpu5282_internal.dts index ae6a8157cf6..53a94ea7f75 100644 --- a/arch/m68k/dts/eb_cpu5282_internal.dts +++ b/arch/m68k/dts/eb_cpu5282_internal.dts @@ -23,3 +23,12 @@ &fec0 { status = "okay"; }; + +&i2c0 { + status = "okay"; + + rtc@68 { + compatible = "dallas,ds1338"; + reg = <0x68>; + }; +}; diff --git a/arch/m68k/dts/mcf5208.dtsi b/arch/m68k/dts/mcf5208.dtsi index 4802dd3074e..9392facfa88 100644 --- a/arch/m68k/dts/mcf5208.dtsi +++ b/arch/m68k/dts/mcf5208.dtsi @@ -42,5 +42,15 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@fc058000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0xfc058000 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; diff --git a/arch/m68k/dts/mcf523x.dtsi b/arch/m68k/dts/mcf523x.dtsi index 550e824cb12..41c7b9b2d1b 100644 --- a/arch/m68k/dts/mcf523x.dtsi +++ b/arch/m68k/dts/mcf523x.dtsi @@ -51,6 +51,16 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@300 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x300 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5249.dtsi b/arch/m68k/dts/mcf5249.dtsi index 248b3dc68bf..d45d5532caf 100644 --- a/arch/m68k/dts/mcf5249.dtsi +++ b/arch/m68k/dts/mcf5249.dtsi @@ -33,6 +33,34 @@ reg = <0x200 0x40>; status = "disabled"; }; + + i2c0: i2c@280 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x280 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; + }; + + mbar2: mbar2@80000000 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x80000000 0x10000>; + reg = <0x80000000 0x10000>; + + i2c1: i2c@440 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x440 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5253.dtsi b/arch/m68k/dts/mcf5253.dtsi index 3bde2d62028..b9816f4754b 100644 --- a/arch/m68k/dts/mcf5253.dtsi +++ b/arch/m68k/dts/mcf5253.dtsi @@ -39,6 +39,34 @@ reg = <0xc00 0x40>; status = "disabled"; }; + + i2c0: i2c@280 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x280 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; + }; + + mbar2: mbar2@80000000 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x00000000 0x80000000 0x10000>; + reg = <0x80000000 0x10000>; + + i2c1: i2c@440 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x440 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5271.dtsi b/arch/m68k/dts/mcf5271.dtsi index b3484c2c84b..fc82bd3c24d 100644 --- a/arch/m68k/dts/mcf5271.dtsi +++ b/arch/m68k/dts/mcf5271.dtsi @@ -49,6 +49,16 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@300 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x300 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5275.dtsi b/arch/m68k/dts/mcf5275.dtsi index 99dd7d3924c..402517cdec1 100644 --- a/arch/m68k/dts/mcf5275.dtsi +++ b/arch/m68k/dts/mcf5275.dtsi @@ -59,6 +59,16 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@300 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x300 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5282.dtsi b/arch/m68k/dts/mcf5282.dtsi index d9916b1cd95..883c0d03247 100644 --- a/arch/m68k/dts/mcf5282.dtsi +++ b/arch/m68k/dts/mcf5282.dtsi @@ -49,6 +49,16 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@300 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x300 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5301x.dtsi b/arch/m68k/dts/mcf5301x.dtsi index f60898aa4a4..a13afad093a 100644 --- a/arch/m68k/dts/mcf5301x.dtsi +++ b/arch/m68k/dts/mcf5301x.dtsi @@ -65,5 +65,15 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@0xfc058000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0xfc058000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; diff --git a/arch/m68k/dts/mcf5307.dtsi b/arch/m68k/dts/mcf5307.dtsi index e199cf99914..d6d386b22e1 100644 --- a/arch/m68k/dts/mcf5307.dtsi +++ b/arch/m68k/dts/mcf5307.dtsi @@ -34,6 +34,16 @@ reg = <0x200 0x40>; status = "disabled"; }; + + i2c0: i2c@280 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0x280 0x14>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; }; diff --git a/arch/m68k/dts/mcf5329.dtsi b/arch/m68k/dts/mcf5329.dtsi index de348968b56..7501cc4b018 100644 --- a/arch/m68k/dts/mcf5329.dtsi +++ b/arch/m68k/dts/mcf5329.dtsi @@ -42,5 +42,15 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@0xfc058000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0xfc058000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; diff --git a/arch/m68k/dts/mcf537x.dtsi b/arch/m68k/dts/mcf537x.dtsi index 2a2a32a59ba..338b8b4583c 100644 --- a/arch/m68k/dts/mcf537x.dtsi +++ b/arch/m68k/dts/mcf537x.dtsi @@ -42,5 +42,15 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@0xfc058000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0xfc058000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; diff --git a/arch/m68k/dts/mcf5441x.dtsi b/arch/m68k/dts/mcf5441x.dtsi index 6769bdc270a..dcca36312f5 100644 --- a/arch/m68k/dts/mcf5441x.dtsi +++ b/arch/m68k/dts/mcf5441x.dtsi @@ -103,5 +103,65 @@ timeout-loop = <50000>; status = "disabled"; }; + + i2c0: i2c@0xfc058000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <0>; + reg = <0xfc058000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; + + i2c1: i2c@0xfc038000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <1>; + reg = <0xfc038000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; + + i2c2: i2c@0xfc010000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <2>; + reg = <0xfc010000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; + + i2c3: i2c@0xfc014000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <3>; + reg = <0xfc014000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; + + i2c4: i2c@0xfc018000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <4>; + reg = <0xfc018000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; + + i2c5: i2c@0xfc01c000 { + compatible = "fsl-i2c"; + #address-cells=<1>; + #size-cells=<0>; + cell-index = <5>; + reg = <0xfc01c000 0x100>; + clock-frequency = <100000>; + status = "disabled"; + }; }; }; diff --git a/arch/m68k/dts/stmark2.dts b/arch/m68k/dts/stmark2.dts index ebe8580a0aa..3ba68b77d64 100644 --- a/arch/m68k/dts/stmark2.dts +++ b/arch/m68k/dts/stmark2.dts @@ -41,3 +41,7 @@ status = "okay"; mii-base = <0>; }; + +&i2c0 { + status = "okay"; +}; From 5cf008637221ad3b4d4ecdc2befca19b2bdab53d Mon Sep 17 00:00:00 2001 From: Angelo Dureghello Date: Wed, 5 Apr 2023 00:59:28 +0200 Subject: [PATCH 9/9] m68k: upgrading all boards to dm i2c Upgrading all board configs where i2c is involved to DM i2c. Signed-off-by: Angelo Dureghello --- configs/M5208EVBE_defconfig | 5 +---- configs/M5235EVB_Flash32_defconfig | 1 + configs/M5235EVB_defconfig | 1 + configs/M5253DEMO_defconfig | 5 +---- configs/M5275EVB_defconfig | 5 +---- configs/M53017EVB_defconfig | 6 ++---- configs/M5329AFEE_defconfig | 6 ++---- configs/M5329BFEE_defconfig | 6 ++---- configs/M5373EVB_defconfig | 3 ++- configs/astro_mcf5373l_defconfig | 6 ++---- configs/eb_cpu5282_defconfig | 5 ++--- configs/eb_cpu5282_internal_defconfig | 5 ++--- configs/stmark2_defconfig | 4 ++++ 13 files changed, 23 insertions(+), 35 deletions(-) diff --git a/configs/M5208EVBE_defconfig b/configs/M5208EVBE_defconfig index 3263414d1c2..72c0560d11e 100644 --- a/configs/M5208EVBE_defconfig +++ b/configs/M5208EVBE_defconfig @@ -38,11 +38,8 @@ CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.162.1.1" CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x58000 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y diff --git a/configs/M5235EVB_Flash32_defconfig b/configs/M5235EVB_Flash32_defconfig index 0b924563d2a..f96a2f290bd 100644 --- a/configs/M5235EVB_Flash32_defconfig +++ b/configs/M5235EVB_Flash32_defconfig @@ -61,3 +61,4 @@ CONFIG_MCFFEC=y CONFIG_MII=y CONFIG_MCFUART=y CONFIG_WATCHDOG_TIMEOUT_MSECS=5000 +CONFIG_DM_I2C=y diff --git a/configs/M5235EVB_defconfig b/configs/M5235EVB_defconfig index fbd3e086ec3..64f8a133e1f 100644 --- a/configs/M5235EVB_defconfig +++ b/configs/M5235EVB_defconfig @@ -61,3 +61,4 @@ CONFIG_MCFFEC=y CONFIG_MII=y CONFIG_MCFUART=y CONFIG_WATCHDOG_TIMEOUT_MSECS=5000 +CONFIG_DM_I2C=y diff --git a/configs/M5253DEMO_defconfig b/configs/M5253DEMO_defconfig index e6ab998f292..99bf18f9631 100644 --- a/configs/M5253DEMO_defconfig +++ b/configs/M5253DEMO_defconfig @@ -37,11 +37,8 @@ CONFIG_SYS_ATA_ALT_OFFSET=0xC0 CONFIG_SYS_ATA_IDE0_OFFSET=0 CONFIG_ATAPI=y CONFIG_IDE_RESET=y -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x280 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD_NOR_FLASH=y CONFIG_SYS_MAX_FLASH_SECT=2048 CONFIG_USE_SYS_MAX_FLASH_BANKS=y diff --git a/configs/M5275EVB_defconfig b/configs/M5275EVB_defconfig index ca1c18420ff..5ce9b74f06b 100644 --- a/configs/M5275EVB_defconfig +++ b/configs/M5275EVB_defconfig @@ -34,11 +34,8 @@ CONFIG_OVERWRITE_ETHADDR_ONCE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_FAULT_ECHO_LINK_DOWN=y CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x300 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y CONFIG_FLASH_SHOW_PROGRESS=0 diff --git a/configs/M53017EVB_defconfig b/configs/M53017EVB_defconfig index c70964f7aa0..7c31a68c3bf 100644 --- a/configs/M53017EVB_defconfig +++ b/configs/M53017EVB_defconfig @@ -40,11 +40,8 @@ CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.162.1.1" CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x58000 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y @@ -57,6 +54,7 @@ CONFIG_SYS_MAX_FLASH_SECT=137 CONFIG_MCFFEC=y CONFIG_SYS_UNIFY_CACHE=y CONFIG_MII=y +CONFIG_DM_RTC=y CONFIG_MCFRTC=y CONFIG_SYS_MCFRTC_BASE=0xFC0A8000 CONFIG_MCFUART=y diff --git a/configs/M5329AFEE_defconfig b/configs/M5329AFEE_defconfig index 455eea255ae..a5ee08207a0 100644 --- a/configs/M5329AFEE_defconfig +++ b/configs/M5329AFEE_defconfig @@ -39,11 +39,8 @@ CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.162.1.1" CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x58000 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y @@ -55,6 +52,7 @@ CONFIG_SYS_MAX_FLASH_SECT=137 CONFIG_MCFFEC=y CONFIG_SYS_UNIFY_CACHE=y CONFIG_MII=y +CONFIG_DM_RTC=y CONFIG_MCFRTC=y CONFIG_SYS_MCFRTC_BASE=0xFC0A8000 CONFIG_MCFUART=y diff --git a/configs/M5329BFEE_defconfig b/configs/M5329BFEE_defconfig index 0251444b3bf..c5abed9dfde 100644 --- a/configs/M5329BFEE_defconfig +++ b/configs/M5329BFEE_defconfig @@ -40,11 +40,8 @@ CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.162.1.1" CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x58000 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y @@ -57,6 +54,7 @@ CONFIG_MTD_RAW_NAND=y CONFIG_MCFFEC=y CONFIG_SYS_UNIFY_CACHE=y CONFIG_MII=y +CONFIG_DM_RTC=y CONFIG_MCFRTC=y CONFIG_SYS_MCFRTC_BASE=0xFC0A8000 CONFIG_MCFUART=y diff --git a/configs/M5373EVB_defconfig b/configs/M5373EVB_defconfig index eec95da8573..cbc91a58a87 100644 --- a/configs/M5373EVB_defconfig +++ b/configs/M5373EVB_defconfig @@ -40,7 +40,8 @@ CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.162.1.1" CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y +CONFIG_DM_RTC=y CONFIG_SYS_I2C_FSL=y CONFIG_SYS_FSL_I2C_OFFSET=0x58000 CONFIG_SYS_I2C_SLAVE=0x7F diff --git a/configs/astro_mcf5373l_defconfig b/configs/astro_mcf5373l_defconfig index 827ebfe7420..f12859b75cb 100644 --- a/configs/astro_mcf5373l_defconfig +++ b/configs/astro_mcf5373l_defconfig @@ -34,11 +34,8 @@ CONFIG_FPGA_CYCLON2=y CONFIG_FPGA_XILINX=y CONFIG_FPGA_SPARTAN3=y CONFIG_SYS_FPGA_PROG_FEEDBACK=y -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x58000 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=80000 CONFIG_MTD_NOR_FLASH=y CONFIG_FLASH_CFI_DRIVER=y CONFIG_FLASH_SHOW_PROGRESS=0 @@ -46,6 +43,7 @@ CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y CONFIG_SYS_FLASH_PROTECTION=y CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_MAX_FLASH_SECT=259 +CONFIG_DM_RTC=y CONFIG_MCFRTC=y CONFIG_SYS_MCFRTC_BASE=0xFC0A8000 CONFIG_MCFUART=y diff --git a/configs/eb_cpu5282_defconfig b/configs/eb_cpu5282_defconfig index 6f0882fccfa..f86635d30d8 100644 --- a/configs/eb_cpu5282_defconfig +++ b/configs/eb_cpu5282_defconfig @@ -34,10 +34,9 @@ CONFIG_CMD_DATE=y CONFIG_OVERWRITE_ETHADDR_ONCE=y CONFIG_SYS_FAULT_ECHO_LINK_DOWN=y CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x300 -CONFIG_SYS_I2C_SLAVE=0 +CONFIG_DM_I2C=y +CONFIG_DM_RTC=y CONFIG_LED_STATUS=y CONFIG_LED_STATUS0=y CONFIG_LED_STATUS_BIT=8 diff --git a/configs/eb_cpu5282_internal_defconfig b/configs/eb_cpu5282_internal_defconfig index 5f4ec93401e..1982fea66d4 100644 --- a/configs/eb_cpu5282_internal_defconfig +++ b/configs/eb_cpu5282_internal_defconfig @@ -32,10 +32,8 @@ CONFIG_CMD_DATE=y CONFIG_OVERWRITE_ETHADDR_ONCE=y CONFIG_SYS_FAULT_ECHO_LINK_DOWN=y CONFIG_SYS_RX_ETH_BUFFER=8 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x300 -CONFIG_SYS_I2C_SLAVE=0 CONFIG_LED_STATUS=y CONFIG_LED_STATUS0=y CONFIG_LED_STATUS_BIT=8 @@ -50,5 +48,6 @@ CONFIG_SYS_FLASH_CFI=y CONFIG_SYS_MAX_FLASH_SECT=128 CONFIG_MCFFEC=y CONFIG_MII=y +CONFIG_DM_RTC=y CONFIG_RTC_DS1338=y CONFIG_MCFUART=y diff --git a/configs/stmark2_defconfig b/configs/stmark2_defconfig index ee757099ff5..b8d354f4b5e 100644 --- a/configs/stmark2_defconfig +++ b/configs/stmark2_defconfig @@ -49,3 +49,7 @@ CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_CF_SPI=y CONFIG_REGEX=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_DM_I2C=y +CONFIG_CMD_I2C=y +CONFIG_SYS_I2C_FSL=y