root/drivers/platform/x86/mxm-wmi.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mxm_wmi_call_mxds
  2. mxm_wmi_call_mxmx
  3. mxm_wmi_supported
  4. mxm_wmi_init
  5. mxm_wmi_exit

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * MXM WMI driver
   4  *
   5  * Copyright(C) 2010 Red Hat.
   6  */
   7 #include <linux/kernel.h>
   8 #include <linux/module.h>
   9 #include <linux/init.h>
  10 #include <linux/mxm-wmi.h>
  11 #include <linux/acpi.h>
  12 
  13 MODULE_AUTHOR("Dave Airlie");
  14 MODULE_DESCRIPTION("MXM WMI Driver");
  15 MODULE_LICENSE("GPL");
  16 
  17 #define MXM_WMMX_GUID "F6CB5C3C-9CAE-4EBD-B577-931EA32A2CC0"
  18 
  19 MODULE_ALIAS("wmi:"MXM_WMMX_GUID);
  20 
  21 #define MXM_WMMX_FUNC_MXDS 0x5344584D /* "MXDS" */
  22 #define MXM_WMMX_FUNC_MXMX 0x53445344 /* "MXMX" */
  23 
  24 struct mxds_args {
  25         u32 func;
  26         u32 args;
  27         u32 xarg;
  28 };
  29 
  30 int mxm_wmi_call_mxds(int adapter)
  31 {
  32         struct mxds_args args = {
  33                 .func = MXM_WMMX_FUNC_MXDS,
  34                 .args = 0,
  35                 .xarg = 1,
  36         };
  37         struct acpi_buffer input = { (acpi_size)sizeof(args), &args };
  38         struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
  39         acpi_status status;
  40 
  41         printk("calling mux switch %d\n", adapter);
  42 
  43         status = wmi_evaluate_method(MXM_WMMX_GUID, 0x0, adapter, &input,
  44                                      &output);
  45 
  46         if (ACPI_FAILURE(status))
  47                 return status;
  48 
  49         printk("mux switched %d\n", status);
  50         return 0;
  51                             
  52 }
  53 EXPORT_SYMBOL_GPL(mxm_wmi_call_mxds);
  54 
  55 int mxm_wmi_call_mxmx(int adapter)
  56 {
  57         struct mxds_args args = {
  58                 .func = MXM_WMMX_FUNC_MXMX,
  59                 .args = 0,
  60                 .xarg = 1,
  61         };
  62         struct acpi_buffer input = { (acpi_size)sizeof(args), &args };
  63         struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
  64         acpi_status status;
  65 
  66         printk("calling mux switch %d\n", adapter);
  67 
  68         status = wmi_evaluate_method(MXM_WMMX_GUID, 0x0, adapter, &input,
  69                                      &output);
  70 
  71         if (ACPI_FAILURE(status))
  72                 return status;
  73 
  74         printk("mux mutex set switched %d\n", status);
  75         return 0;
  76                             
  77 }
  78 EXPORT_SYMBOL_GPL(mxm_wmi_call_mxmx);
  79 
  80 bool mxm_wmi_supported(void)
  81 {
  82         bool guid_valid;
  83         guid_valid = wmi_has_guid(MXM_WMMX_GUID);
  84         return guid_valid;
  85 }
  86 EXPORT_SYMBOL_GPL(mxm_wmi_supported);
  87 
  88 static int __init mxm_wmi_init(void)
  89 {
  90         return 0;
  91 }
  92 
  93 static void __exit mxm_wmi_exit(void)
  94 {
  95 }
  96 
  97 module_init(mxm_wmi_init);
  98 module_exit(mxm_wmi_exit);

/* [<][>][^][v][top][bottom][index][help] */