mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00
i2c: Remove CFG_SYS_I2C_DIRECT_BUS
Now that this is always 1, remove it and the associated dead code. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
7fca1ae860
commit
710b9c89f2
3 changed files with 1 additions and 145 deletions
7
README
7
README
|
@ -771,13 +771,8 @@ The following options need to be configured:
|
|||
CFG_SYS_NUM_I2C_BUSES
|
||||
Hold the number of i2c buses you want to use.
|
||||
|
||||
CFG_SYS_I2C_DIRECT_BUS
|
||||
define this, if you don't use i2c muxes on your hardware.
|
||||
|
||||
CFG_SYS_I2C_BUSES
|
||||
hold a list of buses you want to use, only used if
|
||||
CFG_SYS_I2C_DIRECT_BUS is not defined, for example
|
||||
a board with CFG_SYS_NUM_I2C_BUSES = 9:
|
||||
hold a list of buses you want to use
|
||||
|
||||
CFG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \
|
||||
{0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \
|
||||
|
|
|
@ -33,100 +33,8 @@ struct i2c_adapter *i2c_get_adapter(int index)
|
|||
return i2c_adap_p;
|
||||
}
|
||||
|
||||
#if !defined(CFG_SYS_I2C_DIRECT_BUS)
|
||||
struct i2c_bus_hose i2c_bus[CFG_SYS_NUM_I2C_BUSES] =
|
||||
CFG_SYS_I2C_BUSES;
|
||||
#endif
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
/*
|
||||
* i2c_mux_set()
|
||||
* -------------
|
||||
*
|
||||
* This turns on the given channel on I2C multiplexer chip connected to
|
||||
* a given I2C adapter directly or via other multiplexers. In the latter
|
||||
* case the entire multiplexer chain must be initialized first starting
|
||||
* with the one connected directly to the adapter. When disabling a chain
|
||||
* muxes must be programmed in reverse order, starting with the one
|
||||
* farthest from the adapter.
|
||||
*
|
||||
* mux_id is the multiplexer chip type from defined in i2c.h. So far only
|
||||
* NXP (Philips) PCA954x multiplexers are supported. Switches are NOT
|
||||
* supported (anybody uses them?)
|
||||
*/
|
||||
|
||||
static int i2c_mux_set(struct i2c_adapter *adap, int mux_id, int chip,
|
||||
int channel)
|
||||
{
|
||||
uint8_t buf;
|
||||
int ret;
|
||||
|
||||
/* channel < 0 - turn off the mux */
|
||||
if (channel < 0) {
|
||||
buf = 0;
|
||||
ret = adap->write(adap, chip, 0, 0, &buf, 1);
|
||||
if (ret)
|
||||
printf("%s: Could not turn off the mux.\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
switch (mux_id) {
|
||||
case I2C_MUX_PCA9540_ID:
|
||||
case I2C_MUX_PCA9542_ID:
|
||||
if (channel > 1)
|
||||
return -1;
|
||||
buf = (uint8_t)((channel & 0x01) | (1 << 2));
|
||||
break;
|
||||
case I2C_MUX_PCA9544_ID:
|
||||
if (channel > 3)
|
||||
return -1;
|
||||
buf = (uint8_t)((channel & 0x03) | (1 << 2));
|
||||
break;
|
||||
case I2C_MUX_PCA9547_ID:
|
||||
if (channel > 7)
|
||||
return -1;
|
||||
buf = (uint8_t)((channel & 0x07) | (1 << 3));
|
||||
break;
|
||||
case I2C_MUX_PCA9548_ID:
|
||||
if (channel > 7)
|
||||
return -1;
|
||||
buf = (uint8_t)(0x01 << channel);
|
||||
break;
|
||||
default:
|
||||
printf("%s: wrong mux id: %d\n", __func__, mux_id);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = adap->write(adap, chip, 0, 0, &buf, 1);
|
||||
if (ret)
|
||||
printf("%s: could not set mux: id: %d chip: %x channel: %d\n",
|
||||
__func__, mux_id, chip, channel);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int i2c_mux_set_all(void)
|
||||
{
|
||||
struct i2c_bus_hose *i2c_bus_tmp = &i2c_bus[I2C_BUS];
|
||||
int i;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i2c_mux_disconnect_all(void)
|
||||
{
|
||||
struct i2c_bus_hose *i2c_bus_tmp = &i2c_bus[I2C_BUS];
|
||||
int i;
|
||||
uint8_t buf = 0;
|
||||
|
||||
if (I2C_ADAP->init_done == 0)
|
||||
return 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* i2c_init_bus():
|
||||
* ---------------
|
||||
|
@ -200,11 +108,6 @@ int i2c_set_bus_num(unsigned int bus)
|
|||
if ((bus == I2C_BUS) && (I2C_ADAP->init_done > 0))
|
||||
return 0;
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
if (bus >= CFG_SYS_NUM_I2C_BUSES)
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
max = ll_entry_count(struct i2c_adapter, i2c);
|
||||
if (I2C_ADAPTER(bus) >= max) {
|
||||
printf("Error, wrong i2c adapter %d max %d possible\n",
|
||||
|
@ -212,17 +115,10 @@ int i2c_set_bus_num(unsigned int bus)
|
|||
return -2;
|
||||
}
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
i2c_mux_disconnect_all();
|
||||
#endif
|
||||
|
||||
gd->cur_i2c_bus = bus;
|
||||
if (I2C_ADAP->init_done == 0)
|
||||
i2c_init_bus(bus, I2C_ADAP->speed, I2C_ADAP->slaveaddr);
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
i2c_mux_set_all();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -646,7 +646,6 @@ void i2c_early_init_f(void);
|
|||
#define I2C_RXTX_LEN 128 /* maximum tx/rx buffer length */
|
||||
|
||||
/* no muxes used bus = i2c adapters */
|
||||
#define CFG_SYS_I2C_DIRECT_BUS 1
|
||||
#define CFG_SYS_NUM_I2C_BUSES ll_entry_count(struct i2c_adapter, i2c)
|
||||
|
||||
struct i2c_adapter {
|
||||
|
@ -692,47 +691,13 @@ struct i2c_adapter {
|
|||
|
||||
struct i2c_adapter *i2c_get_adapter(int index);
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
struct i2c_mux {
|
||||
int id;
|
||||
char name[16];
|
||||
};
|
||||
|
||||
struct i2c_next_hop {
|
||||
struct i2c_mux mux;
|
||||
uint8_t chip;
|
||||
uint8_t channel;
|
||||
};
|
||||
|
||||
struct i2c_bus_hose {
|
||||
int adapter;
|
||||
};
|
||||
#define I2C_NULL_HOP {{-1, ""}, 0, 0}
|
||||
extern struct i2c_bus_hose i2c_bus[];
|
||||
|
||||
#define I2C_ADAPTER(bus) i2c_bus[bus].adapter
|
||||
#else
|
||||
#define I2C_ADAPTER(bus) bus
|
||||
#endif
|
||||
#define I2C_BUS gd->cur_i2c_bus
|
||||
|
||||
#define I2C_ADAP_NR(bus) i2c_get_adapter(I2C_ADAPTER(bus))
|
||||
#define I2C_ADAP I2C_ADAP_NR(gd->cur_i2c_bus)
|
||||
#define I2C_ADAP_HWNR (I2C_ADAP->hwadapnr)
|
||||
|
||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
||||
#define I2C_MUX_PCA9540_ID 1
|
||||
#define I2C_MUX_PCA9540 {I2C_MUX_PCA9540_ID, "PCA9540B"}
|
||||
#define I2C_MUX_PCA9542_ID 2
|
||||
#define I2C_MUX_PCA9542 {I2C_MUX_PCA9542_ID, "PCA9542A"}
|
||||
#define I2C_MUX_PCA9544_ID 3
|
||||
#define I2C_MUX_PCA9544 {I2C_MUX_PCA9544_ID, "PCA9544A"}
|
||||
#define I2C_MUX_PCA9547_ID 4
|
||||
#define I2C_MUX_PCA9547 {I2C_MUX_PCA9547_ID, "PCA9547A"}
|
||||
#define I2C_MUX_PCA9548_ID 5
|
||||
#define I2C_MUX_PCA9548 {I2C_MUX_PCA9548_ID, "PCA9548"}
|
||||
#endif
|
||||
|
||||
#ifndef I2C_SOFT_DECLARATIONS
|
||||
# if (defined(CONFIG_AT91RM9200) || \
|
||||
defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9261) || \
|
||||
|
|
Loading…
Add table
Reference in a new issue