Re: [PATCH 3/3] i8k: Remove laptop specific config data (fan_mult, fan_max) from driver

Gabriele Mazzotta
2014-12-10T13:41:28Z

On Tuesday 09 December 2014 21:07:01 Pali Rohár wrote:
> Now we have autodetection code for fan multiplier and maximal fan speed so we do
> not need to have those constants for each laptop in kernel driver code.
>
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> ---
> !!!Please do not apply this patch until all affected machines will be tested!!!
>
> I tested autodetection code only on Dell Latitude E6440 (where it worked).
> Other machines which needs to be tested:
>
> Dell Latitude D520
> Dell Latitude E6540
> Dell Precision WorkStation 490
> Dell Studio
> Dell XPS M140 (MXC051)

Just a note: "or in dmi" has to be removed from a couple of comments.

Gabriele

> ---
> drivers/char/i8k.c | 88 +---------------------------------------------------
> 1 file changed, 1 insertion(+), 87 deletions(-)
>
> diff --git a/drivers/char/i8k.c b/drivers/char/i8k.c
> index 8bdbed2..bf74644 100644
> --- a/drivers/char/i8k.c
> +++ b/drivers/char/i8k.c
> @@ -725,42 +725,6 @@ static int __init i8k_init_hwmon(void)
> return 0;
> }
>
> -struct i8k_config_data {
> - int fan_mult;
> - int fan_max;
> -};
> -
> -enum i8k_configs {
> - DELL_LATITUDE_D520,
> - DELL_LATITUDE_E6540,
> - DELL_PRECISION_490,
> - DELL_STUDIO,
> - DELL_XPS_M140,
> -};
> -
> -static const struct i8k_config_data i8k_config_data[] = {
> - [DELL_LATITUDE_D520] = {
> - .fan_mult = 1,
> - .fan_max = I8K_FAN_TURBO,
> - },
> - [DELL_LATITUDE_E6540] = {
> - .fan_mult = 1,
> - .fan_max = I8K_FAN_HIGH,
> - },
> - [DELL_PRECISION_490] = {
> - .fan_mult = 1,
> - .fan_max = I8K_FAN_TURBO,
> - },
> - [DELL_STUDIO] = {
> - .fan_mult = 1,
> - .fan_max = I8K_FAN_HIGH,
> - },
> - [DELL_XPS_M140] = {
> - .fan_mult = 1,
> - .fan_max = I8K_FAN_HIGH,
> - },
> -};
> -
> static struct dmi_system_id i8k_dmi_table[] __initdata = {
> {
> .ident = "Dell Inspiron",
> @@ -784,30 +748,6 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = {
> },
> },
> {
> - .ident = "Dell Latitude D520",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> - DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D520"),
> - },
> - .driver_data = (void *)&i8k_config_data[DELL_LATITUDE_D520],
> - },
> - {
> - .ident = "Dell Latitude E6440",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> - DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6440"),
> - },
> - .driver_data = (void *)&i8k_config_data[DELL_LATITUDE_E6540],
> - },
> - {
> - .ident = "Dell Latitude E6540",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> - DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6540"),
> - },
> - .driver_data = (void *)&i8k_config_data[DELL_LATITUDE_E6540],
> - },
> - {
> .ident = "Dell Latitude 2",
> .matches = {
> DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> @@ -822,22 +762,13 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = {
> },
> },
> {
> - .ident = "Dell Inspiron 3",
> + .ident = "Dell Inspiron 4",
> .matches = {
> DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> DMI_MATCH(DMI_PRODUCT_NAME, "MP061"),
> },
> },
> {
> - .ident = "Dell Precision 490",
> - .matches = {
> - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> - DMI_MATCH(DMI_PRODUCT_NAME,
> - "Precision WorkStation 490"),
> - },
> - .driver_data = (void *)&i8k_config_data[DELL_PRECISION_490],
> - },
> - {
> .ident = "Dell Precision",
> .matches = {
> DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> @@ -864,7 +795,6 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = {
> DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> DMI_MATCH(DMI_PRODUCT_NAME, "Studio"),
> },
> - .driver_data = (void *)&i8k_config_data[DELL_STUDIO],
> },
> {
> .ident = "Dell XPS M140",
> @@ -872,7 +802,6 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = {
> DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> DMI_MATCH(DMI_PRODUCT_NAME, "MXC051"),
> },
> - .driver_data = (void *)&i8k_config_data[DELL_XPS_M140],
> },
> { }
> };
> @@ -884,8 +813,6 @@ MODULE_DEVICE_TABLE(dmi, i8k_dmi_table);
> */
> static int __init i8k_probe(void)
> {
> - const struct i8k_config_data *conf;
> - const struct dmi_system_id *id;
> int fan, val, ret;
>
> /*
> @@ -915,19 +842,6 @@ static int __init i8k_probe(void)
> return -ENODEV;
> }
>
> - /*
> - * Autodetect fan multiplier and maximal fan speed from dmi config
> - * Values specified in module parameters override values from dmi
> - */
> - id = dmi_first_match(i8k_dmi_table);
> - if (id && id->driver_data) {
> - conf = id->driver_data;
> - if (fan_mult <= 0 && conf->fan_mult > 0)
> - fan_mult = conf->fan_mult;
> - if (fan_max <= 0 && conf->fan_max > 0)
> - fan_max = conf->fan_max;
> - }
> -
> if (fan_mult <= 0) {
> /*
> * Autodetect fan multiplier for each fan based on nominal rpm
>