On 06/22/2017 01:17 PM, Luis Oliveira wrote:
- Changes in Kconfig to enable I2C_DESIGNWARE_SLAVE support
- Slave functions added to core library file
- Slave abort sources added to common source file
- New driver: i2c-designware-slave added
- Changes in the Makefile to compile the I2C_DESIGNWARE_SLAVE module
when supported by the architecture.
All the SLAVE flow is added but it is not enabled via platform
driver.
Signed-off-by: Luis Oliveira <lolivei@xxxxxxxxxxxx>
---
V11-v12
- Changed ifdef condition in the Makefile fixed Kbuild error
drivers/i2c/busses/Kconfig | 14 +-
drivers/i2c/busses/Makefile | 3 +
drivers/i2c/busses/i2c-designware-common.c | 6 +
drivers/i2c/busses/i2c-designware-core.h | 2 +
drivers/i2c/busses/i2c-designware-slave.c | 395 +++++++++++++++++++++++++++++
5 files changed, 419 insertions(+), 1 deletion(-)
create mode 100644 drivers/i2c/busses/i2c-designware-slave.c
...
+static int i2c_dw_irq_handler_slave(struct dw_i2c_dev *dev)
+{
+ u32 raw_stat, stat, enabled;
+ u8 val, slave_activity;
+
+ stat = dw_readl(dev, DW_IC_INTR_STAT);
+ enabled = dw_readl(dev, DW_IC_ENABLE);
+ raw_stat = dw_readl(dev, DW_IC_RAW_INTR_STAT);
+ slave_activity = ((dw_readl(dev, DW_IC_STATUS) &
+ DW_IC_STATUS_SLAVE_ACTIVITY) >> 6);
+
+ if (!enabled || !(raw_stat & ~DW_IC_INTR_ACTIVITY))
+ return 0;
+
+ dev_dbg(dev->dev,
+ "%#x STAUTS SLAVE_ACTTVITY=%#x : RAW_INTR_STAT=%#x"
+ " : INTR_STAT=%#x\n",
+ enabled, slave_activity, raw_stat, stat);
+
Minor notes:
- Strings that are printed should fit in single line for making easier
to grep them from sources. Maybe not all of those variables are not
necessary in this debug print (e.g. are we interested other than bit 0
in DW_IC_ENABLE and line above already returns if it reads zero).
- Typos "STAUTS SLAVE_ACTTVITY".
You may add my acked by if you want to send another version or I'm fine
with incremental patch also.
Acked-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html