Hi all,
I have been reading the I2C kernel documentation, and I understand the basic principles of SDA/SCL. I am now trying to grasp the kernel-side implementation.
I'm struggling with two interconnected points regarding driver development:- Master/Slave Abstraction: How are the concepts of I2C "Master" and "Slave" represented in Linux kernel drivers? Specifically, is the
i2c_adapter always considered the "master" (the controller that initiates transactions), and the i2c_client always considered the "slave" (the device being accessed), or are there contexts where this simple analogy breaks down (e.g., multi-master environments or slave-mode drivers)? - Client Hardware Information: I'm trying to understand the minimum necessary hardware information required for the
i2c_client to probe successfully. Beyond the reg property (slave address) and a compatible string in the Device Tree, what other information, if any, is crucial for correctly instantiating the client device, especially for a standard, non-complex sensor?
Any guidance on tracing this abstraction back to the low-level register/hardware interaction would be greatly appreciated.
Thanks,
Momin M