Convert CONFIG_SYS_I2C_INIT_BOARD to Kconfig
This converts the following to Kconfig: CONFIG_SYS_I2C_INIT_BOARD Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
77b5cc2948
commit
9244b2fda9
11
README
11
README
|
|
@ -1052,17 +1052,6 @@ The following options need to be configured:
|
||||||
You should define these to the GPIO value as given directly to
|
You should define these to the GPIO value as given directly to
|
||||||
the generic GPIO functions.
|
the generic GPIO functions.
|
||||||
|
|
||||||
CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
|
|
||||||
When a board is reset during an i2c bus transfer
|
|
||||||
chips might think that the current transfer is still
|
|
||||||
in progress. On some boards it is possible to access
|
|
||||||
the i2c SCLK line directly, either by using the
|
|
||||||
processor pin as a GPIO or by having a second pin
|
|
||||||
connected to the bus. If this option is defined a
|
|
||||||
custom i2c_init_board() routine in boards/xxx/board.c
|
|
||||||
is run early in the boot sequence.
|
|
||||||
|
|
||||||
CONFIG_I2C_MULTI_BUS
|
CONFIG_I2C_MULTI_BUS
|
||||||
|
|
||||||
This option allows the use of multiple I2C buses, each of which
|
This option allows the use of multiple I2C buses, each of which
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ if VENDOR_KM
|
||||||
|
|
||||||
menu "KM Board Setup"
|
menu "KM Board Setup"
|
||||||
|
|
||||||
|
config SYS_I2C_INIT_BOARD
|
||||||
|
def_bool y if ARM
|
||||||
|
|
||||||
config HUSH_INIT_VAR
|
config HUSH_INIT_VAR
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -176,10 +176,6 @@ int board_early_init_f(void)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
board_i2c_init(gd->fdt_blob);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return exynos_early_init_f();
|
return exynos_early_init_f();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -33,16 +33,6 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
void i2c_init_board(void)
|
|
||||||
{
|
|
||||||
gpio_request(S5PC110_GPIO_J43, "i2c_clk");
|
|
||||||
gpio_request(S5PC110_GPIO_J40, "i2c_data");
|
|
||||||
gpio_direction_output(S5PC110_GPIO_J43, 1);
|
|
||||||
gpio_direction_output(S5PC110_GPIO_J40, 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
gd->ram_size = PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE +
|
gd->ram_size = PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE +
|
||||||
|
|
|
||||||
|
|
@ -271,13 +271,6 @@ static void __i2c_init(const struct fsl_i2c_base *base, int speed, int
|
||||||
const unsigned long long timeout = usec2ticks(CONFIG_I2C_MBB_TIMEOUT);
|
const unsigned long long timeout = usec2ticks(CONFIG_I2C_MBB_TIMEOUT);
|
||||||
unsigned long long timeval;
|
unsigned long long timeval;
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
/* Call board specific i2c bus reset routine before accessing the
|
|
||||||
* environment, which might be in a chip on that bus. For details
|
|
||||||
* about this problem see doc/I2C_Edge_Conditions.
|
|
||||||
*/
|
|
||||||
i2c_init_board();
|
|
||||||
#endif
|
|
||||||
writeb(0, &base->cr); /* stop I2C controller */
|
writeb(0, &base->cr); /* stop I2C controller */
|
||||||
udelay(5); /* let it shutdown in peace */
|
udelay(5); /* let it shutdown in peace */
|
||||||
set_i2c_bus_speed(base, i2c_clk, speed);
|
set_i2c_bus_speed(base, i2c_clk, speed);
|
||||||
|
|
|
||||||
|
|
@ -374,27 +374,6 @@ static int __i2c_write(struct mv_i2c *base, uchar chip, u8 *addr, int alen,
|
||||||
|
|
||||||
static struct mv_i2c *base_glob;
|
static struct mv_i2c *base_glob;
|
||||||
|
|
||||||
static void i2c_board_init(struct mv_i2c *base)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
u32 icr;
|
|
||||||
/*
|
|
||||||
* call board specific i2c bus reset routine before accessing the
|
|
||||||
* environment, which might be in a chip on that bus. For details
|
|
||||||
* about this problem see doc/I2C_Edge_Conditions.
|
|
||||||
*
|
|
||||||
* disable I2C controller first, otherwhise it thinks we want to
|
|
||||||
* talk to the slave port...
|
|
||||||
*/
|
|
||||||
icr = readl(&base->icr);
|
|
||||||
writel(readl(&base->icr) & ~(ICR_SCLE | ICR_IUE), &base->icr);
|
|
||||||
|
|
||||||
i2c_init_board();
|
|
||||||
|
|
||||||
writel(icr, &base->icr);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_I2C_MULTI_BUS
|
#ifdef CONFIG_I2C_MULTI_BUS
|
||||||
static unsigned long i2c_regs[CONFIG_MV_I2C_NUM] = CONFIG_MV_I2C_REG;
|
static unsigned long i2c_regs[CONFIG_MV_I2C_NUM] = CONFIG_MV_I2C_REG;
|
||||||
static unsigned int bus_initialized[CONFIG_MV_I2C_NUM];
|
static unsigned int bus_initialized[CONFIG_MV_I2C_NUM];
|
||||||
|
|
@ -411,7 +390,6 @@ int i2c_set_bus_num(unsigned int bus)
|
||||||
current_bus = bus;
|
current_bus = bus;
|
||||||
|
|
||||||
if (!bus_initialized[current_bus]) {
|
if (!bus_initialized[current_bus]) {
|
||||||
i2c_board_init(base_glob);
|
|
||||||
bus_initialized[current_bus] = 1;
|
bus_initialized[current_bus] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -441,8 +419,6 @@ void i2c_init(int speed, int slaveaddr)
|
||||||
else
|
else
|
||||||
val = ICR_SM;
|
val = ICR_SM;
|
||||||
clrsetbits_le32(&base_glob->icr, ICR_MODE_MASK, val);
|
clrsetbits_le32(&base_glob->icr, ICR_MODE_MASK, val);
|
||||||
|
|
||||||
i2c_board_init(base_glob);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __i2c_probe_chip(struct mv_i2c *base, uchar chip)
|
static int __i2c_probe_chip(struct mv_i2c *base, uchar chip)
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,6 @@
|
||||||
/*
|
/*
|
||||||
* I2C
|
* I2C
|
||||||
*/
|
*/
|
||||||
#define CONFIG_SYS_I2C_INIT_BOARD
|
|
||||||
|
|
||||||
#define CONFIG_I2C_MULTI_BUS
|
#define CONFIG_I2C_MULTI_BUS
|
||||||
#define CONFIG_SYS_I2C_MAX_HOPS 1
|
#define CONFIG_SYS_I2C_MAX_HOPS 1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue