Skip to content

Commit 1571875

Browse files
Heikki Krogerusrafaeljw
authored andcommitted
ACPI / platform: Add support for build-in properties
We have a couple of drivers, acpi_apd.c and acpi_lpss.c, that need to pass extra build-in properties to the devices they create. Previously the drivers added those properties to the struct device which is member of the struct acpi_device, but that does not work. Those properties need to be assigned to the struct device of the platform device instead in order for them to become available to the drivers. To fix this, this patch changes acpi_create_platform_device function to take struct property_entry pointer as parameter. Fixes: 20a875e (serial: 8250_dw: Add quirk for APM X-Gene SoC) Signed-off-by: Heikki Krogerus <[email protected]> Tested-by: Yazen Ghannam <[email protected]> Tested-by: Jérôme de Bretagne <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent b60e4ea commit 1571875

File tree

8 files changed

+15
-23
lines changed

8 files changed

+15
-23
lines changed

drivers/acpi/acpi_apd.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static int acpi_apd_create_device(struct acpi_device *adev,
117117
int ret;
118118

119119
if (!dev_desc) {
120-
pdev = acpi_create_platform_device(adev);
120+
pdev = acpi_create_platform_device(adev, NULL);
121121
return IS_ERR_OR_NULL(pdev) ? PTR_ERR(pdev) : 1;
122122
}
123123

@@ -134,14 +134,8 @@ static int acpi_apd_create_device(struct acpi_device *adev,
134134
goto err_out;
135135
}
136136

137-
if (dev_desc->properties) {
138-
ret = device_add_properties(&adev->dev, dev_desc->properties);
139-
if (ret)
140-
goto err_out;
141-
}
142-
143137
adev->driver_data = pdata;
144-
pdev = acpi_create_platform_device(adev);
138+
pdev = acpi_create_platform_device(adev, dev_desc->properties);
145139
if (!IS_ERR_OR_NULL(pdev))
146140
return 1;
147141

drivers/acpi/acpi_lpss.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
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,
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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,16 @@ static const struct acpi_device_id forbidden_id_list[] = {
3333
/**
3434
* acpi_create_platform_device - Create platform device for ACPI device node
3535
* @adev: ACPI device node to create a platform device for.
36+
* @properties: Optional collection of build-in properties.
3637
*
3738
* Check if the given @adev can be represented as a platform device and, if
3839
* that's the case, create and register a platform device, populate its common
3940
* resources and returns a pointer to it. Otherwise, return %NULL.
4041
*
4142
* Name of the platform device will be the same as @adev's.
4243
*/
43-
struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
44+
struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
45+
struct property_entry *properties)
4446
{
4547
struct platform_device *pdev = NULL;
4648
struct platform_device_info pdevinfo;
@@ -88,6 +90,7 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
8890
pdevinfo.res = resources;
8991
pdevinfo.num_res = count;
9092
pdevinfo.fwnode = acpi_fwnode_handle(adev);
93+
pdevinfo.properties = properties;
9194

9295
if (acpi_dma_supported(adev))
9396
pdevinfo.dma_mask = DMA_BIT_MASK(32);

drivers/acpi/dptf/int340x_thermal.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev,
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1734,7 +1734,7 @@ static void acpi_default_enumeration(struct acpi_device *device)
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,8 @@ int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
546546
int acpi_device_modalias(struct device *, char *, int);
547547
void acpi_walk_dep_device_list(acpi_handle handle);
548548

549-
struct platform_device *acpi_create_platform_device(struct acpi_device *);
549+
struct platform_device *acpi_create_platform_device(struct acpi_device *,
550+
struct property_entry *);
550551
#define ACPI_PTR(_ptr) (_ptr)
551552

552553
static inline void acpi_device_set_enumerated(struct acpi_device *adev)

0 commit comments

Comments
 (0)