platform/x86: dell-smbios: Introduce dispatcher for SMM calls
This splits up the dell-smbios driver into two drivers: * dell-smbios * dell-smbios-smm dell-smbios can operate with multiple different dispatcher drivers to perform SMBIOS operations. Also modify the interface that dell-laptop and dell-wmi use align to this model more closely. Rather than a single global buffer being allocated for all drivers, each driver will allocate and be responsible for it's own buffer. The pointer will be passed to the calling function and each dispatcher driver will then internally copy it to the proper location to perform it's call. Add defines for calls used by these methods in the dell-smbios.h header for tracking purposes. Signed-off-by: Mario Limonciello <mario.limonciello@dell.com> Reviewed-by: Edward O'Callaghan <quasisec@google.com> Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
This commit is contained in:

committed by
Darren Hart (VMware)

父節點
33b9ca1e53
當前提交
549b4930f0
@@ -638,13 +638,16 @@ static int dell_wmi_events_set_enabled(bool enable)
|
||||
struct calling_interface_buffer *buffer;
|
||||
int ret;
|
||||
|
||||
buffer = dell_smbios_get_buffer();
|
||||
buffer = kzalloc(sizeof(struct calling_interface_buffer), GFP_KERNEL);
|
||||
buffer->cmd_class = CLASS_INFO;
|
||||
buffer->cmd_select = SELECT_APP_REGISTRATION;
|
||||
buffer->input[0] = 0x10000;
|
||||
buffer->input[1] = 0x51534554;
|
||||
buffer->input[3] = enable;
|
||||
dell_smbios_send_request(17, 3);
|
||||
ret = buffer->output[0];
|
||||
dell_smbios_release_buffer();
|
||||
ret = dell_smbios_call(buffer);
|
||||
if (ret == 0)
|
||||
ret = buffer->output[0];
|
||||
kfree(buffer);
|
||||
|
||||
return dell_smbios_error(ret);
|
||||
}
|
||||
|
Reference in New Issue
Block a user