diff options
Diffstat (limited to 'scripts/mod')
| -rw-r--r-- | scripts/mod/devicetable-offsets.c | 2 | ||||
| -rw-r--r-- | scripts/mod/file2alias.c | 32 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 3 | 
3 files changed, 34 insertions, 3 deletions
diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c index eff7de1fc82e..e70fcd12eeeb 100644 --- a/scripts/mod/devicetable-offsets.c +++ b/scripts/mod/devicetable-offsets.c @@ -63,6 +63,8 @@ int main(void)  	DEVID(acpi_device_id);  	DEVID_FIELD(acpi_device_id, id); +	DEVID_FIELD(acpi_device_id, cls); +	DEVID_FIELD(acpi_device_id, cls_msk);  	DEVID(pnp_device_id);  	DEVID_FIELD(pnp_device_id, id); diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 84c86f3cd6cd..5f2088209132 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -523,12 +523,40 @@ static int do_serio_entry(const char *filename,  }  ADD_TO_DEVTABLE("serio", serio_device_id, do_serio_entry); -/* looks like: "acpi:ACPI0003 or acpi:PNP0C0B" or "acpi:LNXVIDEO" */ +/* looks like: "acpi:ACPI0003" or "acpi:PNP0C0B" or "acpi:LNXVIDEO" or + *             "acpi:bbsspp" (bb=base-class, ss=sub-class, pp=prog-if) + * + * NOTE: Each driver should use one of the following : _HID, _CIDs + *       or _CLS. Also, bb, ss, and pp can be substituted with ?? + *       as don't care byte. + */  static int do_acpi_entry(const char *filename,  			void *symval, char *alias)  {  	DEF_FIELD_ADDR(symval, acpi_device_id, id); -	sprintf(alias, "acpi*:%s:*", *id); +	DEF_FIELD_ADDR(symval, acpi_device_id, cls); +	DEF_FIELD_ADDR(symval, acpi_device_id, cls_msk); + +	if (id && strlen((const char *)*id)) +		sprintf(alias, "acpi*:%s:*", *id); +	else if (cls) { +		int i, byte_shift, cnt = 0; +		unsigned int msk; + +		sprintf(&alias[cnt], "acpi*:"); +		cnt = 6; +		for (i = 1; i <= 3; i++) { +			byte_shift = 8 * (3-i); +			msk = (*cls_msk >> byte_shift) & 0xFF; +			if (msk) +				sprintf(&alias[cnt], "%02x", +					(*cls >> byte_shift) & 0xFF); +			else +				sprintf(&alias[cnt], "??"); +			cnt += 2; +		} +		sprintf(&alias[cnt], ":*"); +	}  	return 1;  }  ADD_TO_DEVTABLE("acpi", acpi_device_id, do_acpi_entry); diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 91ee1b2e0f9a..12d3db3bd46b 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -886,7 +886,8 @@ static void check_section(const char *modname, struct elf_info *elf,  #define TEXT_SECTIONS ".text", ".text.unlikely", ".sched.text", \  		".kprobes.text"  #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ -		".fixup", ".entry.text", ".exception.text", ".text.*" +		".fixup", ".entry.text", ".exception.text", ".text.*", \ +		".coldtext"  #define INIT_SECTIONS      ".init.*"  #define MEM_INIT_SECTIONS  ".meminit.*"  |