mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
hwmon: (pcf8591) Don't attempt to detect devices
The PCF8591 can't be detected, don't even try. There are plenty of other means to instantiate i2c devices these days. Signed-off-by: Jean Delvare <khali@linux-fr.org> Reviewed-by: Guenter Roeck <guenter.roeck@ericsson.com> Cc: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
4275fcd65d
commit
6dfee85397
@ -4,7 +4,7 @@ Kernel driver pcf8591
|
||||
Supported chips:
|
||||
* Philips/NXP PCF8591
|
||||
Prefix: 'pcf8591'
|
||||
Addresses scanned: I2C 0x48 - 0x4f
|
||||
Addresses scanned: none
|
||||
Datasheet: Publicly available at the NXP website
|
||||
http://www.nxp.com/pip/PCF8591_6.html
|
||||
|
||||
@ -58,18 +58,16 @@ Module parameters
|
||||
Accessing PCF8591 via /sys interface
|
||||
-------------------------------------
|
||||
|
||||
! Be careful !
|
||||
The PCF8591 is plainly impossible to detect! Stupid chip.
|
||||
So every chip with address in the interval [0x48..0x4f] is
|
||||
detected as PCF8591. If you have other chips in this address
|
||||
range, the workaround is to load this module after the one
|
||||
for your others chips.
|
||||
The PCF8591 is plainly impossible to detect! Thus the driver won't even
|
||||
try. You have to explicitly instantiate the device at the relevant
|
||||
address (in the interval [0x48..0x4f]) either through platform data, or
|
||||
using the sysfs interface. See Documentation/i2c/instantiating-devices
|
||||
for details.
|
||||
|
||||
On detection (i.e. insmod, modprobe et al.), directories are being
|
||||
created for each detected PCF8591:
|
||||
Directories are being created for each instantiated PCF8591:
|
||||
|
||||
/sys/bus/i2c/devices/<0>-<1>/
|
||||
where <0> is the bus the chip was detected on (e. g. i2c-0)
|
||||
where <0> is the bus the chip is connected to (e. g. i2c-0)
|
||||
and <1> the chip address ([48..4f])
|
||||
|
||||
Inside these directories, there are such files:
|
||||
|
@ -26,10 +26,6 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/hwmon.h>
|
||||
|
||||
/* Addresses to scan */
|
||||
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
|
||||
0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
|
||||
|
||||
/* Insmod parameters */
|
||||
|
||||
static int input_mode;
|
||||
@ -170,24 +166,6 @@ static const struct attribute_group pcf8591_attr_group_opt = {
|
||||
* Real code
|
||||
*/
|
||||
|
||||
/* Return 0 if detection is successful, -ENODEV otherwise */
|
||||
static int pcf8591_detect(struct i2c_client *client,
|
||||
struct i2c_board_info *info)
|
||||
{
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
|
||||
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE
|
||||
| I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
|
||||
return -ENODEV;
|
||||
|
||||
/* Now, we would do the remaining detection. But the PCF8591 is plainly
|
||||
impossible to detect! Stupid chip. */
|
||||
|
||||
strlcpy(info->type, "pcf8591", I2C_NAME_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pcf8591_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
@ -307,10 +285,6 @@ static struct i2c_driver pcf8591_driver = {
|
||||
.probe = pcf8591_probe,
|
||||
.remove = pcf8591_remove,
|
||||
.id_table = pcf8591_id,
|
||||
|
||||
.class = I2C_CLASS_HWMON, /* Nearest choice */
|
||||
.detect = pcf8591_detect,
|
||||
.address_list = normal_i2c,
|
||||
};
|
||||
|
||||
static int __init pcf8591_init(void)
|
||||
|
Loading…
x
Reference in New Issue
Block a user