mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 23:00:21 +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:
|
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
|
|||||||
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 @@
|
|||||||
#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 = {
|
|||||||
* 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 = {
|
|||||||
.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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user