Driver 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 開始讀取。