Re: [PATCH v3] ACPI: device_sysfs: Add sysfs support for _PLD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 28, 2022 at 06:08:32PM +0000, Won Chung wrote:
> When ACPI table includes _PLD fields for a device, create a new file
> (pld) in sysfs to share _PLD fields.
> 
> Signed-off-by: Won Chung <wonchung@xxxxxxxxxx>
> ---
>  Documentation/ABI/testing/sysfs-bus-acpi | 53 ++++++++++++++++++++++++
>  drivers/acpi/device_sysfs.c              | 42 +++++++++++++++++++
>  2 files changed, 95 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-acpi b/Documentation/ABI/testing/sysfs-bus-acpi
> index 58abacf59b2a..3a9c6a4f4603 100644
> --- a/Documentation/ABI/testing/sysfs-bus-acpi
> +++ b/Documentation/ABI/testing/sysfs-bus-acpi
> @@ -96,3 +96,56 @@ Description:
>  		hardware, if the _HRV control method is present.  It is mostly
>  		useful for non-PCI devices because lspci can list the hardware
>  		version for PCI devices.
> +
> +What:		/sys/bus/acpi/devices/.../pld
> +Date:		Jan, 2022
> +Contact:	Won Chung <wonchung@xxxxxxxxxx>
> +Description:
> +		This attribute contains the output of the device object's
> +		_PLD control method, if present. This information provides
> +		details on physical location of a port.
> +
> +		Description on each _PLD field from ACPI specification:
> +
> +		===============	============================================
> +		GROUP_TOKEN	Unique numerical value identifying a group.
> +		GROUP_POSITION	Identifies this device connection point’s
> +				position in the group.
> +		USER_VISIBLE	Set if the device connection point can be
> +				seen by the user without disassembly.
> +		DOCK		Set if the device connection point resides
> +				in a docking station or port replicator.
> +		BAY		Set if describing a device in a bay or if
> +				device connection point is a bay.
> +		LID		Set if this device connection point resides
> +				on the lid of laptop system.
> +		PANEL		Describes which panel surface of the system’s
> +				housing the device connection point resides on:
> +				0 - Top
> +				1 - Bottom
> +				2 - Left
> +				3 - Right
> +				4 - Front
> +				5 - Back
> +				6 - Unknown (Vertical Position and Horizontal
> +				Position will be ignored)
> +		HORIZONTAL_	0 - Left
> +		POSITION	1 - Center
> +				2 - Right
> +		VERTICAL_	0 - Upper
> +		POSITION	1 - Center
> +				2 - Lower
> +		SHAPE		Describes the shape of the device connection
> +				point.
> +				0 - Round
> +				1 - Oval
> +				2 - Square
> +				3 - Vertical Rectangle
> +				4 - Horizontal Rectangle
> +				5 - Vertical Trapezoid
> +				6 - Horizontal Trapezoid
> +				7 - Unknown - Shape rendered as a Rectangle
> +				with dotted lines
> +				8 - Chamfered
> +				15:9 - Reserved
> +		===============	===============================================
> diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c
> index d5d6403ba07b..8d4df5fb1c45 100644
> --- a/drivers/acpi/device_sysfs.c
> +++ b/drivers/acpi/device_sysfs.c
> @@ -509,6 +509,40 @@ static ssize_t status_show(struct device *dev, struct device_attribute *attr,
>  }
>  static DEVICE_ATTR_RO(status);
>  
> +static ssize_t pld_show(struct device *dev, struct device_attribute *attr,
> +			char *buf)
> +{
> +	struct acpi_device *acpi_dev = to_acpi_device(dev);
> +	acpi_status status;
> +	struct acpi_pld_info *pld;
> +
> +	status = acpi_get_physical_device_location(acpi_dev->handle, &pld);
> +	if (ACPI_FAILURE(status))
> +		return -ENODEV;
> +
> +	return sprintf(buf, "GROUP_TOKEN=%u\n"
> +		"GROUP_POSITION=%u\n"
> +		"USER_VISIBLE=%u\n"
> +		"DOCK=%u\n"
> +		"BAY=%u\n"
> +		"LID=%u\n"
> +		"PANEL=%u\n"
> +		"HORIZONTAL_POSITION=%u\n"
> +		"VERTICAL_POSITION=%u\n"
> +		"SHAPE=%u\n",
> +		pld->group_token,
> +		pld->group_position,
> +		pld->user_visible,
> +		pld->dock,
> +		pld->bay,
> +		pld->lid,
> +		pld->panel,
> +		pld->horizontal_position,
> +		pld->vertical_position,
> +		pld->shape);
> +}
> +static DEVICE_ATTR_RO(pld);

Why not have a pld group (directory) and a separate attribute file for
each field?


thanks,

-- 
heikki



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux