Changeset 4318
- Timestamp:
- 02/15/07 10:34:08 (2 years ago)
- Files:
-
- lm-sensors/trunk/CHANGES (modified) (1 diff)
- lm-sensors/trunk/kernel/busses/i2c-amd8111.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lm-sensors/trunk/CHANGES
r4316 r4318 4 4 SVN HEAD 5 5 Man page i2cdetect.8: Scanning range can be restricted 6 Module i2c-amd8111: Cleanups (2.6 backport) 7 Fix initialization race (2.6 backport) 6 8 Programs i2cdetect, i2cdump, isadump: Flush output in real time 7 9 Program sensors-detect: Only probe relevant I2C addresses lm-sensors/trunk/kernel/busses/i2c-amd8111.c
r3177 r4318 216 216 amd_ec_write(smbus, AMD_SMB_CMD, command); 217 217 if (read_write == I2C_SMBUS_WRITE) { 218 amd_ec_write(smbus, AMD_SMB_DATA, data->word );218 amd_ec_write(smbus, AMD_SMB_DATA, data->word & 0xff); 219 219 amd_ec_write(smbus, AMD_SMB_DATA + 1, data->word >> 8); 220 220 } … … 225 225 amd_ec_write(smbus, AMD_SMB_CMD, command); 226 226 if (read_write == I2C_SMBUS_WRITE) { 227 len = min_t(u8, data->block[0], 32);227 len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX); 228 228 amd_ec_write(smbus, AMD_SMB_BCNT, len); 229 229 for (i = 0; i < len; i++) … … 234 234 235 235 case I2C_SMBUS_I2C_BLOCK_DATA: 236 len = min_t(u8, data->block[0], 32);236 len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX); 237 237 amd_ec_write(smbus, AMD_SMB_CMD, command); 238 238 amd_ec_write(smbus, AMD_SMB_BCNT, len); … … 245 245 case I2C_SMBUS_PROC_CALL: 246 246 amd_ec_write(smbus, AMD_SMB_CMD, command); 247 amd_ec_write(smbus, AMD_SMB_DATA, data->word );247 amd_ec_write(smbus, AMD_SMB_DATA, data->word & 0xff); 248 248 amd_ec_write(smbus, AMD_SMB_DATA + 1, data->word >> 8); 249 249 protocol = AMD_SMB_PRTCL_PROC_CALL | pec; … … 252 252 253 253 case I2C_SMBUS_BLOCK_PROC_CALL: 254 len = min_t(u8, data->block[0], 31);254 len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX - 1); 255 255 amd_ec_write(smbus, AMD_SMB_CMD, command); 256 256 amd_ec_write(smbus, AMD_SMB_BCNT, len); … … 304 304 case I2C_SMBUS_BLOCK_PROC_CALL: 305 305 amd_ec_read(smbus, AMD_SMB_BCNT, &len); 306 len = min_t(u8, len, 32);306 len = min_t(u8, len, I2C_SMBUS_BLOCK_MAX); 307 307 case I2C_SMBUS_I2C_BLOCK_DATA: 308 308 for (i = 0; i < len; i++) … … 355 355 int error; 356 356 357 if ( ~pci_resource_flags(dev, 0) & IORESOURCE_IO)358 return - 1;357 if (!(pci_resource_flags(dev, 0) & IORESOURCE_IO)) 358 return -ENODEV; 359 359 360 360 if (!(smbus = kmalloc(sizeof(struct amd_smbus), GFP_KERNEL))) 361 return - 1;361 return -ENOMEM; 362 362 memset(smbus, 0, sizeof(struct amd_smbus)); 363 363 … … 369 369 if (!request_region(smbus->base, smbus->size, amd8111_driver.name)) { 370 370 kfree(smbus); 371 return - 1;371 return -EBUSY; 372 372 } 373 373 … … 379 379 smbus->adapter.dec_use = amd8111_dec; 380 380 381 pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0); 382 381 383 error = i2c_add_adapter(&smbus->adapter); 382 384 if (error) { … … 384 386 release_region(smbus->base, smbus->size); 385 387 kfree(smbus); 386 return -1; 387 } 388 389 pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0); 388 return error; 389 } 390 390 391 391 printk(KERN_INFO "i2c-amd8111.c: AMD8111 SMBus 2.0 adapter at %#x\n", smbus->base);
