Commit 6dfee853 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

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: default avatarJean Delvare <khali@linux-fr.org>
Reviewed-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
parent 4275fcd6
...@@ -4,7 +4,7 @@ Kernel driver pcf8591 ...@@ -4,7 +4,7 @@ Kernel driver pcf8591
Supported chips: Supported chips:
* Philips/NXP PCF8591 * Philips/NXP PCF8591
Prefix: 'pcf8591' Prefix: 'pcf8591'
Addresses scanned: I2C 0x48 - 0x4f Addresses scanned: none
Datasheet: Publicly available at the NXP website Datasheet: Publicly available at the NXP website
http://www.nxp.com/pip/PCF8591_6.html http://www.nxp.com/pip/PCF8591_6.html
...@@ -58,18 +58,16 @@ Module parameters ...@@ -58,18 +58,16 @@ Module parameters
Accessing PCF8591 via /sys interface Accessing PCF8591 via /sys interface
------------------------------------- -------------------------------------
! Be careful ! The PCF8591 is plainly impossible to detect! Thus the driver won't even
The PCF8591 is plainly impossible to detect! Stupid chip. try. You have to explicitly instantiate the device at the relevant
So every chip with address in the interval [0x48..0x4f] is address (in the interval [0x48..0x4f]) either through platform data, or
detected as PCF8591. If you have other chips in this address using the sysfs interface. See Documentation/i2c/instantiating-devices
range, the workaround is to load this module after the one for details.
for your others chips.
On detection (i.e. insmod, modprobe et al.), directories are being Directories are being created for each instantiated PCF8591:
created for each detected PCF8591:
/sys/bus/i2c/devices/<0>-<1>/ /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]) and <1> the chip address ([48..4f])
Inside these directories, there are such files: Inside these directories, there are such files:
......
...@@ -26,10 +26,6 @@ ...@@ -26,10 +26,6 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/hwmon.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 */ /* Insmod parameters */
static int input_mode; static int input_mode;
...@@ -170,24 +166,6 @@ static const struct attribute_group pcf8591_attr_group_opt = { ...@@ -170,24 +166,6 @@ static const struct attribute_group pcf8591_attr_group_opt = {
* Real code * 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, static int pcf8591_probe(struct i2c_client *client,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
...@@ -307,10 +285,6 @@ static struct i2c_driver pcf8591_driver = { ...@@ -307,10 +285,6 @@ static struct i2c_driver pcf8591_driver = {
.probe = pcf8591_probe, .probe = pcf8591_probe,
.remove = pcf8591_remove, .remove = pcf8591_remove,
.id_table = pcf8591_id, .id_table = pcf8591_id,
.class = I2C_CLASS_HWMON, /* Nearest choice */
.detect = pcf8591_detect,
.address_list = normal_i2c,
}; };
static int __init pcf8591_init(void) static int __init pcf8591_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment