platform-drivers-x86 for v5.5-2

* Add support of APUv4 and fix an assignment of simswap GPIO.
 * Add Siemens CONNECT X300 to DMI table to avoid stuck during boot.
 * Correct arguments of WMI call on HP Envy x360 15-cp0xxx model.
 * Fix the mlx-bootctl sysfs attributes to be device related.
 
 The following is an automated git shortlog grouped by driver:
 
 hp-wmi:
  -  Make buffer for HPWMI_FEATURE2_QUERY 128 bytes
 
 pcengines-apuv2:
  -  Spelling fixes in the driver
  -  detect apuv4 board
  -  fix simswap GPIO assignment
 
 platform/mellanox:
  -  fix the mlx-bootctl sysfs
 
 pmc_atom:
  -  Add Siemens CONNECT X300 to critclk_systems DMI table
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEqaflIX74DDDzMJJtb7wzTHR8rCgFAl39AhMACgkQb7wzTHR8
 rCht0g/+JMsniYPgTlTAEy3IAxcdY5ym51r+oUeLFnCf2dJlldVl0tdrXOKrdUDg
 0dmXj6HoW12SaPfqXpapV0gAK9UlVQ0kMS9o8UvYvJS1JOIeG2KBY5msOOJgyV8R
 3LnslC5MsLajH2RBtS/aossyMrjgl5N5i7L3Qtrc2MmBwOvLpKWOPgqTNb/90NzU
 EvkaGSmSsjpik9jr+cg1xBN5ExNHI2LZVYpoS60FdcNQ9buTBftDQy/F38rkDW8k
 c4NjpCAflIx16AErV9Uob7Qwb7BQ78e3vQG5kCTUqG+KQs0nTUDP7bFBZGO4FSyb
 0hf2LSlqjnITgCjqfLBCsYbSmxNW4inj3a+LuvvKU1h3w/iNezCHwytIhKdzWCaQ
 2xQSKPb0LUzV4chyyPHqtnGDs+bof2UbfogoGtVKtjGUBMwwbCtufppBhmPhVapD
 al2R+PoEFG5O9xeCqAwheZcOLwP5zm/qQ0F+40UHohTsMwiB27JUTM2spyLunNUC
 N5HWMglcbsb+QWXMNRy50noweET7U5Hdl8cJCoComN6aV8975O/gbWzrB5wmFAR+
 d1/NfYMxl57KniQB6hUlYjeoqm9NdgpXZnJl9D/V4bNwL3zR+CMBQi6/z8dTS0jL
 KTSOQC0c2agjlEEBeTCjJ5cjLAT8dJhmtIjROON25ncQDwFHagU=
 =6D94
 -----END PGP SIGNATURE-----

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

Pull x86 platform driver fixes from Andy Shevchenko:
 "Bucket of fixes for PDx86. Note, that there is no ABI breakage in
  Mellanox driver because it has been introduced in v5.5-rc1, so we can
  change it.

  Summary:

   - Add support of APUv4 and fix an assignment of simswap GPIO

   - Add Siemens CONNECT X300 to DMI table to avoid stuck during boot

   - Correct arguments of WMI call on HP Envy x360 15-cp0xxx model

   - Fix the mlx-bootctl sysfs attributes to be device related"

* tag 'platform-drivers-x86-v5.5-2' of git://git.infradead.org/linux-platform-drivers-x86:
  platform/x86: pcengines-apuv2: Spelling fixes in the driver
  platform/x86: pcengines-apuv2: detect apuv4 board
  platform/x86: pcengines-apuv2: fix simswap GPIO assignment
  platform/x86: pmc_atom: Add Siemens CONNECT X300 to critclk_systems DMI table
  platform/x86: hp-wmi: Make buffer for HPWMI_FEATURE2_QUERY 128 bytes
  platform/mellanox: fix the mlx-bootctl sysfs
This commit is contained in:
Linus Torvalds 2019-12-20 10:38:21 -08:00
commit fce34dec76
5 changed files with 60 additions and 25 deletions

View File

@ -1,4 +1,4 @@
What: /sys/bus/platform/devices/MLNXBF04:00/driver/lifecycle_state What: /sys/bus/platform/devices/MLNXBF04:00/lifecycle_state
Date: Oct 2019 Date: Oct 2019
KernelVersion: 5.5 KernelVersion: 5.5
Contact: "Liming Sun <lsun@mellanox.com>" Contact: "Liming Sun <lsun@mellanox.com>"
@ -10,7 +10,7 @@ Description:
GA Non-Secured - Non-Secure chip and not able to change state GA Non-Secured - Non-Secure chip and not able to change state
RMA - Return Merchandise Authorization RMA - Return Merchandise Authorization
What: /sys/bus/platform/devices/MLNXBF04:00/driver/post_reset_wdog What: /sys/bus/platform/devices/MLNXBF04:00/post_reset_wdog
Date: Oct 2019 Date: Oct 2019
KernelVersion: 5.5 KernelVersion: 5.5
Contact: "Liming Sun <lsun@mellanox.com>" Contact: "Liming Sun <lsun@mellanox.com>"
@ -19,7 +19,7 @@ Description:
to reboot the chip and recover it to the old state if the new to reboot the chip and recover it to the old state if the new
boot partition fails. boot partition fails.
What: /sys/bus/platform/devices/MLNXBF04:00/driver/reset_action What: /sys/bus/platform/devices/MLNXBF04:00/reset_action
Date: Oct 2019 Date: Oct 2019
KernelVersion: 5.5 KernelVersion: 5.5
Contact: "Liming Sun <lsun@mellanox.com>" Contact: "Liming Sun <lsun@mellanox.com>"
@ -30,7 +30,7 @@ Description:
emmc - boot from the onchip eMMC emmc - boot from the onchip eMMC
emmc_legacy - boot from the onchip eMMC in legacy (slow) mode emmc_legacy - boot from the onchip eMMC in legacy (slow) mode
What: /sys/bus/platform/devices/MLNXBF04:00/driver/second_reset_action What: /sys/bus/platform/devices/MLNXBF04:00/second_reset_action
Date: Oct 2019 Date: Oct 2019
KernelVersion: 5.5 KernelVersion: 5.5
Contact: "Liming Sun <lsun@mellanox.com>" Contact: "Liming Sun <lsun@mellanox.com>"
@ -44,7 +44,7 @@ Description:
swap_emmc - swap the primary / secondary boot partition swap_emmc - swap the primary / secondary boot partition
none - cancel the action none - cancel the action
What: /sys/bus/platform/devices/MLNXBF04:00/driver/secure_boot_fuse_state What: /sys/bus/platform/devices/MLNXBF04:00/secure_boot_fuse_state
Date: Oct 2019 Date: Oct 2019
KernelVersion: 5.5 KernelVersion: 5.5
Contact: "Liming Sun <lsun@mellanox.com>" Contact: "Liming Sun <lsun@mellanox.com>"

View File

@ -309,7 +309,7 @@ static struct platform_driver mlxbf_bootctl_driver = {
.probe = mlxbf_bootctl_probe, .probe = mlxbf_bootctl_probe,
.driver = { .driver = {
.name = "mlxbf-bootctl", .name = "mlxbf-bootctl",
.groups = mlxbf_bootctl_groups, .dev_groups = mlxbf_bootctl_groups,
.acpi_match_table = mlxbf_bootctl_acpi_ids, .acpi_match_table = mlxbf_bootctl_acpi_ids,
} }
}; };

View File

@ -300,7 +300,7 @@ static int __init hp_wmi_bios_2008_later(void)
static int __init hp_wmi_bios_2009_later(void) static int __init hp_wmi_bios_2009_later(void)
{ {
int state = 0; u8 state[128];
int ret = hp_wmi_perform_query(HPWMI_FEATURE2_QUERY, HPWMI_READ, &state, int ret = hp_wmi_perform_query(HPWMI_FEATURE2_QUERY, HPWMI_READ, &state,
sizeof(state), sizeof(state)); sizeof(state), sizeof(state));
if (!ret) if (!ret)

View File

@ -2,7 +2,7 @@
/* /*
* PC-Engines APUv2/APUv3 board platform driver * PC-Engines APUv2/APUv3 board platform driver
* for gpio buttons and LEDs * for GPIO buttons and LEDs
* *
* Copyright (C) 2018 metux IT consult * Copyright (C) 2018 metux IT consult
* Author: Enrico Weigelt <info@metux.net> * Author: Enrico Weigelt <info@metux.net>
@ -23,10 +23,10 @@
/* /*
* NOTE: this driver only supports APUv2/3 - not APUv1, as this one * NOTE: this driver only supports APUv2/3 - not APUv1, as this one
* has completely different register layouts * has completely different register layouts.
*/ */
/* register mappings */ /* Register mappings */
#define APU2_GPIO_REG_LED1 AMD_FCH_GPIO_REG_GPIO57 #define APU2_GPIO_REG_LED1 AMD_FCH_GPIO_REG_GPIO57
#define APU2_GPIO_REG_LED2 AMD_FCH_GPIO_REG_GPIO58 #define APU2_GPIO_REG_LED2 AMD_FCH_GPIO_REG_GPIO58
#define APU2_GPIO_REG_LED3 AMD_FCH_GPIO_REG_GPIO59_DEVSLP1 #define APU2_GPIO_REG_LED3 AMD_FCH_GPIO_REG_GPIO59_DEVSLP1
@ -35,7 +35,7 @@
#define APU2_GPIO_REG_MPCIE2 AMD_FCH_GPIO_REG_GPIO59_DEVSLP0 #define APU2_GPIO_REG_MPCIE2 AMD_FCH_GPIO_REG_GPIO59_DEVSLP0
#define APU2_GPIO_REG_MPCIE3 AMD_FCH_GPIO_REG_GPIO51 #define APU2_GPIO_REG_MPCIE3 AMD_FCH_GPIO_REG_GPIO51
/* order in which the gpio lines are defined in the register list */ /* Order in which the GPIO lines are defined in the register list */
#define APU2_GPIO_LINE_LED1 0 #define APU2_GPIO_LINE_LED1 0
#define APU2_GPIO_LINE_LED2 1 #define APU2_GPIO_LINE_LED2 1
#define APU2_GPIO_LINE_LED3 2 #define APU2_GPIO_LINE_LED3 2
@ -44,7 +44,7 @@
#define APU2_GPIO_LINE_MPCIE2 5 #define APU2_GPIO_LINE_MPCIE2 5
#define APU2_GPIO_LINE_MPCIE3 6 #define APU2_GPIO_LINE_MPCIE3 6
/* gpio device */ /* GPIO device */
static int apu2_gpio_regs[] = { static int apu2_gpio_regs[] = {
[APU2_GPIO_LINE_LED1] = APU2_GPIO_REG_LED1, [APU2_GPIO_LINE_LED1] = APU2_GPIO_REG_LED1,
@ -72,7 +72,7 @@ static const struct amd_fch_gpio_pdata board_apu2 = {
.gpio_names = apu2_gpio_names, .gpio_names = apu2_gpio_names,
}; };
/* gpio leds device */ /* GPIO LEDs device */
static const struct gpio_led apu2_leds[] = { static const struct gpio_led apu2_leds[] = {
{ .name = "apu:green:1" }, { .name = "apu:green:1" },
@ -95,12 +95,12 @@ static struct gpiod_lookup_table gpios_led_table = {
NULL, 1, GPIO_ACTIVE_LOW), NULL, 1, GPIO_ACTIVE_LOW),
GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_LED3, GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_LED3,
NULL, 2, GPIO_ACTIVE_LOW), NULL, 2, GPIO_ACTIVE_LOW),
GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_REG_SIMSWAP, GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_SIMSWAP,
NULL, 3, GPIO_ACTIVE_LOW), NULL, 3, GPIO_ACTIVE_LOW),
} }
}; };
/* gpio keyboard device */ /* GPIO keyboard device */
static struct gpio_keys_button apu2_keys_buttons[] = { static struct gpio_keys_button apu2_keys_buttons[] = {
{ {
@ -129,12 +129,12 @@ static struct gpiod_lookup_table gpios_key_table = {
} }
}; };
/* board setup */ /* Board setup */
/* note: matching works on string prefix, so "apu2" must come before "apu" */ /* Note: matching works on string prefix, so "apu2" must come before "apu" */
static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = { static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
/* APU2 w/ legacy bios < 4.0.8 */ /* APU2 w/ legacy BIOS < 4.0.8 */
{ {
.ident = "apu2", .ident = "apu2",
.matches = { .matches = {
@ -143,7 +143,7 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
}, },
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU2 w/ legacy bios >= 4.0.8 */ /* APU2 w/ legacy BIOS >= 4.0.8 */
{ {
.ident = "apu2", .ident = "apu2",
.matches = { .matches = {
@ -152,7 +152,7 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
}, },
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU2 w/ maainline bios */ /* APU2 w/ mainline BIOS */
{ {
.ident = "apu2", .ident = "apu2",
.matches = { .matches = {
@ -162,7 +162,7 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU3 w/ legacy bios < 4.0.8 */ /* APU3 w/ legacy BIOS < 4.0.8 */
{ {
.ident = "apu3", .ident = "apu3",
.matches = { .matches = {
@ -171,7 +171,7 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
}, },
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU3 w/ legacy bios >= 4.0.8 */ /* APU3 w/ legacy BIOS >= 4.0.8 */
{ {
.ident = "apu3", .ident = "apu3",
.matches = { .matches = {
@ -180,7 +180,7 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
}, },
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU3 w/ mainline bios */ /* APU3 w/ mainline BIOS */
{ {
.ident = "apu3", .ident = "apu3",
.matches = { .matches = {
@ -189,6 +189,33 @@ static const struct dmi_system_id apu_gpio_dmi_table[] __initconst = {
}, },
.driver_data = (void *)&board_apu2, .driver_data = (void *)&board_apu2,
}, },
/* APU4 w/ legacy BIOS < 4.0.8 */
{
.ident = "apu4",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
DMI_MATCH(DMI_BOARD_NAME, "APU4")
},
.driver_data = (void *)&board_apu2,
},
/* APU4 w/ legacy BIOS >= 4.0.8 */
{
.ident = "apu4",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
DMI_MATCH(DMI_BOARD_NAME, "apu4")
},
.driver_data = (void *)&board_apu2,
},
/* APU4 w/ mainline BIOS */
{
.ident = "apu4",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "PC Engines"),
DMI_MATCH(DMI_BOARD_NAME, "PC Engines apu4")
},
.driver_data = (void *)&board_apu2,
},
{} {}
}; };
@ -223,7 +250,7 @@ static int __init apu_board_init(void)
id = dmi_first_match(apu_gpio_dmi_table); id = dmi_first_match(apu_gpio_dmi_table);
if (!id) { if (!id) {
pr_err("failed to detect apu board via dmi\n"); pr_err("failed to detect APU board via DMI\n");
return -ENODEV; return -ENODEV;
} }
@ -262,7 +289,7 @@ module_init(apu_board_init);
module_exit(apu_board_exit); module_exit(apu_board_exit);
MODULE_AUTHOR("Enrico Weigelt, metux IT consult <info@metux.net>"); MODULE_AUTHOR("Enrico Weigelt, metux IT consult <info@metux.net>");
MODULE_DESCRIPTION("PC Engines APUv2/APUv3 board GPIO/LED/keys driver"); MODULE_DESCRIPTION("PC Engines APUv2/APUv3 board GPIO/LEDs/keys driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE(dmi, apu_gpio_dmi_table); MODULE_DEVICE_TABLE(dmi, apu_gpio_dmi_table);
MODULE_ALIAS("platform:pcengines-apuv2"); MODULE_ALIAS("platform:pcengines-apuv2");

View File

@ -429,6 +429,14 @@ static const struct dmi_system_id critclk_systems[] = {
DMI_MATCH(DMI_PRODUCT_VERSION, "6AV7882-0"), DMI_MATCH(DMI_PRODUCT_VERSION, "6AV7882-0"),
}, },
}, },
{
.ident = "CONNECT X300",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SIEMENS AG"),
DMI_MATCH(DMI_PRODUCT_VERSION, "A5E45074588"),
},
},
{ /*sentinel*/ } { /*sentinel*/ }
}; };