Thanks! I'll start working on an updated patch. I think I understand most of your issues, but I do have two questions: 1) Do you have an example of the SENSOR_ARRAY style? I grep'ed for SENSOR_ARRAY in the 2.6.16 kernel and didn't see anything. Is this a concept (i.e. use arrays) or specific macro/code? Is there sample code you can point me to? 2) What did you mean by: > + /* Determine the chip type. */ > + if (kind <= 0) { > + /* get vendor ID */ > + val2 = w83791d_read(new_client, W83791D_REG_CHIPMAN); > + if (val2 != 0x5c) { /* the vendor is NOT Winbond */ > + goto ERROR1; > + } > + val1 = w83791d_read(new_client, W83791D_REG_WCHIPID); > + if (val1 == 0x71 && address >= 0x2c) { > > Maybe you check the device adr and adr reg too Do you mean the serial bus address register (index 0x48)? Don't I already know the address of the device based on the reads that I'm doing? Or are you saying I should confirm that the address register has an address that matches the address of the reads that I'm doing? -- charles