On Sun, Jan 18, 2015 at 11:25 PM, Vivien Didelot <vivien.didelot@xxxxxxxxxxxxxxxxxxxx> wrote: > > Use the attribute indexes and concise the if statements. Why ? I really don't see that as an improvement. > Signed-off-by: Vivien Didelot <vivien.didelot@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/platform/x86/asus-laptop.c | 98 ++++++++++++++++---------------------- > 1 file changed, 40 insertions(+), 58 deletions(-) > > diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c > index 46b2746..b576929 100644 > --- a/drivers/platform/x86/asus-laptop.c > +++ b/drivers/platform/x86/asus-laptop.c > @@ -1580,77 +1580,59 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event) > } > > static struct attribute *asus_attributes[] = { > - &dev_attr_infos.attr, > - &dev_attr_wlan.attr, > - &dev_attr_bluetooth.attr, > - &dev_attr_wimax.attr, > - &dev_attr_wwan.attr, > - &dev_attr_display.attr, > - &dev_attr_ledd.attr, > - &dev_attr_ls_value.attr, > - &dev_attr_ls_level.attr, > - &dev_attr_ls_switch.attr, > - &dev_attr_gps.attr, > + &dev_attr_infos.attr, /* 0 */ > + &dev_attr_wlan.attr, /* 1 */ > + &dev_attr_bluetooth.attr, /* 2 */ > + &dev_attr_wimax.attr, /* 3 */ > + &dev_attr_wwan.attr, /* 4 */ > + &dev_attr_display.attr, /* 5 */ > + &dev_attr_ledd.attr, /* 6 */ > + &dev_attr_ls_value.attr, /* 7 */ > + &dev_attr_ls_level.attr, /* 8 */ > + &dev_attr_ls_switch.attr, /* 9 */ > + &dev_attr_gps.attr, /* 10 */ > NULL > }; > > static umode_t asus_sysfs_is_visible(struct kobject *kobj, > - struct attribute *attr, > - int idx) > + struct attribute *attr, int index) > { > struct device *dev = container_of(kobj, struct device, kobj); > struct platform_device *pdev = to_platform_device(dev); > struct asus_laptop *asus = platform_get_drvdata(pdev); > acpi_handle handle = asus->handle; > - bool supported; > - > - if (asus->is_pega_lucid) { > + bool ret = true; > + > + if (index == 1) { > + ret = !acpi_check_handle(handle, METHOD_WLAN, NULL); > + } else if (index == 2) { > + ret = !acpi_check_handle(handle, METHOD_BLUETOOTH, NULL); > + } else if (index == 3) { > + ret = !acpi_check_handle(handle, METHOD_WIMAX, NULL); > + } else if (index == 4) { > + ret = !acpi_check_handle(handle, METHOD_WWAN, NULL); > + } else if (index == 5) { > + ret = !acpi_check_handle(handle, METHOD_SWITCH_DISPLAY, NULL); > + } else if (index == 6) { > + ret = !acpi_check_handle(handle, METHOD_LEDD, NULL); > + } else if (index == 7) { > + ret = asus->is_pega_lucid; > + } else if (index == 8) { > /* no ls_level interface on the Lucid */ > - if (attr == &dev_attr_ls_switch.attr) > - supported = true; > - else if (attr == &dev_attr_ls_level.attr) > - supported = false; > - else > - goto normal; > - > - return supported ? attr->mode : 0; > - } > - > -normal: > - if (attr == &dev_attr_wlan.attr) { > - supported = !acpi_check_handle(handle, METHOD_WLAN, NULL); > - > - } else if (attr == &dev_attr_bluetooth.attr) { > - supported = !acpi_check_handle(handle, METHOD_BLUETOOTH, NULL); > - > - } else if (attr == &dev_attr_display.attr) { > - supported = !acpi_check_handle(handle, METHOD_SWITCH_DISPLAY, NULL); > - > - } else if (attr == &dev_attr_wimax.attr) { > - supported = > - !acpi_check_handle(asus->handle, METHOD_WIMAX, NULL); > - > - } else if (attr == &dev_attr_wwan.attr) { > - supported = !acpi_check_handle(asus->handle, METHOD_WWAN, NULL); > - > - } else if (attr == &dev_attr_ledd.attr) { > - supported = !acpi_check_handle(handle, METHOD_LEDD, NULL); > - > - } else if (attr == &dev_attr_ls_switch.attr || > - attr == &dev_attr_ls_level.attr) { > - supported = !acpi_check_handle(handle, METHOD_ALS_CONTROL, NULL) && > + ret = !asus->is_pega_lucid && > + !acpi_check_handle(handle, METHOD_ALS_CONTROL, NULL) && > !acpi_check_handle(handle, METHOD_ALS_LEVEL, NULL); > - } else if (attr == &dev_attr_ls_value.attr) { > - supported = asus->is_pega_lucid; > - } else if (attr == &dev_attr_gps.attr) { > - supported = !acpi_check_handle(handle, METHOD_GPS_ON, NULL) && > - !acpi_check_handle(handle, METHOD_GPS_OFF, NULL) && > - !acpi_check_handle(handle, METHOD_GPS_STATUS, NULL); > - } else { > - supported = true; > + } else if (index == 9) { > + ret = asus->is_pega_lucid || > + (!acpi_check_handle(handle, METHOD_ALS_CONTROL, NULL) && > + !acpi_check_handle(handle, METHOD_ALS_LEVEL, NULL)); > + } else if (index == 10) { > + ret = !acpi_check_handle(handle, METHOD_GPS_ON, NULL) && > + !acpi_check_handle(handle, METHOD_GPS_OFF, NULL) && > + !acpi_check_handle(handle, METHOD_GPS_STATUS, NULL); > } > > - return supported ? attr->mode : 0; > + return ret ? attr->mode : 0; > } > > > -- > 2.2.2 > -- Corentin Chary http://xf.iksaif.net -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html