diff options
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/hp_accel.c | 6 | ||||
-rw-r--r-- | drivers/platform/x86/intel-hid.c | 2 | ||||
-rw-r--r-- | drivers/platform/x86/intel_pmc_ipc.c | 48 | ||||
-rw-r--r-- | drivers/platform/x86/intel_punit_ipc.c | 48 | ||||
-rw-r--r-- | drivers/platform/x86/intel_telemetry_pltdrv.c | 2 | ||||
-rw-r--r-- | drivers/platform/x86/thinkpad_acpi.c | 4 | ||||
-rw-r--r-- | drivers/platform/x86/toshiba_acpi.c | 2 |
7 files changed, 66 insertions, 46 deletions
diff --git a/drivers/platform/x86/hp_accel.c b/drivers/platform/x86/hp_accel.c index 10ce6cba4455..09356684c32f 100644 --- a/drivers/platform/x86/hp_accel.c +++ b/drivers/platform/x86/hp_accel.c | |||
@@ -127,8 +127,10 @@ static int lis3lv02d_acpi_read(struct lis3lv02d *lis3, int reg, u8 *ret) | |||
127 | arg0.integer.value = reg; | 127 | arg0.integer.value = reg; |
128 | 128 | ||
129 | status = acpi_evaluate_integer(dev->handle, "ALRD", &args, &lret); | 129 | status = acpi_evaluate_integer(dev->handle, "ALRD", &args, &lret); |
130 | if (ACPI_FAILURE(status)) | ||
131 | return -EINVAL; | ||
130 | *ret = lret; | 132 | *ret = lret; |
131 | return (status != AE_OK) ? -EINVAL : 0; | 133 | return 0; |
132 | } | 134 | } |
133 | 135 | ||
134 | /** | 136 | /** |
@@ -173,6 +175,7 @@ static int lis3lv02d_dmi_matched(const struct dmi_system_id *dmi) | |||
173 | DEFINE_CONV(normal, 1, 2, 3); | 175 | DEFINE_CONV(normal, 1, 2, 3); |
174 | DEFINE_CONV(y_inverted, 1, -2, 3); | 176 | DEFINE_CONV(y_inverted, 1, -2, 3); |
175 | DEFINE_CONV(x_inverted, -1, 2, 3); | 177 | DEFINE_CONV(x_inverted, -1, 2, 3); |
178 | DEFINE_CONV(x_inverted_usd, -1, 2, -3); | ||
176 | DEFINE_CONV(z_inverted, 1, 2, -3); | 179 | DEFINE_CONV(z_inverted, 1, 2, -3); |
177 | DEFINE_CONV(xy_swap, 2, 1, 3); | 180 | DEFINE_CONV(xy_swap, 2, 1, 3); |
178 | DEFINE_CONV(xy_rotated_left, -2, 1, 3); | 181 | DEFINE_CONV(xy_rotated_left, -2, 1, 3); |
@@ -236,6 +239,7 @@ static const struct dmi_system_id lis3lv02d_dmi_ids[] = { | |||
236 | AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted), | 239 | AXIS_DMI_MATCH("HP8710", "HP Compaq 8710", y_inverted), |
237 | AXIS_DMI_MATCH("HDX18", "HP HDX 18", x_inverted), | 240 | AXIS_DMI_MATCH("HDX18", "HP HDX 18", x_inverted), |
238 | AXIS_DMI_MATCH("HPB432x", "HP ProBook 432", xy_rotated_left), | 241 | AXIS_DMI_MATCH("HPB432x", "HP ProBook 432", xy_rotated_left), |
242 | AXIS_DMI_MATCH("HPB440G3", "HP ProBook 440 G3", x_inverted_usd), | ||
239 | AXIS_DMI_MATCH("HPB442x", "HP ProBook 442", xy_rotated_left), | 243 | AXIS_DMI_MATCH("HPB442x", "HP ProBook 442", xy_rotated_left), |
240 | AXIS_DMI_MATCH("HPB452x", "HP ProBook 452", y_inverted), | 244 | AXIS_DMI_MATCH("HPB452x", "HP ProBook 452", y_inverted), |
241 | AXIS_DMI_MATCH("HPB522x", "HP ProBook 522", xy_swap), | 245 | AXIS_DMI_MATCH("HPB522x", "HP ProBook 522", xy_swap), |
diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c index f93abc8c1424..a818db6aa08f 100644 --- a/drivers/platform/x86/intel-hid.c +++ b/drivers/platform/x86/intel-hid.c | |||
@@ -91,6 +91,8 @@ static int intel_hid_pl_resume_handler(struct device *device) | |||
91 | } | 91 | } |
92 | 92 | ||
93 | static const struct dev_pm_ops intel_hid_pl_pm_ops = { | 93 | static const struct dev_pm_ops intel_hid_pl_pm_ops = { |
94 | .freeze = intel_hid_pl_suspend_handler, | ||
95 | .restore = intel_hid_pl_resume_handler, | ||
94 | .suspend = intel_hid_pl_suspend_handler, | 96 | .suspend = intel_hid_pl_suspend_handler, |
95 | .resume = intel_hid_pl_resume_handler, | 97 | .resume = intel_hid_pl_resume_handler, |
96 | }; | 98 | }; |
diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c index 3fb1d85c70a8..6f497e80c9df 100644 --- a/drivers/platform/x86/intel_pmc_ipc.c +++ b/drivers/platform/x86/intel_pmc_ipc.c | |||
@@ -687,8 +687,8 @@ static int ipc_plat_get_res(struct platform_device *pdev) | |||
687 | ipcdev.acpi_io_size = size; | 687 | ipcdev.acpi_io_size = size; |
688 | dev_info(&pdev->dev, "io res: %pR\n", res); | 688 | dev_info(&pdev->dev, "io res: %pR\n", res); |
689 | 689 | ||
690 | /* This is index 0 to cover BIOS data register */ | ||
691 | punit_res = punit_res_array; | 690 | punit_res = punit_res_array; |
691 | /* This is index 0 to cover BIOS data register */ | ||
692 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 692 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
693 | PLAT_RESOURCE_BIOS_DATA_INDEX); | 693 | PLAT_RESOURCE_BIOS_DATA_INDEX); |
694 | if (!res) { | 694 | if (!res) { |
@@ -698,55 +698,51 @@ static int ipc_plat_get_res(struct platform_device *pdev) | |||
698 | *punit_res = *res; | 698 | *punit_res = *res; |
699 | dev_info(&pdev->dev, "punit BIOS data res: %pR\n", res); | 699 | dev_info(&pdev->dev, "punit BIOS data res: %pR\n", res); |
700 | 700 | ||
701 | /* This is index 1 to cover BIOS interface register */ | ||
701 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 702 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
702 | PLAT_RESOURCE_BIOS_IFACE_INDEX); | 703 | PLAT_RESOURCE_BIOS_IFACE_INDEX); |
703 | if (!res) { | 704 | if (!res) { |
704 | dev_err(&pdev->dev, "Failed to get res of punit BIOS iface\n"); | 705 | dev_err(&pdev->dev, "Failed to get res of punit BIOS iface\n"); |
705 | return -ENXIO; | 706 | return -ENXIO; |
706 | } | 707 | } |
707 | /* This is index 1 to cover BIOS interface register */ | ||
708 | *++punit_res = *res; | 708 | *++punit_res = *res; |
709 | dev_info(&pdev->dev, "punit BIOS interface res: %pR\n", res); | 709 | dev_info(&pdev->dev, "punit BIOS interface res: %pR\n", res); |
710 | 710 | ||
711 | /* This is index 2 to cover ISP data register, optional */ | ||
711 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 712 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
712 | PLAT_RESOURCE_ISP_DATA_INDEX); | 713 | PLAT_RESOURCE_ISP_DATA_INDEX); |
713 | if (!res) { | 714 | ++punit_res; |
714 | dev_err(&pdev->dev, "Failed to get res of punit ISP data\n"); | 715 | if (res) { |
715 | return -ENXIO; | 716 | *punit_res = *res; |
717 | dev_info(&pdev->dev, "punit ISP data res: %pR\n", res); | ||
716 | } | 718 | } |
717 | /* This is index 2 to cover ISP data register */ | ||
718 | *++punit_res = *res; | ||
719 | dev_info(&pdev->dev, "punit ISP data res: %pR\n", res); | ||
720 | 719 | ||
720 | /* This is index 3 to cover ISP interface register, optional */ | ||
721 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 721 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
722 | PLAT_RESOURCE_ISP_IFACE_INDEX); | 722 | PLAT_RESOURCE_ISP_IFACE_INDEX); |
723 | if (!res) { | 723 | ++punit_res; |
724 | dev_err(&pdev->dev, "Failed to get res of punit ISP iface\n"); | 724 | if (res) { |
725 | return -ENXIO; | 725 | *punit_res = *res; |
726 | dev_info(&pdev->dev, "punit ISP interface res: %pR\n", res); | ||
726 | } | 727 | } |
727 | /* This is index 3 to cover ISP interface register */ | ||
728 | *++punit_res = *res; | ||
729 | dev_info(&pdev->dev, "punit ISP interface res: %pR\n", res); | ||
730 | 728 | ||
729 | /* This is index 4 to cover GTD data register, optional */ | ||
731 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 730 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
732 | PLAT_RESOURCE_GTD_DATA_INDEX); | 731 | PLAT_RESOURCE_GTD_DATA_INDEX); |
733 | if (!res) { | 732 | ++punit_res; |
734 | dev_err(&pdev->dev, "Failed to get res of punit GTD data\n"); | 733 | if (res) { |
735 | return -ENXIO; | 734 | *punit_res = *res; |
735 | dev_info(&pdev->dev, "punit GTD data res: %pR\n", res); | ||
736 | } | 736 | } |
737 | /* This is index 4 to cover GTD data register */ | ||
738 | *++punit_res = *res; | ||
739 | dev_info(&pdev->dev, "punit GTD data res: %pR\n", res); | ||
740 | 737 | ||
738 | /* This is index 5 to cover GTD interface register, optional */ | ||
741 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 739 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
742 | PLAT_RESOURCE_GTD_IFACE_INDEX); | 740 | PLAT_RESOURCE_GTD_IFACE_INDEX); |
743 | if (!res) { | 741 | ++punit_res; |
744 | dev_err(&pdev->dev, "Failed to get res of punit GTD iface\n"); | 742 | if (res) { |
745 | return -ENXIO; | 743 | *punit_res = *res; |
744 | dev_info(&pdev->dev, "punit GTD interface res: %pR\n", res); | ||
746 | } | 745 | } |
747 | /* This is index 5 to cover GTD interface register */ | ||
748 | *++punit_res = *res; | ||
749 | dev_info(&pdev->dev, "punit GTD interface res: %pR\n", res); | ||
750 | 746 | ||
751 | res = platform_get_resource(pdev, IORESOURCE_MEM, | 747 | res = platform_get_resource(pdev, IORESOURCE_MEM, |
752 | PLAT_RESOURCE_IPC_INDEX); | 748 | PLAT_RESOURCE_IPC_INDEX); |
diff --git a/drivers/platform/x86/intel_punit_ipc.c b/drivers/platform/x86/intel_punit_ipc.c index bd875409a02d..a47a41fc10ad 100644 --- a/drivers/platform/x86/intel_punit_ipc.c +++ b/drivers/platform/x86/intel_punit_ipc.c | |||
@@ -227,6 +227,11 @@ static int intel_punit_get_bars(struct platform_device *pdev) | |||
227 | struct resource *res; | 227 | struct resource *res; |
228 | void __iomem *addr; | 228 | void __iomem *addr; |
229 | 229 | ||
230 | /* | ||
231 | * The following resources are required | ||
232 | * - BIOS_IPC BASE_DATA | ||
233 | * - BIOS_IPC BASE_IFACE | ||
234 | */ | ||
230 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 235 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
231 | addr = devm_ioremap_resource(&pdev->dev, res); | 236 | addr = devm_ioremap_resource(&pdev->dev, res); |
232 | if (IS_ERR(addr)) | 237 | if (IS_ERR(addr)) |
@@ -239,29 +244,40 @@ static int intel_punit_get_bars(struct platform_device *pdev) | |||
239 | return PTR_ERR(addr); | 244 | return PTR_ERR(addr); |
240 | punit_ipcdev->base[BIOS_IPC][BASE_IFACE] = addr; | 245 | punit_ipcdev->base[BIOS_IPC][BASE_IFACE] = addr; |
241 | 246 | ||
247 | /* | ||
248 | * The following resources are optional | ||
249 | * - ISPDRIVER_IPC BASE_DATA | ||
250 | * - ISPDRIVER_IPC BASE_IFACE | ||
251 | * - GTDRIVER_IPC BASE_DATA | ||
252 | * - GTDRIVER_IPC BASE_IFACE | ||
253 | */ | ||
242 | res = platform_get_resource(pdev, IORESOURCE_MEM, 2); | 254 | res = platform_get_resource(pdev, IORESOURCE_MEM, 2); |
243 | addr = devm_ioremap_resource(&pdev->dev, res); | 255 | if (res) { |
244 | if (IS_ERR(addr)) | 256 | addr = devm_ioremap_resource(&pdev->dev, res); |
245 | return PTR_ERR(addr); | 257 | if (!IS_ERR(addr)) |
246 | punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; | 258 | punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr; |
259 | } | ||
247 | 260 | ||
248 | res = platform_get_resource(pdev, IORESOURCE_MEM, 3); | 261 | res = platform_get_resource(pdev, IORESOURCE_MEM, 3); |
249 | addr = devm_ioremap_resource(&pdev->dev, res); | 262 | if (res) { |
250 | if (IS_ERR(addr)) | 263 | addr = devm_ioremap_resource(&pdev->dev, res); |
251 | return PTR_ERR(addr); | 264 | if (!IS_ERR(addr)) |
252 | punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; | 265 | punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr; |
266 | } | ||
253 | 267 | ||
254 | res = platform_get_resource(pdev, IORESOURCE_MEM, 4); | 268 | res = platform_get_resource(pdev, IORESOURCE_MEM, 4); |
255 | addr = devm_ioremap_resource(&pdev->dev, res); | 269 | if (res) { |
256 | if (IS_ERR(addr)) | 270 | addr = devm_ioremap_resource(&pdev->dev, res); |
257 | return PTR_ERR(addr); | 271 | if (!IS_ERR(addr)) |
258 | punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; | 272 | punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr; |
273 | } | ||
259 | 274 | ||
260 | res = platform_get_resource(pdev, IORESOURCE_MEM, 5); | 275 | res = platform_get_resource(pdev, IORESOURCE_MEM, 5); |
261 | addr = devm_ioremap_resource(&pdev->dev, res); | 276 | if (res) { |
262 | if (IS_ERR(addr)) | 277 | addr = devm_ioremap_resource(&pdev->dev, res); |
263 | return PTR_ERR(addr); | 278 | if (!IS_ERR(addr)) |
264 | punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; | 279 | punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr; |
280 | } | ||
265 | 281 | ||
266 | return 0; | 282 | return 0; |
267 | } | 283 | } |
diff --git a/drivers/platform/x86/intel_telemetry_pltdrv.c b/drivers/platform/x86/intel_telemetry_pltdrv.c index 397119f83e82..781bd10ca7ac 100644 --- a/drivers/platform/x86/intel_telemetry_pltdrv.c +++ b/drivers/platform/x86/intel_telemetry_pltdrv.c | |||
@@ -659,7 +659,7 @@ static int telemetry_plt_update_events(struct telemetry_evtconfig pss_evtconfig, | |||
659 | static int telemetry_plt_set_sampling_period(u8 pss_period, u8 ioss_period) | 659 | static int telemetry_plt_set_sampling_period(u8 pss_period, u8 ioss_period) |
660 | { | 660 | { |
661 | u32 telem_ctrl = 0; | 661 | u32 telem_ctrl = 0; |
662 | int ret; | 662 | int ret = 0; |
663 | 663 | ||
664 | mutex_lock(&(telm_conf->telem_lock)); | 664 | mutex_lock(&(telm_conf->telem_lock)); |
665 | if (ioss_period) { | 665 | if (ioss_period) { |
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index e305ab541a22..9255ff3ee81a 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c | |||
@@ -7972,10 +7972,12 @@ static int fan_get_status_safe(u8 *status) | |||
7972 | fan_update_desired_level(s); | 7972 | fan_update_desired_level(s); |
7973 | mutex_unlock(&fan_mutex); | 7973 | mutex_unlock(&fan_mutex); |
7974 | 7974 | ||
7975 | if (rc) | ||
7976 | return rc; | ||
7975 | if (status) | 7977 | if (status) |
7976 | *status = s; | 7978 | *status = s; |
7977 | 7979 | ||
7978 | return rc; | 7980 | return 0; |
7979 | } | 7981 | } |
7980 | 7982 | ||
7981 | static int fan_get_speed(unsigned int *speed) | 7983 | static int fan_get_speed(unsigned int *speed) |
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index df1f1a76a862..01e12d221a8b 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c | |||
@@ -135,7 +135,7 @@ MODULE_LICENSE("GPL"); | |||
135 | /* Field definitions */ | 135 | /* Field definitions */ |
136 | #define HCI_ACCEL_MASK 0x7fff | 136 | #define HCI_ACCEL_MASK 0x7fff |
137 | #define HCI_HOTKEY_DISABLE 0x0b | 137 | #define HCI_HOTKEY_DISABLE 0x0b |
138 | #define HCI_HOTKEY_ENABLE 0x01 | 138 | #define HCI_HOTKEY_ENABLE 0x09 |
139 | #define HCI_HOTKEY_SPECIAL_FUNCTIONS 0x10 | 139 | #define HCI_HOTKEY_SPECIAL_FUNCTIONS 0x10 |
140 | #define HCI_LCD_BRIGHTNESS_BITS 3 | 140 | #define HCI_LCD_BRIGHTNESS_BITS 3 |
141 | #define HCI_LCD_BRIGHTNESS_SHIFT (16-HCI_LCD_BRIGHTNESS_BITS) | 141 | #define HCI_LCD_BRIGHTNESS_SHIFT (16-HCI_LCD_BRIGHTNESS_BITS) |