All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sumit Garg <sumit.garg@linaro.org>
To: Caleb Connolly <caleb.connolly@linaro.org>
Cc: Neil Armstrong <neil.armstrong@linaro.org>,
	Ramon Fried <rfried.dev@gmail.com>,
	 Dzmitry Sankouski <dsankouski@gmail.com>,
	Peng Fan <peng.fan@nxp.com>,
	 Jaehoon Chung <jh80.chung@samsung.com>,
	 Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>,
	Lukasz Majewski <lukma@denx.de>,
	Sean Anderson <seanga2@gmail.com>,
	Jorge Ramirez-Ortiz <jorge.ramirez.ortiz@gmail.com>,
	 Stephan Gerhold <stephan@gerhold.net>,
	Marek Vasut <marex@denx.de>,
	u-boot@lists.denx.de
Subject: Re: [PATCH v4 13/39] pinctrl: qcom: stub support for special GPIOs
Date: Tue, 20 Feb 2024 18:52:40 +0530	[thread overview]
Message-ID: <CAFA6WYP3gtcTpXXtuwg6ckpXFuaC9WMfBL9j38iVidd4EEKg+g@mail.gmail.com> (raw)
In-Reply-To: <20240215-b4-qcom-common-target-v4-13-ed06355c634a@linaro.org>

On Fri, 16 Feb 2024 at 02:22, Caleb Connolly <caleb.connolly@linaro.org> wrote:
>
> Most platforms have a handful of "special" GPIOs, like the MMC
> clock/data lanes, UFS reset, etc. These don't follow the usually naming

s/usually/usual/

> scheme of "gpioX" and also have unique capabilities and registers. We
> can get away without supporting them all for now, but DT compatibility
> is still an issue.
>
> Add support for allowing these to be specified after the other pins, and
> make all pinmux/pinconf calls for them nop.

Yeah earlier incorrect configuration was done for these pins. So
having them nop is an improvement.

>
> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
> ---
>  arch/arm/mach-snapdragon/include/mach/gpio.h |  2 ++
>  drivers/gpio/msm_gpio.c                      | 20 ++++++++++++++++++++
>  drivers/pinctrl/qcom/pinctrl-qcom.c          | 12 ++++++++++++
>  3 files changed, 34 insertions(+)
>

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>

-Sumit

> diff --git a/arch/arm/mach-snapdragon/include/mach/gpio.h b/arch/arm/mach-snapdragon/include/mach/gpio.h
> index 8dac62f870b9..c373f5a4cf3d 100644
> --- a/arch/arm/mach-snapdragon/include/mach/gpio.h
> +++ b/arch/arm/mach-snapdragon/include/mach/gpio.h
> @@ -13,6 +13,8 @@
>  struct msm_pin_data {
>         int pin_count;
>         const unsigned int *pin_offsets;
> +       /* Index of first special pin, these are ignored for now */
> +       unsigned int special_pins_start;
>  };
>
>  static inline u32 qcom_pin_offset(const unsigned int *offs, unsigned int selector)
> diff --git a/drivers/gpio/msm_gpio.c b/drivers/gpio/msm_gpio.c
> index 80cd28bb231f..8a5e8730e911 100644
> --- a/drivers/gpio/msm_gpio.c
> +++ b/drivers/gpio/msm_gpio.c
> @@ -39,6 +39,10 @@ static int msm_gpio_direction_input(struct udevice *dev, unsigned int gpio)
>  {
>         struct msm_gpio_bank *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (gpio >= priv->pin_data->special_pins_start)
> +               return 0;
> +
>         /* Disable OE bit */
>         clrsetbits_le32(priv->base + GPIO_CONFIG_REG(dev, gpio),
>                         GPIO_OE_MASK, GPIO_OE_DISABLE);
> @@ -50,6 +54,10 @@ static int msm_gpio_set_value(struct udevice *dev, unsigned int gpio, int value)
>  {
>         struct msm_gpio_bank *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (gpio >= priv->pin_data->special_pins_start)
> +               return 0;
> +
>         value = !!value;
>         /* set value */
>         writel(value << GPIO_OUT, priv->base + GPIO_IN_OUT_REG(dev, gpio));
> @@ -62,6 +70,10 @@ static int msm_gpio_direction_output(struct udevice *dev, unsigned int gpio,
>  {
>         struct msm_gpio_bank *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (gpio >= priv->pin_data->special_pins_start)
> +               return 0;
> +
>         value = !!value;
>         /* set value */
>         writel(value << GPIO_OUT, priv->base + GPIO_IN_OUT_REG(dev, gpio));
> @@ -76,6 +88,10 @@ static int msm_gpio_get_value(struct udevice *dev, unsigned int gpio)
>  {
>         struct msm_gpio_bank *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (gpio >= priv->pin_data->special_pins_start)
> +               return 0;
> +
>         return !!(readl(priv->base + GPIO_IN_OUT_REG(dev, gpio)) >> GPIO_IN);
>  }
>
> @@ -83,6 +99,10 @@ static int msm_gpio_get_function(struct udevice *dev, unsigned int gpio)
>  {
>         struct msm_gpio_bank *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (gpio >= priv->pin_data->special_pins_start)
> +               return 0;
> +
>         if (readl(priv->base + GPIO_CONFIG_REG(dev, gpio)) & GPIO_OE_ENABLE)
>                 return GPIOF_OUTPUT;
>
> diff --git a/drivers/pinctrl/qcom/pinctrl-qcom.c b/drivers/pinctrl/qcom/pinctrl-qcom.c
> index dc3d8c4d9034..1ea4d21c41fc 100644
> --- a/drivers/pinctrl/qcom/pinctrl-qcom.c
> +++ b/drivers/pinctrl/qcom/pinctrl-qcom.c
> @@ -83,6 +83,10 @@ static int msm_pinmux_set(struct udevice *dev, unsigned int pin_selector,
>  {
>         struct msm_pinctrl_priv *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins, assume they're in the correct state */
> +       if (pin_selector >= priv->data->pin_data.special_pins_start)
> +               return 0;
> +
>         clrsetbits_le32(priv->base + GPIO_CONFIG_REG(priv, pin_selector),
>                         TLMM_FUNC_SEL_MASK | TLMM_GPIO_DISABLE,
>                         priv->data->get_function_mux(func_selector) << 2);
> @@ -94,6 +98,10 @@ static int msm_pinconf_set(struct udevice *dev, unsigned int pin_selector,
>  {
>         struct msm_pinctrl_priv *priv = dev_get_priv(dev);
>
> +       /* Always NOP for special pins */
> +       if (pin_selector >= priv->data->pin_data.special_pins_start)
> +               return 0;
> +
>         switch (param) {
>         case PIN_CONFIG_DRIVE_STRENGTH:
>                 argument = (argument / 2) - 1;
> @@ -136,6 +144,10 @@ int msm_pinctrl_bind(struct udevice *dev)
>         const char *name;
>         int ret;
>
> +       /* Make sure we don't indadvertently treat all pins as special pins. */
> +       if (!data->pin_data.special_pins_start)
> +               data->pin_data.special_pins_start = data->pin_data.pin_count;
> +
>         drv = lists_driver_lookup_name("pinctrl_qcom");
>         if (!drv)
>                 return -ENOENT;
>
> --
> 2.43.1
>

  parent reply	other threads:[~2024-02-20 13:23 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-15 20:52 [PATCH v4 00/39] Qualcomm generic board support Caleb Connolly
2024-02-15 20:52 ` [PATCH v4 01/39] arm: init: export prev_bl_fdt_addr Caleb Connolly
2024-02-20  5:41   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 02/39] usb: dwc3-generic: support external vbus regulator Caleb Connolly
2024-02-17 10:58   ` Jonas Karlman
2024-02-15 20:52 ` [PATCH v4 03/39] mmc: msm_sdhci: use modern clock handling Caleb Connolly
2024-02-20  5:42   ` Sumit Garg
2024-02-20  7:20   ` Dan Carpenter
2024-02-15 20:52 ` [PATCH v4 04/39] dt-bindings: drop msm_sdhci binding Caleb Connolly
2024-02-20  5:42   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 05/39] clk/qcom: use upstream compatible properties Caleb Connolly
2024-02-20  5:46   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 06/39] clock/qcom: qcs404: fix clk_set_rate Caleb Connolly
2024-02-19  9:46   ` Neil Armstrong
2024-02-20  6:02   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 07/39] serial: msm: add debug UART Caleb Connolly
2024-02-19  9:47   ` Neil Armstrong
2024-02-20  6:08   ` Sumit Garg
2024-02-20 11:39     ` Caleb Connolly
2024-02-20 14:00       ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 08/39] serial: msm: fix clock handling and pinctrl Caleb Connolly
2024-02-19  9:47   ` Neil Armstrong
2024-02-20  6:09   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 09/39] gpio: qcom_pmic: 1-based GPIOs Caleb Connolly
2024-02-20  5:47   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 10/39] gpio: qcom_pmic: add a quirk to skip GPIO configuration Caleb Connolly
2024-02-20  5:56   ` Sumit Garg
2024-02-21  8:49     ` Neil Armstrong
2024-02-21  9:36       ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 11/39] gpio: qcom_pmic: add pinctrl driver Caleb Connolly
2024-02-19 10:55   ` Neil Armstrong
2024-02-20  6:14   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 12/39] sandbox: dts: fix qcom pmic gpio Caleb Connolly
2024-02-19  9:48   ` Neil Armstrong
2024-02-20  6:30   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 13/39] pinctrl: qcom: stub support for special GPIOs Caleb Connolly
2024-02-19  9:50   ` Neil Armstrong
2024-02-20 13:22   ` Sumit Garg [this message]
2024-02-15 20:52 ` [PATCH v4 14/39] pinctrl: qcom: fix DT compatibility Caleb Connolly
2024-02-19  9:50   ` Neil Armstrong
2024-02-20 13:23   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 15/39] pinctrl: qcom: apq8016: init pre-reloaction Caleb Connolly
2024-02-19  9:50   ` Neil Armstrong
2024-02-20  6:31   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 16/39] board: dragonboard410c: add chainloaded config fragment Caleb Connolly
2024-02-20 13:23   ` Sumit Garg
2024-02-20 14:19   ` Peter Robinson
2024-02-20 17:22     ` Caleb Connolly
2024-02-15 20:52 ` [PATCH v4 17/39] board: dragonboard410c: upstream DT compat Caleb Connolly
2024-02-20 13:26   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 18/39] board: dragonboard410c: import board code from mach-snapdragon Caleb Connolly
2024-02-20 13:28   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 19/39] board: dragonboard820c: use LINUX_KERNEL_IMAGE_HEADER Caleb Connolly
2024-02-16 17:23   ` Ilias Apalodimas
2024-02-20 13:28   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 20/39] mach-snapdragon: generalise board support Caleb Connolly
2024-02-20 13:33   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 21/39] mach-snapdragon: dynamic load addresses Caleb Connolly
2024-02-19  9:51   ` Neil Armstrong
2024-02-20 13:34   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 22/39] mach-snapdragon: generate fdtfile automatically Caleb Connolly
2024-02-20 13:42   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 23/39] mach-snapdragon: carve out no-map regions Caleb Connolly
2024-02-20 13:46   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 24/39] board: qcs404-evb: drop board code Caleb Connolly
2024-02-20 13:47   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 25/39] doc: board/qualcomm: document generic targets Caleb Connolly
2024-02-20 13:55   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 26/39] doc: board/qualcomm: link to APQ8016 TRM Caleb Connolly
2024-02-19  9:53   ` Neil Armstrong
2024-02-20 14:01   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 27/39] dt-bindings: import headers for SDM845 Caleb Connolly
2024-02-20 14:02   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 28/39] dts: sdm845: import supporting dtsi files Caleb Connolly
2024-02-20 14:03   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 29/39] dts: sdm845: replace with upstream DTS Caleb Connolly
2024-02-20 14:04   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 30/39] dt-bindings: import headers for MSM8916 Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 31/39] dts: msm8916: import PMIC dtsi files Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 32/39] dts: msm8916: replace with upstream DTS Caleb Connolly
2024-02-20 14:05   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 33/39] dt-bindings: import headers for MSM8996 Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 34/39] dts: msm8996: import PMIC dtsi files Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 35/39] dts: dragonboard820c: use correct bindings for clocks Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 36/39] dts: msm8996: replace with upstream DTS Caleb Connolly
2024-02-20 14:07   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 37/39] dt-bindings: import headers for qcs404 Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 38/39] dts: qcs404-evb: replace with upstream DT Caleb Connolly
2024-02-20 14:07   ` Sumit Garg
2024-02-15 20:52 ` [PATCH v4 39/39] MAINTAINERS: Qualcomm: add some missing paths Caleb Connolly
2024-02-20 14:08   ` Sumit Garg
2024-02-19  8:45 ` [PATCH v4 00/39] Qualcomm generic board support Sumit Garg

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=CAFA6WYP3gtcTpXXtuwg6ckpXFuaC9WMfBL9j38iVidd4EEKg+g@mail.gmail.com \
    --to=sumit.garg@linaro.org \
    --cc=caleb.connolly@linaro.org \
    --cc=dsankouski@gmail.com \
    --cc=jh80.chung@samsung.com \
    --cc=jorge.ramirez.ortiz@gmail.com \
    --cc=lukma@denx.de \
    --cc=marex@denx.de \
    --cc=neil.armstrong@linaro.org \
    --cc=peng.fan@nxp.com \
    --cc=rayagonda.kokatanur@broadcom.com \
    --cc=rfried.dev@gmail.com \
    --cc=seanga2@gmail.com \
    --cc=stephan@gerhold.net \
    --cc=u-boot@lists.denx.de \
    /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.