提交 5c9fcb5d 编写于 作者: Z Zhang Rui 提交者: Len Brown

ACPI: fix a regression of ACPI device driver autoloading

commit 3620f2f2 sets the cid of
ACPI video/dock/bay device and leaves the hid empty.
As a result, "modalias" should export the cid for
devices which don't have a hid.

ACPI Video driver is not autoloaded with
commit 3620f2f2 applied.
"cat /sys/.../device:03(acpi video bus)/modalias" shows nothing.

ACPI Video driver is autoloaded after revert that commit.
"cat /sys/.../LNXVIDEO:0x/modalias" shows "acpi:LNXVIDEO:"

ACPI Video driver is autoloaded with commit
3620f2f2 and this patch applied.
"cat /sys/.../device:03(acpi video bus)/modalias"
shows "acpi:LNXVIDEO:"
Signed-off-by: NZhang Rui <rui.zhang@intel.com>
Acked-by: NThomas Renninger <trenn@suse.de>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 a4083c92
...@@ -39,20 +39,26 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias, ...@@ -39,20 +39,26 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
int size) int size)
{ {
int len; int len;
int count;
if (!acpi_dev->flags.hardware_id) if (!acpi_dev->flags.hardware_id && !acpi_dev->flags.compatible_ids)
return -ENODEV; return -ENODEV;
len = snprintf(modalias, size, "acpi:%s:", len = snprintf(modalias, size, "acpi:");
acpi_dev->pnp.hardware_id);
if (len < 0 || len >= size)
return -EINVAL;
size -= len; size -= len;
if (acpi_dev->flags.hardware_id) {
count = snprintf(&modalias[len], size, "%s:",
acpi_dev->pnp.hardware_id);
if (count < 0 || count >= size)
return -EINVAL;
len += count;
size -= count;
}
if (acpi_dev->flags.compatible_ids) { if (acpi_dev->flags.compatible_ids) {
struct acpi_compatible_id_list *cid_list; struct acpi_compatible_id_list *cid_list;
int i; int i;
int count;
cid_list = acpi_dev->pnp.cid_list; cid_list = acpi_dev->pnp.cid_list;
for (i = 0; i < cid_list->count; i++) { for (i = 0; i < cid_list->count; i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册