Intel lynx point designware issue

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

 



Hey Linux-i2c,

I have a bit of an unorthodox question for this mailing list but you guys seem like the only people who could help me at this point.

I have a Dell Venue 11 Pro tablet with the Lynxpoint I2C busses (INT33C2, INT33C3), one of which drives an i2c-hid touchscreen device. I have installed OS X on this device and I have been attempting to port the Linux designware i2c drivers to OS X. The drivers are pretty much just a carbon copy of the ones in the Linux kernel with obvious modifications to integrate with the Darwin kernel. The issue that I am facing is that no matter what I do, the I2C bus seems to refuse to start an I2C transaction. Here is the sequence of events:

I initiate a transaction on the bus with code exactly equivalent to that in i2c_dw_xfer_init. The bus then generates a IC_INTR_TX_EMPTY interrupt and I start filling the transaction fifo by writing to the data command register. The bus generates a few IC_INTR_TX_EMPTY to avoid overflow (again, this is following the structure of the Linux kernel drivers pretty much line by line). Once the data has been written (with a restart in the middle for direction change and a stop on the last entry), nothing happens. The data to be sent sits in the transaction fifo and the bus does not initiate the transaction, no matter what I try.

Here is a dump of the registers after I have written the transaction data (the point at which the bus does nothing):

DW_IC_CON: 0x65
DW_IC_TAR: 0x2c
DW_IC_SAR: 0x55
DW_IC_SS_SCL_HCNT: 0x1b0
DW_IC_SS_SCL_LCNT: 0x1fb
DW_IC_FS_SCL_HCNT: 0x48
DW_IC_FS_SCL_LCNT: 0xa0
DW_IC_INTR_STAT: 0x0
DW_IC_INTR_MASK: 0xa0
DW_IC_RAW_INTR_STAT: 0x0
DW_IC_RX_TL: 0x0
DW_IC_TX_TL: 0x1f
DW_IC_STATUS: 0x0
DW_IC_TXFLR: 0x20
DW_IC_RXFLR: 0x0
DW_IC_SDA_HOLD: 0x9
DW_IC_TX_ABRT_SOURCE: 0x0
DW_IC_DMA_CR: 0x0
DW_IC_DMA_TDLR: 0x0
DW_IC_DMA_RDLR: 0x0
DW_IC_SDA_SETUP: 0x64
DW_IC_ENABLE_STATUS: 0x1
DW_IC_FS_SPKLEN: 0x5
DW_IC_COMP_PARAM_1: 0x1f1fee
DW_IC_COMP_VERSION: 0x3131352a
DW_IC_COMP_TYPE: 0x44570140

The bus is configured from the ACPI parameters supplied by Dell.

I know that this mailing list is intended for work on Linux i2c drivers but I’m seriously at a loss now. I’ve been working on fixing this issue for the past 3 months, I’ve scoured the internet for any kind of hint as to what’s happening. I’ve also read the documentation for the Designware bus to no avail. I feel like the only place I can turn to now is this mailing list, you guys wrote the drivers for the Linux kernel after all :) I have a feeling the solution is going to be ridiculously simple and it’s merely something that I’ve completely overlooked but I would appreciate any help from you guys in understanding why this is happening.

I also apologise in advance if any terminology I have used is incorrect. Although I have worked with drivers in both Linux and OS X before, it’s the first time I work with an I2C bus.

I would also appreciate if you could CC me in your reply as majordomo has yet to confirm my subscription for some reason.

Many thanks in advance,
Alexandre Daoud--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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