Commit 08c49dc1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'platform-drivers-x86-v5.6-1' of git://git.infradead.org/linux-platform-drivers-x86

Pull x86 platform driver updates from Andy Shevchenko:

 - Enable thermal policy for ASUS TUF FX705DY/FX505DY

 - Support left round button on ASUS N56VB

 - Support new Mellanox platforms of basic class VMOD0009 and VMOD0010

 - Intel Comet Lake, Tiger Lake and Elkhart Lake support in the PMC
   driver

 - Big clean-up to Intel PMC core, PMC IPC and SCU IPC drivers

 - Touchscreen support for the PiPO W11 tablet

* tag 'platform-drivers-x86-v5.6-1' of git://git.infradead.org/linux-platform-drivers-x86: (64 commits)
  platform/x86: intel_pmc_ipc: Switch to use driver->dev_groups
  platform/x86: intel_pmc_ipc: Propagate error from kstrtoul()
  platform/x86: intel_pmc_ipc: Use octal permissions in sysfs attributes
  platform/x86: intel_pmc_ipc: Get rid of unnecessary includes
  platform/x86: intel_pmc_ipc: Drop ipc_data_readb()
  platform/x86: intel_pmc_ipc: Drop intel_pmc_gcr_read() and intel_pmc_gcr_write()
  platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_raw_cmd() static
  platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_simple_command() static
  platform/x86: intel_pmc_ipc: Make intel_pmc_gcr_update() static
  platform/x86: intel_scu_ipc: Reformat kernel-doc comments of exported functions
  platform/x86: intel_scu_ipc: Drop intel_scu_ipc_raw_command()
  platform/x86: intel_scu_ipc: Drop intel_scu_ipc_io[read|write][8|16]()
  platform/x86: intel_scu_ipc: Drop unused macros
  platform/x86: intel_scu_ipc: Drop unused prototype intel_scu_ipc_fw_update()
  platform/x86: intel_scu_ipc: Sleeping is fine when polling
  platform/x86: intel_scu_ipc: Drop intel_scu_ipc_i2c_cntrl()
  platform/x86: intel_scu_ipc: Remove Lincroft support
  platform/x86: intel_scu_ipc: Add constants for register offsets
  platform/x86: intel_scu_ipc: Fix interrupt support
  platform/x86: intel_scu_ipcutil: Remove default y from Kconfig
  ...
parents 9e1af756 cf85e7c7
Loading
Loading
Loading
Loading
+68 −11
Original line number Diff line number Diff line
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/asic_health

Date:		June 2018
KernelVersion:	4.19
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -19,7 +18,6 @@ Description: These files show with which CPLD versions have been burned
		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/fan_dir

Date:		December 2018
KernelVersion:	5.0
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -30,7 +28,6 @@ Description: This file shows the system fans direction:
		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/cpld3_version

Date:		November 2018
KernelVersion:	5.0
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -40,7 +37,6 @@ Description: These files show with which CPLD versions have been burned
		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/jtag_enable

Date:		November 2018
KernelVersion:	5.0
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -108,7 +104,6 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_comex_pwr_fail
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_from_comex
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_system
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_voltmon_upgrade_fail

Date:		November 2018
KernelVersion:	5.0
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -130,6 +125,12 @@ Description: These files show with which CPLD versions have been burned

		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_comex_thermal
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_comex_wd
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_from_asic
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_reload_bios
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_sff_wd
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_swb_wd
Date:		June 2019
KernelVersion:	5.3
Contact:	Vadim Pasternak <vadimpmellanox.com>
@@ -143,9 +144,65 @@ Description: These files show the system reset cause, as following:

		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_comex_thermal
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_comex_wd
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_from_asic
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_reload_bios
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_sff_wd
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_swb_wd
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/config1
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/config2
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	These files show system static topology identification
		like system's static I2C topology, number and type of FPGA
		devices within the system and so on.

		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_ac_pwr_fail
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_platform
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_soc
What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/reset_sw_pwr_off
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	These files show the system reset causes, as following: reset
		due to AC power failure, reset invoked from software by
		assertion reset signal through CPLD. reset caused by signal
		asserted by SOC through ACPI register, reset invoked from
		software by assertion power off signal through CPLD.

		The files are read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/pcie_asic_reset_dis
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	This file allows to retain ASIC up during PCIe root complex
		reset, when attribute is set 1.

		The file is read/write.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/vpd_wp
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	This file allows to overwrite system VPD hardware wrtie
		protection when attribute is set 1.

		The file is read/write.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/voltreg_update_status
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	This file exposes the configuration update status of burnable
		voltage regulator devices. The status values are as following:
		0 - OK; 1 - CRC failure; 2 = I2C failure; 3 - in progress.

		The file is read only.

What:		/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/ufm_version
Date:		January 2020
KernelVersion:	5.6
Contact:	Vadim Pasternak <vadimpmellanox.com>
Description:	This file exposes the firmware version of burnable voltage
		regulator devices.

		The file is read only.
+10 −0
Original line number Diff line number Diff line
@@ -46,3 +46,13 @@ Description:
			* 0 - normal,
			* 1 - overboost,
			* 2 - silent

What:		/sys/devices/platform/<platform>/throttle_thermal_policy
Date:		Dec 2019
KernelVersion:	5.6
Contact:	"Leonid Maksymchuk" <leonmaxx@gmail.com>
Description:
		Throttle thermal policy mode:
			* 0 - default,
			* 1 - overboost,
			* 2 - silent
+6 −0
Original line number Diff line number Diff line
@@ -8573,6 +8573,12 @@ S: Maintained
F:	arch/x86/include/asm/intel_telemetry.h
F:	drivers/platform/x86/intel_telemetry*
INTEL UNCORE FREQUENCY CONTROL
M:	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
L:	platform-driver-x86@vger.kernel.org
S:	Maintained
F:	drivers/platform/x86/intel-uncore-frequency.c
INTEL VIRTUAL BUTTON DRIVER
M:	AceLan Kao <acelan.kao@canonical.com>
L:	platform-driver-x86@vger.kernel.org
+0 −32
Original line number Diff line number Diff line
@@ -31,30 +31,13 @@

#if IS_ENABLED(CONFIG_INTEL_PMC_IPC)

int intel_pmc_ipc_simple_command(int cmd, int sub);
int intel_pmc_ipc_raw_cmd(u32 cmd, u32 sub, u8 *in, u32 inlen,
		u32 *out, u32 outlen, u32 dptr, u32 sptr);
int intel_pmc_ipc_command(u32 cmd, u32 sub, u8 *in, u32 inlen,
		u32 *out, u32 outlen);
int intel_pmc_s0ix_counter_read(u64 *data);
int intel_pmc_gcr_read(u32 offset, u32 *data);
int intel_pmc_gcr_read64(u32 offset, u64 *data);
int intel_pmc_gcr_write(u32 offset, u32 data);
int intel_pmc_gcr_update(u32 offset, u32 mask, u32 val);

#else

static inline int intel_pmc_ipc_simple_command(int cmd, int sub)
{
	return -EINVAL;
}

static inline int intel_pmc_ipc_raw_cmd(u32 cmd, u32 sub, u8 *in, u32 inlen,
		u32 *out, u32 outlen, u32 dptr, u32 sptr)
{
	return -EINVAL;
}

static inline int intel_pmc_ipc_command(u32 cmd, u32 sub, u8 *in, u32 inlen,
		u32 *out, u32 outlen)
{
@@ -66,26 +49,11 @@ static inline int intel_pmc_s0ix_counter_read(u64 *data)
	return -EINVAL;
}

static inline int intel_pmc_gcr_read(u32 offset, u32 *data)
{
	return -EINVAL;
}

static inline int intel_pmc_gcr_read64(u32 offset, u64 *data)
{
	return -EINVAL;
}

static inline int intel_pmc_gcr_write(u32 offset, u32 data)
{
	return -EINVAL;
}

static inline int intel_pmc_gcr_update(u32 offset, u32 mask, u32 val)
{
	return -EINVAL;
}

#endif /*CONFIG_INTEL_PMC_IPC*/

#endif
+0 −20
Original line number Diff line number Diff line
@@ -22,24 +22,12 @@
/* Read single register */
int intel_scu_ipc_ioread8(u16 addr, u8 *data);

/* Read two sequential registers */
int intel_scu_ipc_ioread16(u16 addr, u16 *data);

/* Read four sequential registers */
int intel_scu_ipc_ioread32(u16 addr, u32 *data);

/* Read a vector */
int intel_scu_ipc_readv(u16 *addr, u8 *data, int len);

/* Write single register */
int intel_scu_ipc_iowrite8(u16 addr, u8 data);

/* Write two sequential registers */
int intel_scu_ipc_iowrite16(u16 addr, u16 data);

/* Write four sequential registers */
int intel_scu_ipc_iowrite32(u16 addr, u32 data);

/* Write a vector */
int intel_scu_ipc_writev(u16 *addr, u8 *data, int len);

@@ -50,14 +38,6 @@ int intel_scu_ipc_update_register(u16 addr, u8 data, u8 mask);
int intel_scu_ipc_simple_command(int cmd, int sub);
int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
			  u32 *out, int outlen);
int intel_scu_ipc_raw_command(int cmd, int sub, u8 *in, int inlen,
			      u32 *out, int outlen, u32 dptr, u32 sptr);

/* I2C control api */
int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data);

/* Update FW version */
int intel_scu_ipc_fw_update(u8 *buffer, u32 length);

extern struct blocking_notifier_head intel_scu_notifier;

Loading