mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Won Chung <wonchung@google.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Benson Leung <bleung@chromium.org>,
	Prashant Malani <pmalani@chromium.org>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] ACPI: device_sysfs: Add sysfs support for _PLD
Date: Mon, 31 Jan 2022 09:33:25 +0200	[thread overview]
Message-ID: <YfeQxYNzWltRQ7mq@kuha.fi.intel.com> (raw)
In-Reply-To: <20220128180832.2329149-1-wonchung@google.com>

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@google.com>
> ---
>  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@google.com>
> +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

  reply	other threads:[~2022-01-31  7:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-28 18:08 Won Chung
2022-01-31  7:33 ` Heikki Krogerus [this message]
2022-02-01  1:50   ` Won Chung
2022-02-01  1:52   ` Won Chung

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=YfeQxYNzWltRQ7mq@kuha.fi.intel.com \
    --to=heikki.krogerus@linux.intel.com \
    --cc=bleung@chromium.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmalani@chromium.org \
    --cc=rafael@kernel.org \
    --cc=wonchung@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome