Merge tag 'platform-drivers-x86-v5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull x86 platform driver updates from Hans de Goede: "Highlights: - AMD-PMC S0ix support fixes and improvements - HP-WMI support for Omen laptops - New nvidia-wmi-ec-backlight driver - New Intel ISH ECLITE driver - WMI core cleanups - Support for various new Melanox platforms - System76 Laptop support improvements - Surface Laptop Studio support and initial Surface Pro 8 support - Various other small fixes and hardware-id additions" * tag 'platform-drivers-x86-v5.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (106 commits) platform/x86: system76_acpi: Fix input device error handling platform/x86: touchscreen_dmi: Add info for the Viglen Connect 10 tablet platform/surface: aggregator_registry: Add initial support for Surface Pro 8 platform/x86: mlx-platform: Add support for new system SGN2410 platform/x86: mlx-platform: Add BIOS attributes for CoffeeLake COMEx based systems platform/x86: mlx-platform: Extend FAN and LED configuration to support new MQM97xx systems platform/x86: asus-wmi: rename platform_profile_* function symbols platform/x86: hp-wmi: rename platform_profile_* function symbols platform/x86: amd-pmc: Drop check for valid alarm time platform/x86: amd-pmc: Downgrade dev_info message to dev_dbg platform/x86: amd-pmc: fix compilation without CONFIG_RTC_SYSTOHC_DEVICE platform/x86: system76_acpi: fix Kconfig dependencies platform/x86: barco-p50-gpio: use KEY_VENDOR for button instead of KEY_RESTART platform/x86: sony-laptop: replace snprintf in show functions with sysfs_emit platform/x86: lg-laptop: replace snprintf in show functions with sysfs_emit docs: ABI: fix documentation warning in sysfs-driver-mlxreg-io platform/x86: wmi: change notification handler type HID: surface-hid: Allow driver matching for target ID 1 devices HID: surface-hid: Use correct event registry for managing HID events platform/surface: aggregator_registry: Add support for Surface Laptop Studio ...
This commit is contained in:
@@ -24,6 +24,64 @@ enum mlxreg_wdt_type {
|
||||
MLX_WDT_TYPE3,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum mlxreg_hotplug_kind - kind of hotplug entry
|
||||
*
|
||||
* @MLXREG_HOTPLUG_DEVICE_NA: do not care;
|
||||
* @MLXREG_HOTPLUG_LC_PRESENT: entry for line card presence in/out events;
|
||||
* @MLXREG_HOTPLUG_LC_VERIFIED: entry for line card verification status events
|
||||
* coming after line card security signature validation;
|
||||
* @MLXREG_HOTPLUG_LC_POWERED: entry for line card power on/off events;
|
||||
* @MLXREG_HOTPLUG_LC_SYNCED: entry for line card synchronization events, coming
|
||||
* after hardware-firmware synchronization handshake;
|
||||
* @MLXREG_HOTPLUG_LC_READY: entry for line card ready events, indicating line card
|
||||
PHYs ready / unready state;
|
||||
* @MLXREG_HOTPLUG_LC_ACTIVE: entry for line card active events, indicating firmware
|
||||
* availability / unavailability for the ports on line card;
|
||||
* @MLXREG_HOTPLUG_LC_THERMAL: entry for line card thermal shutdown events, positive
|
||||
* event indicates that system should power off the line
|
||||
* card for which this event has been received;
|
||||
*/
|
||||
enum mlxreg_hotplug_kind {
|
||||
MLXREG_HOTPLUG_DEVICE_NA = 0,
|
||||
MLXREG_HOTPLUG_LC_PRESENT = 1,
|
||||
MLXREG_HOTPLUG_LC_VERIFIED = 2,
|
||||
MLXREG_HOTPLUG_LC_POWERED = 3,
|
||||
MLXREG_HOTPLUG_LC_SYNCED = 4,
|
||||
MLXREG_HOTPLUG_LC_READY = 5,
|
||||
MLXREG_HOTPLUG_LC_ACTIVE = 6,
|
||||
MLXREG_HOTPLUG_LC_THERMAL = 7,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum mlxreg_hotplug_device_action - hotplug device action required for
|
||||
* driver's connectivity
|
||||
*
|
||||
* @MLXREG_HOTPLUG_DEVICE_DEFAULT_ACTION: probe device for 'on' event, remove
|
||||
* for 'off' event;
|
||||
* @MLXREG_HOTPLUG_DEVICE_PLATFORM_ACTION: probe platform device for 'on'
|
||||
* event, remove for 'off' event;
|
||||
* @MLXREG_HOTPLUG_DEVICE_NO_ACTION: no connectivity action is required;
|
||||
*/
|
||||
enum mlxreg_hotplug_device_action {
|
||||
MLXREG_HOTPLUG_DEVICE_DEFAULT_ACTION = 0,
|
||||
MLXREG_HOTPLUG_DEVICE_PLATFORM_ACTION = 1,
|
||||
MLXREG_HOTPLUG_DEVICE_NO_ACTION = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mlxreg_core_hotplug_notifier - hotplug notifier block:
|
||||
*
|
||||
* @identity: notifier identity name;
|
||||
* @handle: user handle to be passed by user handler function;
|
||||
* @user_handler: user handler function associated with the event;
|
||||
*/
|
||||
struct mlxreg_core_hotplug_notifier {
|
||||
char identity[MLXREG_CORE_LABEL_MAX_SIZE];
|
||||
void *handle;
|
||||
int (*user_handler)(void *handle, enum mlxreg_hotplug_kind kind, u8 action);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mlxreg_hotplug_device - I2C device data:
|
||||
*
|
||||
@@ -31,6 +89,11 @@ enum mlxreg_wdt_type {
|
||||
* @client: I2C device client;
|
||||
* @brdinfo: device board information;
|
||||
* @nr: I2C device adapter number, to which device is to be attached;
|
||||
* @pdev: platform device, if device is instantiated as a platform device;
|
||||
* @action: action to be performed upon event receiving;
|
||||
* @handle: user handle to be passed by user handler function;
|
||||
* @user_handler: user handler function associated with the event;
|
||||
* @notifier: pointer to event notifier block;
|
||||
*
|
||||
* Structure represents I2C hotplug device static data (board topology) and
|
||||
* dynamic data (related kernel objects handles).
|
||||
@@ -40,6 +103,11 @@ struct mlxreg_hotplug_device {
|
||||
struct i2c_client *client;
|
||||
struct i2c_board_info *brdinfo;
|
||||
int nr;
|
||||
struct platform_device *pdev;
|
||||
enum mlxreg_hotplug_device_action action;
|
||||
void *handle;
|
||||
int (*user_handler)(void *handle, enum mlxreg_hotplug_kind kind, u8 action);
|
||||
struct mlxreg_core_hotplug_notifier *notifier;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -51,12 +119,18 @@ struct mlxreg_hotplug_device {
|
||||
* @bit: attribute effective bit;
|
||||
* @capability: attribute capability register;
|
||||
* @reg_prsnt: attribute presence register;
|
||||
* @reg_sync: attribute synch register;
|
||||
* @reg_pwr: attribute power register;
|
||||
* @reg_ena: attribute enable register;
|
||||
* @mode: access mode;
|
||||
* @np - pointer to node platform associated with attribute;
|
||||
* @hpdev - hotplug device data;
|
||||
* @notifier: pointer to event notifier block;
|
||||
* @health_cntr: dynamic device health indication counter;
|
||||
* @attached: true if device has been attached after good health indication;
|
||||
* @regnum: number of registers occupied by multi-register attribute;
|
||||
* @slot: slot number, at which device is located;
|
||||
* @secured: if set indicates that entry access is secured;
|
||||
*/
|
||||
struct mlxreg_core_data {
|
||||
char label[MLXREG_CORE_LABEL_MAX_SIZE];
|
||||
@@ -65,18 +139,25 @@ struct mlxreg_core_data {
|
||||
u32 bit;
|
||||
u32 capability;
|
||||
u32 reg_prsnt;
|
||||
u32 reg_sync;
|
||||
u32 reg_pwr;
|
||||
u32 reg_ena;
|
||||
umode_t mode;
|
||||
struct device_node *np;
|
||||
struct mlxreg_hotplug_device hpdev;
|
||||
struct mlxreg_core_hotplug_notifier *notifier;
|
||||
u32 health_cntr;
|
||||
bool attached;
|
||||
u8 regnum;
|
||||
u8 slot;
|
||||
u8 secured;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mlxreg_core_item - same type components controlled by the driver:
|
||||
*
|
||||
* @data: component data;
|
||||
* @kind: kind of hotplug attribute;
|
||||
* @aggr_mask: group aggregation mask;
|
||||
* @reg: group interrupt status register;
|
||||
* @mask: group interrupt mask;
|
||||
@@ -89,6 +170,7 @@ struct mlxreg_core_data {
|
||||
*/
|
||||
struct mlxreg_core_item {
|
||||
struct mlxreg_core_data *data;
|
||||
enum mlxreg_hotplug_kind kind;
|
||||
u32 aggr_mask;
|
||||
u32 reg;
|
||||
u32 mask;
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Helpers for Intel SoC model detection
|
||||
*
|
||||
* Copyright (c) 2019, Intel Corporation.
|
||||
*/
|
||||
|
||||
#ifndef __PLATFORM_DATA_X86_SOC_H
|
||||
#define __PLATFORM_DATA_X86_SOC_H
|
||||
|
||||
#if IS_ENABLED(CONFIG_X86)
|
||||
|
||||
#include <asm/cpu_device_id.h>
|
||||
#include <asm/intel-family.h>
|
||||
|
||||
#define SOC_INTEL_IS_CPU(soc, type) \
|
||||
static inline bool soc_intel_is_##soc(void) \
|
||||
{ \
|
||||
static const struct x86_cpu_id soc##_cpu_ids[] = { \
|
||||
X86_MATCH_INTEL_FAM6_MODEL(type, NULL), \
|
||||
{} \
|
||||
}; \
|
||||
const struct x86_cpu_id *id; \
|
||||
\
|
||||
id = x86_match_cpu(soc##_cpu_ids); \
|
||||
if (id) \
|
||||
return true; \
|
||||
return false; \
|
||||
}
|
||||
|
||||
SOC_INTEL_IS_CPU(byt, ATOM_SILVERMONT);
|
||||
SOC_INTEL_IS_CPU(cht, ATOM_AIRMONT);
|
||||
SOC_INTEL_IS_CPU(apl, ATOM_GOLDMONT);
|
||||
SOC_INTEL_IS_CPU(glk, ATOM_GOLDMONT_PLUS);
|
||||
SOC_INTEL_IS_CPU(cml, KABYLAKE_L);
|
||||
|
||||
#else /* IS_ENABLED(CONFIG_X86) */
|
||||
|
||||
static inline bool soc_intel_is_byt(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool soc_intel_is_cht(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool soc_intel_is_apl(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool soc_intel_is_glk(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool soc_intel_is_cml(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* IS_ENABLED(CONFIG_X86) */
|
||||
|
||||
#endif /* __PLATFORM_DATA_X86_SOC_H */
|
||||
Reference in New Issue
Block a user