<div dir="ltr"><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">Hi all,</span><div class="gmail-gWqWw gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual"><br></div><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">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.</span><div class="gmail-gWqWw gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual"><br></div><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">I'm struggling with two interconnected points regarding driver development:</span><ol class="gmail-gdAMzb" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual"><li class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"><strong><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;">Master/Slave Abstraction:</span></strong><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> How are the concepts of I2C "Master" and "Slave" represented in Linux kernel drivers? Specifically, is the </span><code class="gmail-dfqOJc" style="display:inline-block;background-color:rgb(36,39,40);border-radius:4px;color:rgb(169,164,157);padding:1px 4px;font-size:0.75rem;letter-spacing:0.00625rem;line-height:1rem;font-family:"Google Sans Mono",monospace;white-space:pre-wrap;margin:unset">i2c_adapter</code><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> always considered the "master" (the controller that initiates transactions), and the </span><code class="gmail-dfqOJc" style="display:inline-block;background-color:rgb(36,39,40);border-radius:4px;color:rgb(169,164,157);padding:1px 4px;font-size:0.75rem;letter-spacing:0.00625rem;line-height:1rem;font-family:"Google Sans Mono",monospace;white-space:pre-wrap;margin:unset">i2c_client</code><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> 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)?</span></li><li class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"><strong><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;">Client Hardware Information:</span></strong><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> I'm trying to understand the minimum necessary hardware information required for the </span><code class="gmail-dfqOJc" style="display:inline-block;background-color:rgb(36,39,40);border-radius:4px;color:rgb(169,164,157);padding:1px 4px;font-size:0.75rem;letter-spacing:0.00625rem;line-height:1rem;font-family:"Google Sans Mono",monospace;white-space:pre-wrap;margin:unset">i2c_client</code><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> to probe successfully. Beyond the </span><code class="gmail-dfqOJc" style="display:inline-block;background-color:rgb(36,39,40);border-radius:4px;color:rgb(169,164,157);padding:1px 4px;font-size:0.75rem;letter-spacing:0.00625rem;line-height:1rem;font-family:"Google Sans Mono",monospace;white-space:pre-wrap;margin:unset">reg</code><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> property (slave address) and a </span><code class="gmail-dfqOJc" style="display:inline-block;background-color:rgb(36,39,40);border-radius:4px;color:rgb(169,164,157);padding:1px 4px;font-size:0.75rem;letter-spacing:0.00625rem;line-height:1rem;font-family:"Google Sans Mono",monospace;white-space:pre-wrap;margin:unset">compatible</code><span class="gmail-rnc2Gd" style="mask-repeat: no-repeat;"> 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?</span></li></ol><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">Any guidance on tracing this abstraction back to the low-level register/hardware interaction would be greatly appreciated.</span><div class="gmail-gWqWw gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual"><br></div><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">Thanks,</span><div class="gmail-gWqWw gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual"><br></div><span class="gmail-rnc2Gd" style="color:rgb(191,188,183);font-family:"Google Sans",Roboto,Arial,sans-serif;font-size:14px;font-variant-ligatures:no-contextual">Momin M</span></div>