aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/x86/hp_accel.c6
-rw-r--r--drivers/platform/x86/intel-hid.c2
-rw-r--r--drivers/platform/x86/intel_pmc_ipc.c48
-rw-r--r--drivers/platform/x86/intel_punit_ipc.c48
-rw-r--r--drivers/platform/x86/intel_telemetry_pltdrv.c2
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c4
-rw-r--r--drivers/platform/x86/toshiba_acpi.c2
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)
173DEFINE_CONV(normal, 1, 2, 3); 175DEFINE_CONV(normal, 1, 2, 3);
174DEFINE_CONV(y_inverted, 1, -2, 3); 176DEFINE_CONV(y_inverted, 1, -2, 3);
175DEFINE_CONV(x_inverted, -1, 2, 3); 177DEFINE_CONV(x_inverted, -1, 2, 3);
178DEFINE_CONV(x_inverted_usd, -1, 2, -3);
176DEFINE_CONV(z_inverted, 1, 2, -3); 179DEFINE_CONV(z_inverted, 1, 2, -3);
177DEFINE_CONV(xy_swap, 2, 1, 3); 180DEFINE_CONV(xy_swap, 2, 1, 3);
178DEFINE_CONV(xy_rotated_left, -2, 1, 3); 181DEFINE_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
93static const struct dev_pm_ops intel_hid_pl_pm_ops = { 93static 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,
659static int telemetry_plt_set_sampling_period(u8 pss_period, u8 ioss_period) 659static 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
7981static int fan_get_speed(unsigned int *speed) 7983static 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)