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
122122 int ret;
123123
124124 if (!dev_desc) {
125− pdev = acpi_create_platform_device(adev);
125+ pdev = acpi_create_platform_device(adev, NULL);
126126 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;
127127 }
128128
@@ -139,14 +139,8 @@ static int acpi_apd_create_device(struct acpi_device *adev, · 10 unmodified lines
139139 goto err_out;
140140 }
141141
142− if (dev_desc->properties) {
143− ret = device_add_properties(&adev->dev, dev_desc->properties);
144− if (ret)
145− goto err_out;
146− }
147−
148142 adev->driver_data = pdata;
149− pdev = acpi_create_platform_device(adev);
143+ pdev = acpi_create_platform_device(adev, dev_desc->properties);
150144 if (!IS_ERR_OR_NULL(pdev))
151145 return 1;
152146
drivers/acpi/acpi_lpss.c+2−8
@@ -395,7 +395,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev, · 394 unmodified lines
395395
396396 dev_desc = (const struct lpss_device_desc *)id->driver_data;
397397 if (!dev_desc) {
398− pdev = acpi_create_platform_device(adev);
398+ pdev = acpi_create_platform_device(adev, NULL);
399399 return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;
400400 }
401401 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
@@ -451,14 +451,8 @@ static int acpi_lpss_create_device(struct acpi_device *adev, · 49 unmodified lines
451451 goto err_out;
452452 }
453453
454− if (dev_desc->properties) {
455− ret = device_add_properties(&adev->dev, dev_desc->properties);
456− if (ret)
457− goto err_out;
458− }
459−
460454 adev->driver_data = pdata;
461− pdev = acpi_create_platform_device(adev);
455+ pdev = acpi_create_platform_device(adev, dev_desc->properties);
462456 if (!IS_ERR_OR_NULL(pdev)) {
463457 return 1;
464458 }
drivers/acpi/acpi_platform.c+4−1
@@ -50,6 +50,7 @@ static void acpi_platform_fill_resource(struct acpi_device *adev, · 49 unmodified lines
5050 /**
5151 * acpi_create_platform_device - Create platform device for ACPI device node
5252 * @adev: ACPI device node to create a platform device for.
53+ * @properties: Optional collection of build-in properties.
5354 *
5455 * Check if the given @adev can be represented as a platform device and, if
5556 * 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
5758 *
5859 * Name of the platform device will be the same as @adev's.
5960 */
60−struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
61+struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
62+ struct property_entry *properties)
6163 {
6264 struct platform_device *pdev = NULL;
6365 struct platform_device_info pdevinfo;
@@ -106,6 +108,7 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev) · 42 unmodified lines
106108 pdevinfo.res = resources;
107109 pdevinfo.num_res = count;
108110 pdevinfo.fwnode = acpi_fwnode_handle(adev);
111+ pdevinfo.properties = properties;
109112
110113 if (acpi_dma_supported(adev))
111114 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
3434 const struct acpi_device_id *id)
3535 {
3636 if (IS_ENABLED(CONFIG_INT340X_THERMAL))
37− acpi_create_platform_device(adev);
37+ acpi_create_platform_device(adev, NULL);
3838 /* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
3939 else if (IS_ENABLED(CONFIG_INTEL_SOC_DTS_THERMAL) &&
4040 id->driver_data == INT3401_DEVICE)
41− acpi_create_platform_device(adev);
41+ acpi_create_platform_device(adev, NULL);
4242 return 1;
4343 }
4444
drivers/acpi/scan.c+1−1
@@ -1734,7 +1734,7 @@ static void acpi_default_enumeration(struct acpi_device *device) · 1733 unmodified lines
17341734 &is_spi_i2c_slave);
17351735 acpi_dev_free_resource_list(&resource_list);
17361736 if (!is_spi_i2c_slave) {
1737− acpi_create_platform_device(device);
1737+ acpi_create_platform_device(device, NULL);
17381738 acpi_device_set_enumerated(device);
17391739 } else {
17401740 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
264264 return AE_OK;
265265
266266 if (acpi_match_device_ids(dev, ids) == 0)
267− if (acpi_create_platform_device(dev))
267+ if (acpi_create_platform_device(dev, NULL))
268268 dev_info(&dev->dev,
269269 "intel-hid: created platform device\n");
270270
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
164164 return AE_OK;
165165
166166 if (acpi_match_device_ids(dev, ids) == 0)
167− if (acpi_create_platform_device(dev))
167+ if (acpi_create_platform_device(dev, NULL))
168168 dev_info(&dev->dev,
169169 "intel-vbtn: created platform device\n");
170170
include/linux/acpi.h+2−1
@@ -555,7 +555,8 @@ int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *); · 554 unmodified lines
555555 int acpi_device_modalias(struct device *, char *, int);
556556 void acpi_walk_dep_device_list(acpi_handle handle);
557557
558−struct platform_device *acpi_create_platform_device(struct acpi_device *);
558+struct platform_device *acpi_create_platform_device(struct acpi_device *,
559+ struct property_entry *);
559560 #define ACPI_PTR(_ptr) (_ptr)
560561
561562 static inline void acpi_device_set_enumerated(struct acpi_device *adev)