Commit fce34dec authored by Linus Torvalds's avatar Linus Torvalds

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
parents d2944d53 02abbda1
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: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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>"
......
...@@ -309,7 +309,7 @@ static struct platform_driver mlxbf_bootctl_driver = { ...@@ -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,
} }
}; };
......
...@@ -300,7 +300,7 @@ static int __init hp_wmi_bios_2008_later(void) ...@@ -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)
......
...@@ -2,7 +2,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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 = { ...@@ -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) ...@@ -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); ...@@ -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");
......
...@@ -429,6 +429,14 @@ static const struct dmi_system_id critclk_systems[] = { ...@@ -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*/ }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment