PATCH; sensors-detect: do not crash FSC Syleus IC's

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

 




Jean Delvare wrote:
> Hi Hans,
> 
> On Sat, 14 Feb 2009 20:12:32 +0100, Hans de Goede wrote:
>> As discussed on IRC the Syleus does not like our way of seeing if a device is 
>> present at a certain address, this patch implements a workaround consisting of 
>> doing a byte data read instead of a quick command or a byte read.
>>
>> Once reviewed I can commit this myself.
> 
>> Index: prog/detect/sensors-detect
>> ===================================================================
>> --- prog/detect/sensors-detect	(revision 5642)
>> +++ prog/detect/sensors-detect	(working copy)
>> @@ -2629,7 +2629,14 @@
>>  {
>>  	my ($file, $addr, $funcs) = @_;
>>  
>> -	if (($addr >= 0x50 && $addr <= 0x5F)
>> +	if ($addr == 0x73) {
>> +		# Special case for FSC chips, as at least the Syleus locks
>> +		# up with our regular probe code. Note that to our current
>> +		# knowledge only FSC chips live on this address, and for them
>> +		# this probe method is safe
> 
> Missing final dot ;)
> 
>> +		return 0 unless ($funcs & I2C_FUNC_SMBUS_READ_BYTE);
> 
> Wrong test: you want to check for I2C_FUNC_SMBUS_READ_BYTE_DATA.
> 

I tried that, but I got an undefined symbol (or somethinglike that) error

>> +		return i2c_smbus_access($file, SMBUS_READ, 0, SMBUS_BYTE_DATA, []);
>> +	} elsif (($addr >= 0x50 && $addr <= 0x5F)
>>  	 || ($addr >= 0x30 && $addr <= 0x37)) {
>>  		# This covers all EEPROMs we know of, including page protection
>>  		# addresses. Note that some page protection addresses will not
> 
> Minor nitpicking: I'd also move the test after the EEPROM test, keeping
> the tests in both numeric and historical order.
> 

Ok, will do when the I2C_FUNC_SMBUS_READ_BYTE_DATA thingie is sorted.

Regards,

Hans



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

  Powered by Linux