ATXP1 kernel patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I've updated the module:
> http://www.hasw.net/linux/atxp1-0.3.patch

Comments:

1* Please respect the alphabetical order in i2c/chips/Makefile.

2* You include linux/config.h but don't seem to use it.

3* What is this "low_voltage" module parameter?

4* I am really suspicious that the atxp1 has 0x37 and 0x4e as possible
addresses. How do you know?

5* normal_i2c_range is gone in Linux 2.6.10.

6* Don't use .id in i2c_driver atxp1_driver, you don't need it.

7* Other drivers don't call I2C_CLIENT_INSMOD directly.

8* In the current implementation, atxp1_data.valid is usless (value is
always 0). I also think that you should use restore and use
atxp1_data.last_updated.

9* What's the difference between VID and CPU VID?

10* You hardcode the VID <-> Vcore translation formula. Depending on the
VRM version, it might or might not be correct. You should use the
functions in i2c-sensor-vid.

11* atxp1_write is quite complex. What makes you believe that the write
could possibly fail? Other i2c drivers don't do that kind of check.

12* Why does vcore default to 1.650V in atxp1_storevcore? Why is vcore
arbitrarily kept between 1.075V/1.100V and 1.850V? If trying to write a
value outside of this range is an error, then atxp1_storevcore should
return an error (negative value) when it happens.

13* Use dev_info/dev_dbg etc... instead of printk wherever possible.

14* Care to comment/document the final loops in atxp1_storevcore? Since
atxp1_write is complex, I fear that these loops will be damn slow. Why
are they needed at all?

15* Why does atxp1_storevcore set data->valid to 0?

16* Sysfs file name should probably be cpu0_vid, not cpu_vid, although I
admit I don't know how to properly handle the case where more than one
device is present.

17* Don't set new_client->id to 0 in atxp1_detect, it's useless.

18* You detection method is too weak and will most likely result in
frequent misdetections. You have to improve it. I know that the device
doesn't have a decidated identification register, nor does it have many
registers to test, but we can certainly do something. Which registers
does the device have exactly? What happens when reading from
non-existent registers? The output of "i2cdump" may help.

19* atxp1_detach_client frees the client data even if the deregistration
failed. This is probably dangerous.

20* init and exit functions are not properly marked __init and __exit.

Good work nonetheless, this device is completely different from what we
have seen before so it's quite normal that some things need to be
discussed and tweaked before you/we get them right.

Thanks,
-- 
Jean Delvare
http://khali.linux-fr.org/



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux