mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
i2c, zynq: convert zynq i2c driver to new multibus/multiadapter framework
- add zync i2c driver to new multibus/multiadpater support - adapted all config files, which uses this driver Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Joe Hershberger <joe.hershberger@ni.com> Cc: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
6789e84eca
commit
0bdffe71fd
4 changed files with 26 additions and 18 deletions
5
README
5
README
|
@ -2071,6 +2071,11 @@ CBFS (Coreboot Filesystem) support
|
|||
- CONFIG_SYS_OMAP24_I2C_SPEED4 speed channel 4
|
||||
- CONFIG_SYS_OMAP24_I2C_SLAVE4 slave addr channel 4
|
||||
|
||||
- drivers/i2c/zynq_i2c.c
|
||||
- activate this driver with CONFIG_SYS_I2C_ZYNQ
|
||||
- set CONFIG_SYS_I2C_ZYNQ_SPEED for speed setting
|
||||
- set CONFIG_SYS_I2C_ZYNQ_SLAVE for slave addr
|
||||
|
||||
additional defines:
|
||||
|
||||
CONFIG_SYS_NUM_I2C_BUSES
|
||||
|
|
|
@ -28,4 +28,4 @@ obj-$(CONFIG_SYS_I2C_RCAR) += rcar_i2c.o
|
|||
obj-$(CONFIG_SYS_I2C_SH) += sh_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_SOFT) += soft_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_TEGRA) += tegra_i2c.o
|
||||
obj-$(CONFIG_ZYNQ_I2C) += zynq_i2c.o
|
||||
obj-$(CONFIG_SYS_I2C_ZYNQ) += zynq_i2c.o
|
||||
|
|
|
@ -74,7 +74,8 @@ static struct zynq_i2c_registers *zynq_i2c =
|
|||
(struct zynq_i2c_registers *)ZYNQ_I2C_BASE;
|
||||
|
||||
/* I2C init called by cmd_i2c when doing 'i2c reset'. */
|
||||
void i2c_init(int requested_speed, int slaveadd)
|
||||
static void zynq_i2c_init(struct i2c_adapter *adap, int requested_speed,
|
||||
int slaveadd)
|
||||
{
|
||||
/* 111MHz / ( (3 * 17) * 22 ) = ~100KHz */
|
||||
writel((16 << ZYNQ_I2C_CONTROL_DIV_B_SHIFT) |
|
||||
|
@ -151,7 +152,7 @@ static u32 zynq_i2c_wait(u32 mask)
|
|||
* I2C probe called by cmd_i2c when doing 'i2c probe'.
|
||||
* Begin read, nak data byte, end.
|
||||
*/
|
||||
int i2c_probe(u8 dev)
|
||||
static int zynq_i2c_probe(struct i2c_adapter *adap, u8 dev)
|
||||
{
|
||||
/* Attempt to read a byte */
|
||||
setbits_le32(&zynq_i2c->control, ZYNQ_I2C_CONTROL_CLR_FIFO |
|
||||
|
@ -170,7 +171,8 @@ int i2c_probe(u8 dev)
|
|||
* I2C read called by cmd_i2c when doing 'i2c read' and by cmd_eeprom.c
|
||||
* Begin write, send address byte(s), begin read, receive data bytes, end.
|
||||
*/
|
||||
int i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
|
||||
static int zynq_i2c_read(struct i2c_adapter *adap, u8 dev, uint addr,
|
||||
int alen, u8 *data, int length)
|
||||
{
|
||||
u32 status;
|
||||
u32 i = 0;
|
||||
|
@ -235,7 +237,8 @@ int i2c_read(u8 dev, uint addr, int alen, u8 *data, int length)
|
|||
* I2C write called by cmd_i2c when doing 'i2c write' and by cmd_eeprom.c
|
||||
* Begin write, send address byte(s), send data bytes, end.
|
||||
*/
|
||||
int i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
|
||||
static int zynq_i2c_write(struct i2c_adapter *adap, u8 dev, uint addr,
|
||||
int alen, u8 *data, int length)
|
||||
{
|
||||
u8 *cur_data = data;
|
||||
|
||||
|
@ -275,16 +278,16 @@ int i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int i2c_set_bus_num(unsigned int bus)
|
||||
static unsigned int zynq_i2c_set_bus_speed(struct i2c_adapter *adap,
|
||||
unsigned int speed)
|
||||
{
|
||||
/* Only support bus 0 */
|
||||
if (bus > 0)
|
||||
return -1;
|
||||
if (speed != 1000000)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int i2c_get_bus_num(void)
|
||||
{
|
||||
/* Only support bus 0 */
|
||||
return 0;
|
||||
}
|
||||
U_BOOT_I2C_ADAP_COMPLETE(zynq_0, zynq_i2c_init, zynq_i2c_probe, zynq_i2c_read,
|
||||
zynq_i2c_write, zynq_i2c_set_bus_speed,
|
||||
CONFIG_SYS_I2C_ZYNQ_SPEED, CONFIG_SYS_I2C_ZYNQ_SLAVE,
|
||||
0)
|
||||
|
|
|
@ -60,10 +60,10 @@
|
|||
/* I2C */
|
||||
#if defined(CONFIG_ZYNQ_I2C0) || defined(CONFIG_ZYNQ_I2C1)
|
||||
# define CONFIG_CMD_I2C
|
||||
# define CONFIG_ZYNQ_I2C
|
||||
# define CONFIG_HARD_I2C
|
||||
# define CONFIG_SYS_I2C_SPEED 100000
|
||||
# define CONFIG_SYS_I2C_SLAVE 1
|
||||
# define CONFIG_SYS_I2C
|
||||
# define CONFIG_SYS_I2C_ZYNQ
|
||||
# define CONFIG_SYS_I2C_ZYNQ_SPEED 100000
|
||||
# define CONFIG_SYS_I2C_ZYNQ_SLAVE 1
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ZYNQ_DCC)
|
||||
|
|
Loading…
Reference in a new issue