rockowitz
rockowitz
Please execute **ddcutil detect --verbose --trace ddc --trace i2c** and submit the attachment. It looks like you're using the newly open sourced Nvidia driver. Is that correct?
As a first step, as a hunch I've modified the i2c writer function to allocate a structure on the heap instead of using the stack, as is done in the...
Background: Driver i2c-dev has two interfaces: an ioctl() interface and a higher level interface using read() and write(). Internally, the read()/write() interface maps to the same code as the ioctl()...
Another thing to try, if you would, again with 1.4.0-dev. Enable kernel tracing as per [this article](https://michlstechblog.info/blog/linux-enable-i2c-kernel-tracing/). Then execute **ddcutil detect --verbose --trace i2c** as usual, and send both the...
The kernel trace is as expected, indicating that the data structures passed on the ioctl() calls is correct. So why is the nvidia driver returning -EINVAL? The slave address is...
@KeyofBlueS @stephvnm Your observation hit the nail on the head. f is the flags halfword in the ioctl call. x0200 is flag I2C_M_DMA_SAFE. It is set within i2c-dev when handling...
@KeyofBlueS, @stephvnm Branch 1.3.3-dev reverts the method for reading the EDID to the way it was done in 1.2.2. Please build from this version and let me know if it...
@KeyofBlueS , @stephvnm I've re-installed the general code from 1.2.2 that uses read() and write() for i2c communication. (The amount of code that had to go back in was painful.)...
My oops. I missed a one spot (function i2c_detect_x37()) that had to be modified. I've uploaded the latest change to 1.3.3-dev.
Well, now I'm baffled. Are you building the nvidia driver using DKMS, or using a pre-built copy? If the former, can you determine which copy of i2c.h it is using...