@ -43,64 +43,13 @@ MODULE_ALIAS("wmi:" DELL_LED_BIOS_GUID);
# define CMD_LED_OFF 17
# define CMD_LED_BLINK 18
struct app_wmi_args {
u16 class ;
u16 selector ;
u32 arg1 ;
u32 arg2 ;
u32 arg3 ;
u32 arg4 ;
u32 res1 ;
u32 res2 ;
u32 res3 ;
u32 res4 ;
char dummy [ 92 ] ;
} ;
# define GLOBAL_MIC_MUTE_ENABLE 0x364
# define GLOBAL_MIC_MUTE_DISABLE 0x365
static int dell_wmi_perform_query ( struct app_wmi_args * args )
{
struct app_wmi_args * bios_return ;
union acpi_object * obj ;
struct acpi_buffer input ;
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER , NULL } ;
acpi_status status ;
u32 rc = - EINVAL ;
input . length = 128 ;
input . pointer = args ;
status = wmi_evaluate_method ( DELL_APP_GUID , 0 , 1 , & input , & output ) ;
if ( ! ACPI_SUCCESS ( status ) )
goto err_out0 ;
obj = output . pointer ;
if ( ! obj )
goto err_out0 ;
if ( obj - > type ! = ACPI_TYPE_BUFFER )
goto err_out1 ;
bios_return = ( struct app_wmi_args * ) obj - > buffer . pointer ;
rc = bios_return - > res1 ;
if ( rc )
goto err_out1 ;
memcpy ( args , bios_return , sizeof ( struct app_wmi_args ) ) ;
rc = 0 ;
err_out1 :
kfree ( obj ) ;
err_out0 :
return rc ;
}
static int dell_micmute_led_set ( int state )
{
struct calling_interface_buffer * buffer ;
struct calling_interface_token * token ;
struct app_wmi_args args ;
if ( ! wmi_has_guid ( DELL_APP_GUID ) )
return - ENODEV ;
@ -115,13 +64,11 @@ static int dell_micmute_led_set(int state)
if ( ! token )
return - ENODEV ;
memset ( & args , 0 , sizeof ( struct app_wmi_args ) ) ;
args . class = 1 ;
args . arg1 = token - > location ;
args . arg2 = token - > value ;
dell_wmi_perform_query ( & args ) ;
buffer = dell_smbios_get_buffer ( ) ;
buffer - > input [ 0 ] = token - > location ;
buffer - > input [ 1 ] = token - > value ;
dell_smbios_send_request ( 1 , 0 ) ;
dell_smbios_release_buffer ( ) ;
return state ;
}