History

Merge tag 'acpi-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki: "Fix a recent regression in the 8250_dw serial driver introduced by adding a quirk for the APM X-Gene SoC to it which uncovered an issue related to the handling of built-in device properties in the core ACPI device enumeration code (Heikki Krogerus)" * tag 'acpi-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI / platform: Add support for build-in properties

Linus Torvalds committed 10 years ago

Commit 86e4ee72 parents b9f659b 66f58548 files · +15 −23Browse files

Unified · Split

8 files
  1. drivers/acpi/acpi_apd.c +2 −8
  2. drivers/acpi/acpi_lpss.c +2 −8
  3. drivers/acpi/acpi_platform.c +4 −1
  4. drivers/acpi/dptf/int340x_thermal.c +2 −2
  5. drivers/acpi/scan.c +1 −1
  6. drivers/platform/x86/intel-hid.c +1 −1
  7. drivers/platform/x86/intel-vbtn.c +1 −1
  8. include/linux/acpi.h +2 −1
drivers/acpi/acpi_apd.c+2−8
@@ -122,7 +122,7 @@ static int acpi_apd_create_device(struct acpi_device *adev, · 121 unmodified lines
122 int ret;122 int ret;
123 123
124 if (!dev_desc) {124 if (!dev_desc) {
125 pdev = acpi_create_platform_device(adev);125 pdev = acpi_create_platform_device(adev, NULL);
126 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;126 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;
127 }127 }
128 128
@@ -139,14 +139,8 @@ static int acpi_apd_create_device(struct acpi_device *adev, · 10 unmodified lines
139 goto err_out;139 goto err_out;
140 }140 }
141 141
142 if (dev_desc->properties) {
143 ret = device_add_properties(&adev->dev, dev_desc->properties);
144 if (ret)
145 goto err_out;
146 }
147
148 adev->driver_data = pdata;142 adev->driver_data = pdata;
149 pdev = acpi_create_platform_device(adev);143 pdev = acpi_create_platform_device(adev, dev_desc->properties);
150 if (!IS_ERR_OR_NULL(pdev))144 if (!IS_ERR_OR_NULL(pdev))
151 return 1;145 return 1;
152 146
drivers/acpi/acpi_lpss.c+2−8
@@ -395,7 +395,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev, · 394 unmodified lines
395 395
396 dev_desc = (const struct lpss_device_desc *)id->driver_data;396 dev_desc = (const struct lpss_device_desc *)id->driver_data;
397 if (!dev_desc) {397 if (!dev_desc) {
398 pdev = acpi_create_platform_device(adev);398 pdev = acpi_create_platform_device(adev, NULL);
399 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;399 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;
400 }400 }
401 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);401 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
@@ -451,14 +451,8 @@ static int acpi_lpss_create_device(struct acpi_device *adev, · 49 unmodified lines
451 goto err_out;451 goto err_out;
452 }452 }
453 453
454 if (dev_desc->properties) {
455 ret = device_add_properties(&adev->dev, dev_desc->properties);
456 if (ret)
457 goto err_out;
458 }
459
460 adev->driver_data = pdata;454 adev->driver_data = pdata;
461 pdev = acpi_create_platform_device(adev);455 pdev = acpi_create_platform_device(adev, dev_desc->properties);
462 if (!IS_ERR_OR_NULL(pdev)) {456 if (!IS_ERR_OR_NULL(pdev)) {
463 return 1;457 return 1;
464 }458 }
drivers/acpi/acpi_platform.c+4−1
@@ -50,6 +50,7 @@ static void acpi_platform_fill_resource(struct acpi_device *adev, · 49 unmodified lines
50/**50/**
51 * acpi_create_platform_device - Create platform device for ACPI device node51 * acpi_create_platform_device - Create platform device for ACPI device node
52 * @adev: ACPI device node to create a platform device for.52 * @adev: ACPI device node to create a platform device for.
53 * @properties: Optional collection of build-in properties.
53 *54 *
54 * Check if the given @adev can be represented as a platform device and, if55 * Check if the given @adev can be represented as a platform device and, if
55 * that's the case, create and register a platform device, populate its common56 * that's the case, create and register a platform device, populate its common
@@ -57,7 +58,8 @@ static void acpi_platform_fill_resource(struct acpi_device *adev, · 1 unmodified line
57 *58 *
58 * Name of the platform device will be the same as @adev's.59 * Name of the platform device will be the same as @adev's.
59 */60 */
60struct platform_device *acpi_create_platform_device(struct acpi_device *adev)61struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
62 struct property_entry *properties)
61{63{
62 struct platform_device *pdev = NULL;64 struct platform_device *pdev = NULL;
63 struct platform_device_info pdevinfo;65 struct platform_device_info pdevinfo;
@@ -106,6 +108,7 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev) · 42 unmodified lines
106 pdevinfo.res = resources;108 pdevinfo.res = resources;
107 pdevinfo.num_res = count;109 pdevinfo.num_res = count;
108 pdevinfo.fwnode = acpi_fwnode_handle(adev);110 pdevinfo.fwnode = acpi_fwnode_handle(adev);
111 pdevinfo.properties = properties;
109 112
110 if (acpi_dma_supported(adev))113 if (acpi_dma_supported(adev))
111 pdevinfo.dma_mask = DMA_BIT_MASK(32);114 pdevinfo.dma_mask = DMA_BIT_MASK(32);
drivers/acpi/dptf/int340x_thermal.c+2−2
@@ -34,11 +34,11 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev, · 33 unmodified lines
34 const struct acpi_device_id *id)34 const struct acpi_device_id *id)
35{35{
36 if (IS_ENABLED(CONFIG_INT340X_THERMAL))36 if (IS_ENABLED(CONFIG_INT340X_THERMAL))
37 acpi_create_platform_device(adev);37 acpi_create_platform_device(adev, NULL);
38 /* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */38 /* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
39 else if (IS_ENABLED(CONFIG_INTEL_SOC_DTS_THERMAL) &&39 else if (IS_ENABLED(CONFIG_INTEL_SOC_DTS_THERMAL) &&
40 id->driver_data == INT3401_DEVICE)40 id->driver_data == INT3401_DEVICE)
41 acpi_create_platform_device(adev);41 acpi_create_platform_device(adev, NULL);
42 return 1;42 return 1;
43}43}
44 44
drivers/acpi/scan.c+1−1
@@ -1734,7 +1734,7 @@ static void acpi_default_enumeration(struct acpi_device *device) · 1733 unmodified lines
1734 &is_spi_i2c_slave);1734 &is_spi_i2c_slave);
1735 acpi_dev_free_resource_list(&resource_list);1735 acpi_dev_free_resource_list(&resource_list);
1736 if (!is_spi_i2c_slave) {1736 if (!is_spi_i2c_slave) {
1737 acpi_create_platform_device(device);1737 acpi_create_platform_device(device, NULL);
1738 acpi_device_set_enumerated(device);1738 acpi_device_set_enumerated(device);
1739 } else {1739 } else {
1740 blocking_notifier_call_chain(&acpi_reconfig_chain,1740 blocking_notifier_call_chain(&acpi_reconfig_chain,
drivers/platform/x86/intel-hid.c+1−1
@@ -264,7 +264,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv) · 263 unmodified lines
264 return AE_OK;264 return AE_OK;
265 265
266 if (acpi_match_device_ids(dev, ids) == 0)266 if (acpi_match_device_ids(dev, ids) == 0)
267 if (acpi_create_platform_device(dev))267 if (acpi_create_platform_device(dev, NULL))
268 dev_info(&dev->dev,268 dev_info(&dev->dev,
269 "intel-hid: created platform device\n");269 "intel-hid: created platform device\n");
270 270
drivers/platform/x86/intel-vbtn.c+1−1
@@ -164,7 +164,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv) · 163 unmodified lines
164 return AE_OK;164 return AE_OK;
165 165
166 if (acpi_match_device_ids(dev, ids) == 0)166 if (acpi_match_device_ids(dev, ids) == 0)
167 if (acpi_create_platform_device(dev))167 if (acpi_create_platform_device(dev, NULL))
168 dev_info(&dev->dev,168 dev_info(&dev->dev,
169 "intel-vbtn: created platform device\n");169 "intel-vbtn: created platform device\n");
170 170
include/linux/acpi.h+2−1
@@ -555,7 +555,8 @@ int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *); · 554 unmodified lines
555int acpi_device_modalias(struct device *, char *, int);555int acpi_device_modalias(struct device *, char *, int);
556void acpi_walk_dep_device_list(acpi_handle handle);556void acpi_walk_dep_device_list(acpi_handle handle);
557 557
558struct platform_device *acpi_create_platform_device(struct acpi_device *);558struct platform_device *acpi_create_platform_device(struct acpi_device *,
559 struct property_entry *);
559#define ACPI_PTR(_ptr) (_ptr)560#define ACPI_PTR(_ptr) (_ptr)
560 561
561static inline void acpi_device_set_enumerated(struct acpi_device *adev)562static inline void acpi_device_set_enumerated(struct acpi_device *adev)