linux-2.6-microblaze.git
9 months agodt-bindings: pinctrl: qcom,sdx75-tlmm: restrict number of interrupts
Krzysztof Kozlowski [Fri, 8 Dec 2023 21:55:28 +0000 (22:55 +0100)]
dt-bindings: pinctrl: qcom,sdx75-tlmm: restrict number of interrupts

SDX75 TLMM pin controller comes with only one interrupt, so narrow
the number of interrupts previously defined in common TLMM bindings.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231208215534.195854-4-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom,sa8775p-tlmm: restrict number of interrupts
Krzysztof Kozlowski [Fri, 8 Dec 2023 21:55:27 +0000 (22:55 +0100)]
dt-bindings: pinctrl: qcom,sa8775p-tlmm: restrict number of interrupts

SA8775p TLMM pin controller comes with only one interrupt, so narrow
the number of interrupts previously defined in common TLMM bindings.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231208215534.195854-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom,qdu1000-tlmm: restrict number of interrupts
Krzysztof Kozlowski [Fri, 8 Dec 2023 21:55:26 +0000 (22:55 +0100)]
dt-bindings: pinctrl: qcom,qdu1000-tlmm: restrict number of interrupts

QDU1000 TLMM pin controller comes with only one interrupt, so narrow
the number of interrupts previously defined in common TLMM bindings.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231208215534.195854-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom: create common LPASS LPI schema
Krzysztof Kozlowski [Fri, 8 Dec 2023 21:55:25 +0000 (22:55 +0100)]
dt-bindings: pinctrl: qcom: create common LPASS LPI schema

Just like regular TLMM pin controllers in Qualcomm SoCs, the Low Power
Audio SubSystem (LPASS) Low Power Island (LPI) TLMM blocks share a lot
of properties, so common part can be moved to separate schema to reduce
code duplication and make reviewing easier.

Except the move of common part, this introduces effective changes:
1. To all LPASS LPI bindings: Reference pinmux-node.yaml in each pin
   muxing and configuration node, to bring definition of "function" and
   "pins" properties.

2. qcom,sc7280-lpass-lpi-pinctrl: Reference pinctrl.yaml in top leve.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231208215534.195854-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: qcom: sm4450: dd SM4450 pinctrl driver
Tengfei Fan [Tue, 12 Dec 2023 09:49:00 +0000 (17:49 +0800)]
pinctrl: qcom: sm4450: dd SM4450 pinctrl driver

Add pinctrl driver for TLMM block found in SM4450 SoC.
Can Guo helped out in reviewing the driver.

Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Tengfei Fan <quic_tengfan@quicinc.com>
Link: https://lore.kernel.org/r/20231212094900.12615-3-quic_tengfan@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom: Add SM4450 pinctrl
Tengfei Fan [Tue, 12 Dec 2023 09:48:59 +0000 (17:48 +0800)]
dt-bindings: pinctrl: qcom: Add SM4450 pinctrl

Add device tree binding Documentation details for Qualcomm SM4450
TLMM device.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Tengfei Fan <quic_tengfan@quicinc.com>
Link: https://lore.kernel.org/r/20231212094900.12615-2-quic_tengfan@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom,pmic-mpp: clean up example
Johan Hovold [Thu, 30 Nov 2023 17:28:34 +0000 (18:28 +0100)]
dt-bindings: pinctrl: qcom,pmic-mpp: clean up example

The Multi-Purpose Pin controller block is part of an SPMI PMIC (which in
turns sits on an SPMI bus) and uses a single value for the register
property that corresponds to its base address.

Clean up the example by adding a parent PMIC node with proper
'#address-cells' and '#size-cells' properties, dropping the incorrect
second register value, adding some newline separators and increasing the
indentation to four spaces.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231130172834.12653-1-johan+linaro@kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agoMerge tag 'intel-pinctrl-v6.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git...
Linus Walleij [Mon, 18 Dec 2023 22:42:42 +0000 (23:42 +0100)]
Merge tag 'intel-pinctrl-v6.8-1' of git://git./linux/kernel/git/pinctrl/intel into devel

intel-pinctrl for v6.8-1

* New agnostic driver to support Lunar Lake and newer platforms
* New driver for Intel Meteor Point-S (PCH for Meteor Lake-S)
* Update drivers to use new PM helpers
* Use RAII for locking in a few drivers (Raag, Andy)
* Reduce locking scope in some functions (Raag)
* Miscellaneous cleanups (Raag)

The following is an automated git shortlog grouped by driver:

alderlake:
 -  Switch to use Intel pin control PM ops

baytrail:
 -  Simplify code with cleanup helpers
 -  Move default strength assignment to a switch-case
 -  Factor out byt_gpio_force_input_mode()
 -  Fix types of config value in byt_pin_config_set()

broxton:
 -  Switch to use Intel pin control PM ops

cannonlake:
 -  Switch to use Intel pin control PM ops

cedarfork:
 -  Switch to use Intel pin control PM ops

denverton:
 -  Switch to use Intel pin control PM ops

elkhartlake:
 -  Switch to use Intel pin control PM ops

emmitsburg:
 -  Switch to use Intel pin control PM ops

geminilake:
 -  Switch to use Intel pin control PM ops

icelake:
 -  Switch to use Intel pin control PM ops

intel:
 -  Add Intel Meteor Point pin controller and GPIO support
 -  use the correct _PM_OPS() export macro
 -  Add a generic Intel pin control platform driver
 -  Revert "Unexport intel_pinctrl_probe()"
 -  allow independent COMPILE_TEST
 -  Refactor intel_pinctrl_get_soc_data()
 -  Move default strength assignment to a switch-case
 -  Make PM ops functions static
 -  Provide Intel pin control wide PM ops structure

jasperlake:
 -  Switch to use Intel pin control PM ops

lakefield:
 -  Switch to use Intel pin control PM ops

lewisburg:
 -  Switch to use Intel pin control PM ops

lynxpoint:
 -  Simplify code with cleanup helpers

meteorlake:
 -  Switch to use Intel pin control PM ops

sunrisepoint:
 -  Switch to use Intel pin control PM ops

tangier:
 -  simplify locking using cleanup helpers
 -  Move default strength assignment to a switch-case
 -  Enable 910 Ohm bias

tigerlake:
 -  Switch to use Intel pin control PM ops

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agoMerge tag 'samsung-pinctrl-6.8' of https://git.kernel.org/pub/scm/linux/kernel/git...
Linus Walleij [Mon, 18 Dec 2023 14:07:23 +0000 (15:07 +0100)]
Merge tag 'samsung-pinctrl-6.8' of https://git./linux/kernel/git/pinctrl/samsung into devel

Samsung pinctrl drivers changes for v6.8

1. New hardware: Add pin controllers for Samsung ExynosAutov920 and
   Google Tensor GS101.

2. Few DT bindings cleanups: add specific compatibles for each device
   using generic compatible as fallback.  This affects only DTS, no
   driver changes are needed.

3. Allow setting affinity on non wake-up external GPIO interrupts.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agoMerge tag 'renesas-pinctrl-for-v6.8-tag2' of git://git.kernel.org/pub/scm/linux/kerne...
Linus Walleij [Mon, 18 Dec 2023 14:06:18 +0000 (15:06 +0100)]
Merge tag 'renesas-pinctrl-for-v6.8-tag2' of git://git./linux/kernel/git/geert/renesas-drivers into devel

pinctrl: renesas: Updates for v6.8 (take two)

  - Add pinmux groups, power source, and input/output enable support for
    Ethernet pins on RZ/G2L SoCs,
  - Miscellaneous fixes and improvements.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: intel: Add Intel Meteor Point pin controller and GPIO support
Andy Shevchenko [Thu, 14 Dec 2023 15:46:53 +0000 (17:46 +0200)]
pinctrl: intel: Add Intel Meteor Point pin controller and GPIO support

This driver supports pinctrl/GPIO hardware found on Intel Meteor Point
(a Meteor Lake PCH) providing users a pinctrl and GPIO interfaces
including GPIO interrupts.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
9 months agopinctrl: renesas: rzg2l: Add input enable to the Ethernet pins
Claudiu Beznea [Thu, 7 Dec 2023 07:06:56 +0000 (09:06 +0200)]
pinctrl: renesas: rzg2l: Add input enable to the Ethernet pins

Some of the RZ/G3S Ethernet pins (P1_0, P7_0) can be configured with
input enable.  Enable this functionality for these pins.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231207070700.4156557-8-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agopinctrl: renesas: rzg2l: Add output enable support
Claudiu Beznea [Thu, 7 Dec 2023 07:06:55 +0000 (09:06 +0200)]
pinctrl: renesas: rzg2l: Add output enable support

Some of the Ethernet pins on RZ/G3S (but also valid for RZ/G2L) need to
have the direction of the IO buffer set as output for Ethernet to work
properly.  On RZ/G3S, these pins are P1_0/P7_0, P1_1/P7_1, and can have
the following Ethernet functions: TXC/TX_CLK or TX_CTL/TX_EN.

As the pins supporting output enable are SoC specific, and there is a
limited number of these pins (TXC/TX_CLK and/or TX_CTL/TX_EN), specify
output enable capable port limits in the platform-based configuration
data structure, to ensure proper validation.

The OEN support has been intantiated for RZ/G3S at the moment.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231207070700.4156557-7-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agopinctrl: renesas: rzg2l: Add support to select power source for Ethernet pins
Claudiu Beznea [Thu, 7 Dec 2023 07:06:54 +0000 (09:06 +0200)]
pinctrl: renesas: rzg2l: Add support to select power source for Ethernet pins

The GPIO controller available on RZ/G3S (but also on RZ/G2L) supports
setting the power source for Ethernet pins.  Based on the interface b/w
the Ethernet controller and the Ethernet PHY, and on board design, a
specific power source needs to be selected.  The GPIO controller
supports 1.8V, 2.5V, and 3.3V power source selection for the Ethernet
pins.  This can be selected though the ETHx_POC registers (x={0, 1}).

Adjust the driver to support this, and to do proper instantiation for
the RZ/G3S and RZ/G2L SoCs.  On RZ/G2L only the get operation has been
tested at the moment.

While at it, as the power registers on RZ/G2L support access sizes of 8
bits, and these registers on RZ/G3S support access sizes of 8/16/32
bits, replace writel()/readl() on these registers with writeb()/readb().
This should allow us to use the same code on both SoCs w/o any issues.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231207070700.4156557-6-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agopinctrl: renesas: rzg2l: Add pin configuration support for pinmux groups
Claudiu Beznea [Thu, 7 Dec 2023 07:06:53 +0000 (09:06 +0200)]
pinctrl: renesas: rzg2l: Add pin configuration support for pinmux groups

On RZ/G3S different Ethernet pins need to be configured with different
settings (e.g. power-source needs to be set, RGMII TXC and TX_CTL pins
need output-enable).  Adjust the driver to allow specifying pin
configuration for pinmux groups.  With this, DT settings like the
following are taken into account by the driver:

    eth0_pins: eth0 {
    tx_ctl {
    pinmux = <RZG2L_PORT_PINMUX(1, 1, 1)>;  /* ET0_TX_CTL */
    power-source = <1800>;
    output-enable;
    drive-strength-microamp = <5200>;
    };
    };

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231207070700.4156557-5-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agopinctrl: renesas: rzg2l: Move arg and index in the main function block
Claudiu Beznea [Thu, 7 Dec 2023 07:06:52 +0000 (09:06 +0200)]
pinctrl: renesas: rzg2l: Move arg and index in the main function block

Move arg and index in the main block of the function as they are used by
more than one case block of switch-case (3 out of 4 for arg, 2 out of 4
for index). In this way some lines of code are removed.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231207070700.4156557-4-claudiu.beznea.uj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
9 months agopinctrl: samsung: add exynosautov920 pinctrl
Jaewon Kim [Mon, 11 Dec 2023 11:41:45 +0000 (20:41 +0900)]
pinctrl: samsung: add exynosautov920 pinctrl

Add pinctrl data for ExynosAutov920 SoC.
It has a newly applied pinctrl register layer for ExynosAuto series.

Pinctrl data for ExynosAutoV920 SoC.
 - GPA0,GPA1 (10): External wake up interrupt
 - GPQ0 (2): SPMI (PMIC I/F)
 - GPB0,GPB1,GPB2,GPB3,GPB4,GPB5,GPB6 (47): I2S Audio
 - GPH0,GPH1,GPH2,GPH3,GPH4,GPH5,GPH6,GPH8 (49): PCIE, UFS, Ethernet
 - GPG0,GPG1,GPG2,GPG3,GPG4,GPG5 (29): General purpose
 - GPP0,GPP1,GPP2,GPP3,GPP4,GPP5,GPP6,GPP7,GPP8,GPP9,GPP10 (77): USI

Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
Link: https://lore.kernel.org/r/20231211114145.106255-3-jaewon02.kim@samsung.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agopinctrl: samsung: support ExynosAuto GPIO structure
Jaewon Kim [Mon, 11 Dec 2023 11:41:44 +0000 (20:41 +0900)]
pinctrl: samsung: support ExynosAuto GPIO structure

New ExynosAuto series GPIO have a different register structure.
In the existing Exynos series, EINT control register is enumerated after
a specific offset (e.g EXYNOS_GPIO_ECON_OFFSET, EXYNOS_GPIO_EMASK_OFFSET).
However, from ExynosAutov920 SoC, the register that controls EINT belongs
to each GPIO bank, and each GPIO bank has 0x1000 align.

This is a structure to protect the GPIO bank using S2MPU in VM environment,
and will only be applied in ExynosAuto series SoCs.

--------------------------------------------------------------
| Original Exynos            | ExynosAuto                    |
|------------------------------------------------------------|
| 0x0   GPIO_CON             | 0x0   GPIO_CON                |
| 0x4   GPIO_DAT             | 0x4   GPIO_DAT                |
| 0x8   GPIO_PUD             | 0x8   GPIO_PUD                |
| 0xc   GPIO_DRV             | 0xc   GPIO_DRV                |
| 0x10  GPIO_CONPDN          | 0x10  GPIO_CONPDN             |
| 0x14  GPIO_PUDPDN          | 0x14  GPIO_PUDPDN             |
|----------------------------| 0x18  EINT_CON (per_bank)     |
| ...                        | 0x1c  EINT_FLTCON0 (per_bank) |
| ...                        | 0x20  EINT_FLTCON1 (per_bank) |
| ...                        | 0x24  EINT_MASK (per_bank)    |
| ...                        | 0x28  EINT_PEND (per_bank)    |
|----------------------------|-------------------------------|
| 0x700 EINT_CON (global)    | ...                           |
| 0x800 EINT_FLTCON (global) | ...                           |
| 0x900 EINT_MASK (global)   | ...                           |
| 0xa00 EINT_FEND (global)   | ...                           |
--------------------------------------------------------------

Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
Link: https://lore.kernel.org/r/20231211114145.106255-2-jaewon02.kim@samsung.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agoMerge tag 'pef2256-framer' into devel
Linus Walleij [Tue, 12 Dec 2023 22:08:30 +0000 (23:08 +0100)]
Merge tag 'pef2256-framer' into devel

Immutable tag for the PEF2256 framer

9 months agoMAINTAINERS: Add the Lantiq PEF2256 driver entry
Herve Codina [Tue, 28 Nov 2023 13:25:34 +0000 (14:25 +0100)]
MAINTAINERS: Add the Lantiq PEF2256 driver entry

After contributing the driver, add myself as the maintainer for the
Lantiq PEF2256 driver.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231128132534.258459-6-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: Add support for the Lantic PEF2256 pinmux
Herve Codina [Tue, 28 Nov 2023 13:25:33 +0000 (14:25 +0100)]
pinctrl: Add support for the Lantic PEF2256 pinmux

The Lantiq PEF2256 is a framer and line interface component designed to
fulfill all required interfacing between an analog E1/T1/J1 line and the
digital PCM system highway/H.100 bus.

This kind of component can be found in old telecommunication system.
It was used to digital transmission of many simultaneous telephone calls
by time-division multiplexing. Also using HDLC protocol, WAN networks
can be reached through the framer.

This pinmux support handles the pin muxing part (pins RP(A..D) and pins
XP(A..D)) of the PEF2256.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231128132534.258459-5-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agonet: wan: framer: Add support for the Lantiq PEF2256 framer
Herve Codina [Tue, 28 Nov 2023 13:25:32 +0000 (14:25 +0100)]
net: wan: framer: Add support for the Lantiq PEF2256 framer

The Lantiq PEF2256 is a framer and line interface component designed to
fulfill all required interfacing between an analog E1/T1/J1 line and the
digital PCM system highway/H.100 bus.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20231128132534.258459-4-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer
Herve Codina [Tue, 28 Nov 2023 13:25:31 +0000 (14:25 +0100)]
dt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer

The Lantiq PEF2256 is a framer and line interface component designed to
fulfill all required interfacing between an analog E1/T1/J1 line and the
digital PCM system highway/H.100 bus.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231128132534.258459-3-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agonet: wan: Add framer framework support
Herve Codina [Tue, 28 Nov 2023 13:25:30 +0000 (14:25 +0100)]
net: wan: Add framer framework support

A framer is a component in charge of an E1/T1 line interface.
Connected usually to a TDM bus, it converts TDM frames to/from E1/T1
frames. It also provides information related to the E1/T1 line.

The framer framework provides a set of APIs for the framer drivers
(framer provider) to create/destroy a framer and APIs for the framer
users (framer consumer) to obtain a reference to the framer, and
use the framer.

This basic implementation provides a framer abstraction for:
 - power on/off the framer
 - get the framer status (line state)
 - be notified on framer status changes
 - get/set the framer configuration

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20231128132534.258459-2-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: samsung: Add gs101 SoC pinctrl configuration
Peter Griffin [Mon, 11 Dec 2023 16:23:24 +0000 (16:23 +0000)]
pinctrl: samsung: Add gs101 SoC pinctrl configuration

Add support for the pin-controller found on the gs101 SoC used in
Pixel 6 phones.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-10-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agopinctrl: core: Remove unused members from struct group_desc
Andy Shevchenko [Mon, 11 Dec 2023 18:58:06 +0000 (20:58 +0200)]
pinctrl: core: Remove unused members from struct group_desc

All drivers are converted to use embedded struct pingroup.
Remove unused members from struct group_desc.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-14-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: starfive: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:05 +0000 (20:58 +0200)]
pinctrl: starfive: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Reviewed-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-13-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: renesas: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:04 +0000 (20:58 +0200)]
pinctrl: renesas: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-12-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: mediatek: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:03 +0000 (20:58 +0200)]
pinctrl: mediatek: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-11-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: keembay: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:02 +0000 (20:58 +0200)]
pinctrl: keembay: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-10-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: ingenic: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:01 +0000 (20:58 +0200)]
pinctrl: ingenic: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Acked-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-9-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: imx: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:58:00 +0000 (20:58 +0200)]
pinctrl: imx: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-8-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: equilibrium: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:57:59 +0000 (20:57 +0200)]
pinctrl: equilibrium: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-7-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: bcm: Convert to use grp member
Andy Shevchenko [Mon, 11 Dec 2023 18:57:58 +0000 (20:57 +0200)]
pinctrl: bcm: Convert to use grp member

Convert drivers to use grp member embedded in struct group_desc,
because other members will be removed to avoid duplication and
desynchronisation of the generic pin group description.

Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-6-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: core: Embed struct pingroup into struct group_desc
Andy Shevchenko [Mon, 11 Dec 2023 18:57:57 +0000 (20:57 +0200)]
pinctrl: core: Embed struct pingroup into struct group_desc

struct group_desc is a particular version of the struct pingroup
with associated opaque data. Start switching pin control core and
drivers to use it explicitly.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-5-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: ingenic: Use C99 initializers in PINCTRL_PIN_GROUP()
Andy Shevchenko [Mon, 11 Dec 2023 18:57:56 +0000 (20:57 +0200)]
pinctrl: ingenic: Use C99 initializers in PINCTRL_PIN_GROUP()

For the better flexibility use C99 initializers in PINCTRL_PIN_GROUP().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: mediatek: Use C99 initializers in PINCTRL_PIN_GROUP()
Andy Shevchenko [Mon, 11 Dec 2023 18:57:55 +0000 (20:57 +0200)]
pinctrl: mediatek: Use C99 initializers in PINCTRL_PIN_GROUP()

For the better flexibility use C99 initializers in PINCTRL_PIN_GROUP().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: core: Add a convenient define PINCTRL_GROUP_DESC()
Andy Shevchenko [Mon, 11 Dec 2023 18:57:54 +0000 (20:57 +0200)]
pinctrl: core: Add a convenient define PINCTRL_GROUP_DESC()

Add PINCTRL_GROUP_DESC() macro for inline use.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231211190321.307330-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agoMerge tag 'gpio-remove-gpiochip_is_requested-for-v6.8-rc1' of git://git.kernel.org...
Linus Walleij [Mon, 11 Dec 2023 23:46:23 +0000 (00:46 +0100)]
Merge tag 'gpio-remove-gpiochip_is_requested-for-v6.8-rc1' of git://git./linux/kernel/git/brgl/linux into devel

gpio: remove gpiochip_is_requested()

- provide a safer alternative to gpiochip_is_requested()
- convert all existing users
- remove gpiochip_is_requested()

9 months agodt-bindings: pinctrl: samsung: correct ExynosAutov920 wake-up compatibles
Krzysztof Kozlowski [Sun, 10 Dec 2023 13:39:15 +0000 (14:39 +0100)]
dt-bindings: pinctrl: samsung: correct ExynosAutov920 wake-up compatibles

ExynosAutov920 SoC wake-up pin controller has different register layout
than Exynos7, thus it should not be marked as compatible.  Neither DTS
nor Linux driver was merged yet, so the change does not impact ABI.

Cc: Jaewon Kim <jaewon02.kim@samsung.com>
Fixes: 904140fa4553 ("dt-bindings: pinctrl: samsung: use Exynos7 fallbacks for newer wake-up controllers")
Link: https://lore.kernel.org/r/20231210133915.42112-1-krzysztof.kozlowski@linaro.org
Reviewed-by: Jaewon Kim <jaewon02.kim@samsung.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: pinctrl: samsung: add gs101-wakeup-eint compatible
Peter Griffin [Sat, 9 Dec 2023 23:30:53 +0000 (23:30 +0000)]
dt-bindings: pinctrl: samsung: add gs101-wakeup-eint compatible

gs101 is similar to newer Exynos SoCs like Exynos850 and ExynosAutov9
where more than one pin controller can do external wake-up interrupt.
So add a dedicated compatible for it.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231209233106.147416-8-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agodt-bindings: pinctrl: samsung: add google,gs101-pinctrl compatible
Peter Griffin [Sat, 9 Dec 2023 23:30:52 +0000 (23:30 +0000)]
dt-bindings: pinctrl: samsung: add google,gs101-pinctrl compatible

Add the "google,gs101-pinctrl" compatible to the dt-schema bindings
documentation.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231209233106.147416-7-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
9 months agogpiolib: remove gpiochip_is_requested()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:09 +0000 (10:35 +0100)]
gpiolib: remove gpiochip_is_requested()

We have no external users of gpiochip_is_requested(). Let's remove it
and replace its internal calls with direct testing of the REQUESTED flag.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agogpiolib: use gpiochip_dup_line_label() in for_each helpers
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:08 +0000 (10:35 +0100)]
gpiolib: use gpiochip_dup_line_label() in for_each helpers

Rework for_each_requested_gpio_in_range() to use the new helper to
retrieve a dynamically allocated copy of the descriptor label and free
it at the end of each iteration. We need to leverage the CLASS()'
destructor to make sure that the label is freed even when breaking out
of the loop.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: sppctl: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:07 +0000 (10:35 +0100)]
pinctrl: sppctl: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: baytrail: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:06 +0000 (10:35 +0100)]
pinctrl: baytrail: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: nomadik: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:05 +0000 (10:35 +0100)]
pinctrl: nomadik: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: abx500: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:04 +0000 (10:35 +0100)]
pinctrl: abx500: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agogpio: stmpe: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:03 +0000 (10:35 +0100)]
gpio: stmpe: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agogpio: wm8994: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:02 +0000 (10:35 +0100)]
gpio: wm8994: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agogpio: wm831x: use gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:01 +0000 (10:35 +0100)]
gpio: wm831x: use gpiochip_dup_line_label()

Use the new gpiochip_dup_line_label() helper to safely retrieve the
descriptor label.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agogpiolib: provide gpiochip_dup_line_label()
Bartosz Golaszewski [Mon, 4 Dec 2023 09:35:00 +0000 (10:35 +0100)]
gpiolib: provide gpiochip_dup_line_label()

gpiochip_is_requested() not only has a misleading name but it returns
a pointer to a string that is freed when the descriptor is released.

Provide a new helper meant to replace it, which returns a copy of the
label string instead.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: nuvoton: Convert to use struct pingroup and PINCTRL_PINGROUP()
Andy Shevchenko [Mon, 4 Dec 2023 15:56:36 +0000 (17:56 +0200)]
pinctrl: nuvoton: Convert to use struct pingroup and PINCTRL_PINGROUP()

The pin control header provides struct pingroup and PINCTRL_PINGROUP() macro.
Utilize them instead of open coded variants in the driver.

Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231204160033.1872569-6-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: keembay: Convert to use struct pingroup
Andy Shevchenko [Mon, 4 Dec 2023 15:56:35 +0000 (17:56 +0200)]
pinctrl: keembay: Convert to use struct pingroup

The pin control header provides struct pingroup.
Utilize it instead of open coded variants in the driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231204160033.1872569-5-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: equilibrium: Convert to use struct pingroup
Andy Shevchenko [Mon, 4 Dec 2023 15:56:34 +0000 (17:56 +0200)]
pinctrl: equilibrium: Convert to use struct pingroup

The pin control header provides struct pingroup.
Utilize it instead of open coded variants in the driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231204160033.1872569-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: core: Make pins const unsigned int pointer in struct group_desc
Andy Shevchenko [Mon, 4 Dec 2023 15:56:33 +0000 (17:56 +0200)]
pinctrl: core: Make pins const unsigned int pointer in struct group_desc

It's unclear why it's not a const unsigned int pointer from day 1.
Make the pins member const unsigned int pointer in struct group_desc.
Update necessary APIs.

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231204160033.1872569-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: renesas: Mark local variable with const in ->set_mux()
Andy Shevchenko [Mon, 4 Dec 2023 15:56:32 +0000 (17:56 +0200)]
pinctrl: renesas: Mark local variable with const in ->set_mux()

We are not going to change pins in the ->set_mux() callback. Mark
the local variable with a const qualifier. While at it, make it
also unsigned.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231204160033.1872569-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: qcom,sm8550-lpass-lpi: add X1E80100 LPASS LPI
Krzysztof Kozlowski [Wed, 29 Nov 2023 15:57:38 +0000 (16:57 +0100)]
dt-bindings: pinctrl: qcom,sm8550-lpass-lpi: add X1E80100 LPASS LPI

Document the Qualcomm X1E80100 SoC Low Power Audio SubSystem Low Power
Island (LPASS LPI) pin controller, compatible with earlier SM8550 model.

Cc: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20231129155738.167030-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: pinctrl-single: add ti,j7200-padconf compatible
Thomas Richard [Tue, 28 Nov 2023 15:35:00 +0000 (16:35 +0100)]
pinctrl: pinctrl-single: add ti,j7200-padconf compatible

On j7200, during suspend to ram pinctrl contexts are lost. To save and
restore contexts during suspend/resume, the flag PCS_CONTEXT_LOSS_OFF
shall be set.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Link: https://lore.kernel.org/r/20231128-j7200-pinctrl-s2r-v1-2-704e7dc24460@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agodt-bindings: pinctrl: pinctrl-single: add ti,j7200-padconf compatible
Thomas Richard [Tue, 28 Nov 2023 15:34:59 +0000 (16:34 +0100)]
dt-bindings: pinctrl: pinctrl-single: add ti,j7200-padconf compatible

Add the "ti,j7200-padconf" compatible to support suspend to ram on
j7200.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20231128-j7200-pinctrl-s2r-v1-1-704e7dc24460@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: qcom: fail to retrieve configuration from invalid pin groups
Richard Acayan [Tue, 28 Nov 2023 02:02:04 +0000 (21:02 -0500)]
pinctrl: qcom: fail to retrieve configuration from invalid pin groups

The pinconf-groups debugfs file dumps each valid configuration item of
all pin groups. Some platforms and devices may have pin groups which
cannot be accessed, according to commit 691bf5d5a7bf ("pinctrl: qcom:
Don't allow protected pins to be requested"). Fail for each
configuration item of an invalid pin group by checking the GPIO chip's
valid mask.

The validity of the pin group cannot be checked in the generic pinconf
dump (function "pinconf_generic_dump_one"), as it does not directly
interact with the gpiochip or the pinmux callbacks (which would give it
access to the request callback). Instead, an entry contains the ID and
name of the pingroup with no properties when all items fail.

Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Link: https://lore.kernel.org/r/20231128020202.728156-3-mailingradian@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: mediatek: Switch to use no-IRQ PM helpers
Andy Shevchenko [Wed, 22 Nov 2023 14:46:35 +0000 (16:46 +0200)]
pinctrl: mediatek: Switch to use no-IRQ PM helpers

Since pm.h provides a helper for system no-IRQ PM callbacks,
switch the driver to use it instead of open coded variant.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231122144744.2222207-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: Convert unsigned to unsigned int
Andy Shevchenko [Wed, 29 Nov 2023 16:06:46 +0000 (18:06 +0200)]
pinctrl: Convert unsigned to unsigned int

Simple type conversion with no functional change implied.
While at it, adjust indentation where it makes sense.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-24-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: imx: Use temporary variable to hold pins
Andy Shevchenko [Wed, 29 Nov 2023 16:06:28 +0000 (18:06 +0200)]
pinctrl: imx: Use temporary variable to hold pins

The pins are allocated from the heap, but in order to pass
them as constant object, we need to use non-constant pointer.
Achieve this by using a temporary variable.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-6-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: equilibrium: Use temporary variable to hold pins
Andy Shevchenko [Wed, 29 Nov 2023 16:06:27 +0000 (18:06 +0200)]
pinctrl: equilibrium: Use temporary variable to hold pins

The pins are allocated from the heap, but in order to pass
them as constant object, we need to use non-constant pointer.
Achieve this by using a temporary variable.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-5-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: equilibrium: Unshadow error code of of_property_count_u32_elems()
Andy Shevchenko [Wed, 29 Nov 2023 16:06:26 +0000 (18:06 +0200)]
pinctrl: equilibrium: Unshadow error code of of_property_count_u32_elems()

of_property_count_u32_elems() might return an error code in some cases.
It's naturally better to assign what it's returned to the err variable
and supply the real code to the upper layer(s). Besides that, it's a
common practice to avoid assignments for the data in cases when we know
that the error condition happened. Refactor the code accordingly.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: qcom: lpass-lpi: Remove unused member in struct lpi_pingroup
Andy Shevchenko [Wed, 29 Nov 2023 16:06:25 +0000 (18:06 +0200)]
pinctrl: qcom: lpass-lpi: Remove unused member in struct lpi_pingroup

The group is not used anywhere, remove it. And if needed, it should be
struct pingroup anyway.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: qcom: lpass-lpi: Replace kernel.h with what is being used
Andy Shevchenko [Wed, 29 Nov 2023 16:06:24 +0000 (18:06 +0200)]
pinctrl: qcom: lpass-lpi: Replace kernel.h with what is being used

Replace kernel.h with what exactly is being used, i.e. array_size.h.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20231129161459.1002323-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agoMerge tag 'renesas-pinctrl-for-v6.8-tag1' of git://git.kernel.org/pub/scm/linux/kerne...
Linus Walleij [Fri, 1 Dec 2023 13:21:45 +0000 (14:21 +0100)]
Merge tag 'renesas-pinctrl-for-v6.8-tag1' of git://git./linux/kernel/git/geert/renesas-drivers into devel

pinctrl: renesas: Updates for v6.8

  - Add support for interrupt affinity to the RZ/G2L GPIO driver,
  - Drop unneeded quotes in the RZ/A2 Pin controller DT bindings.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
9 months agopinctrl: samsung: add irq_set_affinity() for non wake up external gpio interrupt
Youngmin Nam [Sun, 26 Nov 2023 09:46:18 +0000 (18:46 +0900)]
pinctrl: samsung: add irq_set_affinity() for non wake up external gpio interrupt

To support affinity setting for non wake up external gpio interrupt, add
irq_set_affinity callback using irq number from pinctrl driver data.

Before this patch, changing the irq affinity of gpio interrupt is not
possible:

    # cat /proc/irq/418/smp_affinity
    3ff
    # echo 00f > /proc/irq/418/smp_affinity
    # cat /proc/irq/418/smp_affinity
    3ff
    # cat /proc/interrupts
               CPU0       CPU1       CPU2       CPU3    ...
    418:       3631          0          0          0    ...

With this patch applied, it's possible to change irq affinity of gpio
interrupt:

    # cat /proc/irq/418/smp_affinity
    3ff
    # echo 00f > /proc/irq/418/smp_affinity
    # cat /proc/irq/418/smp_affinity
    00f
    # cat /proc/interrupts
               CPU0       CPU1       CPU2       CPU3      ...
    418:       3893        201        181        188      ...

Signed-off-by: Youngmin Nam <youngmin.nam@samsung.com>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Tested-by: Sam Protsenko <semen.protsenko@linaro.org>
Link: https://lore.kernel.org/r/20231126094618.2545116-1-youngmin.nam@samsung.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
10 months agodt-bindings: pinctrl: renesas: Drop unneeded quotes
Rob Herring [Wed, 22 Nov 2023 22:44:08 +0000 (15:44 -0700)]
dt-bindings: pinctrl: renesas: Drop unneeded quotes

Drop unneeded quotes over simple string values to fix a soon to be
enabled yamllint warning:

  [error] string value is redundantly quoted with any quotes (quoted-strings)

Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231122224409.2808999-1-robh@kernel.org
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
10 months agopinctrl: renesas: rzg2l: Enhance driver to support interrupt affinity setting
Lad Prabhakar [Wed, 11 Oct 2023 19:59:23 +0000 (20:59 +0100)]
pinctrl: renesas: rzg2l: Enhance driver to support interrupt affinity setting

Implement irq_set_affinity callback so that we can set affinity
for GPIO IRQs.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231011195923.67404-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
10 months agopinctrl: don't include GPIOLIB private header
Bartosz Golaszewski [Wed, 15 Nov 2023 16:50:01 +0000 (17:50 +0100)]
pinctrl: don't include GPIOLIB private header

gpio_to_desc() is declared in linux/gpio.h so there's no need to include
gpiolib.h directly.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231115165001.2932350-4-brgl@bgdev.pl
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: stop using gpiod_to_chip()
Bartosz Golaszewski [Wed, 15 Nov 2023 16:50:00 +0000 (17:50 +0100)]
pinctrl: stop using gpiod_to_chip()

Don't dereference struct gpio_chip directly, use dedicated gpio_device
getters instead.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231115165001.2932350-3-brgl@bgdev.pl
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agoMerge tag 'gpio-device-get-label-for-v6.8-rc1' of git://git.kernel.org/pub/scm/linux...
Linus Walleij [Fri, 24 Nov 2023 23:27:25 +0000 (00:27 +0100)]
Merge tag 'gpio-device-get-label-for-v6.8-rc1' of git://git./linux/kernel/git/brgl/linux into devel

gpiolib: provide gpio_device_get_label()

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agogpiolib: provide gpio_device_get_label()
Bartosz Golaszewski [Wed, 15 Nov 2023 16:49:59 +0000 (17:49 +0100)]
gpiolib: provide gpio_device_get_label()

Provide a getter for the GPIO device label string so that users don't
have to dereference struct gpio_chip directly.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
10 months agopinctrl: baytrail: Simplify code with cleanup helpers
Andy Shevchenko [Wed, 22 Nov 2023 17:50:39 +0000 (19:50 +0200)]
pinctrl: baytrail: Simplify code with cleanup helpers

Use macros defined in linux/cleanup.h to automate resource lifetime
control in the driver.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
10 months agopinctrl: baytrail: Move default strength assignment to a switch-case
Andy Shevchenko [Wed, 22 Nov 2023 17:50:38 +0000 (19:50 +0200)]
pinctrl: baytrail: Move default strength assignment to a switch-case

When ->pin_config_set() is called from the GPIO library (assumed
GpioIo() ACPI resource), the argument can be 1, when, for example,
PullDefault is provided. In such case we supply sane default in
the driver. Move that default assingment to a switch-case, so
it will be consolidated in one place.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
10 months agopinctrl: baytrail: Factor out byt_gpio_force_input_mode()
Andy Shevchenko [Wed, 22 Nov 2023 17:50:37 +0000 (19:50 +0200)]
pinctrl: baytrail: Factor out byt_gpio_force_input_mode()

There is a piece of code that it being used at least twice.
Factor it out.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
10 months agopinctrl: baytrail: Fix types of config value in byt_pin_config_set()
Andy Shevchenko [Wed, 22 Nov 2023 17:50:36 +0000 (19:50 +0200)]
pinctrl: baytrail: Fix types of config value in byt_pin_config_set()

When unpacked, the config value is split to two of different types.
Fix the types accordingly.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: lynxpoint: Simplify code with cleanup helpers
Andy Shevchenko [Wed, 22 Nov 2023 17:54:44 +0000 (19:54 +0200)]
pinctrl: lynxpoint: Simplify code with cleanup helpers

Use macros defined in linux/cleanup.h to automate resource lifetime
control in the driver.

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: tangier: simplify locking using cleanup helpers
Raag Jadav [Thu, 23 Nov 2023 14:02:12 +0000 (19:32 +0530)]
pinctrl: tangier: simplify locking using cleanup helpers

Use lock guards from cleanup.h to simplify locking.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: as3722: Use devm_gpiochip_add_data() to simplify remove path
Andrew Davis [Thu, 16 Nov 2023 22:30:45 +0000 (16:30 -0600)]
pinctrl: as3722: Use devm_gpiochip_add_data() to simplify remove path

Use devm version of gpiochip add function to handle removal for us.

Signed-off-by: Andrew Davis <afd@ti.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20231116223045.274211-1-afd@ti.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: qcom: Add X1E80100 pinctrl driver
Rajendra Nayak [Fri, 17 Nov 2023 09:39:21 +0000 (15:09 +0530)]
pinctrl: qcom: Add X1E80100 pinctrl driver

Add initial pinctrl driver to support pin configuration with pinctrl
framework for X1E80100 SoC.

Co-developed-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
Co-developed-by: Sibi Sankar <quic_sibis@quicinc.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231117093921.31968-3-quic_sibis@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agodt-bindings: pinctrl: qcom: Add X1E80100 pinctrl
Rajendra Nayak [Fri, 17 Nov 2023 09:39:20 +0000 (15:09 +0530)]
dt-bindings: pinctrl: qcom: Add X1E80100 pinctrl

Add device tree binding Documentation details for Qualcomm X1E80100 TLMM
device.

Signed-off-by: Rajendra Nayak <quic_rjendra@quicinc.com>
Co-developed-by: Sibi Sankar <quic_sibis@quicinc.com>
Signed-off-by: Sibi Sankar <quic_sibis@quicinc.com>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20231117093921.31968-2-quic_sibis@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: npcm7xx: prevent glitch when setting the GPIO to output high
Tomer Maimon [Wed, 15 Nov 2023 21:12:09 +0000 (13:12 -0800)]
pinctrl: npcm7xx: prevent glitch when setting the GPIO to output high

Enable GPIO output after setting the output value to prevent a glitch
when pinctrl driver sets gpio pin to output high and the pin is in
the default state (high->low->high).

Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
Signed-off-by: William A. Kennington III <william@wkennington.com>
Link: https://lore.kernel.org/r/20231115211209.1683449-1-william@wkennington.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: stm32: return errors from stm32_gpio_direction_output()
Sergey Shtylyov [Wed, 15 Nov 2023 20:34:53 +0000 (23:34 +0300)]
pinctrl: stm32: return errors from stm32_gpio_direction_output()

In the STMicroelectronics STM32 driver, stm32_gpio_direction_output()
ignores the result of pinctrl_gpio_direction_output() for no good reason.
Let's propagate errors from pinctrl_gpio_direction_output() upstream...

Found by Linux Verification Center (linuxtesting.org) with the Svace static
analysis tool.

Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Link: https://lore.kernel.org/r/5ce023a8-db0c-13a9-be42-09e3348ca44d@omp.ru
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agodt-bindings: pinctrl: samsung: use Exynos7 fallbacks for newer wake-up controllers
Krzysztof Kozlowski [Wed, 22 Nov 2023 20:04:05 +0000 (21:04 +0100)]
dt-bindings: pinctrl: samsung: use Exynos7 fallbacks for newer wake-up controllers

Older ARM8 SoCs like Exynos5433, Exynos7 and Exynos7885 have the pin
controller with wake-up interrupts muxed, thus the wake-up interrupt
controller device node has interrupts property, while its pin banks
might not (because they are muxed by the wake-up controller).

Newer SoCs like Exynos850 and ExynosAutov9 do not used muxed wake-up
interrupts:
1. Wake-up interrupt controller device node has no interrupts,
2. Its pin banks have interrupts (since there is no muxing).

Their programming interface is however still compatible with Exynos7,
thus change the bindings to express this: retain compatibility with
Exynos7 and add new compatibility fallback of Exynos850 in newer
designs.

No driver changes are needed.  This is necessary only to properly
describe DTS.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Acked-by: Jaewon Kim <jaewon02.kim@samsung.com>
Link: https://lore.kernel.org/r/20231122200407.423264-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
10 months agopinctrl: intel: use the correct _PM_OPS() export macro
Raag Jadav [Wed, 22 Nov 2023 10:54:01 +0000 (16:24 +0530)]
pinctrl: intel: use the correct _PM_OPS() export macro

Since we don't have runtime PM handles here, we should be using
EXPORT_NS_GPL_DEV_SLEEP_PM_OPS() macro, so that the compiler can
discard it in case CONFIG_PM_SLEEP=n.

Fixes: b10a74b5c0c1 ("pinctrl: intel: Provide Intel pin control wide PM ops structure")
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agoMAINTAINERS: Remove snawrocki's git tree
Petr Vorel [Wed, 8 Nov 2023 08:56:30 +0000 (09:56 +0100)]
MAINTAINERS: Remove snawrocki's git tree

There is already krzk/linux.git listed, which is currently used.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Link: https://lore.kernel.org/r/20231108085630.7767-1-pvorel@suse.cz
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
10 months agodt-bindings: pinctrl: samsung: add exynosautov920
Jaewon Kim [Wed, 15 Nov 2023 09:56:02 +0000 (18:56 +0900)]
dt-bindings: pinctrl: samsung: add exynosautov920

Add compatible string for exynosautov920 pin controller.

Signed-off-by: Jaewon Kim <jaewon02.kim@samsung.com>
Link: https://lore.kernel.org/r/20231115095609.39883-7-jaewon02.kim@samsung.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
10 months agodt-bindings: pinctrl: samsung: add specific compatibles for existing SoC
Krzysztof Kozlowski [Wed, 8 Nov 2023 10:43:31 +0000 (11:43 +0100)]
dt-bindings: pinctrl: samsung: add specific compatibles for existing SoC

Samsung Exynos SoC reuses several devices from older designs, thus
historically we kept the old (block's) compatible only.  This works fine
and there is no bug here, however guidelines expressed in
Documentation/devicetree/bindings/writing-bindings.rst state that:
1. Compatibles should be specific.
2. We should add new compatibles in case of bugs or features.

Add compatibles specific to each SoC in front of all old-SoC-like
compatibles.

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20231108104343.24192-6-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
10 months agopinctrl: tps6594: Add driver for TPS6594 pinctrl and GPIOs
Esteban Blanc [Wed, 8 Nov 2023 10:41:24 +0000 (11:41 +0100)]
pinctrl: tps6594: Add driver for TPS6594 pinctrl and GPIOs

TI TPS6594 PMIC has 11 GPIOs which can be used
for different functions.

This patch adds a pinctrl and GPIO drivers in
order to use those functions.

Signed-off-by: Esteban Blanc <eblanc@baylibre.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20231108104124.2818275-1-eblanc@baylibre.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: intel: Add a generic Intel pin control platform driver
Andy Shevchenko [Mon, 13 Nov 2023 12:28:48 +0000 (14:28 +0200)]
pinctrl: intel: Add a generic Intel pin control platform driver

New generations of Intel platforms will provide better description
of the pin control devices in the ACPI tables. Hence, we may provide
a generic pin control platform driver to cover all of them. Currently
the following Intel SoCs / platforms require this to be functional:
- Lunar Lake

Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: intel: Revert "Unexport intel_pinctrl_probe()"
Andy Shevchenko [Mon, 13 Nov 2023 12:28:47 +0000 (14:28 +0200)]
pinctrl: intel: Revert "Unexport intel_pinctrl_probe()"

In order to prepare for a new coming driver export the original
intel_pinctrl_probe() again.

This reverts commit 0dd519e3784b13befa1cdfeff847a0885b06650f.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: qcom: lpass-lpi: allow slew rate bit in main pin config register
Krzysztof Kozlowski [Fri, 13 Oct 2023 14:59:35 +0000 (16:59 +0200)]
pinctrl: qcom: lpass-lpi: allow slew rate bit in main pin config register

Existing Qualcomm SoCs have the LPASS pin controller slew rate control
in separate register, however this will change with upcoming Qualcomm
SoCs.  The slew rate will be part of the main register for pin
configuration, thus second device IO address space is not needed.

Prepare for supporting new SoCs by adding flag customizing the driver
behavior for slew rate.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20231013145935.220945-3-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: qcom: lpass-lpi: split slew rate set to separate function
Krzysztof Kozlowski [Fri, 13 Oct 2023 14:59:34 +0000 (16:59 +0200)]
pinctrl: qcom: lpass-lpi: split slew rate set to separate function

Setting slew rate for each pin will grow with upcoming Qualcomm SoCs,
so split the code responsible for this into separate function for easier
readability and maintenance.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20231013145935.220945-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: intel: allow independent COMPILE_TEST
Raag Jadav [Mon, 13 Nov 2023 12:55:34 +0000 (18:25 +0530)]
pinctrl: intel: allow independent COMPILE_TEST

Now that we have completed the transition to standard ACPI helpers for the
entire Intel pinctrl tree, we can detach COMPILE_TEST from ACPI dependency.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 months agopinctrl: qcom: Introduce the SM8650 Top Level Mode Multiplexer driver
Neil Armstrong [Mon, 6 Nov 2023 08:32:32 +0000 (09:32 +0100)]
pinctrl: qcom: Introduce the SM8650 Top Level Mode Multiplexer driver

Add Top Level Mode Multiplexer (pinctrl) support for the SM8650 platform.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231106-topic-sm8650-upstream-tlmm-v3-3-0e179c368933@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
10 months agopinctrl: qcom: handle intr_target_reg wakeup_present/enable bits
Neil Armstrong [Mon, 6 Nov 2023 08:32:31 +0000 (09:32 +0100)]
pinctrl: qcom: handle intr_target_reg wakeup_present/enable bits

New platforms uses a new set of bits to control the wakeirq
delivery to the PDC block.

The intr_wakeup_present_bit indicates if the GPIO supports
wakeirq and intr_wakeup_enable_bit enables wakeirq delivery
to the PDC block.

While the name seems to imply this only enables wakeup events,
it is required to allow interrupts events to the PDC block.

Enable this bit in the irq resource request/free if:
- gpio is in wakeirq map
- has the intr_wakeup_present_bit
- the intr_wakeup_enable_bit is set

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20231106-topic-sm8650-upstream-tlmm-v3-2-0e179c368933@linaro.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>