From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Niyas Sait <niyas.sait@linaro.org>
Cc: linux-gpio@vger.kernel.org, andriy.shevchenko@linux.intel.com,
rafael@kernel.org, linus.walleij@linaro.org
Subject: Re: [PATCH RFC 1/3] pinctrl: add support for acpi PinGroup resource
Date: Fri, 11 Nov 2022 14:12:00 +0200 [thread overview]
Message-ID: <Y248EAY7hshSWM7w@black.fi.intel.com> (raw)
In-Reply-To: <20221110191258.1134378-2-niyas.sait@linaro.org>
On Thu, Nov 10, 2022 at 07:12:56PM +0000, Niyas Sait wrote:
> pinctrl-acpi parses and decode PinGroup resources for
> the device and generate list of group descriptor.
> Descriptors can be used by the pin controller to identify
> the groups and pins provided in the group.
>
> Signed-off-by: Niyas Sait <niyas.sait@linaro.org>
> ---
> drivers/pinctrl/Makefile | 1 +
> drivers/pinctrl/pinctrl-acpi.c | 59 ++++++++++++++++++++++++++++++++++
> drivers/pinctrl/pinctrl-acpi.h | 22 +++++++++++++
> 3 files changed, 82 insertions(+)
> create mode 100644 drivers/pinctrl/pinctrl-acpi.c
> create mode 100644 drivers/pinctrl/pinctrl-acpi.h
>
> diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
> index e76f5cdc64b0..0b0ec4080942 100644
> --- a/drivers/pinctrl/Makefile
> +++ b/drivers/pinctrl/Makefile
> @@ -8,6 +8,7 @@ obj-$(CONFIG_PINMUX) += pinmux.o
> obj-$(CONFIG_PINCONF) += pinconf.o
> obj-$(CONFIG_GENERIC_PINCONF) += pinconf-generic.o
> obj-$(CONFIG_OF) += devicetree.o
> +obj-$(CONFIG_ACPI) += pinctrl-acpi.o
>
> obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o
> obj-$(CONFIG_PINCTRL_APPLE_GPIO) += pinctrl-apple-gpio.o
> diff --git a/drivers/pinctrl/pinctrl-acpi.c b/drivers/pinctrl/pinctrl-acpi.c
> new file mode 100644
> index 000000000000..75e59fe22387
> --- /dev/null
> +++ b/drivers/pinctrl/pinctrl-acpi.c
> @@ -0,0 +1,59 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Copyright (C) 2022 Linaro Ltd.
> + */
> +#include <linux/acpi.h>
> +#include <linux/errno.h>
> +#include <linux/gpio/consumer.h>
> +#include <linux/gpio/driver.h>
> +#include <linux/gpio/machine.h>
> +#include <linux/list.h>
> +
> +#include "pinctrl-acpi.h"
> +
> +static int pinctrl_acpi_populate_group_desc(struct acpi_resource *ares, void *data)
> +{
> + struct acpi_resource_pin_group *ares_pin_group;
> + struct pinctrl_acpi_group_desc *desc;
> + struct list_head *group_desc_list = data;
> +
> + if (ares->type != ACPI_RESOURCE_TYPE_PIN_GROUP)
> + return 1;
> +
> + ares_pin_group = &ares->data.pin_group;
> +
> + desc = kzalloc(sizeof(struct pinctrl_acpi_group_desc), GFP_KERNEL);
> + if (!desc)
> + return -ENOMEM;
> +
> + desc->name = kstrdup_const(ares_pin_group->resource_label.string_ptr, GFP_KERNEL);
> + desc->pins = ares_pin_group->pin_table;
> + desc->num_pins = ares_pin_group->pin_table_length;
> + desc->vendor_data = ares_pin_group->vendor_data;
> + desc->vendor_length = ares_pin_group->vendor_length;
> +
> + INIT_LIST_HEAD(&desc->list);
> + list_add(&desc->list, group_desc_list);
> +
> + return 1;
> +}
> +
> +/* Get list of acpi pin groups definitions for the controller */
Use proper kernel-doc here.
Also who is responsible of releasing the thing and how it is done?
> +int pinctrl_acpi_get_pin_groups(struct acpi_device *adev, struct list_head *group_desc_list)
> +{
> + struct list_head res_list;
> + int ret;
> +
> + INIT_LIST_HEAD(&res_list);
> + INIT_LIST_HEAD(group_desc_list);
> +
> + ret = acpi_dev_get_resources(adev, &res_list,
> + pinctrl_acpi_populate_group_desc,
> + group_desc_list);
The formatting is wrong here.
> + if (ret < 0)
> + return ret;
> +
> + acpi_dev_free_resource_list(&res_list);
> +
Drop the empty line.
> + return 0;
> +}
> diff --git a/drivers/pinctrl/pinctrl-acpi.h b/drivers/pinctrl/pinctrl-acpi.h
> new file mode 100644
> index 000000000000..1a0c751a7594
> --- /dev/null
> +++ b/drivers/pinctrl/pinctrl-acpi.h
> @@ -0,0 +1,22 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Copyright (C) 2022 Linaro Ltd.
> + */
> +
kernel-doc here too.
> +struct pinctrl_acpi_group_desc {
> + const char *name;
> + short unsigned int *pins;
> + unsigned num_pins;
> + void *vendor_data;
> + unsigned vendor_length;
> + struct list_head list;
> +};
> +
> +#ifdef CONFIG_ACPI
> +int pinctrl_acpi_get_pin_groups(struct acpi_device *adev, struct list_head *group_desc_list);
> +#else
> +int pinctrl_acpi_get_pin_groups(struct acpi_device *adev, struct list_head *group_desc_list)
This needs to be static inline.
> +{
> + return -ENODEV;
-ENXIO?
> +}
> +#endif
> --
> 2.25.1
next prev parent reply other threads:[~2022-11-11 12:11 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-10 19:12 [PATCH RFC 0/3] pinctrl: add ACPI support to pin controller Niyas Sait
2022-11-10 19:12 ` [PATCH RFC 1/3] pinctrl: add support for acpi PinGroup resource Niyas Sait
2022-11-11 12:12 ` Mika Westerberg [this message]
2022-11-15 18:10 ` Niyas Sait
2022-11-10 19:12 ` [PATCH RFC 2/3] pinconf-generic: add pull up and pull down config with resistance Niyas Sait
2022-11-10 20:17 ` Andy Shevchenko
2022-11-11 7:23 ` Niyas Sait
2022-11-11 9:17 ` Linus Walleij
2022-11-11 9:22 ` Niyas Sait
2022-11-10 19:12 ` [PATCH RFC 3/3] pinctrl: add support for acpi pin function and config resources Niyas Sait
2022-11-11 12:24 ` Mika Westerberg
2022-11-15 18:14 ` Niyas Sait
2022-11-10 20:14 ` [PATCH RFC 0/3] pinctrl: add ACPI support to pin controller Andy Shevchenko
2022-11-10 20:23 ` Andy Shevchenko
2022-11-11 7:15 ` Niyas Sait
2022-11-11 7:17 ` Niyas Sait
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=Y248EAY7hshSWM7w@black.fi.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=niyas.sait@linaro.org \
--cc=rafael@kernel.org \
/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.