diff mbox

[v4] create sun sysfs file

Message ID 502062FB.7030502@jp.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yasuaki Ishimatsu Aug. 7, 2012, 12:36 a.m. UTC
Even if a device has _SUN method, there is no way to know the slot unique-ID.
Thus the patch creates "sun" file in sysfs so that we can recognize it.

Reviewed-by: Toshi Kani <toshi.kani@hp.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>

---
 drivers/acpi/scan.c     |   24 ++++++++++++++++++++++++
 include/acpi/acpi_bus.h |    1 +
 2 files changed, 25 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

Comments

Yasuaki Ishimatsu Aug. 30, 2012, 1:34 a.m. UTC | #1
Hi Len,

Three weeks passed after I post the patch.
All comments have already been applied to it. And I think there is no
comments about it. So I want you to merge it into your tree.

Thanks,
Yasuaki Ishimatsu

2012/08/07 9:36, Yasuaki Ishimatsu wrote:
> Even if a device has _SUN method, there is no way to know the slot unique-ID.
> Thus the patch creates "sun" file in sysfs so that we can recognize it.
> 
> Reviewed-by: Toshi Kani <toshi.kani@hp.com>
> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> 
> ---
>   drivers/acpi/scan.c     |   24 ++++++++++++++++++++++++
>   include/acpi/acpi_bus.h |    1 +
>   2 files changed, 25 insertions(+)
> 
> Index: linux-3.5/include/acpi/acpi_bus.h
> ===================================================================
> --- linux-3.5.orig/include/acpi/acpi_bus.h	2012-07-30 10:06:49.722171575 +0900
> +++ linux-3.5/include/acpi/acpi_bus.h	2012-08-07 08:57:45.678204360 +0900
> @@ -209,6 +209,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.5/drivers/acpi/scan.c
> ===================================================================
> --- linux-3.5.orig/drivers/acpi/scan.c	2012-07-30 10:06:49.713171688 +0900
> +++ linux-3.5/drivers/acpi/scan.c	2012-08-07 09:01:38.196203659 +0900
> @@ -192,10 +192,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;
>   
>   	/*
> @@ -217,6 +227,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.
> @@ -241,6 +261,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)
> 
> --
> 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
> 


--
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
Yasuaki Ishimatsu Sept. 24, 2012, 2:31 a.m. UTC | #2
Hi Len,

Ping...
I want you to merge the patch into your tree for linux-3.7.

Thanks,
Yasuaki Ishimatsu

2012/08/30 10:34, Yasuaki Ishimatsu wrote:
> Hi Len,
> 
> Three weeks passed after I post the patch.
> All comments have already been applied to it. And I think there is no
> comments about it. So I want you to merge it into your tree.
> 
> Thanks,
> Yasuaki Ishimatsu
> 
> 2012/08/07 9:36, Yasuaki Ishimatsu wrote:
>> Even if a device has _SUN method, there is no way to know the slot unique-ID.
>> Thus the patch creates "sun" file in sysfs so that we can recognize it.
>>
>> Reviewed-by: Toshi Kani <toshi.kani@hp.com>
>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>
>> ---
>>    drivers/acpi/scan.c     |   24 ++++++++++++++++++++++++
>>    include/acpi/acpi_bus.h |    1 +
>>    2 files changed, 25 insertions(+)
>>
>> Index: linux-3.5/include/acpi/acpi_bus.h
>> ===================================================================
>> --- linux-3.5.orig/include/acpi/acpi_bus.h	2012-07-30 10:06:49.722171575 +0900
>> +++ linux-3.5/include/acpi/acpi_bus.h	2012-08-07 08:57:45.678204360 +0900
>> @@ -209,6 +209,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.5/drivers/acpi/scan.c
>> ===================================================================
>> --- linux-3.5.orig/drivers/acpi/scan.c	2012-07-30 10:06:49.713171688 +0900
>> +++ linux-3.5/drivers/acpi/scan.c	2012-08-07 09:01:38.196203659 +0900
>> @@ -192,10 +192,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;
>>    
>>    	/*
>> @@ -217,6 +227,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.
>> @@ -241,6 +261,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)
>>
>> --
>> 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
>>
> 
> 
> --
> 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
> 


--
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
Yasuaki Ishimatsu Oct. 3, 2012, 9:54 a.m. UTC | #3
Hi Len,

Ping...
Pleae merge the patch into your tree.

Thanks,
Yasuaki Ishimatsu

2012/09/24 11:31, Yasuaki Ishimatsu wrote:
> Hi Len,
> 
> Ping...
> I want you to merge the patch into your tree for linux-3.7.
> 
> Thanks,
> Yasuaki Ishimatsu
> 
> 2012/08/30 10:34, Yasuaki Ishimatsu wrote:
>> Hi Len,
>>
>> Three weeks passed after I post the patch.
>> All comments have already been applied to it. And I think there is no
>> comments about it. So I want you to merge it into your tree.
>>
>> Thanks,
>> Yasuaki Ishimatsu
>>
>> 2012/08/07 9:36, Yasuaki Ishimatsu wrote:
>>> Even if a device has _SUN method, there is no way to know the slot unique-ID.
>>> Thus the patch creates "sun" file in sysfs so that we can recognize it.
>>>
>>> Reviewed-by: Toshi Kani <toshi.kani@hp.com>
>>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>
>>> ---
>>>     drivers/acpi/scan.c     |   24 ++++++++++++++++++++++++
>>>     include/acpi/acpi_bus.h |    1 +
>>>     2 files changed, 25 insertions(+)
>>>
>>> Index: linux-3.5/include/acpi/acpi_bus.h
>>> ===================================================================
>>> --- linux-3.5.orig/include/acpi/acpi_bus.h	2012-07-30 10:06:49.722171575 +0900
>>> +++ linux-3.5/include/acpi/acpi_bus.h	2012-08-07 08:57:45.678204360 +0900
>>> @@ -209,6 +209,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.5/drivers/acpi/scan.c
>>> ===================================================================
>>> --- linux-3.5.orig/drivers/acpi/scan.c	2012-07-30 10:06:49.713171688 +0900
>>> +++ linux-3.5/drivers/acpi/scan.c	2012-08-07 09:01:38.196203659 +0900
>>> @@ -192,10 +192,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;
>>>     
>>>     	/*
>>> @@ -217,6 +227,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.
>>> @@ -241,6 +261,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)
>>>
>>> --
>>> 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
>>>
>>
>>
>> --
>> 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
>>
> 
> 
> --
> 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
> 


--
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
Yasuaki Ishimatsu Oct. 8, 2012, 11:57 p.m. UTC | #4
Hi Len,

What should I do to put this patch in your tree?

Thanks,
Yasuaki Ishimatsu

2012/10/03 18:54, Yasuaki Ishimatsu wrote:
> Hi Len,
> 
> Ping...
> Pleae merge the patch into your tree.
> 
> Thanks,
> Yasuaki Ishimatsu
> 
> 2012/09/24 11:31, Yasuaki Ishimatsu wrote:
>> Hi Len,
>>
>> Ping...
>> I want you to merge the patch into your tree for linux-3.7.
>>
>> Thanks,
>> Yasuaki Ishimatsu
>>
>> 2012/08/30 10:34, Yasuaki Ishimatsu wrote:
>>> Hi Len,
>>>
>>> Three weeks passed after I post the patch.
>>> All comments have already been applied to it. And I think there is no
>>> comments about it. So I want you to merge it into your tree.
>>>
>>> Thanks,
>>> Yasuaki Ishimatsu
>>>
>>> 2012/08/07 9:36, Yasuaki Ishimatsu wrote:
>>>> Even if a device has _SUN method, there is no way to know the slot unique-ID.
>>>> Thus the patch creates "sun" file in sysfs so that we can recognize it.
>>>>
>>>> Reviewed-by: Toshi Kani <toshi.kani@hp.com>
>>>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>>
>>>> ---
>>>>      drivers/acpi/scan.c     |   24 ++++++++++++++++++++++++
>>>>      include/acpi/acpi_bus.h |    1 +
>>>>      2 files changed, 25 insertions(+)
>>>>
>>>> Index: linux-3.5/include/acpi/acpi_bus.h
>>>> ===================================================================
>>>> --- linux-3.5.orig/include/acpi/acpi_bus.h	2012-07-30 10:06:49.722171575 +0900
>>>> +++ linux-3.5/include/acpi/acpi_bus.h	2012-08-07 08:57:45.678204360 +0900
>>>> @@ -209,6 +209,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.5/drivers/acpi/scan.c
>>>> ===================================================================
>>>> --- linux-3.5.orig/drivers/acpi/scan.c	2012-07-30 10:06:49.713171688 +0900
>>>> +++ linux-3.5/drivers/acpi/scan.c	2012-08-07 09:01:38.196203659 +0900
>>>> @@ -192,10 +192,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;
>>>>      
>>>>      	/*
>>>> @@ -217,6 +227,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.
>>>> @@ -241,6 +261,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)
>>>>
>>>> --
>>>> 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
>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>
>>
>> --
>> 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
>>
> 
> 
> --
> 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
> 


--
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
Len Brown Oct. 9, 2012, 5:05 a.m. UTC | #5
On 10/08/2012 07:57 PM, Yasuaki Ishimatsu wrote:
> Hi Len,
> 
> What should I do to put this patch in your tree?

Please add a description of the attribute in
Documentation/ABI/testing/

A human needs to understand exactly what is in that file
because you are proposing it as an ABI.

thanks,
Len Brown, Intel Open Source Technology Center


--
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
Yasuaki Ishimatsu Oct. 9, 2012, 5:13 a.m. UTC | #6
Hi Len,

2012/10/09 14:05, Len Brown wrote:
> On 10/08/2012 07:57 PM, Yasuaki Ishimatsu wrote:
>> Hi Len,
>>
>> What should I do to put this patch in your tree?
> 
> Please add a description of the attribute in
> Documentation/ABI/testing/
> 
> A human needs to understand exactly what is in that file
> because you are proposing it as an ABI.
>

Thank you for your comment. I'll update soon.

Regards,
Yasuaki Ishimatsu

 
> thanks,
> Len Brown, Intel Open Source Technology Center
> 
> 


--
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
diff mbox

Patch

Index: linux-3.5/include/acpi/acpi_bus.h
===================================================================
--- linux-3.5.orig/include/acpi/acpi_bus.h	2012-07-30 10:06:49.722171575 +0900
+++ linux-3.5/include/acpi/acpi_bus.h	2012-08-07 08:57:45.678204360 +0900
@@ -209,6 +209,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.5/drivers/acpi/scan.c
===================================================================
--- linux-3.5.orig/drivers/acpi/scan.c	2012-07-30 10:06:49.713171688 +0900
+++ linux-3.5/drivers/acpi/scan.c	2012-08-07 09:01:38.196203659 +0900
@@ -192,10 +192,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;
 
 	/*
@@ -217,6 +227,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.
@@ -241,6 +261,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)