Re: [bug] some versions of designware i2c lack enable status register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 19 Mar 2018, Jarkko Nikula wrote:
> I see specification mentions that for older IP versions have to monitor two
> registers IC_STATUS and IC_RAW_INTR_STAT but don't say exactly how.
> 
> Luis: Do you know can the availability of IC_ENABLE_STATUS register 0x9c be
> seen from DW_IC_COMP_VERSION and how to find the same enabled status from
> those two registers?

Ping? The change introduced a regression for (at least) ARM Berlin and SPEAr.

Is there confidence that that was the right fix? Various sources quoting what
appears to be the DW_apb_i2c databook (e.g. alt_i2c.h in RTEMS) only say that
checking IC_ENABLE_STATUS is needed when disabling, not enabling.

Is it possible that i2c_dw_isr is racing with i2c_dw_xfer_init? Ben, did you
check that? Can you also retrieve your DW I2C core version, e.g. with the
following patch? Thanks in advance. For me it prints:

i2c_designware f7e81400.i2c: Synopsis DesignWare I2C version: 0x3130352a

diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
index 1b91963d30c2..9740de45e14b 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
@@ -148,6 +148,7 @@ static int i2c_dw_init_master(struct dw_i2c_dev *dev)
 
 	/* Configure SDA Hold Time if required */
 	reg = dw_readl(dev, DW_IC_COMP_VERSION);
+	dev_info(dev->dev, "Synopsis DesignWare I2C version: %#08x\n", reg);
 	if (reg >= DW_IC_SDA_HOLD_MIN_VERS) {
 		if (!dev->sda_hold_time) {
 			/* Keep previous hold time setting if no one set it */



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux