2021-08-19 01:43:12 +00:00
|
|
|
// Copyright lowRISC contributors.
|
|
|
|
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
{ name: "i2c",
|
|
|
|
clocking: [{clock: "clk_i", reset: "rst_ni"}],
|
|
|
|
bus_interfaces: [
|
|
|
|
{ protocol: "tlul", direction: "device" }
|
|
|
|
],
|
|
|
|
regwidth: "32",
|
|
|
|
registers: [
|
|
|
|
{ name: "CTRL",
|
|
|
|
desc: "I2C control register",
|
|
|
|
swaccess: "rw",
|
|
|
|
hwaccess: "hrw",
|
|
|
|
hwqe: "true",
|
|
|
|
fields: [
|
|
|
|
{ bits: "0",
|
|
|
|
name: "START",
|
|
|
|
desc: "I2C start",
|
|
|
|
}
|
|
|
|
{ bits: "1",
|
|
|
|
name: "INT_EN",
|
|
|
|
desc: "I2C interrupt enable",
|
|
|
|
}
|
|
|
|
{ bits: "2",
|
|
|
|
name: "INT_PENDING",
|
|
|
|
swaccess: "rw1c",
|
|
|
|
desc: "I2C interrupt pending",
|
|
|
|
}
|
|
|
|
{ bits: "3",
|
|
|
|
name: "MODE",
|
|
|
|
desc: "I2C mode, 0: master, 1: slave",
|
|
|
|
}
|
|
|
|
{ bits: "4",
|
|
|
|
name: "WRITE",
|
|
|
|
desc: "0: write, 1: read",
|
|
|
|
}
|
|
|
|
{ bits: "5",
|
2021-08-25 09:51:35 +00:00
|
|
|
name: "ERROR",
|
2021-08-19 01:43:12 +00:00
|
|
|
swaccess: "ro",
|
2021-08-25 09:51:35 +00:00
|
|
|
desc: "0: no error, 1: error",
|
2021-08-19 01:43:12 +00:00
|
|
|
}
|
|
|
|
{ bits: "6",
|
2021-08-25 09:51:35 +00:00
|
|
|
name: "SLAVE_WR",
|
2021-08-19 01:43:12 +00:00
|
|
|
swaccess: "ro",
|
2021-08-25 09:51:35 +00:00
|
|
|
desc: "0: write, 1: read",
|
|
|
|
}
|
|
|
|
{ bits: "7",
|
|
|
|
name: "SLAVE_RDY",
|
|
|
|
desc: "0: not ready, 1: ready",
|
|
|
|
}
|
|
|
|
{ bits: "15:8",
|
|
|
|
name: "SLAVE_ADDR",
|
|
|
|
desc: "I2C slave address",
|
2021-08-19 01:43:12 +00:00
|
|
|
}
|
|
|
|
{ bits: "31:16",
|
|
|
|
name: "CLK_DIV",
|
|
|
|
desc: "I2C clock divider count",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{ name: "MASTER_DATA",
|
|
|
|
desc: "I2C master transfer data register",
|
|
|
|
swaccess: "rw",
|
|
|
|
hwaccess: "hrw",
|
|
|
|
fields: [
|
|
|
|
{ bits: "7:0",
|
|
|
|
name: "ADDRESS",
|
|
|
|
desc: "I2C slave address",
|
|
|
|
}
|
|
|
|
{ bits: "15:8",
|
|
|
|
name: "REGREG",
|
|
|
|
desc: "I2C write or read reg",
|
|
|
|
}
|
|
|
|
{ bits: "23:16",
|
|
|
|
name: "DATA",
|
|
|
|
desc: "I2C write or read data",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
2021-08-25 09:51:35 +00:00
|
|
|
{ name: "SLAVE_ADDR",
|
|
|
|
desc: "I2C slave read or write address register",
|
2021-08-19 01:43:12 +00:00
|
|
|
swaccess: "ro",
|
|
|
|
hwaccess: "hrw",
|
|
|
|
fields: [
|
|
|
|
{ bits: "7:0",
|
2021-08-25 09:51:35 +00:00
|
|
|
name: "ADDR0",
|
|
|
|
desc: "I2C slave read or write address[7:0]",
|
|
|
|
}
|
|
|
|
{ bits: "15:8",
|
|
|
|
name: "ADDR1",
|
|
|
|
desc: "I2C slave read or write address[15:8]",
|
|
|
|
}
|
|
|
|
{ bits: "23:16",
|
|
|
|
name: "ADDR2",
|
|
|
|
desc: "I2C slave read or write address[23:16]",
|
|
|
|
}
|
|
|
|
{ bits: "31:24",
|
|
|
|
name: "ADDR3",
|
|
|
|
desc: "I2C slave read or write address[31:24]",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{ name: "SLAVE_WDATA",
|
|
|
|
desc: "I2C slave write data register",
|
|
|
|
swaccess: "ro",
|
|
|
|
hwaccess: "hrw",
|
|
|
|
fields: [
|
|
|
|
{ bits: "7:0",
|
|
|
|
name: "WDATA0",
|
|
|
|
desc: "I2C slave write data[7:0]",
|
|
|
|
}
|
|
|
|
{ bits: "15:8",
|
|
|
|
name: "WDATA1",
|
|
|
|
desc: "I2C slave write data[15:8]",
|
|
|
|
}
|
|
|
|
{ bits: "23:16",
|
|
|
|
name: "WDATA2",
|
|
|
|
desc: "I2C slave write data[23:16]",
|
|
|
|
}
|
|
|
|
{ bits: "31:24",
|
|
|
|
name: "WDATA3",
|
|
|
|
desc: "I2C slave write data[31:24]",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
{ name: "SLAVE_RDATA",
|
|
|
|
desc: "I2C slave read data register",
|
|
|
|
swaccess: "rw",
|
|
|
|
hwaccess: "hro",
|
|
|
|
fields: [
|
|
|
|
{ bits: "31:0",
|
|
|
|
desc: "I2C slave read data",
|
2021-08-19 01:43:12 +00:00
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|