1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/kobject.h> 3 #include <boot_param.h> 4 5 static ssize_t boardinfo_show(struct kobject *kobj, 6 struct kobj_attribute *attr, char *buf) 7 { 8 char board_manufacturer[64] = {0}; 9 char *tmp_board_manufacturer = board_manufacturer; 10 char bios_vendor[64] = {0}; 11 char *tmp_bios_vendor = bios_vendor; 12 13 strcpy(board_manufacturer, eboard->name); 14 strcpy(bios_vendor, einter->description); 15 16 return sprintf(buf, 17 "Board Info\n" 18 "Manufacturer\t\t: %s\n" 19 "Board Name\t\t: %s\n" 20 "Family\t\t\t: LOONGSON3\n\n" 21 "BIOS Info\n" 22 "Vendor\t\t\t: %s\n" 23 "Version\t\t\t: %s\n" 24 "ROM Size\t\t: %d KB\n" 25 "Release Date\t\t: %s\n", 26 strsep(&tmp_board_manufacturer, "-"), 27 eboard->name, 28 strsep(&tmp_bios_vendor, "-"), 29 einter->description, 30 einter->size, 31 especial->special_name); 32 } 33 static struct kobj_attribute boardinfo_attr = __ATTR(boardinfo, 0444, 34 boardinfo_show, NULL); 35 36 static int __init boardinfo_init(void) 37 { 38 struct kobject *lefi_kobj; 39 40 lefi_kobj = kobject_create_and_add("lefi", firmware_kobj); 41 if (!lefi_kobj) { 42 pr_err("lefi: Firmware registration failed.\n"); 43 return -ENOMEM; 44 } 45 46 return sysfs_create_file(lefi_kobj, &boardinfo_attr.attr); 47 } 48 late_initcall(boardinfo_init); 49