驱动 i2c-mlxcpld

作者:Michael Shych <michaelsh@mellanox.com>

这是 Mellanox I2C 控制器逻辑,在 Lattice CPLD 设备中实现。

设备支持
  • 主模式。

  • 一条物理总线。

  • 轮询模式。

此控制器配备在以下 Mellanox 系统中:“msx6710”、“msx6720”、“msb7700”、“msn2700”、“msx1410”、“msn2410”、“msb7800”、“msn2740”、“msn2100”。

支持以下事务类型
  • 接收字节/块。

  • 发送字节/块。

  • 读取字节/块。

  • 写入字节/块。

寄存器

CPBLTY

0x0

  • 能力寄存器。

    位 [6:5] - 事务长度。b01 - 支持 72B,其他情况下为 36B。位 7 - SMBus 块读取支持。

CTRL

0x1

  • 控制寄存器。

    重置所有寄存器。

HALF_CYC

0x4

  • 周期寄存器。

    配置 I2C SCL 半时钟周期的宽度(以 4 个 LPC_CLK 单位表示)。

I2C_HOLD

0x5

  • 保持寄存器。

    OE(输出使能)延迟的值设置为此寄存器(以 LPC_CLK 单位表示)

CMD

0x6 - 命令寄存器。位 0,0 = 写入,1 = 读取。位 [7:1] - I2C 设备的 7 位地址。应最后写入,因为它会触发 I2C 事务。

NUM_DATA

0x7

  • 数据大小寄存器。

    在读取事务中要写入的数据字节数

NUM_ADDR

0x8

  • 地址寄存器。

    在读取事务中要写入的地址字节数。

STATUS

0x9

  • 状态寄存器。

    位 0 - 事务完成。位 4 - ACK/NACK。

DATAx

0xa

  • 0x54 - 68 字节数据缓冲区寄存器。

    对于写入事务,地址在前四个字节 (DATA1 - DATA4) 中指定,数据从 DATA4 开始。对于读取事务,地址在单独的事务中发送,并在前四个字节 (DATA0 - DATA3) 中指定。数据从 DATA0 开始读取。