All of lore.kernel.org
 help / color / mirror / Atom feed
From: Len Brown <lenb@kernel.org>
To: linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Feng Tang <feng.tang@intel.com>,
	Bob Moore <robert.moore@intel.com>,
	Len Brown <len.brown@intel.com>
Subject: [PATCH 13/49] ACPI: Use ACPICA native way to decode the PLD buffer
Date: Sat,  6 Oct 2012 16:09:34 -0400	[thread overview]
Message-ID: <8ede06aba5dffa78a27a18c47a9059eb38072ada.1349554106.git.len.brown@intel.com> (raw)
In-Reply-To: <1349554210-29978-1-git-send-email-lenb@kernel.org>
In-Reply-To: <a950c135e5b2be6ef7518d54d98a7901db1b377a.1349554105.git.len.brown@intel.com>

From: Feng Tang <feng.tang@intel.com>

This patch is on top of the ACPICA 20120816 release, which implemented
a native way to decode PLD buffer, so use it instead of leting upper
level users do the decoding.

v2: Modify the check for PLD buffer length to reject buffers whose
length < 16

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
---
 drivers/acpi/utils.c    | 11 +++++++----
 include/acpi/acpi_bus.h | 31 +------------------------------
 2 files changed, 8 insertions(+), 34 deletions(-)

diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 3e87c9c..462f7e3 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -384,7 +384,7 @@ 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_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld)
 {
 	acpi_status status;
 	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
@@ -400,13 +400,16 @@ acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld *pld)
 	if (!output || output->type != ACPI_TYPE_PACKAGE
 	    || !output->package.count
 	    || output->package.elements[0].type != ACPI_TYPE_BUFFER
-	    || output->package.elements[0].buffer.length > sizeof(*pld)) {
+	    || output->package.elements[0].buffer.length < ACPI_PLD_REV1_BUFFER_SIZE) {
 		status = AE_TYPE;
 		goto out;
 	}
 
-	memcpy(pld, output->package.elements[0].buffer.pointer,
-	       output->package.elements[0].buffer.length);
+	status = acpi_decode_pld_buffer(
+			output->package.elements[0].buffer.pointer,
+			output->package.elements[0].buffer.length,
+			pld);
+
 out:
 	kfree(buffer.pointer);
 	return status;
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index bde976e..0c1fcd4 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -54,37 +54,8 @@ acpi_status
 acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
 			u32 status_code, struct acpi_buffer *status_buf);
 
-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 */
-} __attribute__((__packed__));
-
 acpi_status
-acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld *pld);
+acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
 #ifdef CONFIG_ACPI
 
 #include <linux/proc_fs.h>
-- 
1.8.0.rc0.18.gf84667d

  parent reply	other threads:[~2012-10-06 20:09 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-06 20:09 ACPI & PM queue for 3.7-merge Len Brown
2012-10-06 20:09 ` [PATCH 01/49] ACPI: delelte more BFS/GTS related definition and code Len Brown
2012-10-06 20:09   ` [PATCH 02/49] ACPICA: Enable Scope change to root during module-level code execution Len Brown
2012-10-06 20:09   ` [PATCH 03/49] ACPICA: Split ACPICA initialization functions to new file, utxfinit.c Len Brown
2012-10-06 20:09   ` [PATCH 04/49] ACPICA: Comment update: Fix some typos in actble.h Len Brown
2012-10-06 20:09   ` [PATCH 05/49] ACPICA: Add Windows8/Server2012 string for _OSI method Len Brown
2012-10-06 20:09   ` [PATCH 06/49] ACPICA: GPE Support: Update debug info for GPE tracing Len Brown
2012-10-06 20:09   ` [PATCH 07/49] ACPICA: Debug output: Update output for Processor object Len Brown
2012-10-06 20:09   ` [PATCH 08/49] ACPICA: GPE support: Remove extraneous parameter from low-level function Len Brown
2012-10-06 20:09   ` [PATCH 09/49] ACPICA: Headers: Add support for CSRT and DBG2 ACPI tables Len Brown
2012-10-06 20:09   ` [PATCH 10/49] ACPICA: Add support for complex _PLD buffers Len Brown
2012-10-06 20:09   ` [PATCH 11/49] ACPICA: Add struct header support for _FDE, _GRT, _GTM, and _SRT names Len Brown
2012-10-06 20:09   ` [PATCH 12/49] ACPICA: Update version to 20120816 Len Brown
2012-10-06 20:09   ` Len Brown [this message]
2012-10-06 20:09   ` [PATCH 14/49] usb-acpi: Comply with the ACPI API change Len Brown
2012-10-06 20:09   ` [PATCH 15/49] ACPICA: Headers: Add new ACPI 5 HEST notify type values Len Brown
2012-10-06 20:09   ` [PATCH 16/49] ACPICA: Table Manager: Merge duplicate code (root table) Len Brown
2012-10-06 20:09   ` [PATCH 17/49] ACPICA: Update version to 20120913 Len Brown
2012-10-06 20:09   ` [PATCH 18/49] ACPI: Allow ACPI binding with USB-3.0 hub Len Brown
2012-10-06 20:09   ` [PATCH 19/49] ACPI: introduce module_acpi_driver() helper macro Len Brown
2012-10-06 20:09   ` [PATCH 20/49] ACPI/button: convert to module_acpi_driver() Len Brown
2012-10-06 20:09   ` [PATCH 21/49] ACPI/fan: " Len Brown
2012-10-06 20:09   ` [PATCH 22/49] ACPI/hed: " Len Brown
2012-10-06 20:09   ` [PATCH 23/49] ACPI/sbshc: " Len Brown
2012-10-06 20:09   ` [PATCH 24/49] i2c-scmi: " Len Brown
2012-10-06 20:09   ` [PATCH 25/49] Input: atlas_btns - " Len Brown
2012-10-06 20:09   ` [PATCH 26/49] hp_accel: " Len Brown
2012-10-06 20:09   ` [PATCH 27/49] ideapad: " Len Brown
2012-10-06 20:09   ` [PATCH 28/49] topstar-laptop: " Len Brown
2012-10-06 20:09   ` [PATCH 29/49] toshiba_bluetooth: " Len Brown
2012-10-06 20:09   ` [PATCH 30/49] xo15-ebook: " Len Brown
2012-10-06 20:09   ` [PATCH 31/49] tools/power/acpi/acpidump: version 20051111 Len Brown
2012-10-06 20:09   ` [PATCH 32/49] tools/power/acpi/acpidump: version 20060606 Len Brown
2012-10-06 20:09   ` [PATCH 33/49] tools/power/acpi/acpidump: version 20070714 Len Brown
2012-10-06 20:09   ` [PATCH 34/49] tools/power/acpi/acpidump: version 20071116 Len Brown
2012-10-06 20:09   ` [PATCH 35/49] tools/power/acpi/acpidump: version 20101221 - find dynamic tables in sysfs Len Brown
2012-10-06 20:09   ` [PATCH 36/49] tools/power/acpi/acpidump: create acpidump(8), local make install targets Len Brown
2012-10-06 20:09   ` [PATCH 37/49] ACPI: run _OSC after ACPI_FULL_INITIALIZATION Len Brown
2012-10-06 20:09   ` [PATCH 38/49] tools/power/acpi/acpidump: version 20101221 - find dynamic tables in sysfs Len Brown
2012-10-06 20:10   ` [PATCH 39/49] tools/power/acpi/acpidump: create acpidump(8), local make install targets Len Brown
2012-10-06 20:10   ` [PATCH 40/49] tools/power turbostat: run on IVB Xeon Len Brown
2012-10-06 20:10   ` [PATCH 41/49] tools/power turbostat: delete unused line Len Brown
2012-10-07  2:43   ` [PATCH 42/49] tools/power turbostat: print more turbo-limit information Len Brown
2012-10-07  2:43   ` [PATCH 43/49] tools/power turbostat: make -M output pretty Len Brown
2012-10-07  2:43   ` [PATCH 44/49] tools/power turbostat: add [-m MSR#] option Len Brown
2012-10-07  2:43   ` [PATCH 45/49] intel_idle: enable IVB Xeon support Len Brown
2012-10-07  2:43   ` [PATCH 46/49] tools/power turbostat: add [-d MSR#][-D MSR#] options to print counter deltas Len Brown
2012-10-07  2:43   ` [PATCH 47/49] tools/power/turbostat: add option to count SMIs, re-name some options Len Brown
2012-10-07  2:43   ` [PATCH 48/49] ACPI: Harden acpi_table_parse_entries() against BIOS bug Len Brown
2012-10-07  2:43   ` [PATCH 49/49] ACPI: Add new sysfs interface to export device description Len Brown
2012-10-09 14:23   ` [PATCH 01/49] ACPI: delelte more BFS/GTS related definition and code Konrad Rzeszutek Wilk
2012-10-07  2:43 ACPI & PM queue for 3.7-merge - part 2 Len Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8ede06aba5dffa78a27a18c47a9059eb38072ada.1349554106.git.len.brown@intel.com \
    --to=lenb@kernel.org \
    --cc=feng.tang@intel.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=robert.moore@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.