projects/linux·commit 6ba3d706

Merge tag 'pinctrl-v5.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

6ba3d706 · Linus Torvalds <[email protected]> · 2020-01-29 09:51:36 -08:00

Pull pin control updates from Linus Walleij:
 "This is the bulk of pin control changes, nothing too exciting about
  this.

  Some changes hit arch/sh and arch/arm but are well isolated and
  acknowledged by the respective arch maintainers.

  Core changes:

   - Dropped the chained IRQ setup callback into GPIOLIB as we got rid
     of the last users of that in this changeset.

  New drivers:

   - New driver for Ingenic X1830.

   - New driver for Freescale i.MX8MP.

  Driver enhancements:

   - Fix all remaining Intel drivers to pass their IRQ chips along with
     the GPIO chips.

   - Intel Baytrail allocates its irqchip dynamically.

   - Intel Lynxpoint is thoroughly rewritten and modernized.

   - Aspeed AST2600 pin muxing and configuration is much improved.

   - Qualcomm SC7180 functions are updated and wakeup interrupt map is
     provided.

   - A whole slew of Renesas SH-PFC cleanups and improvements.

   - Fix up the Intel DT bindings to use the generic YAML DT bindings
     schema (a first user of this)"

* tag 'pinctrl-v5.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (99 commits)
  pinctrl: madera: Remove extra blank line
  pinctrl: qcom: Don't lock around irq_set_irq_wake()
  pinctrl: mvebu: armada-37xx: use use platform api
  gpio: Drop the chained IRQ handler assign function
  pinctrl: freescale: Add i.MX8MP pinctrl driver support
  dt-bindings: imx: Add pinctrl binding doc for i.MX8MP
  pinctrl: tigerlake: Tiger Lake uses _HID enumeration
  pinctrl: sunrisepoint: Add Coffee Lake-S ACPI ID
  pinctrl: iproc: Use platform_get_irq_optional() to avoid error message
  pinctrl: dt-bindings: Fix some errors in the lgm and pinmux schema
  pinctrl: intel: Pass irqchip when adding gpiochip
  pinctrl: intel: Add GPIO <-> pin mapping ranges via callback
  pinctrl: baytrail: Replace WARN with dev_info_once when setting direct-irq pin to output
  pinctrl: baytrail: Do not clear IRQ flags on direct-irq enabled pins
  pinctrl: sunrisepoint: Add missing Interrupt Status register offset
  pinctrl: sh-pfc: Split R-Car H3 support in two independent drivers
  pinctrl: artpec6: fix __iomem on reg in set
  pinctrl: ingenic: Use devm_platform_ioremap_resource()
  pinctrl: ingenic: Factorize irq_set_type function
  pinctrl: ingenic: Remove duplicated ingenic_chip_info structures
  ...
Commit
6ba3d7066c71d2103da255df19eb613d299bab15
Parents
fa889d85 · 122ce22c

Merge commit. Changes below are compared with the first parent: fa889d85.

Changes

71 files changed · +3293 −1724

FileStatusAddDelContent
Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yamlmodified+5−4View file
Documentation/devicetree/bindings/pinctrl/fsl,imx8mp-pinctrl.yamladded+69−0View file
Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txtmodified+5−3View file
Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml → Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yamlrenamed+15−56View file
Documentation/devicetree/bindings/pinctrl/pinmux-node.yamlmodified+1−1View file
Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txtmodified+3−2View file
Documentation/driver-api/gpio/driver.rstmodified+0−5View file
MAINTAINERSmodified+0−1View file
arch/arm/mach-u300/core.cmodified+1−1View file
arch/sh/include/cpu-sh2a/cpu/sh7264.hmodified+0−6View file
arch/sh/include/cpu-sh2a/cpu/sh7269.hmodified+9−8View file
drivers/gpio/Kconfigmodified+0−8View file
drivers/gpio/Makefilemodified+0−1View file
drivers/gpio/gpio-lynxpoint.cdeleted+0−471View before deletion
drivers/gpio/gpio-mt7621.cmodified+1−2View file
drivers/gpio/gpio-xgs-iproc.cmodified+1−2View file
drivers/gpio/gpiolib.cmodified+1−24View file
drivers/pinctrl/actions/pinctrl-s700.cmodified+0−1View file
drivers/pinctrl/aspeed/pinctrl-aspeed-g4.cmodified+90−80View file
drivers/pinctrl/aspeed/pinctrl-aspeed-g5.cmodified+111−101View file
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.cmodified+386−1View file
drivers/pinctrl/aspeed/pinctrl-aspeed.cmodified+11−39View file
drivers/pinctrl/aspeed/pinctrl-aspeed.hmodified+36−2View file
drivers/pinctrl/aspeed/pinmux-aspeed.hmodified+1−0View file
drivers/pinctrl/bcm/pinctrl-iproc-gpio.cmodified+8−2View file
drivers/pinctrl/cirrus/pinctrl-madera-core.cmodified+0−1View file
drivers/pinctrl/core.cmodified+16−25View file
drivers/pinctrl/core.hmodified+0−4View file
drivers/pinctrl/devicetree.cmodified+2−2View file
drivers/pinctrl/freescale/Kconfigmodified+7−0View file
drivers/pinctrl/freescale/Makefilemodified+1−0View file
drivers/pinctrl/freescale/pinctrl-imx8mp.cadded+345−0View file
drivers/pinctrl/intel/Kconfigmodified+13−0View file
drivers/pinctrl/intel/Makefilemodified+1−0View file
drivers/pinctrl/intel/pinctrl-baytrail.cmodified+150−161View file
drivers/pinctrl/intel/pinctrl-cherryview.cmodified+4−1View file
drivers/pinctrl/intel/pinctrl-intel.cmodified+40−61View file
drivers/pinctrl/intel/pinctrl-intel.hmodified+44−0View file
drivers/pinctrl/intel/pinctrl-lynxpoint.cadded+975−0View file
drivers/pinctrl/intel/pinctrl-sunrisepoint.cmodified+1−0View file
drivers/pinctrl/intel/pinctrl-tigerlake.cmodified+250−297View file
drivers/pinctrl/mediatek/pinctrl-mtk-mt2712.hmodified+1−1View file
drivers/pinctrl/meson/pinctrl-meson-axg-pmx.hmodified+1−1View file
drivers/pinctrl/meson/pinctrl-meson8b.cmodified+6−1View file
drivers/pinctrl/mvebu/pinctrl-armada-37xx.cmodified+11−5View file
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.cmodified+1−1View file
drivers/pinctrl/pinctrl-artpec6.cmodified+1−1View file
drivers/pinctrl/pinctrl-ingenic.cmodified+442−195View file
drivers/pinctrl/pinctrl-rza1.cmodified+2−2View file
drivers/pinctrl/qcom/pinctrl-msm.cmodified+0−5View file
drivers/pinctrl/qcom/pinctrl-msm8976.cmodified+1−1View file
drivers/pinctrl/qcom/pinctrl-sc7180.cmodified+58−20View file
drivers/pinctrl/qcom/pinctrl-ssbi-gpio.cmodified+1−1View file
drivers/pinctrl/qcom/pinctrl-ssbi-mpp.cmodified+1−1View file
drivers/pinctrl/samsung/Kconfigmodified+10−6View file
drivers/pinctrl/sh-pfc/Kconfigmodified+8−4View file
drivers/pinctrl/sh-pfc/Makefilemodified+2−2View file
drivers/pinctrl/sh-pfc/core.cmodified+44−13View file
drivers/pinctrl/sh-pfc/gpio.cmodified+5−6View file
drivers/pinctrl/sh-pfc/pfc-r8a7778.cmodified+2−2View file
drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c → drivers/pinctrl/sh-pfc/pfc-r8a77950.crenamed+13−13View file
drivers/pinctrl/sh-pfc/pfc-r8a7795.c → drivers/pinctrl/sh-pfc/pfc-r8a77951.crenamed+13−26View file
drivers/pinctrl/sh-pfc/pfc-r8a77965.cmodified+3−3View file
drivers/pinctrl/sh-pfc/pfc-sh7264.cmodified+16−17View file
drivers/pinctrl/sh-pfc/pfc-sh7269.cmodified+27−12View file
drivers/pinctrl/sh-pfc/sh_pfc.hmodified+2−2View file
drivers/pinctrl/stm32/pinctrl-stm32.hmodified+1−1View file
drivers/pinctrl/sunxi/pinctrl-sun50i-h5.cmodified+11−2View file
drivers/pinctrl/tegra/pinctrl-tegra.cmodified+2−2View file
include/linux/gpio/driver.hmodified+0−5View file
include/linux/pinctrl/machine.hmodified+5−0View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
index 064b7df..3749fa2 100644
--- a/Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
@@ -54,8 +54,9 @@ patternProperties:
TACH10, TACH11, TACH12, TACH13, TACH14, TACH15, TACH2, TACH3,
TACH4, TACH5, TACH6, TACH7, TACH8, TACH9, THRU0, THRU1, THRU2,
THRU3, TXD1, TXD2, TXD3, TXD4, UART10, UART11, UART12, UART13,
- UART6, UART7, UART8, UART9, VB, VGAHS, VGAVS, WDTRST1, WDTRST2,
- WDTRST3, WDTRST4, ]
+ UART6, UART7, UART8, UART9, USBAD, USBADP, USB2AH, USB2AHP,
+ USB2BD, USB2BH, VB, VGAHS, VGAVS, WDTRST1, WDTRST2, WDTRST3,
+ WDTRST4, ]
groups:
allOf:
- $ref: "/schemas/types.yaml#/definitions/string"
@@ -85,8 +86,8 @@ patternProperties:
TACH10, TACH11, TACH12, TACH13, TACH14, TACH15, TACH2, TACH3,
TACH4, TACH5, TACH6, TACH7, TACH8, TACH9, THRU0, THRU1, THRU2,
THRU3, TXD1, TXD2, TXD3, TXD4, UART10, UART11, UART12G0,
- UART12G1, UART13G0, UART13G1, UART6, UART7, UART8, UART9, VB,
- VGAHS, VGAVS, WDTRST1, WDTRST2, WDTRST3, WDTRST4, ]
+ UART12G1, UART13G0, UART13G1, UART6, UART7, UART8, UART9, USBA,
+ USBB, VB, VGAHS, VGAVS, WDTRST1, WDTRST2, WDTRST3, WDTRST4, ]
required:
- compatible

Documentation/devicetree/bindings/pinctrl/fsl,imx8mp-pinctrl.yaml

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx8mp-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/fsl,imx8mp-pinctrl.yaml
new file mode 100644
index 0000000..2e31e12
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx8mp-pinctrl.yaml
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/fsl,imx8mp-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale IMX8MP IOMUX Controller
+
+maintainers:
+ - Anson Huang <[email protected]>
+
+description:
+ Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
+ for common binding part and usage.
+
+properties:
+ compatible:
+ const: fsl,imx8mp-iomuxc
+
+ reg:
+ maxItems: 1
+
+# Client device subnode's properties
+patternProperties:
+ 'grp$':
+ type: object
+ description:
+ Pinctrl node's client devices use subnodes for desired pin configuration.
+ Client device subnodes use below standard properties.
+
+ properties:
+ fsl,pins:
+ allOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32-array
+ description:
+ each entry consists of 6 integers and represents the mux and config
+ setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
+ mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
+ be found in <arch/arm64/boot/dts/freescale/imx8mp-pinfunc.h>. The last
+ integer CONFIG is the pad setting value like pull-up on this pin. Please
+ refer to i.MX8M Plus Reference Manual for detailed CONFIG settings.
+
+ required:
+ - fsl,pins
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ # Pinmux controller node
+ - |
+ iomuxc: pinctrl@30330000 {
+ compatible = "fsl,imx8mp-iomuxc";
+ reg = <0x30330000 0x10000>;
+
+ pinctrl_uart2: uart2grp {
+ fsl,pins = <
+ 0x228 0x488 0x5F0 0x0 0x6 0x49
+ 0x228 0x488 0x000 0x0 0x0 0x49
+ >;
+ };
+ };
+
+...

Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt
index 0014d98..d9b2100 100644
--- a/Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/ingenic,pinctrl.txt
@@ -10,9 +10,9 @@ GPIO port configuration registers and it is typical to refer to pins using the
naming scheme "PxN" where x is a character identifying the GPIO port with
which the pin is associated and N is an integer from 0 to 31 identifying the
pin within that GPIO port. For example PA0 is the first pin in GPIO port A, and
-PB31 is the last pin in GPIO port B. The jz4740 and the x1000 contains 4 GPIO
-ports, PA to PD, for a total of 128 pins. The jz4760, the jz4770 and the jz4780
-contains 6 GPIO ports, PA to PF, for a total of 192 pins.
+PB31 is the last pin in GPIO port B. The jz4740, the x1000 and the x1830
+contains 4 GPIO ports, PA to PD, for a total of 128 pins. The jz4760, the
+jz4770 and the jz4780 contains 6 GPIO ports, PA to PF, for a total of 192 pins.
Required properties:
@@ -28,6 +28,7 @@ Required properties:
- "ingenic,x1000-pinctrl"
- "ingenic,x1000e-pinctrl"
- "ingenic,x1500-pinctrl"
+ - "ingenic,x1830-pinctrl"
- reg: Address range of the pinctrl registers.
@@ -40,6 +41,7 @@ Required properties for sub-nodes (GPIO chips):
- "ingenic,jz4770-gpio"
- "ingenic,jz4780-gpio"
- "ingenic,x1000-gpio"
+ - "ingenic,x1830-gpio"
- reg: The GPIO bank number.
- interrupt-controller: Marks the device node as an interrupt controller.
- interrupts: Interrupt specifier for the controllers interrupt.

Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
similarity index 61%
rename from Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
rename to Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
index 240d429..cd2b436 100644
--- a/Documentation/devicetree/bindings/pinctrl/intel,lgm-pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/intel,lgm-io.yaml
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
-$id: http://devicetree.org/schemas/bindings/pinctrl/intel,lgm-pinctrl.yaml#
+$id: http://devicetree.org/schemas/pinctrl/intel,lgm-io.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
@@ -13,11 +13,6 @@ description: |
Pinmux & GPIO controller controls pin multiplexing & configuration including
GPIO function selection & GPIO attributes configuration.
- Please refer to [1] for details of the common pinctrl bindings used by the
- client devices.
-
- [1] Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
properties:
compatible:
const: intel,lgm-io
@@ -29,60 +24,24 @@ properties:
patternProperties:
'-pins$':
type: object
+ allOf:
+ - $ref: pincfg-node.yaml#
+ - $ref: pinmux-node.yaml#
description:
Pinctrl node's client devices use subnodes for desired pin configuration.
Client device subnodes use below standard properties.
properties:
- function:
- $ref: /schemas/types.yaml#/definitions/string
- description:
- A string containing the name of the function to mux to the group.
-
- groups:
- $ref: /schemas/types.yaml#/definitions/string-array
- description:
- An array of strings identifying the list of groups.
-
- pins:
- $ref: /schemas/types.yaml#/definitions/uint32-array
- description:
- List of pins to select with this function.
-
- pinmux:
- description: The applicable mux group.
- allOf:
- - $ref: "/schemas/types.yaml#/definitions/uint32-array"
-
- bias-pull-up:
- type: boolean
-
- bias-pull-down:
- type: boolean
-
- drive-strength:
- description: |
- Selects the drive strength for the specified pins in mA.
- 0: 2 mA
- 1: 4 mA
- 2: 8 mA
- 3: 12 mA
- allOf:
- - $ref: /schemas/types.yaml#/definitions/uint32
- - enum: [0, 1, 2, 3]
-
- slew-rate:
- type: boolean
- description: |
- Sets slew rate for specified pins.
- 0: slow slew
- 1: fast slew
-
- drive-open-drain:
- type: boolean
-
- output-enable:
- type: boolean
+ function: true
+ groups: true
+ pins: true
+ pinmux: true
+ bias-pull-up: true
+ bias-pull-down: true
+ drive-strength: true
+ slew-rate: true
+ drive-open-drain: true
+ output-enable: true
required:
- function
@@ -100,7 +59,7 @@ examples:
# Pinmux controller node
- |
pinctrl: pinctrl@e2880000 {
- compatible = "intel,lgm-pinctrl";
+ compatible = "intel,lgm-io";
reg = <0xe2880000 0x100000>;
uart0-pins {

Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml b/Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml
index 777623a..732d907 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml
@@ -114,7 +114,7 @@ properties:
specific binding for the hardware defines whether the entries are integers
or strings, and their meaning.
- group:
+ groups:
$ref: /schemas/types.yaml#/definitions/string-array
description:
the group to apply the properties to, if the driver supports

Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txt

View file
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txt
index b5767ee..6ffeac9 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,sc7180-pinctrl.txt
@@ -125,8 +125,9 @@ to specify in a pin configuration subnode:
mi2s_1, mi2s_2, mss_lte, m_voc, pa_indicator, phase_flag,
PLL_BIST, pll_bypassnl, pll_reset, prng_rosc, qdss,
qdss_cti, qlink_enable, qlink_request, qspi_clk, qspi_cs,
- qspi_data, qup00, qup01, qup02, qup03, qup04, qup05,
- qup10, qup11, qup12, qup13, qup14, qup15, sdc1_tb,
+ qspi_data, qup00, qup01, qup02_i2c, qup02_uart, qup03,
+ qup04_i2c, qup04_uart, qup05, qup10, qup11_i2c, qup11_uart,
+ qup12, qup13_i2c, qup13_uart, qup14, qup15, sdc1_tb,
sdc2_tb, sd_write, sp_cmu, tgu_ch0, tgu_ch1, tgu_ch2,
tgu_ch3, tsense_pwm1, tsense_pwm2, uim1, uim2, uim_batt,
usb_phy, vfr_1, _V_GPIO, _V_PPS_IN, _V_PPS_OUT,

Documentation/driver-api/gpio/driver.rst

View file
diff --git a/Documentation/driver-api/gpio/driver.rst b/Documentation/driver-api/gpio/driver.rst
index 2ff7431..8719225 100644
--- a/Documentation/driver-api/gpio/driver.rst
+++ b/Documentation/driver-api/gpio/driver.rst
@@ -507,11 +507,6 @@ available but we try to move away from this:
cascaded irq has to be handled by a threaded interrupt handler.
Apart from that it works exactly like the chained irqchip.
-- DEPRECATED: gpiochip_set_chained_irqchip(): sets up a chained cascaded irq
- handler for a gpio_chip from a parent IRQ and passes the struct gpio_chip*
- as handler data. Notice that we pass is as the handler data, since the
- irqchip data is likely used by the parent irqchip.
-
- gpiochip_set_nested_irqchip(): sets up a nested cascaded irq handler for a
gpio_chip from a parent IRQ. As the parent IRQ has usually been
explicitly requested by the driver, this does very little more than

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index e12989b..3208d8a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8383,7 +8383,6 @@ S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
F: drivers/gpio/gpio-ich.c
F: drivers/gpio/gpio-intel-mid.c
-F: drivers/gpio/gpio-lynxpoint.c
F: drivers/gpio/gpio-merrifield.c
F: drivers/gpio/gpio-ml-ioh.c
F: drivers/gpio/gpio-pch.c

arch/arm/mach-u300/core.c

View file
diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c
index a79fa3b..a1694d9 100644
--- a/arch/arm/mach-u300/core.c
+++ b/arch/arm/mach-u300/core.c
@@ -201,7 +201,7 @@ static unsigned long pin_highz_conf[] = {
};
/* Pin control settings */
-static struct pinctrl_map __initdata u300_pinmux_map[] = {
+static const struct pinctrl_map u300_pinmux_map[] = {
/* anonymous maps for chip power and EMIFs */
PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL, "power"),
PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL, "emif0"),

arch/sh/include/cpu-sh2a/cpu/sh7264.h

View file
diff --git a/arch/sh/include/cpu-sh2a/cpu/sh7264.h b/arch/sh/include/cpu-sh2a/cpu/sh7264.h
index d12c191..8a1338a 100644
--- a/arch/sh/include/cpu-sh2a/cpu/sh7264.h
+++ b/arch/sh/include/cpu-sh2a/cpu/sh7264.h
@@ -112,12 +112,6 @@ enum {
GPIO_FN_TIOC0D, GPIO_FN_TIOC0C, GPIO_FN_TIOC0B, GPIO_FN_TIOC0A,
GPIO_FN_TCLKD, GPIO_FN_TCLKC, GPIO_FN_TCLKB, GPIO_FN_TCLKA,
- /* SSU */
- GPIO_FN_SCS0_PD, GPIO_FN_SSO0_PD, GPIO_FN_SSI0_PD, GPIO_FN_SSCK0_PD,
- GPIO_FN_SCS0_PF, GPIO_FN_SSO0_PF, GPIO_FN_SSI0_PF, GPIO_FN_SSCK0_PF,
- GPIO_FN_SCS1_PD, GPIO_FN_SSO1_PD, GPIO_FN_SSI1_PD, GPIO_FN_SSCK1_PD,
- GPIO_FN_SCS1_PF, GPIO_FN_SSO1_PF, GPIO_FN_SSI1_PF, GPIO_FN_SSCK1_PF,
-
/* SCIF */
GPIO_FN_SCK0, GPIO_FN_SCK1, GPIO_FN_SCK2, GPIO_FN_SCK3,
GPIO_FN_RXD0, GPIO_FN_RXD1, GPIO_FN_RXD2, GPIO_FN_RXD3,

arch/sh/include/cpu-sh2a/cpu/sh7269.h

View file
diff --git a/arch/sh/include/cpu-sh2a/cpu/sh7269.h b/arch/sh/include/cpu-sh2a/cpu/sh7269.h
index d516e5d..fece521 100644
--- a/arch/sh/include/cpu-sh2a/cpu/sh7269.h
+++ b/arch/sh/include/cpu-sh2a/cpu/sh7269.h
@@ -78,8 +78,15 @@ enum {
GPIO_FN_WDTOVF,
/* CAN */
- GPIO_FN_CTX1, GPIO_FN_CRX1, GPIO_FN_CTX0, GPIO_FN_CTX0_CTX1,
- GPIO_FN_CRX0, GPIO_FN_CRX0_CRX1, GPIO_FN_CRX0_CRX1_CRX2,
+ GPIO_FN_CTX2, GPIO_FN_CRX2,
+ GPIO_FN_CTX1, GPIO_FN_CRX1,
+ GPIO_FN_CTX0, GPIO_FN_CRX0,
+ GPIO_FN_CTX0_CTX1, GPIO_FN_CRX0_CRX1,
+ GPIO_FN_CTX0_CTX1_CTX2, GPIO_FN_CRX0_CRX1_CRX2,
+ GPIO_FN_CTX2_PJ21, GPIO_FN_CRX2_PJ20,
+ GPIO_FN_CTX1_PJ23, GPIO_FN_CRX1_PJ22,
+ GPIO_FN_CTX0_CTX1_PJ23, GPIO_FN_CRX0_CRX1_PJ22,
+ GPIO_FN_CTX0_CTX1_CTX2_PJ21, GPIO_FN_CRX0_CRX1_CRX2_PJ20,
/* DMAC */
GPIO_FN_TEND0, GPIO_FN_DACK0, GPIO_FN_DREQ0,
@@ -119,12 +126,6 @@ enum {
GPIO_FN_TIOC0D, GPIO_FN_TIOC0C, GPIO_FN_TIOC0B, GPIO_FN_TIOC0A,
GPIO_FN_TCLKD, GPIO_FN_TCLKC, GPIO_FN_TCLKB, GPIO_FN_TCLKA,
- /* SSU */
- GPIO_FN_SCS0_PD, GPIO_FN_SSO0_PD, GPIO_FN_SSI0_PD, GPIO_FN_SSCK0_PD,
- GPIO_FN_SCS0_PF, GPIO_FN_SSO0_PF, GPIO_FN_SSI0_PF, GPIO_FN_SSCK0_PF,
- GPIO_FN_SCS1_PD, GPIO_FN_SSO1_PD, GPIO_FN_SSI1_PD, GPIO_FN_SSCK1_PD,
- GPIO_FN_SCS1_PF, GPIO_FN_SSO1_PF, GPIO_FN_SSI1_PF, GPIO_FN_SSCK1_PF,
-
/* SCIF */
GPIO_FN_SCK0, GPIO_FN_RXD0, GPIO_FN_TXD0,
GPIO_FN_SCK1, GPIO_FN_RXD1, GPIO_FN_TXD1, GPIO_FN_RTS1, GPIO_FN_CTS1,

drivers/gpio/Kconfig

View file
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 081776b..b585f2e 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -341,14 +341,6 @@ config GPIO_LPC32XX
Select this option to enable GPIO driver for
NXP LPC32XX devices.
-config GPIO_LYNXPOINT
- tristate "Intel Lynxpoint GPIO support"
- depends on ACPI && X86
- select GPIOLIB_IRQCHIP
- help
- driver for GPIO functionality on Intel Lynxpoint PCH chipset
- Requires ACPI device enumeration code to set up a platform device.
-
config GPIO_MB86S7X
tristate "GPIO support for Fujitsu MB86S7x Platforms"
help

drivers/gpio/Makefile

View file
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index af158b7..76ff2a5 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -77,7 +77,6 @@ obj-$(CONFIG_GPIO_LP873X) += gpio-lp873x.o
obj-$(CONFIG_GPIO_LP87565) += gpio-lp87565.o
obj-$(CONFIG_GPIO_LPC18XX) += gpio-lpc18xx.o
obj-$(CONFIG_GPIO_LPC32XX) += gpio-lpc32xx.o
-obj-$(CONFIG_GPIO_LYNXPOINT) += gpio-lynxpoint.o
obj-$(CONFIG_GPIO_MADERA) += gpio-madera.o
obj-$(CONFIG_GPIO_MAX3191X) += gpio-max3191x.o
obj-$(CONFIG_GPIO_MAX7300) += gpio-max7300.o

drivers/gpio/gpio-lynxpoint.c

View before deletion
diff --git a/drivers/gpio/gpio-lynxpoint.c b/drivers/gpio/gpio-lynxpoint.c
deleted file mode 100644
index 490ce7b..0000000
--- a/drivers/gpio/gpio-lynxpoint.c
+++ /dev/null
@@ -1,471 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * GPIO controller driver for Intel Lynxpoint PCH chipset>
- * Copyright (c) 2012, Intel Corporation.
- *
- * Author: Mathias Nyman <[email protected]>
- */
-
-#include <linux/acpi.h>
-#include <linux/bitops.h>
-#include <linux/gpio/driver.h>
-#include <linux/interrupt.h>
-#include <linux/io.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/pm_runtime.h>
-#include <linux/slab.h>
-#include <linux/types.h>
-
-/* LynxPoint chipset has support for 94 gpio pins */
-
-#define LP_NUM_GPIO 94
-
-/* Bitmapped register offsets */
-#define LP_ACPI_OWNED 0x00 /* Bitmap, set by bios, 0: pin reserved for ACPI */
-#define LP_GC 0x7C /* set APIC IRQ to IRQ14 or IRQ15 for all pins */
-#define LP_INT_STAT 0x80
-#define LP_INT_ENABLE 0x90
-
-/* Each pin has two 32 bit config registers, starting at 0x100 */
-#define LP_CONFIG1 0x100
-#define LP_CONFIG2 0x104
-
-/* LP_CONFIG1 reg bits */
-#define OUT_LVL_BIT BIT(31)
-#define IN_LVL_BIT BIT(30)
-#define TRIG_SEL_BIT BIT(4) /* 0: Edge, 1: Level */
-#define INT_INV_BIT BIT(3) /* Invert interrupt triggering */
-#define DIR_BIT BIT(2) /* 0: Output, 1: Input */
-#define USE_SEL_BIT BIT(0) /* 0: Native, 1: GPIO */
-
-/* LP_CONFIG2 reg bits */
-#define GPINDIS_BIT BIT(2) /* disable input sensing */
-#define GPIWP_BIT (BIT(0) | BIT(1)) /* weak pull options */
-
-struct lp_gpio {
- struct gpio_chip chip;
- struct platform_device *pdev;
- spinlock_t lock;
- unsigned long reg_base;
-};
-
-/*
- * Lynxpoint gpios are controlled through both bitmapped registers and
- * per gpio specific registers. The bitmapped registers are in chunks of
- * 3 x 32bit registers to cover all 94 gpios
- *
- * per gpio specific registers consist of two 32bit registers per gpio
- * (LP_CONFIG1 and LP_CONFIG2), with 94 gpios there's a total of
- * 188 config registers.
- *
- * A simplified view of the register layout look like this:
- *
- * LP_ACPI_OWNED[31:0] gpio ownerships for gpios 0-31 (bitmapped registers)
- * LP_ACPI_OWNED[63:32] gpio ownerships for gpios 32-63
- * LP_ACPI_OWNED[94:64] gpio ownerships for gpios 63-94
- * ...
- * LP_INT_ENABLE[31:0] ...
- * LP_INT_ENABLE[63:31] ...
- * LP_INT_ENABLE[94:64] ...
- * LP0_CONFIG1 (gpio 0) config1 reg for gpio 0 (per gpio registers)
- * LP0_CONFIG2 (gpio 0) config2 reg for gpio 0
- * LP1_CONFIG1 (gpio 1) config1 reg for gpio 1
- * LP1_CONFIG2 (gpio 1) config2 reg for gpio 1
- * LP2_CONFIG1 (gpio 2) ...
- * LP2_CONFIG2 (gpio 2) ...
- * ...
- * LP94_CONFIG1 (gpio 94) ...
- * LP94_CONFIG2 (gpio 94) ...
- */
-
-static unsigned long lp_gpio_reg(struct gpio_chip *chip, unsigned offset,
- int reg)
-{
- struct lp_gpio *lg = gpiochip_get_data(chip);
- int reg_offset;
-
- if (reg == LP_CONFIG1 || reg == LP_CONFIG2)
- /* per gpio specific config registers */
- reg_offset = offset * 8;
- else
- /* bitmapped registers */
- reg_offset = (offset / 32) * 4;
-
- return lg->reg_base + reg + reg_offset;
-}
-
-static int lp_gpio_request(struct gpio_chip *chip, unsigned offset)
-{
- struct lp_gpio *lg = gpiochip_get_data(chip);
- unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1);
- unsigned long conf2 = lp_gpio_reg(chip, offset, LP_CONFIG2);
- unsigned long acpi_use = lp_gpio_reg(chip, offset, LP_ACPI_OWNED);
-
- pm_runtime_get(&lg->pdev->dev); /* should we put if failed */
-
- /* Fail if BIOS reserved pin for ACPI use */
- if (!(inl(acpi_use) & BIT(offset % 32))) {
- dev_err(&lg->pdev->dev, "gpio %d reserved for ACPI\n", offset);
- return -EBUSY;
- }
- /* Fail if pin is in alternate function mode (not GPIO mode) */
- if (!(inl(reg) & USE_SEL_BIT))
- return -ENODEV;
-
- /* enable input sensing */
- outl(inl(conf2) & ~GPINDIS_BIT, conf2);
-
-
- return 0;
-}
-
-static void lp_gpio_free(struct gpio_chip *chip, unsigned offset)
-{
- struct lp_gpio *lg = gpiochip_get_data(chip);
- unsigned long conf2 = lp_gpio_reg(chip, offset, LP_CONFIG2);
-
- /* disable input sensing */
- outl(inl(conf2) | GPINDIS_BIT, conf2);
-
- pm_runtime_put(&lg->pdev->dev);
-}
-
-static int lp_irq_type(struct irq_data *d, unsigned type)
-{
- struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
- struct lp_gpio *lg = gpiochip_get_data(gc);
- u32 hwirq = irqd_to_hwirq(d);
- unsigned long flags;
- u32 value;
- unsigned long reg = lp_gpio_reg(&lg->chip, hwirq, LP_CONFIG1);
-
- if (hwirq >= lg->chip.ngpio)
- return -EINVAL;
-
- spin_lock_irqsave(&lg->lock, flags);
- value = inl(reg);
-
- /* set both TRIG_SEL and INV bits to 0 for rising edge */
- if (type & IRQ_TYPE_EDGE_RISING)
- value &= ~(TRIG_SEL_BIT | INT_INV_BIT);
-
- /* TRIG_SEL bit 0, INV bit 1 for falling edge */
- if (type & IRQ_TYPE_EDGE_FALLING)
- value = (value | INT_INV_BIT) & ~TRIG_SEL_BIT;
-
- /* TRIG_SEL bit 1, INV bit 0 for level low */
- if (type & IRQ_TYPE_LEVEL_LOW)
- value = (value | TRIG_SEL_BIT) & ~INT_INV_BIT;
-
- /* TRIG_SEL bit 1, INV bit 1 for level high */
- if (type & IRQ_TYPE_LEVEL_HIGH)
- value |= TRIG_SEL_BIT | INT_INV_BIT;
-
- outl(value, reg);
-
- if (type & IRQ_TYPE_EDGE_BOTH)
- irq_set_handler_locked(d, handle_edge_irq);
- else if (type & IRQ_TYPE_LEVEL_MASK)
- irq_set_handler_locked(d, handle_level_irq);
-
- spin_unlock_irqrestore(&lg->lock, flags);
-
- return 0;
-}
-
-static int lp_gpio_get(struct gpio_chip *chip, unsigned offset)
-{
- unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1);
- return !!(inl(reg) & IN_LVL_BIT);
-}
-
-static void lp_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
-{
- struct lp_gpio *lg = gpiochip_get_data(chip);
- unsigned long reg = lp_gpio_reg(chip, offset, LP_CONFIG1);
- unsigned long flags;
-
- spin_lock_irqsave(&lg->lock, flags);
-
- if (value)
- outl(inl(reg) | OUT_LVL_BIT, reg);
- else
- outl(inl(reg) & ~OUT_LVL_BIT, reg);

This diff is incomplete. Download the complete patch.

drivers/gpio/gpio-mt7621.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpio/gpio-xgs-iproc.c

View file

This diff is incomplete. Download the complete patch.

drivers/gpio/gpiolib.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/actions/pinctrl-s700.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinctrl-aspeed-g4.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinctrl-aspeed.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinctrl-aspeed.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/aspeed/pinmux-aspeed.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/bcm/pinctrl-iproc-gpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/cirrus/pinctrl-madera-core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/core.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/devicetree.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/freescale/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/freescale/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/freescale/pinctrl-imx8mp.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-baytrail.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-cherryview.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-intel.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-intel.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-lynxpoint.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-sunrisepoint.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/intel/pinctrl-tigerlake.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/mediatek/pinctrl-mtk-mt2712.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/meson/pinctrl-meson-axg-pmx.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/meson/pinctrl-meson8b.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/mvebu/pinctrl-armada-37xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/pinctrl-artpec6.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/pinctrl-ingenic.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/pinctrl-rza1.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/qcom/pinctrl-msm.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/qcom/pinctrl-msm8976.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/qcom/pinctrl-sc7180.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/samsung/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/gpio.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-r8a7778.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-r8a77950.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-r8a77951.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-r8a77965.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-sh7264.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/pfc-sh7269.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sh-pfc/sh_pfc.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/stm32/pinctrl-stm32.h

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/sunxi/pinctrl-sun50i-h5.c

View file

This diff is incomplete. Download the complete patch.

drivers/pinctrl/tegra/pinctrl-tegra.c

View file

This diff is incomplete. Download the complete patch.

include/linux/gpio/driver.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pinctrl/machine.h

View file

This diff is incomplete. Download the complete patch.