On 09/28/2022 03:16 PM, Wolfram Sang wrote:
Hi,
At approximately line 41 of nvidia driver file nv-i2c.c, in function
nv_i2c_algo_master_transfer(), there's an if-test for symbol I2C_M_DMA_SAFE.
If the symbol is not defined, a call to the function with the bit set fails
with error -EINVAL. The file includes "linux/i2c.h", so apparently there are
versions of I2c.h in which the flag is undefined.
I2C_M_DMA_SAFE is a hint for controller drivers that the buffer is DMA
capable. It is not something the controller driver needs to support
actively. Bailing out on this flag is wrong. Do I need to mention that
such misconceptions are the super-downside of out-of-tree drivers? (I
know that you are only a user of this driver, so not your fault)
Happy hacking,
Wolfram
Hello Wolfram,
Thanks for the clarification. I've included the core of it in my post
on [developer.nvidia.com]
(https://forums.developer.nvidia.com/t/nvidia-driver-i2c-dev-driver-i2c-failure/228966/2)
I'm not holding my breath for a fix any time soon.
I long ago gave up on using Nvidia video cards. Building my own copy of
the nvidia
driver was prone to failure due to mismatches between the kernel and the
driver.
Unfortunately, I can't control the driver that users of ddcutil use.
There's even
a [page on ddcutil's website](https://www.ddcutil.com/nvidia) devoted to
undocumented driver settings that are often needed for I2C.
I had simplified ddcutil's most recent release (1.3.0, which inter alia
will be in
Ubuntu 22.10) to use onlythe i2c-dev's ioctl() interface. The amount of
code
that had to go back in was both extensive and painful.
Regards,
Sanford