Skip to content

Commit 5fb0249

Browse files
committed
Merge tag 'pinctrl-v6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij: "We have GPIO awareness in the pin control core and an interesting AAEON driver. Core changes: - Allow pins to be identified/marked as GPIO mode with a special callback. The pin controller core is now "aware" if a pin is in GPIO mode if the callback is implemented in the driver, and can thus be marked as "strict", i.e. disallowing simultaneous use of a line as GPIO and another function such as I2C. This is enabled in the Qualcomm TLMM driver and also implemeted from day 1 in the new Broadcom STB driver - Rename the pin config option PIN_CONFIG_OUTPUT to PIN_CONFIG_LEVEL to better describe what the config is doing, as well as making it more intuitive what shall be returned when reading this property New drivers: - Qualcomm SDM660 LPASS LPI TLMM pin controller subdriver - Qualcomm Glymur family pin controller driver - Broadcom STB family pin controller driver - Tegra186 pin controller driver - AAEON UP pin controller support. This is some special pin controller that works as an external advanced line MUX and amplifier for signals from an Intel SoC. A cooperative effort with the GPIO maintainer was needed to reach a solution where we reuse code from the GPIO aggregator/forwarder driver - Renesas RZ/T2H and RZ/N2H pin controller support - Axis ARTPEC-8 subdriver for the Samsung pin controller driver Improvements: - Output enable (OEN) support in the Renesas RZG2L driver - Properly support bias pull up/down in the pinctrl-single driver - Move over all GPIO portions using generic MMIO GPIO to the new generic GPIO chip management which has a nice and separate API - Proper DT bindings for some older Broadcom SoCs - External GPIO (EGPIO) support in the Qualcomm SM8250 Deleted code: - Dropped the now unused Samsung S3C24xx drivers" * tag 'pinctrl-v6.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (75 commits) pinctrl: use more common syntax for compound literals pinctrl: Simplify printks with pOF format pinctrl: qcom: Add SDM660 LPASS LPI TLMM dt-bindings: pinctrl: qcom: Add SDM660 LPI pinctrl pinctrl: qcom: lpass-lpi: Add ability to use custom pin offsets pinctrl: qcom: Add glymur pinctrl driver dt-bindings: pinctrl: qcom: Add Glymur pinctrl pinctrl: qcom: sm8250: Add egpio support pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL pinctrl: keembay: fix double free in keembay_build_functions() pinctrl: spacemit: fix typo in PRI_TDI pin name pinctrl: eswin: Fix regulator error check and Kconfig dependency pinctrl: bcm: Add STB family pin controller driver dt-bindings: pinctrl: Add support for Broadcom STB pin controller pinctrl: qcom: make the pinmuxing strict pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions pinctrl: qcom: add infrastructure for marking pin functions as GPIOs pinctrl: allow to mark pin functions as requestable GPIOs pinctrl: qcom: use generic pin function helpers pinctrl: make struct pinfunction a pointer in struct function_desc ...
2 parents 524c4a5 + da3a88e commit 5fb0249

171 files changed

Lines changed: 9119 additions & 766 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm2712c0-pinctrl.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Broadcom STB family pin controller
8+
9+
maintainers:
10+
- Ivan T. Ivanov <iivanov@suse.de>
11+
- A. della Porta <andrea.porta@suse.com>
12+
13+
description: >
14+
Broadcom's STB family of memory-mapped pin controllers.
15+
16+
This includes the pin controllers inside the BCM2712 SoC which
17+
are instances of the STB family and has two silicon variants,
18+
C0 and D0, which differs slightly in terms of registers layout.
19+
20+
The -aon- (Always On) variant is the same IP block but differs
21+
in the number of pins that are associated and the pinmux functions
22+
for each of those pins.
23+
24+
allOf:
25+
- $ref: pinctrl.yaml#
26+
27+
properties:
28+
compatible:
29+
enum:
30+
- brcm,bcm2712c0-pinctrl
31+
- brcm,bcm2712c0-aon-pinctrl
32+
- brcm,bcm2712d0-pinctrl
33+
- brcm,bcm2712d0-aon-pinctrl
34+
35+
reg:
36+
maxItems: 1
37+
38+
patternProperties:
39+
'-state$':
40+
oneOf:
41+
- $ref: '#/$defs/brcmstb-pinctrl-state'
42+
- patternProperties:
43+
'-pins$':
44+
$ref: '#/$defs/brcmstb-pinctrl-state'
45+
additionalProperties: false
46+
47+
$defs:
48+
brcmstb-pinctrl-state:
49+
allOf:
50+
- $ref: pincfg-node.yaml#
51+
- $ref: pinmux-node.yaml#
52+
53+
description: >
54+
Pin controller client devices use pin configuration subnodes (children
55+
and grandchildren) for desired pin configuration.
56+
57+
Client device subnodes use below standard properties.
58+
59+
properties:
60+
pins:
61+
description:
62+
List of gpio pins affected by the properties specified in this
63+
subnode (either this or "groups" must be specified).
64+
items:
65+
pattern: '^((aon_)?s?gpio[0-6]?[0-9])|(emmc_(clk|cmd|dat[0-7]|ds))$'
66+
67+
function:
68+
description:
69+
Specify the alternative function to be configured for the specified
70+
pins.
71+
enum: [ gpio, alt1, alt2, alt3, alt4, alt5, alt6, alt7, alt8,
72+
aon_cpu_standbyb, aon_fp_4sec_resetb, aon_gpclk, aon_pwm,
73+
arm_jtag, aud_fs_clk0, avs_pmu_bsc, bsc_m0, bsc_m1, bsc_m2,
74+
bsc_m3, clk_observe, ctl_hdmi_5v, enet0, enet0_mii, enet0_rgmii,
75+
ext_sc_clk, fl0, fl1, gpclk0, gpclk1, gpclk2, hdmi_tx0_auto_i2c,
76+
hdmi_tx0_bsc, hdmi_tx1_auto_i2c, hdmi_tx1_bsc, i2s_in, i2s_out,
77+
ir_in, mtsif, mtsif_alt, mtsif_alt1, pdm, pkt, pm_led_out, sc0,
78+
sd0, sd2, sd_card_a, sd_card_b, sd_card_c, sd_card_d, sd_card_e,
79+
sd_card_f, sd_card_g, spdif_out, spi_m, spi_s, sr_edm_sense, te0,
80+
te1, tsio, uart0, uart1, uart2, usb_pwr, usb_vbus, uui, vc_i2c0,
81+
vc_i2c3, vc_i2c4, vc_i2c5, vc_i2csl, vc_pcm, vc_pwm0, vc_pwm1,
82+
vc_spi0, vc_spi3, vc_spi4, vc_spi5, vc_uart0, vc_uart2, vc_uart3,
83+
vc_uart4 ]
84+
85+
bias-disable: true
86+
bias-pull-down: true
87+
bias-pull-up: true
88+
89+
required:
90+
- pins
91+
92+
if:
93+
properties:
94+
pins:
95+
not:
96+
contains:
97+
pattern: "^emmc_(clk|cmd|dat[0-7]|ds)$"
98+
then:
99+
required:
100+
- function
101+
else:
102+
properties:
103+
function: false
104+
105+
additionalProperties: false
106+
107+
required:
108+
- compatible
109+
- reg
110+
111+
unevaluatedProperties: false
112+
113+
examples:
114+
- |
115+
pinctrl@7d504100 {
116+
compatible = "brcm,bcm2712c0-pinctrl";
117+
reg = <0x7d504100 0x30>;
118+
119+
bt-shutdown-default-state {
120+
function = "gpio";
121+
pins = "gpio29";
122+
};
123+
124+
uarta-default-state {
125+
rts-tx-pins {
126+
function = "uart0";
127+
pins = "gpio24", "gpio26";
128+
bias-disable;
129+
};
130+
131+
cts-rx-pins {
132+
function = "uart0";
133+
pins = "gpio25", "gpio27";
134+
bias-pull-up;
135+
};
136+
};
137+
};

Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt

Lines changed: 0 additions & 99 deletions
This file was deleted.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm2835-gpio.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Broadcom BCM2835 GPIO (and pinmux) controller
8+
9+
maintainers:
10+
- Florian Fainelli <f.fainelli@gmail.com>
11+
12+
description: >
13+
The BCM2835 GPIO module is a combined GPIO controller, (GPIO) interrupt
14+
controller, and pinmux/control device.
15+
16+
properties:
17+
compatible:
18+
enum:
19+
- brcm,bcm2835-gpio
20+
- brcm,bcm2711-gpio
21+
- brcm,bcm7211-gpio
22+
23+
reg:
24+
maxItems: 1
25+
26+
'#gpio-cells':
27+
const: 2
28+
29+
gpio-controller: true
30+
gpio-ranges: true
31+
gpio-line-names: true
32+
33+
interrupts:
34+
description: >
35+
Interrupt outputs: one per bank, then the combined “all banks” line.
36+
BCM7211 may specify up to four per-bank wake-up lines and one combined
37+
wake-up interrupt.
38+
minItems: 4
39+
maxItems: 10
40+
41+
'#interrupt-cells':
42+
const: 2
43+
44+
interrupt-controller: true
45+
46+
additionalProperties:
47+
oneOf:
48+
- type: object
49+
additionalProperties: false
50+
51+
patternProperties:
52+
'^pins?-':
53+
type: object
54+
allOf:
55+
- $ref: /schemas/pinctrl/pincfg-node.yaml#
56+
- $ref: /schemas/pinctrl/pinmux-node.yaml#
57+
additionalProperties: false
58+
59+
properties:
60+
pins: true
61+
function: true
62+
bias-disable: true
63+
bias-pull-up: true
64+
bias-pull-down: true
65+
output-high: true
66+
output-low: true
67+
68+
required:
69+
- pins
70+
- function
71+
72+
- type: object
73+
additionalProperties: false
74+
deprecated: true
75+
76+
properties:
77+
brcm,pins:
78+
description:
79+
GPIO pin numbers for legacy configuration.
80+
$ref: /schemas/types.yaml#/definitions/uint32-array
81+
82+
brcm,function:
83+
description:
84+
Legacy mux function for the pins (0=input, 1=output, 2–7=alt functions).
85+
$ref: /schemas/types.yaml#/definitions/uint32-array
86+
maximum: 7
87+
88+
brcm,pull:
89+
description: >
90+
Legacy pull setting for the pins (0=none, 1=pull-down, 2=pull-up).
91+
$ref: /schemas/types.yaml#/definitions/uint32-array
92+
maximum: 2
93+
94+
required:
95+
- brcm,pins
96+
97+
allOf:
98+
- if:
99+
properties:
100+
compatible:
101+
contains:
102+
enum:
103+
- brcm,bcm2835-gpio
104+
- brcm,bcm2711-gpio
105+
then:
106+
properties:
107+
interrupts:
108+
maxItems: 5
109+
110+
examples:
111+
- |
112+
gpio@2200000 {
113+
compatible = "brcm,bcm2835-gpio";
114+
reg = <0x2200000 0xb4>;
115+
interrupts = <2 17>, <2 19>, <2 18>, <2 20>, <2 21>;
116+
#gpio-cells = <2>;
117+
gpio-controller;
118+
#interrupt-cells = <2>;
119+
interrupt-controller;
120+
};

0 commit comments

Comments
 (0)