Merge tag 'platform-drivers-x86-v5.1-1' of git://git.infradead.org/linux-platform...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 20:16:37 +0000 (13:16 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 10 Mar 2019 20:16:37 +0000 (13:16 -0700)
Pull x86 platform driver updates from Darren Hart:

 - use MODULE_DEVICE_TABLE across several wmi drivers, keeping
   wmi_device_id and MODULE_ALIAS() declarations in sync

 - add several Ideapad models to the no_hw_rfkill list

 - add support for new Mellanox platforms, including new fan and LED
   functionality

 - address Dell keyboard backlight change event and power button release
   issues

 - update dell_rbu to use appropriate memory allocation mechanisms

 - several small fixes and Ice Lake support for intel_pmc_core

 - fix a suspend regression for Cherry Trail based devices in
   intel_int0002_vgpio

 - a few other routine fixes

* tag 'platform-drivers-x86-v5.1-1' of git://git.infradead.org/linux-platform-drivers-x86: (50 commits)
  MAINTAINERS: Include mlxreg.h in Mellanox Platform Driver files
  platform/x86: ideapad-laptop: Add S130-14IGM to no_hw_rfkill list
  platform/x86: mlx-platform: Fix access mode for fan_dir attribute
  platform/x86: mlx-platform: Add UID LED for the next generation systems
  platform/x86: mlx-platform: Add extra CPLD for next generation systems
  platform/x86: wmi-bmof: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: intel-wmi-thunderbolt: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: huawei-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: dell-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: dell-wmi-descriptor: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: dell-smbios-wmi: use MODULE_DEVICE_TABLE() instead of MODULE_ALIAS()
  platform/x86: wmi: add WMI support to MODULE_DEVICE_TABLE()
  platform/x86: wmi: move struct wmi_device_id to mod_devicetable.h
  modpost: file2alias: define size of alias
  platform/x86: touchscreen_dmi: Add info for the CHUWI Hi10 Air tablet
  platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list
  platform/x86: ideapad-laptop: Add Yoga C930 to no_hw_rfkill_list
  platform/x86: intel_pmc_core: Quirk to ignore XTAL shutdown
  platform/x86: intel_pmc_core: Add Package cstates residency info
  platform/x86: intel_pmc_core: Add ICL platform support
  ...

1  2 
MAINTAINERS
include/linux/mod_devicetable.h
scripts/mod/devicetable-offsets.c
scripts/mod/file2alias.c

diff --cc MAINTAINERS
Simple merge
index 14eaeeb46f416f4ee3aa56deefe47f58d8fab37e,e44b90fa0aef67a8357b2cc79f36b1d108ec3d6e..448621c32e4d3f9d32cd08e87e3274a64daf09e5
@@@ -779,13 -779,16 +779,25 @@@ struct typec_device_id 
        kernel_ulong_t driver_data;
  };
  
 +/**
 + * struct tee_client_device_id - tee based device identifier
 + * @uuid: For TEE based client devices we use the device uuid as
 + *        the identifier.
 + */
 +struct tee_client_device_id {
 +      uuid_t uuid;
 +};
 +
+ /* WMI */
+ #define WMI_MODULE_PREFIX     "wmi:"
+ /**
+  * struct wmi_device_id - WMI device identifier
+  * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba
+  */
+ struct wmi_device_id {
+       const char guid_string[UUID_STRING_LEN+1];
+ };
  #endif /* LINUX_MOD_DEVICETABLE_H */
index 160718383a71615ece3f71a31c033a0b9b2c6ccb,99276a422e7709c9a2455fd6bd9da5a4602ff515..054405b90ba42e61b5b5106be2d27133ca97ce30
@@@ -225,8 -225,8 +225,11 @@@ int main(void
        DEVID_FIELD(typec_device_id, svid);
        DEVID_FIELD(typec_device_id, mode);
  
 +      DEVID(tee_client_device_id);
 +      DEVID_FIELD(tee_client_device_id, uuid);
 +
+       DEVID(wmi_device_id);
+       DEVID_FIELD(wmi_device_id, guid_string);
        return 0;
  }
index d0e41723627f96cd79ff2975b1cd1b7aba4e4f3c,6dedc31a492583ea2c2671bb7c5ed3622be2c200..e17a29ae2e97adfbf4dcd576452ca807427c37a7
@@@ -37,9 -37,7 +37,10 @@@ typedef unsigned char        __u8
  typedef struct {
        __u8 b[16];
  } uuid_le;
 +typedef struct {
 +      __u8 b[16];
 +} uuid_t;
+ #define       UUID_STRING_LEN         36
  
  /* Big exception to the "don't include kernel headers into userspace, which
   * even potentially has different endianness and word sizes, since
@@@ -1290,21 -1291,27 +1294,42 @@@ static int do_typec_entry(const char *f
        return 1;
  }
  
 +/* Looks like: tee:uuid */
 +static int do_tee_entry(const char *filename, void *symval, char *alias)
 +{
 +      DEF_FIELD(symval, tee_client_device_id, uuid);
 +
 +      sprintf(alias, "tee:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 +              uuid.b[0], uuid.b[1], uuid.b[2], uuid.b[3], uuid.b[4],
 +              uuid.b[5], uuid.b[6], uuid.b[7], uuid.b[8], uuid.b[9],
 +              uuid.b[10], uuid.b[11], uuid.b[12], uuid.b[13], uuid.b[14],
 +              uuid.b[15]);
 +
 +      add_wildcard(alias);
 +      return 1;
 +}
 +
+ /* Looks like: wmi:guid */
+ static int do_wmi_entry(const char *filename, void *symval, char *alias)
+ {
+       int len;
+       DEF_FIELD_ADDR(symval, wmi_device_id, guid_string);
+       if (strlen(*guid_string) != UUID_STRING_LEN) {
+               warn("Invalid WMI device id 'wmi:%s' in '%s'\n",
+                               *guid_string, filename);
+               return 0;
+       }
+       len = snprintf(alias, ALIAS_SIZE, WMI_MODULE_PREFIX "%s", *guid_string);
+       if (len < 0 || len >= ALIAS_SIZE) {
+               warn("Could not generate all MODULE_ALIAS's in '%s'\n",
+                               filename);
+               return 0;
+       }
+       return 1;
+ }
  /* Does namelen bytes of name exactly match the symbol? */
  static bool sym_is(const char *name, unsigned namelen, const char *symbol)
  {
@@@ -1375,7 -1382,7 +1400,8 @@@ static const struct devtable devtable[
        {"fslmc", SIZE_fsl_mc_device_id, do_fsl_mc_entry},
        {"tbsvc", SIZE_tb_service_id, do_tbsvc_entry},
        {"typec", SIZE_typec_device_id, do_typec_entry},
 +      {"tee", SIZE_tee_client_device_id, do_tee_entry},
+       {"wmi", SIZE_wmi_device_id, do_wmi_entry},
  };
  
  /* Create MODULE_ALIAS() statements.