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:

committed by
Heiko Schocher

parent
7fca1ae860
commit
710b9c89f2
7
README
7
README
@@ -771,13 +771,8 @@ The following options need to be configured:
|
|||||||
CFG_SYS_NUM_I2C_BUSES
|
CFG_SYS_NUM_I2C_BUSES
|
||||||
Hold the number of i2c buses you want to use.
|
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
|
CFG_SYS_I2C_BUSES
|
||||||
hold a list of buses you want to use, only used if
|
hold a list of buses you want to use
|
||||||
CFG_SYS_I2C_DIRECT_BUS is not defined, for example
|
|
||||||
a board with CFG_SYS_NUM_I2C_BUSES = 9:
|
|
||||||
|
|
||||||
CFG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \
|
CFG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \
|
||||||
{0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \
|
{0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \
|
||||||
|
@@ -33,100 +33,8 @@ struct i2c_adapter *i2c_get_adapter(int index)
|
|||||||
return i2c_adap_p;
|
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;
|
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():
|
* i2c_init_bus():
|
||||||
* ---------------
|
* ---------------
|
||||||
@@ -200,11 +108,6 @@ int i2c_set_bus_num(unsigned int bus)
|
|||||||
if ((bus == I2C_BUS) && (I2C_ADAP->init_done > 0))
|
if ((bus == I2C_BUS) && (I2C_ADAP->init_done > 0))
|
||||||
return 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);
|
max = ll_entry_count(struct i2c_adapter, i2c);
|
||||||
if (I2C_ADAPTER(bus) >= max) {
|
if (I2C_ADAPTER(bus) >= max) {
|
||||||
printf("Error, wrong i2c adapter %d max %d possible\n",
|
printf("Error, wrong i2c adapter %d max %d possible\n",
|
||||||
@@ -212,17 +115,10 @@ int i2c_set_bus_num(unsigned int bus)
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
|
||||||
i2c_mux_disconnect_all();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gd->cur_i2c_bus = bus;
|
gd->cur_i2c_bus = bus;
|
||||||
if (I2C_ADAP->init_done == 0)
|
if (I2C_ADAP->init_done == 0)
|
||||||
i2c_init_bus(bus, I2C_ADAP->speed, I2C_ADAP->slaveaddr);
|
i2c_init_bus(bus, I2C_ADAP->speed, I2C_ADAP->slaveaddr);
|
||||||
|
|
||||||
#ifndef CFG_SYS_I2C_DIRECT_BUS
|
|
||||||
i2c_mux_set_all();
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -646,7 +646,6 @@ void i2c_early_init_f(void);
|
|||||||
#define I2C_RXTX_LEN 128 /* maximum tx/rx buffer length */
|
#define I2C_RXTX_LEN 128 /* maximum tx/rx buffer length */
|
||||||
|
|
||||||
/* no muxes used bus = i2c adapters */
|
/* 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)
|
#define CFG_SYS_NUM_I2C_BUSES ll_entry_count(struct i2c_adapter, i2c)
|
||||||
|
|
||||||
struct i2c_adapter {
|
struct i2c_adapter {
|
||||||
@@ -692,47 +691,13 @@ struct i2c_adapter {
|
|||||||
|
|
||||||
struct i2c_adapter *i2c_get_adapter(int index);
|
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
|
#define I2C_ADAPTER(bus) bus
|
||||||
#endif
|
|
||||||
#define I2C_BUS gd->cur_i2c_bus
|
#define I2C_BUS gd->cur_i2c_bus
|
||||||
|
|
||||||
#define I2C_ADAP_NR(bus) i2c_get_adapter(I2C_ADAPTER(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 I2C_ADAP_NR(gd->cur_i2c_bus)
|
||||||
#define I2C_ADAP_HWNR (I2C_ADAP->hwadapnr)
|
#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
|
#ifndef I2C_SOFT_DECLARATIONS
|
||||||
# if (defined(CONFIG_AT91RM9200) || \
|
# if (defined(CONFIG_AT91RM9200) || \
|
||||||
defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9261) || \
|
defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9261) || \
|
||||||
|
Reference in New Issue
Block a user