From patchwork Tue Oct 9 06:49:42 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yasuaki Ishimatsu X-Patchwork-Id: 1569031 Return-Path: X-Original-To: patchwork-linux-acpi@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 1D633DFFCF for ; Tue, 9 Oct 2012 06:50:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752537Ab2JIGuP (ORCPT ); Tue, 9 Oct 2012 02:50:15 -0400 Received: from fgwmail5.fujitsu.co.jp ([192.51.44.35]:42427 "EHLO fgwmail5.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752227Ab2JIGuO (ORCPT ); Tue, 9 Oct 2012 02:50:14 -0400 Received: from m4.gw.fujitsu.co.jp (unknown [10.0.50.74]) by fgwmail5.fujitsu.co.jp (Postfix) with ESMTP id 48F353EE0BD; Tue, 9 Oct 2012 15:50:12 +0900 (JST) Received: from smail (m4 [127.0.0.1]) by outgoing.m4.gw.fujitsu.co.jp (Postfix) with ESMTP id 2F6CA45DE4D; Tue, 9 Oct 2012 15:50:12 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (s4.gw.fujitsu.co.jp [10.0.50.94]) by m4.gw.fujitsu.co.jp (Postfix) with ESMTP id ECCC445DE4F; Tue, 9 Oct 2012 15:50:11 +0900 (JST) Received: from s4.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id E11CF1DB803E; Tue, 9 Oct 2012 15:50:11 +0900 (JST) Received: from g01jpexchkw04.g01.fujitsu.local (g01jpexchkw04.g01.fujitsu.local [10.0.194.43]) by s4.gw.fujitsu.co.jp (Postfix) with ESMTP id 9DBFE1DB8037; Tue, 9 Oct 2012 15:50:11 +0900 (JST) Received: from [127.0.0.1] (10.124.101.33) by g01jpexchkw04.g01.fujitsu.local (10.0.194.43) with Microsoft SMTP Server id 14.2.309.2; Tue, 9 Oct 2012 15:50:11 +0900 X-SecurityPolicyCheck: OK by SHieldMailChecker v1.7.4 Message-ID: <5073C906.1070400@jp.fujitsu.com> Date: Tue, 9 Oct 2012 15:49:42 +0900 From: Yasuaki Ishimatsu User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: , , , , Subject: [PATCH v5] create sun sysfs file Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org _SUN method provides the slot unique-ID in the ACPI namespace. And The value is written in Advanced Configuration and Power Interface Specification as follows: "The _SUN value is required to be unique among the slots ofthe same type. It is also recommended that this number match the slot number printed on the physical slot whenever possible." So if we can know the value, we can identify the physical position of the slot in the system. The patch creates "sun" file in sysfs for identifying physical position of the slot. Reviewed-by: Toshi Kani Signed-off-by: Yasuaki Ishimatsu --- Documentation/ABI/testing/sysfs-devices-sun | 14 ++++++++++++++ drivers/acpi/scan.c | 24 ++++++++++++++++++++++++ include/acpi/acpi_bus.h | 1 + 3 files changed, 39 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: linux-3.6/include/acpi/acpi_bus.h =================================================================== --- linux-3.6.orig/include/acpi/acpi_bus.h 2012-10-09 11:54:17.690072343 +0900 +++ linux-3.6/include/acpi/acpi_bus.h 2012-10-09 14:15:49.207794671 +0900 @@ -208,6 +208,7 @@ struct acpi_device_pnp { struct list_head ids; /* _HID and _CIDs */ acpi_device_name device_name; /* Driver-determined */ acpi_device_class device_class; /* " */ + unsigned long sun; /* _SUN */ }; #define acpi_device_bid(d) ((d)->pnp.bus_id) Index: linux-3.6/drivers/acpi/scan.c =================================================================== --- linux-3.6.orig/drivers/acpi/scan.c 2012-10-09 11:54:17.688072343 +0900 +++ linux-3.6/drivers/acpi/scan.c 2012-10-09 14:15:49.211794675 +0900 @@ -232,10 +232,20 @@ end: } static DEVICE_ATTR(path, 0444, acpi_device_path_show, NULL); +static ssize_t +acpi_device_sun_show(struct device *dev, struct device_attribute *attr, + char *buf) { + struct acpi_device *acpi_dev = to_acpi_device(dev); + + return sprintf(buf, "%lu\n", acpi_dev->pnp.sun); +} +static DEVICE_ATTR(sun, 0444, acpi_device_sun_show, NULL); + static int acpi_device_setup_files(struct acpi_device *dev) { acpi_status status; acpi_handle temp; + unsigned long long sun; int result = 0; /* @@ -257,6 +267,16 @@ static int acpi_device_setup_files(struc goto end; } + status = acpi_evaluate_integer(dev->handle, "_SUN", NULL, &sun); + if (ACPI_SUCCESS(status)) { + dev->pnp.sun = (unsigned long)sun; + result = device_create_file(&dev->dev, &dev_attr_sun); + if (result) + goto end; + } else { + dev->pnp.sun = (unsigned long)-1; + } + /* * If device has _EJ0, 'eject' file is created that is used to trigger * hot-removal function from userland. @@ -281,6 +301,10 @@ static void acpi_device_remove_files(str if (ACPI_SUCCESS(status)) device_remove_file(&dev->dev, &dev_attr_eject); + status = acpi_get_handle(dev->handle, "_SUN", &temp); + if (ACPI_SUCCESS(status)) + device_remove_file(&dev->dev, &dev_attr_sun); + device_remove_file(&dev->dev, &dev_attr_modalias); device_remove_file(&dev->dev, &dev_attr_hid); if (dev->handle) Index: linux-3.6/Documentation/ABI/testing/sysfs-devices-sun =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-3.6/Documentation/ABI/testing/sysfs-devices-sun 2012-10-09 15:47:02.333245246 +0900 @@ -0,0 +1,14 @@ +Whatt: /sys/devices/.../sun +Date: October 2012 +Contact: Yasuaki Ishimatsu +Description: + The file contains a Slot-unique ID which provided by the _SUN + method in the ACPI namespace. The value is written in Advanced + Configuration and Power Interface Specification as follows: + + "The _SUN value is required to be unique among the slots of + the same type. It is also recommended that this number match + the slot number printed on the physical slot whenever possible." + + So reading the sysfs file, we can identify a physical position + of the slot in the system.