Commit f27def07 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

hwmon: (f71882fg) Per-chip fan/temperature input count tables

Use tables to list the count of fan and temperature inputs for all
supported chips, almost similar to (but more simple than) what is
already done for voltage inputs. This avoids repeating the same tests
in different functions, and will make it easier to add support for
chips with a different count of fan or temperature inputs.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Acked-by: default avatarHans de Goede <hdegoede@redhat.com>
Acked-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent 2740c60c
...@@ -152,6 +152,28 @@ static const char f71882fg_has_beep[] = { ...@@ -152,6 +152,28 @@ static const char f71882fg_has_beep[] = {
[f8000] = 0, [f8000] = 0,
}; };
static const char f71882fg_nr_fans[] = {
[f71808e] = 3,
[f71858fg] = 3,
[f71862fg] = 3,
[f71869] = 3,
[f71882fg] = 4,
[f71889fg] = 3,
[f71889ed] = 3,
[f8000] = 3,
};
static const char f71882fg_nr_temps[] = {
[f71808e] = 2,
[f71858fg] = 3,
[f71862fg] = 3,
[f71869] = 3,
[f71882fg] = 3,
[f71889fg] = 3,
[f71889ed] = 3,
[f8000] = 3,
};
static struct platform_device *f71882fg_pdev; static struct platform_device *f71882fg_pdev;
/* Super-I/O Function prototypes */ /* Super-I/O Function prototypes */
...@@ -1071,9 +1093,9 @@ static u16 f71882fg_read_temp(struct f71882fg_data *data, int nr) ...@@ -1071,9 +1093,9 @@ static u16 f71882fg_read_temp(struct f71882fg_data *data, int nr)
static struct f71882fg_data *f71882fg_update_device(struct device *dev) static struct f71882fg_data *f71882fg_update_device(struct device *dev)
{ {
struct f71882fg_data *data = dev_get_drvdata(dev); struct f71882fg_data *data = dev_get_drvdata(dev);
int nr_fans = f71882fg_nr_fans[data->type];
int nr_temps = f71882fg_nr_temps[data->type];
int nr, reg, point; int nr, reg, point;
int nr_fans = (data->type == f71882fg) ? 4 : 3;
int nr_temps = (data->type == f71808e) ? 2 : 3;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
...@@ -2042,8 +2064,9 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) ...@@ -2042,8 +2064,9 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
{ {
struct f71882fg_data *data; struct f71882fg_data *data;
struct f71882fg_sio_data *sio_data = pdev->dev.platform_data; struct f71882fg_sio_data *sio_data = pdev->dev.platform_data;
int err, i, nr_fans = (sio_data->type == f71882fg) ? 4 : 3; int nr_fans = f71882fg_nr_fans[sio_data->type];
int nr_temps = (sio_data->type == f71808e) ? 2 : 3; int nr_temps = f71882fg_nr_temps[sio_data->type];
int err, i;
u8 start_reg, reg; u8 start_reg, reg;
data = kzalloc(sizeof(struct f71882fg_data), GFP_KERNEL); data = kzalloc(sizeof(struct f71882fg_data), GFP_KERNEL);
...@@ -2276,8 +2299,9 @@ static int __devinit f71882fg_probe(struct platform_device *pdev) ...@@ -2276,8 +2299,9 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
static int f71882fg_remove(struct platform_device *pdev) static int f71882fg_remove(struct platform_device *pdev)
{ {
struct f71882fg_data *data = platform_get_drvdata(pdev); struct f71882fg_data *data = platform_get_drvdata(pdev);
int i, nr_fans = (data->type == f71882fg) ? 4 : 3; int nr_fans = f71882fg_nr_fans[data->type];
int nr_temps = (data->type == f71808e) ? 2 : 3; int nr_temps = f71882fg_nr_temps[data->type];
int i;
u8 start_reg = f71882fg_read8(data, F71882FG_REG_START); u8 start_reg = f71882fg_read8(data, F71882FG_REG_START);
if (data->hwmon_dev) if (data->hwmon_dev)
......
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