* [PATCH 1/2] ACPI: Fix _PLD definition in predefined names
@ 2011-10-05 18:06 Matthew Garrett
2011-10-05 18:06 ` [PATCH 2/2] ACPI: Add _PLD support Matthew Garrett
2011-10-05 19:47 ` [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
0 siblings, 2 replies; 3+ messages in thread
From: Matthew Garrett @ 2011-10-05 18:06 UTC (permalink / raw)
To: linux-acpi; +Cc: len.brown, Matthew Garrett
The acpica code flags _PLD as returning a package of buffers. The spec
defines it as returning a single buffer, and implementations match that.
Fix it up.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
drivers/acpi/acpica/acpredef.h | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/acpica/acpredef.h b/drivers/acpi/acpica/acpredef.h
index c445cca..7328932 100644
--- a/drivers/acpi/acpica/acpredef.h
+++ b/drivers/acpi/acpica/acpredef.h
@@ -336,8 +336,7 @@ static const union acpi_predefined_info predefined_names[] =
{{"_PIF", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int),(3 Str) */
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, ACPI_RTYPE_STRING}, 3, 0}},
- {{"_PLD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Bufs) */
- {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0}, 0,0}},
+ {{"_PLD", 0, ACPI_RTYPE_BUFFER}},
{{"_PMC", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (11 Int),(3 Str) */
{{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, ACPI_RTYPE_STRING}, 3,
--
1.7.6.4
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH 2/2] ACPI: Add _PLD support
2011-10-05 18:06 [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
@ 2011-10-05 18:06 ` Matthew Garrett
2011-10-05 19:47 ` [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
1 sibling, 0 replies; 3+ messages in thread
From: Matthew Garrett @ 2011-10-05 18:06 UTC (permalink / raw)
To: linux-acpi; +Cc: len.brown, Matthew Garrett
Add a simple helper function to allow drivers to obtain the physical
device location data.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
drivers/acpi/utils.c | 25 +++++++++++++++++++++++++
include/acpi/acpi_bus.h | 33 ++++++++++++++++++++++++++++++++-
2 files changed, 57 insertions(+), 1 deletions(-)
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index b002a47..159207e 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -382,3 +382,28 @@ acpi_evaluate_reference(acpi_handle handle,
}
EXPORT_SYMBOL(acpi_evaluate_reference);
+
+acpi_status
+acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld *pld)
+{
+ acpi_status status;
+ struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
+ union acpi_object *output;
+
+ status = acpi_evaluate_object(handle, "_PLD", NULL, &buffer);
+
+ if (ACPI_FAILURE(status))
+ return status;
+
+ output = buffer.pointer;
+
+ if (!output || (output->type != ACPI_TYPE_BUFFER)) {
+ status = AE_TYPE;
+ goto out;
+ }
+
+ memcpy(pld, output->buffer.pointer, output->buffer.length);
+out:
+ kfree (buffer.pointer);
+ return status;
+}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 6cd5b64..30a9250 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -48,9 +48,40 @@ acpi_evaluate_integer(acpi_handle handle,
acpi_status
acpi_evaluate_reference(acpi_handle handle,
acpi_string pathname,
- struct acpi_object_list *arguments,
+ struct acpi_object_list *arguments,
struct acpi_handle_list *list);
+struct acpi_pld {
+ unsigned int revision :7; /* 0 */
+ unsigned int ignore_colour :1; /* 7 */
+ unsigned int colour :24; /* 8 */
+ unsigned int width :16; /* 32 */
+ unsigned int height :16; /* 48 */
+ unsigned int user_visible :1; /* 64 */
+ unsigned int dock :1; /* 65 */
+ unsigned int lid :1; /* 66 */
+ unsigned int panel :3; /* 67 */
+ unsigned int vertical_pos :2; /* 70 */
+ unsigned int horizontal_pos :2; /* 72 */
+ unsigned int shape :4; /* 74 */
+ unsigned int group_orientation :1; /* 78 */
+ unsigned int group_token :8; /* 79 */
+ unsigned int group_position :8; /* 87 */
+ unsigned int bay :1; /* 95 */
+ unsigned int ejectable :1; /* 96 */
+ unsigned int ospm_eject_required :1; /* 97 */
+ unsigned int cabinet_number :8; /* 98 */
+ unsigned int card_cage_number :8; /* 106 */
+ unsigned int reference :1; /* 114 */
+ unsigned int rotation :4; /* 115 */
+ unsigned int order :5; /* 119 */
+ unsigned int reserved :4; /* 124 */
+ unsigned int vertical_offset :16; /* 128 */
+ unsigned int horizontal_offset :16; /* 144 */
+};
+
+acpi_status
+acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld *pld);
#ifdef CONFIG_ACPI
#include <linux/proc_fs.h>
--
1.7.6.4
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] ACPI: Fix _PLD definition in predefined names
2011-10-05 18:06 [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
2011-10-05 18:06 ` [PATCH 2/2] ACPI: Add _PLD support Matthew Garrett
@ 2011-10-05 19:47 ` Matthew Garrett
1 sibling, 0 replies; 3+ messages in thread
From: Matthew Garrett @ 2011-10-05 19:47 UTC (permalink / raw)
To: linux-acpi; +Cc: len.brown
Scratch this, it's wrong. I'm going to need to figure out exactly what
the problem is.
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-10-05 19:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-05 18:06 [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
2011-10-05 18:06 ` [PATCH 2/2] ACPI: Add _PLD support Matthew Garrett
2011-10-05 19:47 ` [PATCH 1/2] ACPI: Fix _PLD definition in predefined names Matthew Garrett
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.