ACPI: fix a regression of ACPI device driver autoloading
commit3620f2f2f3
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 commit3620f2f2f3
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 commit3620f2f2f3
and this patch applied. "cat /sys/.../device:03(acpi video bus)/modalias" shows "acpi:LNXVIDEO:" Signed-off-by: Zhang Rui <rui.zhang@intel.com> Acked-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
a4083c9271
commit
5c9fcb5dee
|
@ -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++) {
|
||||||
|
|
Loading…
Reference in New Issue