diff options
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/efivars.c | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c index 82183c28a12a..ebc38534b02d 100644 --- a/drivers/firmware/efivars.c +++ b/drivers/firmware/efivars.c | |||
@@ -129,13 +129,6 @@ struct efivar_attribute { | |||
129 | }; | 129 | }; |
130 | 130 | ||
131 | 131 | ||
132 | #define EFI_ATTR(_name, _mode, _show, _store) \ | ||
133 | struct subsys_attribute efi_attr_##_name = { \ | ||
134 | .attr = {.name = __stringify(_name), .mode = _mode}, \ | ||
135 | .show = _show, \ | ||
136 | .store = _store, \ | ||
137 | }; | ||
138 | |||
139 | #define EFIVAR_ATTR(_name, _mode, _show, _store) \ | 132 | #define EFIVAR_ATTR(_name, _mode, _show, _store) \ |
140 | struct efivar_attribute efivar_attr_##_name = { \ | 133 | struct efivar_attribute efivar_attr_##_name = { \ |
141 | .attr = {.name = __stringify(_name), .mode = _mode}, \ | 134 | .attr = {.name = __stringify(_name), .mode = _mode}, \ |
@@ -540,12 +533,12 @@ static struct bin_attribute var_subsys_attr_del_var = { | |||
540 | * Let's not leave out systab information that snuck into | 533 | * Let's not leave out systab information that snuck into |
541 | * the efivars driver | 534 | * the efivars driver |
542 | */ | 535 | */ |
543 | static ssize_t | 536 | static ssize_t systab_show(struct kobject *kobj, |
544 | systab_read(struct kset *kset, char *buf) | 537 | struct kobj_attribute *attr, char *buf) |
545 | { | 538 | { |
546 | char *str = buf; | 539 | char *str = buf; |
547 | 540 | ||
548 | if (!kset || !buf) | 541 | if (!kobj || !buf) |
549 | return -EINVAL; | 542 | return -EINVAL; |
550 | 543 | ||
551 | if (efi.mps != EFI_INVALID_TABLE_ADDR) | 544 | if (efi.mps != EFI_INVALID_TABLE_ADDR) |
@@ -566,13 +559,19 @@ systab_read(struct kset *kset, char *buf) | |||
566 | return str - buf; | 559 | return str - buf; |
567 | } | 560 | } |
568 | 561 | ||
569 | static EFI_ATTR(systab, 0400, systab_read, NULL); | 562 | static struct kobj_attribute efi_attr_systab = |
563 | __ATTR(systab, 0400, systab_show, NULL); | ||
570 | 564 | ||
571 | static struct subsys_attribute *efi_subsys_attrs[] = { | 565 | static struct attribute *efi_subsys_attrs[] = { |
572 | &efi_attr_systab, | 566 | &efi_attr_systab.attr, |
573 | NULL, /* maybe more in the future? */ | 567 | NULL, /* maybe more in the future? */ |
574 | }; | 568 | }; |
575 | 569 | ||
570 | static struct attribute_group efi_subsys_attr_group = { | ||
571 | .attrs = efi_subsys_attrs, | ||
572 | }; | ||
573 | |||
574 | |||
576 | static decl_subsys(vars, NULL); | 575 | static decl_subsys(vars, NULL); |
577 | static decl_subsys(efi, NULL); | 576 | static decl_subsys(efi, NULL); |
578 | 577 | ||
@@ -651,9 +650,8 @@ efivars_init(void) | |||
651 | efi_status_t status = EFI_NOT_FOUND; | 650 | efi_status_t status = EFI_NOT_FOUND; |
652 | efi_guid_t vendor_guid; | 651 | efi_guid_t vendor_guid; |
653 | efi_char16_t *variable_name; | 652 | efi_char16_t *variable_name; |
654 | struct subsys_attribute *attr; | ||
655 | unsigned long variable_name_size = 1024; | 653 | unsigned long variable_name_size = 1024; |
656 | int i, error = 0; | 654 | int error = 0; |
657 | 655 | ||
658 | if (!efi_enabled) | 656 | if (!efi_enabled) |
659 | return -ENODEV; | 657 | return -ENODEV; |
@@ -730,12 +728,7 @@ efivars_init(void) | |||
730 | " due to error %d\n", error); | 728 | " due to error %d\n", error); |
731 | 729 | ||
732 | /* Don't forget the systab entry */ | 730 | /* Don't forget the systab entry */ |
733 | 731 | error = sysfs_create_group(&efi_subsys.kobj, &efi_subsys_attr_group); | |
734 | for (i = 0; (attr = efi_subsys_attrs[i]) && !error; i++) { | ||
735 | if (attr->show) | ||
736 | error = subsys_create_file(&efi_subsys, attr); | ||
737 | } | ||
738 | |||
739 | if (error) | 732 | if (error) |
740 | printk(KERN_ERR "efivars: Sysfs attribute export failed with error %d.\n", error); | 733 | printk(KERN_ERR "efivars: Sysfs attribute export failed with error %d.\n", error); |
741 | else | 734 | else |