From: Holger Brunck Date: Fri, 2 Dec 2022 17:22:42 +0000 (+0100) Subject: km/ppc: migrate all mpc83xx to DM_I2C X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=31464f9455ca16b6dd98e5469213c33d78fc0137;p=u-boot.git km/ppc: migrate all mpc83xx to DM_I2C Enable DM_I2C and I2C mux to get rid of the usage of the legacy i2c driver. Signed-off-by: Holger Brunck --- diff --git a/board/keymile/Kconfig b/board/keymile/Kconfig index cd8a06e278..e5d7c80a86 100644 --- a/board/keymile/Kconfig +++ b/board/keymile/Kconfig @@ -100,8 +100,7 @@ config KM_MVEXTSW_ADDR config KM_IVM_BUS int "IVM I2C Bus" default 0 if ARCH_SOCFPGA - default 1 if MPC85xx || ARCH_LS1021A - default 2 if MPC83xx + default 1 if PPC || ARCH_LS1021A help Identifier number of I2C bus, where the inventory EEPROM is connected to. diff --git a/board/keymile/km83xx/Makefile b/board/keymile/km83xx/Makefile index 0aef654987..bdb358e2d2 100644 --- a/board/keymile/km83xx/Makefile +++ b/board/keymile/km83xx/Makefile @@ -3,4 +3,4 @@ # (C) Copyright 2006 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. -obj-y += km83xx.o ../common/common.o ../common/ivm.o km83xx_i2c.o +obj-y += km83xx.o ../common/common.o ../common/ivm.o diff --git a/board/keymile/km83xx/km83xx_i2c.c b/board/keymile/km83xx/km83xx_i2c.c deleted file mode 100644 index b80672d1b4..0000000000 --- a/board/keymile/km83xx/km83xx_i2c.c +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * (C) Copyright 2011 - * Holger Brunck, Keymile GmbH Hannover, holger.brunck@keymile.com - */ - -#include -#include -#include -#include -#include -#include "../common/common.h" - -static void i2c_write_start_seq(void) -{ - struct fsl_i2c_base *base; - base = (struct fsl_i2c_base *)(CONFIG_SYS_IMMR + - CONFIG_SYS_FSL_I2C_OFFSET); - udelay(DELAY_ABORT_SEQ); - out_8(&base->cr, (I2C_CR_MEN | I2C_CR_MSTA)); - udelay(DELAY_ABORT_SEQ); - out_8(&base->cr, (I2C_CR_MEN)); -} - -int i2c_make_abort(void) -{ - struct fsl_i2c_base *base; - base = (struct fsl_i2c_base *)(CONFIG_SYS_IMMR + - CONFIG_SYS_FSL_I2C_OFFSET); - uchar last; - int nbr_read = 0; - int i = 0; - int ret = 0; - - /* wait after each operation to finsh with a delay */ - out_8(&base->cr, (I2C_CR_MSTA)); - udelay(DELAY_ABORT_SEQ); - out_8(&base->cr, (I2C_CR_MEN | I2C_CR_MSTA)); - udelay(DELAY_ABORT_SEQ); - in_8(&base->dr); - udelay(DELAY_ABORT_SEQ); - last = in_8(&base->dr); - nbr_read++; - - /* - * do read until the last bit is 1, but stop if the full eeprom is - * read. - */ - while (((last & 0x01) != 0x01) && - (nbr_read < CONFIG_SYS_IVM_EEPROM_MAX_LEN)) { - udelay(DELAY_ABORT_SEQ); - last = in_8(&base->dr); - nbr_read++; - } - if ((last & 0x01) != 0x01) - ret = -2; - if ((last != 0xff) || (nbr_read > 1)) - printf("[INFO] i2c abort after %d bytes (0x%02x)\n", - nbr_read, last); - udelay(DELAY_ABORT_SEQ); - out_8(&base->cr, (I2C_CR_MEN)); - udelay(DELAY_ABORT_SEQ); - /* clear status reg */ - out_8(&base->sr, 0); - - for (i = 0; i < 5; i++) - i2c_write_start_seq(); - if (ret != 0) - printf("[ERROR] i2c abort failed after %d bytes (0x%02x)\n", - nbr_read, last); - - return ret; -} diff --git a/configs/kmcoge5ne_defconfig b/configs/kmcoge5ne_defconfig index 6bfcee9ed2..9609f58fb4 100644 --- a/configs/kmcoge5ne_defconfig +++ b/configs/kmcoge5ne_defconfig @@ -219,13 +219,10 @@ CONFIG_SYS_OR3_PRELIM=0xF0000E25 CONFIG_SYS_BR4_PRELIM_BOOL=y CONFIG_SYS_BR4_PRELIM=0xB0000801 CONFIG_SYS_OR4_PRELIM=0xF0000E25 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/kmeter1_defconfig b/configs/kmeter1_defconfig index b0af9e051b..bd3d6315b1 100644 --- a/configs/kmeter1_defconfig +++ b/configs/kmeter1_defconfig @@ -185,13 +185,10 @@ CONFIG_SYS_OR1_PRELIM=0xFC000E25 CONFIG_SYS_BR3_PRELIM_BOOL=y CONFIG_SYS_BR3_PRELIM=0xA0000801 CONFIG_SYS_OR3_PRELIM=0xF0000E25 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/kmopti2_defconfig b/configs/kmopti2_defconfig index 9a1e7cbde3..de6d99e91e 100644 --- a/configs/kmopti2_defconfig +++ b/configs/kmopti2_defconfig @@ -200,13 +200,10 @@ CONFIG_SYS_OR2_PRELIM=0xF0000C25 CONFIG_SYS_BR3_PRELIM_BOOL=y CONFIG_SYS_BR3_PRELIM=0xB0001001 CONFIG_SYS_OR3_PRELIM=0xF0000040 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/kmsupx5_defconfig b/configs/kmsupx5_defconfig index d981e51223..a231510a76 100644 --- a/configs/kmsupx5_defconfig +++ b/configs/kmsupx5_defconfig @@ -177,13 +177,10 @@ CONFIG_SYS_OR1_PRELIM=0xF8000E25 CONFIG_SYS_BR2_PRELIM_BOOL=y CONFIG_SYS_BR2_PRELIM=0xA0000801 CONFIG_SYS_OR2_PRELIM=0xF0000C25 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/kmtepr2_defconfig b/configs/kmtepr2_defconfig index 18a464c0ae..e6beb62f86 100644 --- a/configs/kmtepr2_defconfig +++ b/configs/kmtepr2_defconfig @@ -199,13 +199,10 @@ CONFIG_SYS_OR2_PRELIM=0xF0000C25 CONFIG_SYS_BR3_PRELIM_BOOL=y CONFIG_SYS_BR3_PRELIM=0xB0001001 CONFIG_SYS_OR3_PRELIM=0xF0000040 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/tuge1_defconfig b/configs/tuge1_defconfig index dbd832c9b7..83120759b1 100644 --- a/configs/tuge1_defconfig +++ b/configs/tuge1_defconfig @@ -177,13 +177,10 @@ CONFIG_SYS_OR1_PRELIM=0xF8000E25 CONFIG_SYS_BR2_PRELIM_BOOL=y CONFIG_SYS_BR2_PRELIM=0xA0000801 CONFIG_SYS_OR2_PRELIM=0xF0000C25 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/configs/tuxx1_defconfig b/configs/tuxx1_defconfig index 1b034a21a7..ee1640608d 100644 --- a/configs/tuxx1_defconfig +++ b/configs/tuxx1_defconfig @@ -201,13 +201,10 @@ CONFIG_SYS_OR2_PRELIM=0xF0000C25 CONFIG_SYS_BR3_PRELIM_BOOL=y CONFIG_SYS_BR3_PRELIM=0xB0000801 CONFIG_SYS_OR3_PRELIM=0xF0000E24 -CONFIG_SYS_I2C_LEGACY=y +CONFIG_DM_I2C=y CONFIG_SYS_I2C_FSL=y -CONFIG_SYS_FSL_I2C_OFFSET=0x3000 -CONFIG_SYS_FSL_HAS_I2C2_OFFSET=y -CONFIG_SYS_FSL_I2C2_OFFSET=0x3100 -CONFIG_SYS_I2C_SLAVE=0x7F -CONFIG_SYS_I2C_SPEED=200000 +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y # CONFIG_MMC is not set CONFIG_MTD=y CONFIG_MTD_NOR_FLASH=y diff --git a/include/configs/km/km-mpc83xx.h b/include/configs/km/km-mpc83xx.h index 7f1839f463..1f03f95ace 100644 --- a/include/configs/km/km-mpc83xx.h +++ b/include/configs/km/km-mpc83xx.h @@ -48,14 +48,6 @@ #define CFG_SYS_FLASH_BANKS_LIST { CFG_SYS_FLASH_BASE } -/* I2C */ -#define CFG_SYS_NUM_I2C_BUSES 4 -#define CFG_SYS_I2C_MAX_HOPS 1 -#define CFG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP} }, \ - {0, {{I2C_MUX_PCA9547, 0x70, 2} } }, \ - {0, {{I2C_MUX_PCA9547, 0x70, 1} } }, \ - {1, {I2C_NULL_HOP} } } - #if defined(CONFIG_CMD_NAND) #define CFG_SYS_NAND_BASE CFG_SYS_KMBEC_FPGA_BASE #endif