Lines Matching full:setting
41 * Description: Change the BIOS setting to the desired value using the SetBiosSetting
107 * This is particularly useful for simplifying setting passwords.
338 static int tlmi_opcode_setting(char *setting, const char *value) in tlmi_opcode_setting() argument
343 opcode_str = kasprintf(GFP_KERNEL, "%s:%s;", setting, value); in tlmi_opcode_setting()
393 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in is_enabled_show() local
395 return sysfs_emit(buf, "%d\n", setting->pwd_enabled || setting->cert_installed); in is_enabled_show()
404 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in current_password_store() local
409 if (pwdlen && ((pwdlen < setting->minlen) || (pwdlen > setting->maxlen))) in current_password_store()
412 strscpy(setting->password, buf, setting->maxlen); in current_password_store()
413 /* Strip out CR if one is present, setting password won't work if it is present */ in current_password_store()
414 strreplace(setting->password, '\n', '\0'); in current_password_store()
424 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in new_password_store() local
435 /* Strip out CR if one is present, setting password won't work if it is present */ in new_password_store()
445 if (pwdlen && ((pwdlen < setting->minlen) || (pwdlen > setting->maxlen))) { in new_password_store()
455 if (setting == tlmi_priv.pwd_hdd) { in new_password_store()
456 if (setting->level == TLMI_LEVEL_USER) in new_password_store()
457 sprintf(pwd_type, "uhdp%d", setting->index); in new_password_store()
459 sprintf(pwd_type, "mhdp%d", setting->index); in new_password_store()
460 } else if (setting == tlmi_priv.pwd_nvme) { in new_password_store()
461 if (setting->level == TLMI_LEVEL_USER) in new_password_store()
462 sprintf(pwd_type, "udrp%d", setting->index); in new_password_store()
464 sprintf(pwd_type, "adrp%d", setting->index); in new_password_store()
466 sprintf(pwd_type, "%s", setting->pwd_type); in new_password_store()
484 ret = tlmi_opcode_setting("WmiOpcodePasswordCurrent01", setting->password); in new_password_store()
494 setting->pwd_type, setting->password, new_pwd, in new_password_store()
495 encoding_options[setting->encoding], setting->kbdlang); in new_password_store()
514 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in min_password_length_show() local
516 return sysfs_emit(buf, "%d\n", setting->minlen); in min_password_length_show()
524 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in max_password_length_show() local
526 return sysfs_emit(buf, "%d\n", setting->maxlen); in max_password_length_show()
533 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in mechanism_show() local
535 if (setting->cert_installed) in mechanism_show()
544 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in encoding_show() local
546 return sysfs_emit(buf, "%s\n", encoding_options[setting->encoding]); in encoding_show()
553 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in encoding_store() local
561 setting->encoding = i; in encoding_store()
570 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in kbdlang_show() local
572 return sysfs_emit(buf, "%s\n", setting->kbdlang); in kbdlang_show()
579 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in kbdlang_store() local
587 memcpy(setting->kbdlang, buf, length); in kbdlang_store()
588 setting->kbdlang[length] = '\0'; in kbdlang_store()
597 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in role_show() local
599 return sysfs_emit(buf, "%s\n", setting->role); in role_show()
606 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in index_show() local
608 return sysfs_emit(buf, "%d\n", setting->index); in index_show()
615 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in index_store() local
625 setting->index = val; in index_store()
634 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in level_show() local
636 return sysfs_emit(buf, "%s\n", level_options[setting->level]); in level_show()
643 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in level_store() local
651 setting->level = i; in level_store()
657 static char *cert_command(struct tlmi_pwd_setting *setting, const char *arg1, const char *arg2) in cert_command() argument
662 setting == tlmi_priv.pwd_admin ? "SVC" : "SMC", in cert_command()
698 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in certificate_thumbprint_show() local
703 if (!tlmi_priv.certificate_support || !setting->cert_installed) in certificate_thumbprint_show()
710 setting == tlmi_priv.pwd_admin ? "SVC" : "SMC", in certificate_thumbprint_show()
731 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in cert_to_password_store() local
741 if (!setting->cert_installed) in cert_to_password_store()
744 if (!setting->signature || !setting->signature[0]) in cert_to_password_store()
753 auth_str = cert_command(setting, passwd, setting->signature); in cert_to_password_store()
776 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in certificate_store() local
792 if (!setting->signature || !setting->signature[0]) in certificate_store()
796 auth_str = cert_command(setting, in certificate_store()
798 setting->signature); in certificate_store()
813 if (setting->cert_installed) { in certificate_store()
820 signature = setting->signature; in certificate_store()
823 if ((setting == tlmi_priv.pwd_system) && tlmi_priv.pwd_admin->cert_installed) { in certificate_store()
829 signature = setting->signature; in certificate_store()
841 auth_str = cert_command(setting, new_cert, signature); in certificate_store()
845 if ((setting == tlmi_priv.pwd_admin) && in certificate_store()
846 (!setting->pwd_enabled || !setting->password[0])) { in certificate_store()
852 auth_str = cert_command(setting, new_cert, setting->password); in certificate_store()
870 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in signature_store() local
885 kfree(setting->signature); in signature_store()
886 setting->signature = new_signature; in signature_store()
897 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in save_signature_store() local
912 kfree(setting->save_signature); in save_signature_store()
913 setting->save_signature = new_signature; in save_signature_store()
923 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in auth_attr_is_visible() local
927 if ((setting == tlmi_priv.pwd_hdd) || (setting == tlmi_priv.pwd_nvme)) in auth_attr_is_visible()
939 if (setting == tlmi_priv.pwd_admin) in auth_attr_is_visible()
942 (setting == tlmi_priv.pwd_system)) in auth_attr_is_visible()
985 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in display_name_show() local
987 return sysfs_emit(buf, "%s\n", setting->display_name); in display_name_show()
992 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in current_value_show() local
996 ret = tlmi_setting(setting->index, &item, LENOVO_BIOS_SETTING_GUID); in current_value_show()
1016 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in possible_values_show() local
1018 return sysfs_emit(buf, "%s\n", setting->possible_values); in possible_values_show()
1024 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in type_show() local
1026 if (setting->possible_values) { in type_show()
1027 /* Figure out what setting type is as BIOS does not return this */ in type_show()
1028 if (strchr(setting->possible_values, ';')) in type_show()
1039 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in current_value_store() local
1068 set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->display_name, in current_value_store()
1099 set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->display_name, in current_value_store()
1127 set_str = kasprintf(GFP_KERNEL, "%s,%s,%s", setting->display_name, in current_value_store()
1130 set_str = kasprintf(GFP_KERNEL, "%s,%s;", setting->display_name, in current_value_store()
1174 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in attr_is_visible() local
1177 if ((attr == &attr_possible_values.attr) && (!setting->possible_values)) in attr_is_visible()
1198 struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); in tlmi_attr_setting_release() local
1200 kfree(setting->possible_values); in tlmi_attr_setting_release()
1201 kfree(setting); in tlmi_attr_setting_release()
1206 struct tlmi_pwd_setting *setting = to_tlmi_pwd_setting(kobj); in tlmi_pwd_setting_release() local
1208 kfree(setting); in tlmi_pwd_setting_release()
1238 /* Check that setting is valid */ in save_settings_show()
1391 if (tlmi_priv.setting[i]) { in tlmi_release_attr()
1392 sysfs_remove_group(&tlmi_priv.setting[i]->kobj, &tlmi_attr_group); in tlmi_release_attr()
1393 kobject_put(&tlmi_priv.setting[i]->kobj); in tlmi_release_attr()
1463 /* Check if index is a valid setting - skip if it isn't */ in tlmi_sysfs_init()
1464 if (!tlmi_priv.setting[i]) in tlmi_sysfs_init()
1469 tlmi_priv.setting[i]->display_name) < 0) { in tlmi_sysfs_init()
1470 kfree(tlmi_priv.setting[i]->possible_values); in tlmi_sysfs_init()
1471 kfree(tlmi_priv.setting[i]); in tlmi_sysfs_init()
1472 tlmi_priv.setting[i] = NULL; in tlmi_sysfs_init()
1477 tlmi_priv.setting[i]->kobj.kset = tlmi_priv.attribute_kset; in tlmi_sysfs_init()
1478 ret = kobject_add(&tlmi_priv.setting[i]->kobj, NULL, in tlmi_sysfs_init()
1479 "%s", tlmi_priv.setting[i]->display_name); in tlmi_sysfs_init()
1483 ret = sysfs_create_group(&tlmi_priv.setting[i]->kobj, &tlmi_attr_group); in tlmi_sysfs_init()
1622 struct tlmi_attr_setting *setting; in tlmi_analyze() local
1625 tlmi_priv.setting[i] = NULL; in tlmi_analyze()
1642 /* Create a setting entry */ in tlmi_analyze()
1643 setting = kzalloc(sizeof(*setting), GFP_KERNEL); in tlmi_analyze()
1644 if (!setting) { in tlmi_analyze()
1649 setting->index = i; in tlmi_analyze()
1650 strscpy(setting->display_name, item); in tlmi_analyze()
1653 ret = tlmi_get_bios_selections(setting->display_name, in tlmi_analyze()
1654 &setting->possible_values); in tlmi_analyze()
1655 if (ret || !setting->possible_values) in tlmi_analyze()
1657 i, setting->display_name); in tlmi_analyze()
1667 if (!tlmi_setting(setting->index, &optitem, LENOVO_BIOS_SETTING_GUID)) { in tlmi_analyze()
1673 setting->possible_values = in tlmi_analyze()
1684 if (setting->possible_values) in tlmi_analyze()
1685 strreplace(setting->possible_values, ',', ';'); in tlmi_analyze()
1687 kobject_init(&setting->kobj, &tlmi_attr_setting_ktype); in tlmi_analyze()
1688 tlmi_priv.setting[i] = setting; in tlmi_analyze()
1692 /* Create password setting structure */ in tlmi_analyze()
1769 if (tlmi_priv.setting[i]) { in tlmi_analyze()
1770 kfree(tlmi_priv.setting[i]->possible_values); in tlmi_analyze()
1771 kfree(tlmi_priv.setting[i]); in tlmi_analyze()