aboutsummaryrefslogtreecommitdiffstats
path: root/meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch')
-rw-r--r--meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch350
1 files changed, 0 insertions, 350 deletions
diff --git a/meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch b/meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch
deleted file mode 100644
index 1f392a48..00000000
--- a/meta-seattle/recipes-kernel/linux/files/412-1-styx-linux-tracking.git-2a3f98071e81b66033f6272f6c632023d1dcb1d2.patch
+++ /dev/null
@@ -1,350 +0,0 @@
-From 2f12ab9f8409067cd3a977994659c1a0e8f3088b Mon Sep 17 00:00:00 2001
-From: Adrian Calianu <adrian.calianu@enea.com>
-Date: Mon, 10 Aug 2015 17:19:12 +0200
-Subject: [PATCH] Subject: [PATCH] ACPI / scan: Add support for ACPI _CLS
- device matching
-
-Device drivers typically use ACPI _HIDs/_CIDs listed in struct device_driver
-acpi_match_table to match devices. However, for generic drivers, we do not
-want to list _HID for all supported devices. Also, certain classes of devices
-do not have _CID (e.g. SATA, USB). Instead, we can leverage ACPI _CLS,
-which specifies PCI-defined class code (i.e. base-class, subclass and
-programming interface). This patch adds support for matching ACPI devices using
-the _CLS method.
-
-To support loadable module, current design uses _HID or _CID to match device's
-modalias. With the new way of matching with _CLS this would requires modification
-to the current ACPI modalias key to include _CLS. This patch appends PCI-defined
-class-code to the existing ACPI modalias as following.
-
- acpi:<HID>:<CID1>:<CID2>:..:<CIDn>:<bbsspp>:
-E.g:
- # cat /sys/devices/platform/AMDI0600:00/modalias
- acpi:AMDI0600:010601:
-
-where bb is th base-class code, ss is te sub-class code, and pp is the
-programming interface code
-
-Since there would not be _HID/_CID in the ACPI matching table of the driver,
-this patch adds a field to acpi_device_id to specify the matching _CLS.
-
- static const struct acpi_device_id ahci_acpi_match[] = {
- { "", 0, PCI_CLASS_STORAGE_SATA_AHCI },
- {},
- };
-
-In this case, the corresponded entry in modules.alias file would be:
-
- alias acpi*:010601:* ahci_platform
-
-Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
-
-Upstream-Status: Pending
-
-Ported from 3.19 kernel, patch provided by AMD.
-
-Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
----
- drivers/acpi/acpica/acutils.h | 3 ++
- drivers/acpi/acpica/nsxfname.c | 21 ++++++++++--
- drivers/acpi/acpica/utids.c | 71 +++++++++++++++++++++++++++++++++++++++
- drivers/acpi/scan.c | 20 ++++++++---
- include/acpi/acnames.h | 1 +
- include/acpi/actypes.h | 4 ++-
- include/linux/mod_devicetable.h | 1 +
- scripts/mod/devicetable-offsets.c | 1 +
- scripts/mod/file2alias.c | 14 ++++++--
- 9 files changed, 126 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/acpi/acpica/acutils.h b/drivers/acpi/acpica/acutils.h
-index 2b3c5bd..218ddfd 100644
---- a/drivers/acpi/acpica/acutils.h
-+++ b/drivers/acpi/acpica/acutils.h
-@@ -430,6 +430,9 @@ acpi_status
- acpi_ut_execute_CID(struct acpi_namespace_node *device_node,
- struct acpi_pnp_device_id_list ** return_cid_list);
-
-+acpi_status
-+acpi_ut_execute_CLS(struct acpi_namespace_node *device_node,
-+ struct acpi_pnp_device_id **return_id);
- /*
- * utlock - reader/writer locks
- */
-diff --git a/drivers/acpi/acpica/nsxfname.c b/drivers/acpi/acpica/nsxfname.c
-index d66c326..3754db5 100644
---- a/drivers/acpi/acpica/nsxfname.c
-+++ b/drivers/acpi/acpica/nsxfname.c
-@@ -276,11 +276,12 @@ acpi_get_object_info(acpi_handle handle,
- struct acpi_pnp_device_id *hid = NULL;
- struct acpi_pnp_device_id *uid = NULL;
- struct acpi_pnp_device_id *sub = NULL;
-+ struct acpi_pnp_device_id *cls = NULL;
- char *next_id_string;
- acpi_object_type type;
- acpi_name name;
- u8 param_count = 0;
-- u8 valid = 0;
-+ u16 valid = 0;
- u32 info_size;
- u32 i;
- acpi_status status;
-@@ -320,7 +321,7 @@ acpi_get_object_info(acpi_handle handle,
- if ((type == ACPI_TYPE_DEVICE) || (type == ACPI_TYPE_PROCESSOR)) {
- /*
- * Get extra info for ACPI Device/Processor objects only:
-- * Run the Device _HID, _UID, _SUB, and _CID methods.
-+ * Run the Device _HID, _UID, _SUB, _CID and _CLS methods.
- *
- * Note: none of these methods are required, so they may or may
- * not be present for this device. The Info->Valid bitfield is used
-@@ -351,6 +352,14 @@ acpi_get_object_info(acpi_handle handle,
- valid |= ACPI_VALID_SUB;
- }
-
-+ /* Execute the Device._CLS method */
-+
-+ status = acpi_ut_execute_CLS(node, &cls);
-+ if (ACPI_SUCCESS(status)) {
-+ info_size += cls->length;
-+ valid |= ACPI_VALID_CLS;
-+ }
-+
- /* Execute the Device._CID method */
-
- status = acpi_ut_execute_CID(node, &cid_list);
-@@ -468,6 +477,11 @@ acpi_get_object_info(acpi_handle handle,
- sub, next_id_string);
- }
-
-+ if (cls) {
-+ next_id_string = acpi_ns_copy_device_id(&info->cls,
-+ cls, next_id_string);
-+ }
-+
- if (cid_list) {
- info->compatible_id_list.count = cid_list->count;
- info->compatible_id_list.list_size = cid_list->list_size;
-@@ -510,6 +524,9 @@ cleanup:
- if (cid_list) {
- ACPI_FREE(cid_list);
- }
-+ if (cls) {
-+ ACPI_FREE(cls);
-+ }
- return (status);
- }
-
-diff --git a/drivers/acpi/acpica/utids.c b/drivers/acpi/acpica/utids.c
-index 27431cf..bc77122 100644
---- a/drivers/acpi/acpica/utids.c
-+++ b/drivers/acpi/acpica/utids.c
-@@ -416,3 +416,74 @@ cleanup:
- acpi_ut_remove_reference(obj_desc);
- return_ACPI_STATUS(status);
- }
-+
-+/*******************************************************************************
-+ *
-+ * FUNCTION: acpi_ut_execute_CLS
-+ *
-+ * PARAMETERS: device_node - Node for the device
-+ * return_id - Where the string UID is returned
-+ *
-+ * RETURN: Status
-+ *
-+ * DESCRIPTION: Executes the _CLS control method that returns PCI-defined
-+ * class code of the device. The ACPI spec define _CLS as a
-+ * package with three integers. The returned string has format:
-+ *
-+ * "bbsspp"
-+ * where:
-+ * bb = Base-class code
-+ * ss = Sub-class code
-+ * pp = Programming Interface code
-+ *
-+ ******************************************************************************/
-+
-+acpi_status
-+acpi_ut_execute_CLS(struct acpi_namespace_node *device_node,
-+ struct acpi_pnp_device_id **return_id)
-+{
-+ struct acpi_pnp_device_id *cls;
-+ union acpi_operand_object *obj_desc;
-+ union acpi_operand_object **cls_objects;
-+ acpi_status status;
-+
-+ ACPI_FUNCTION_TRACE(ut_execute_CLS);
-+ status = acpi_ut_evaluate_object(device_node, METHOD_NAME__CLS,
-+ ACPI_BTYPE_PACKAGE, &obj_desc);
-+ if (ACPI_FAILURE(status))
-+ return_ACPI_STATUS(status);
-+
-+ cls_objects = obj_desc->package.elements;
-+
-+ if (obj_desc->common.type == ACPI_TYPE_PACKAGE &&
-+ obj_desc->package.count == 3 &&
-+ cls_objects[0]->common.type == ACPI_TYPE_INTEGER &&
-+ cls_objects[1]->common.type == ACPI_TYPE_INTEGER &&
-+ cls_objects[2]->common.type == ACPI_TYPE_INTEGER) {
-+
-+ /* Allocate a buffer for the CLS */
-+ cls = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_pnp_device_id) +
-+ (acpi_size) 7);
-+ if (!cls) {
-+ status = AE_NO_MEMORY;
-+ goto cleanup;
-+ }
-+
-+ cls->string =
-+ ACPI_ADD_PTR(char, cls, sizeof(struct acpi_pnp_device_id));
-+
-+ sprintf(cls->string, "%02x%02x%02x",
-+ (u8)ACPI_TO_INTEGER(cls_objects[0]->integer.value),
-+ (u8)ACPI_TO_INTEGER(cls_objects[1]->integer.value),
-+ (u8)ACPI_TO_INTEGER(cls_objects[2]->integer.value));
-+ cls->length = 7;
-+ *return_id = cls;
-+ }
-+
-+cleanup:
-+
-+ /* On exit, we must delete the return object */
-+
-+ acpi_ut_remove_reference(obj_desc);
-+ return_ACPI_STATUS(status);
-+}
-diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
-index 03141aa..ca6297b1 100644
---- a/drivers/acpi/scan.c
-+++ b/drivers/acpi/scan.c
-@@ -1031,11 +1031,18 @@ static const struct acpi_device_id *__acpi_match_device(
- if (!device || !device->status.present)
- return NULL;
-
-- list_for_each_entry(hwid, &device->pnp.ids, list) {
-- /* First, check the ACPI/PNP IDs provided by the caller. */
-- for (id = ids; id->id[0]; id++)
-- if (!strcmp((char *) id->id, hwid->id))
-- return id;
-+ list_for_each_entry(hwid, &device->pnp.ids, list) {
-+ for (id = ids; id->id[0] || id->cls; id++) {
-+ if (id->id[0] && !strcmp((char *) id->id, hwid->id)) {
-+ return id;
-+ } else if (id->cls) {
-+ char buf[7];
-+
-+ sprintf(buf, "%06x", id->cls);
-+ if (!strcmp(buf, hwid->id))
-+ return id;
-+ }
-+ }
-
- /*
- * Next, check the special "PRP0001" ID and try to match the
-@@ -2057,6 +2064,9 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
- pnp->unique_id = kstrdup(info->unique_id.string,
- GFP_KERNEL);
-
-+ if (info->valid & ACPI_VALID_CLS)
-+ acpi_add_id(pnp, info->cls.string);
-+
- kfree(info);
-
- /*
-diff --git a/include/acpi/acnames.h b/include/acpi/acnames.h
-index 273de70..b52c0dc 100644
---- a/include/acpi/acnames.h
-+++ b/include/acpi/acnames.h
-@@ -51,6 +51,7 @@
- #define METHOD_NAME__BBN "_BBN"
- #define METHOD_NAME__CBA "_CBA"
- #define METHOD_NAME__CID "_CID"
-+#define METHOD_NAME__CLS "_CLS"
- #define METHOD_NAME__CRS "_CRS"
- #define METHOD_NAME__DDN "_DDN"
- #define METHOD_NAME__HID "_HID"
-diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
-index 1c3002e..0ad0c61 100644
---- a/include/acpi/actypes.h
-+++ b/include/acpi/actypes.h
-@@ -1166,7 +1166,7 @@ struct acpi_device_info {
- u32 name; /* ACPI object Name */
- acpi_object_type type; /* ACPI object Type */
- u8 param_count; /* If a method, required parameter count */
-- u8 valid; /* Indicates which optional fields are valid */
-+ u16 valid; /* Indicates which optional fields are valid */
- u8 flags; /* Miscellaneous info */
- u8 highest_dstates[4]; /* _sx_d values: 0xFF indicates not valid */
- u8 lowest_dstates[5]; /* _sx_w values: 0xFF indicates not valid */
-@@ -1175,6 +1175,7 @@ struct acpi_device_info {
- struct acpi_pnp_device_id hardware_id; /* _HID value */
- struct acpi_pnp_device_id unique_id; /* _UID value */
- struct acpi_pnp_device_id subsystem_id; /* _SUB value */
-+ struct acpi_pnp_device_id cls; /* _CLS value */
- struct acpi_pnp_device_id_list compatible_id_list; /* _CID list <must be last> */
- };
-
-@@ -1192,6 +1193,7 @@ struct acpi_device_info {
- #define ACPI_VALID_CID 0x20
- #define ACPI_VALID_SXDS 0x40
- #define ACPI_VALID_SXWS 0x80
-+#define ACPI_VALID_CLS 0x100
-
- /* Flags for _STA return value (current_status above) */
-
-diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
-index 3bfd567..8a958d1 100644
---- a/include/linux/mod_devicetable.h
-+++ b/include/linux/mod_devicetable.h
-@@ -35,6 +35,7 @@ struct ieee1394_device_id {
- __u32 specifier_id;
- __u32 version;
- kernel_ulong_t driver_data;
-+ __u32 cls;
- };
-
-
-diff --git a/scripts/mod/devicetable-offsets.c b/scripts/mod/devicetable-offsets.c
-index fce36d0..aac0be3 100644
---- a/scripts/mod/devicetable-offsets.c
-+++ b/scripts/mod/devicetable-offsets.c
-@@ -63,6 +63,7 @@ int main(void)
-
- DEVID(acpi_device_id);
- DEVID_FIELD(acpi_device_id, id);
-+ DEVID_FIELD(acpi_device_id, cls);
-
- DEVID(pnp_device_id);
- DEVID_FIELD(pnp_device_id, id);
-diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
-index 78691d5..f5599ad 100644
---- a/scripts/mod/file2alias.c
-+++ b/scripts/mod/file2alias.c
-@@ -511,12 +511,22 @@ 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.
-+ */
- 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);
-+
-+ if (id && strlen((const char *)*id))
-+ sprintf(alias, "acpi*:%s:*", *id);
-+ else if (cls)
-+ sprintf(alias, "acpi*:%06x:*", *cls);
-+
- return 1;
- }
- ADD_TO_DEVTABLE("acpi", acpi_device_id, do_acpi_entry);
---
-1.9.1
-