mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'pinctrl-v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij:
"Core changes:
- None really.
New drivers:
- AMD ISP411 "AMD ISP" driver
- Exynos 2200 and 7870 SoC subdrivers
- Sophgo RISC-V SG2042 and SG2044 subdrivers
- Amlogic A4 subdriver
- Rockchip RK3528 subdriver
- Broadcom BCM21664 subdriver
- Allwinner A523/T527 subdriver
- Ingenic X1600 subdriver
- Microchip SAMA7D65 subdriver, essentially a re-branded Atmel AT91
PIO4 driver, but nowadays a Microschip SoC line
Improvements:
- Bring in the devm_kmemdup_array() helper and use it throughout,
also bring in changes to other subsystems for this to establish
this helper
- Support EGPIO on the Qualcomm SA8775P SoC
- Extend EINT support in the Mediatek driver"
* tag 'pinctrl-v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (101 commits)
pinctrl: mediatek: Add EINT support for multiple addresses
pinctrl: amlogic-a4: Drop surplus semicolon
pinctrl: nuvoton: Reduce use of OF-specific APIs
pinctrl: nuvoton: Convert to use struct group_desc
pinctrl: nuvoton: Make use of struct pinfunction and PINCTRL_PINFUNCTION()
pinctrl: nuvoton: Convert to use struct pingroup and PINCTRL_PINGROUP()
pinctrl: npcm8xx: Fix incorrect struct npcm8xx_pincfg assignment
pinctrl: tegra: Fix off by one in tegra_pinctrl_get_group()
pinctrl: PINCTRL_AMDISP should depend on DRM_AMD_ISP
pinctrl: qcom: sa8775p: Enable egpio function
dt-bindings: pinctrl: qcom: Add egpio function for sa8775p
pinctrl: qcom: tlmm-test: Validate irq_enable delivers edge irqs
pinctrl: qcom: Clear latched interrupt status when changing IRQ type
dt-bindings: pinctrl: airoha: Add missing gpio-ranges property
pinctrl: bcm281xx: Add missing assignment in bcm21664_pinctrl_lock_all()
pinctrl: amd: isp411: Fix IS_ERR() vs NULL check in probe()
dt-bindings: pinctrl: at91-pio4: add microchip,sama7d65-pinctrl
pinctrl: tegra: Set SFIO mode to Mux Register
pinctrl-tegra: Restore SFSEL bit when freeing pins
pinctrl: tegra: Add descriptions for SoC data fields
...
This commit is contained in:
@@ -24,6 +24,9 @@ properties:
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/allwinner,sun55i-a523-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Allwinner A523 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Andre Przywara <andre.przywara@arm.com>
|
||||
|
||||
properties:
|
||||
"#gpio-cells":
|
||||
const: 3
|
||||
description:
|
||||
GPIO consumers must use three arguments, first the number of the
|
||||
bank, then the pin number inside that bank, and finally the GPIO
|
||||
flags.
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 3
|
||||
description:
|
||||
Interrupts consumers must use three arguments, first the number
|
||||
of the bank, then the pin number inside that bank, and finally
|
||||
the interrupts flags.
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun55i-a523-pinctrl
|
||||
- allwinner,sun55i-a523-r-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
minItems: 2
|
||||
maxItems: 10
|
||||
description:
|
||||
One interrupt per external interrupt bank supported on the
|
||||
controller, sorted by bank number ascending order.
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: High Frequency Oscillator
|
||||
- description: Low Frequency Oscillator
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: apb
|
||||
- const: hosc
|
||||
- const: losc
|
||||
|
||||
gpio-controller: true
|
||||
interrupt-controller: true
|
||||
gpio-line-names: true
|
||||
|
||||
input-debounce:
|
||||
description:
|
||||
Debouncing periods in microseconds, one period per interrupt
|
||||
bank found in the controller
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
minItems: 2
|
||||
maxItems: 10
|
||||
|
||||
patternProperties:
|
||||
# It's pretty scary, but the basic idea is that:
|
||||
# - One node name can start with either s- or r- for PRCM nodes,
|
||||
# - Then, the name itself can be any repetition of <string>- (to
|
||||
# accommodate with nodes like uart4-rts-cts-pins), where each
|
||||
# string can be either starting with 'p' but in a string longer
|
||||
# than 3, or something that doesn't start with 'p',
|
||||
# - Then, the bank name is optional and will be between pa and pm.
|
||||
# Some pins groups that have several options will have the pin
|
||||
# numbers then,
|
||||
# - Finally, the name will end with either -pin or pins.
|
||||
|
||||
"^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-m][0-9]*?-)??pins?$":
|
||||
type: object
|
||||
|
||||
properties:
|
||||
pins: true
|
||||
function: true
|
||||
bias-disable: true
|
||||
bias-pull-up: true
|
||||
bias-pull-down: true
|
||||
|
||||
drive-strength:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [10, 20, 30, 40]
|
||||
|
||||
allwinner,pinmux:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
description:
|
||||
Pinmux selector value, for each pin. Almost every time this value
|
||||
is the same for all pins, so any array shorter than the number of
|
||||
pins will repeat the last value, to allow just specifying a single
|
||||
cell, for all cells.
|
||||
|
||||
required:
|
||||
- pins
|
||||
- allwinner,pinmux
|
||||
- function
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
"^vcc-p[a-m]-supply$":
|
||||
description:
|
||||
Power supplies for pin banks.
|
||||
|
||||
required:
|
||||
- "#gpio-cells"
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- gpio-controller
|
||||
- "#interrupt-cells"
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun55i-a523-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 10
|
||||
maxItems: 10
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun55i-a523-r-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
r_pio: pinctrl@7022000 {
|
||||
compatible = "allwinner,sun55i-a523-r-pinctrl";
|
||||
reg = <0x7022000 0x800>;
|
||||
interrupts = <0 159 4>, <0 161 4>;
|
||||
clocks = <&r_ccu 1>, <&osc24M>, <&osc32k>;
|
||||
clock-names = "apb", "hosc", "losc";
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
|
||||
r_i2c_pins: r-i2c-pins {
|
||||
pins = "PL0", "PL1";
|
||||
allwinner,pinmux = <2>;
|
||||
function = "r_i2c0";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
r_spi_pins: r-spi-pins {
|
||||
pins = "PL11" ,"PL12", "PL13";
|
||||
allwinner,pinmux = <6>;
|
||||
function = "r_spi";
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,126 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/amlogic,pinctrl-a4.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Amlogic pinmux controller
|
||||
|
||||
maintainers:
|
||||
- Xianwei Zhao <xianwei.zhao@amlogic.com>
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: amlogic,pinctrl-a4
|
||||
|
||||
"#address-cells":
|
||||
const: 2
|
||||
|
||||
"#size-cells":
|
||||
const: 2
|
||||
|
||||
ranges: true
|
||||
|
||||
patternProperties:
|
||||
"^gpio@[0-9a-f]+$":
|
||||
type: object
|
||||
|
||||
additionalProperties: false
|
||||
properties:
|
||||
reg:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: pin config register
|
||||
- description: pin mux setting register (some special pin fixed function)
|
||||
- description: pin drive strength register (optional)
|
||||
|
||||
reg-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: gpio
|
||||
- const: mux
|
||||
- const: ds
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- reg
|
||||
- reg-names
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- gpio-ranges
|
||||
|
||||
"^func-[0-9a-z-]+$":
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
"^group-[0-9a-z-]+$":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: /schemas/pinctrl/pincfg-node.yaml
|
||||
- $ref: /schemas/pinctrl/pinmux-node.yaml
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- ranges
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/pinctrl/amlogic,pinctrl.h>
|
||||
apb {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
periphs_pinctrl: pinctrl {
|
||||
compatible = "amlogic,pinctrl-a4";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
gpio@4240 {
|
||||
reg = <0 0x4240 0 0x40>, <0 0x4000 0 0x8>;
|
||||
reg-names = "gpio", "mux";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&periphs_pinctrl 0 8 10>;
|
||||
};
|
||||
|
||||
func-uart-b {
|
||||
group-default {
|
||||
pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 1, 4)>;
|
||||
bias-pull-up;
|
||||
drive-strength-microamp = <4000>;
|
||||
};
|
||||
|
||||
group-pins1 {
|
||||
pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 5, 2)>;
|
||||
bias-pull-up;
|
||||
drive-strength-microamp = <4000>;
|
||||
};
|
||||
};
|
||||
|
||||
func-uart-c {
|
||||
group-default {
|
||||
pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 3, 1)>,
|
||||
<AML_PINMUX(AMLOGIC_GPIO_B, 2, 1)>;
|
||||
bias-pull-up;
|
||||
drive-strength-microamp = <4000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -6,6 +6,7 @@ configure it.
|
||||
Required properties:
|
||||
- compatible:
|
||||
"atmel,sama5d2-pinctrl"
|
||||
"microchip,sama7d65-pinctrl", "microchip,sama7g5-pinctrl"
|
||||
"microchip,sama7g5-pinctrl"
|
||||
- reg: base address and length of the PIO controller.
|
||||
- interrupts: interrupt outputs from the controller, one for each bank.
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm21664-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM21664 pin controller
|
||||
|
||||
maintainers:
|
||||
- Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
- Ray Jui <rjui@broadcom.com>
|
||||
- Scott Branden <sbranden@broadcom.com>
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm21664-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'-grp[0-9]$':
|
||||
type: object
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description:
|
||||
Specifies the name(s) of one or more pins to be configured by
|
||||
this node.
|
||||
items:
|
||||
enum: [ adcsyn, batrm, bsc1clk, bsc1dat, camcs0, camcs1, clk32k,
|
||||
clk_cx8, dclk1, dclk4, dclkreq1, dclkreq4, dmic0clk,
|
||||
dmic0dq, dsi0te, gpio00, gpio01, gpio02, gpio03, gpio04,
|
||||
gpio05, gpio06, gpio07, gpio08, gpio09, gpio10, gpio11,
|
||||
gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18,
|
||||
gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25,
|
||||
gpio26, gpio27, gpio28, gpio32, gpio33, gpio34, gpio93,
|
||||
gpio94, gps_calreq, gps_hostreq, gps_pablank, gps_tmark,
|
||||
icusbdm, icusbdp, lcdcs0, lcdres, lcdscl, lcdsda, lcdte,
|
||||
mdmgpio00, mdmgpio01, mdmgpio02, mdmgpio03, mdmgpio04,
|
||||
mdmgpio05, mdmgpio06, mdmgpio07, mdmgpio08, mmc0ck,
|
||||
mmc0cmd, mmc0dat0, mmc0dat1, mmc0dat2, mmc0dat3, mmc0dat4,
|
||||
mmc0dat5, mmc0dat6, mmc0dat7, mmc0rst, mmc1ck, mmc1cmd,
|
||||
mmc1dat0, mmc1dat1, mmc1dat2, mmc1dat3, mmc1dat4,
|
||||
mmc1dat5, mmc1dat6, mmc1dat7, mmc1rst, pc1, pc2, pmbscclk,
|
||||
pmbscdat, pmuint, resetn, rfst2g_mtsloten3g,
|
||||
rtxdata2g_txdata3g1, rtxen2g_txdata3g2, rxdata3g0,
|
||||
rxdata3g1, rxdata3g2, sdck, sdcmd, sddat0, sddat1, sddat2,
|
||||
sddat3, simclk, simdat, simdet, simrst, spi0clk, spi0fss,
|
||||
spi0rxd, spi0txd, sri_c, sri_d, sri_e, sspck, sspdi,
|
||||
sspdo, sspsyn, stat1, stat2, swclktck, swdiotms, sysclken,
|
||||
tdi, tdo, testmode, traceclk, tracedt00, tracedt01,
|
||||
tracedt02, tracedt03, tracedt04, tracedt05, tracedt06,
|
||||
tracedt07, tracedt08, tracedt09, tracedt10, tracedt11,
|
||||
tracedt12, tracedt13, tracedt14, tracedt15, trstb,
|
||||
txdata3g0, ubctsn, ubrtsn, ubrx, ubtx ]
|
||||
|
||||
function:
|
||||
description:
|
||||
Specifies the pin mux selection.
|
||||
enum: [ alt1, alt2, alt3, alt4, alt5, alt6 ]
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up:
|
||||
type: boolean
|
||||
|
||||
bias-pull-down:
|
||||
type: boolean
|
||||
|
||||
slew-rate:
|
||||
description: |
|
||||
Meaning depends on configured pin mux:
|
||||
bsc*clk/pmbscclk or bsc*dat/pmbscdat or gpio16/gpio17:
|
||||
0: Standard (100 kbps) & Fast (400 kbps) mode
|
||||
1: Highspeed (3.4 Mbps) mode
|
||||
Otherwise:
|
||||
0: fast slew rate
|
||||
1: normal slew rate
|
||||
|
||||
drive-strength:
|
||||
enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ]
|
||||
|
||||
input-enable: true
|
||||
input-disable: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
input-schmitt-disable: true
|
||||
|
||||
required:
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: pincfg-node.yaml#
|
||||
# Limitations for I2C pins
|
||||
- if:
|
||||
properties:
|
||||
pins:
|
||||
contains:
|
||||
enum: [ bsc1clk, bsc1dat, gpio16, gpio17, pmbscclk,
|
||||
pmbscdat ]
|
||||
then:
|
||||
properties:
|
||||
drive-strength: false
|
||||
bias-pull-down: false
|
||||
input-schmitt-enable: false
|
||||
input-schmitt-disable: false
|
||||
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@35004800 {
|
||||
compatible = "brcm,bcm21664-pinctrl";
|
||||
reg = <0x35004800 0x7f0>;
|
||||
|
||||
dev-a-active-pins {
|
||||
/* group node defining 1 standard pin */
|
||||
std-grp0 {
|
||||
pins = "gpio00";
|
||||
function = "alt1";
|
||||
input-schmitt-enable;
|
||||
bias-disable;
|
||||
slew-rate = <1>;
|
||||
drive-strength = <4>;
|
||||
};
|
||||
|
||||
/* group node defining 2 I2C pins */
|
||||
i2c-grp0 {
|
||||
pins = "bsc1clk", "bsc1dat";
|
||||
function = "alt2";
|
||||
bias-pull-up;
|
||||
input-enable;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -42,6 +42,7 @@ properties:
|
||||
- ingenic,jz4780-pinctrl
|
||||
- ingenic,x1000-pinctrl
|
||||
- ingenic,x1500-pinctrl
|
||||
- ingenic,x1600-pinctrl
|
||||
- ingenic,x1830-pinctrl
|
||||
- ingenic,x2000-pinctrl
|
||||
- ingenic,x2100-pinctrl
|
||||
@@ -81,6 +82,7 @@ patternProperties:
|
||||
- ingenic,jz4780-gpio
|
||||
- ingenic,x1000-gpio
|
||||
- ingenic,x1500-gpio
|
||||
- ingenic,x1600-gpio
|
||||
- ingenic,x1830-gpio
|
||||
- ingenic,x2000-gpio
|
||||
- ingenic,x2100-gpio
|
||||
|
||||
@@ -79,7 +79,7 @@ $defs:
|
||||
cri_trng, cri_trng0, cri_trng1, dbg_out, ddr_bist, ddr_pxi0,
|
||||
ddr_pxi1, ddr_pxi2, ddr_pxi3, ddr_pxi4, ddr_pxi5, edp0_hot,
|
||||
edp0_lcd, edp1_hot, edp1_lcd, edp2_hot, edp2_lcd, edp3_hot,
|
||||
edp3_lcd, emac0_mcg0, emac0_mcg1, emac0_mcg2, emac0_mcg3,
|
||||
edp3_lcd, egpio, emac0_mcg0, emac0_mcg1, emac0_mcg2, emac0_mcg3,
|
||||
emac0_mdc, emac0_mdio, emac0_ptp_aux, emac0_ptp_pps, emac1_mcg0,
|
||||
emac1_mcg1, emac1_mcg2, emac1_mcg3, emac1_mdc, emac1_mdio,
|
||||
emac1_ptp_aux, emac1_ptp_pps, gcc_gp1, gcc_gp2, gcc_gp3,
|
||||
|
||||
@@ -44,6 +44,7 @@ properties:
|
||||
- rockchip,rk3328-pinctrl
|
||||
- rockchip,rk3368-pinctrl
|
||||
- rockchip,rk3399-pinctrl
|
||||
- rockchip,rk3528-pinctrl
|
||||
- rockchip,rk3562-pinctrl
|
||||
- rockchip,rk3568-pinctrl
|
||||
- rockchip,rk3576-pinctrl
|
||||
|
||||
@@ -40,6 +40,7 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- samsung,exynos5433-wakeup-eint
|
||||
- samsung,exynos7870-wakeup-eint
|
||||
- samsung,exynos7885-wakeup-eint
|
||||
- samsung,exynos850-wakeup-eint
|
||||
- samsung,exynos8895-wakeup-eint
|
||||
@@ -47,6 +48,7 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- google,gs101-wakeup-eint
|
||||
- samsung,exynos2200-wakeup-eint
|
||||
- samsung,exynos9810-wakeup-eint
|
||||
- samsung,exynos990-wakeup-eint
|
||||
- samsung,exynosautov9-wakeup-eint
|
||||
@@ -104,6 +106,7 @@ allOf:
|
||||
- contains:
|
||||
enum:
|
||||
- samsung,exynos5433-wakeup-eint
|
||||
- samsung,exynos7870-wakeup-eint
|
||||
- samsung,exynos7885-wakeup-eint
|
||||
- samsung,exynos8895-wakeup-eint
|
||||
then:
|
||||
|
||||
@@ -42,6 +42,7 @@ properties:
|
||||
- samsung,s3c2450-pinctrl
|
||||
- samsung,s3c64xx-pinctrl
|
||||
- samsung,s5pv210-pinctrl
|
||||
- samsung,exynos2200-pinctrl
|
||||
- samsung,exynos3250-pinctrl
|
||||
- samsung,exynos4210-pinctrl
|
||||
- samsung,exynos4x12-pinctrl
|
||||
@@ -51,6 +52,7 @@ properties:
|
||||
- samsung,exynos5420-pinctrl
|
||||
- samsung,exynos5433-pinctrl
|
||||
- samsung,exynos7-pinctrl
|
||||
- samsung,exynos7870-pinctrl
|
||||
- samsung,exynos7885-pinctrl
|
||||
- samsung,exynos850-pinctrl
|
||||
- samsung,exynos8895-pinctrl
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/sophgo,sg2042-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Sophgo SG2042 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Inochi Amaoto <inochiama@outlook.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- sophgo,sg2042-pinctrl
|
||||
- sophgo,sg2044-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-cfg$':
|
||||
type: object
|
||||
description:
|
||||
A pinctrl node should contain at least one subnode representing the
|
||||
pinctrl groups available on the machine.
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
description: |
|
||||
Each subnode will list the pins it needs, and how they should
|
||||
be configured, with regard to muxer configuration, bias input
|
||||
enable/disable, input schmitt trigger enable, drive strength
|
||||
output enable/disable state. For configuration detail,
|
||||
refer to https://github.com/sophgo/sophgo-doc/.
|
||||
|
||||
allOf:
|
||||
- $ref: pincfg-node.yaml#
|
||||
- $ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description: |
|
||||
The list of GPIOs and their mux settings that properties in the
|
||||
node apply to. This should be set using the PINMUX macro.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up:
|
||||
type: boolean
|
||||
|
||||
bias-pull-down:
|
||||
type: boolean
|
||||
|
||||
drive-strength-microamp:
|
||||
description: typical current when output low level.
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: sophgo,sg2042-pinctrl
|
||||
then:
|
||||
patternProperties:
|
||||
'-cfg$':
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
properties:
|
||||
drive-strength-microamp:
|
||||
enum: [ 5400, 8100, 10700, 13400,
|
||||
16100, 18800, 21400, 24100,
|
||||
26800, 29400, 32100, 34800,
|
||||
37400, 40100, 42800, 45400 ]
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: sophgo,sg2044-pinctrl
|
||||
then:
|
||||
patternProperties:
|
||||
'-cfg$':
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
properties:
|
||||
drive-strength-microamp:
|
||||
enum: [ 3200, 6400, 9600, 12700,
|
||||
15900, 19100, 22200, 25300,
|
||||
29500, 32700, 35900, 39000,
|
||||
42000, 45200, 48300, 51400]
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/pinctrl/pinctrl-sg2042.h>
|
||||
|
||||
pinctrl@30011000 {
|
||||
compatible = "sophgo,sg2042-pinctrl";
|
||||
reg = <30011000 0x1000>;
|
||||
|
||||
uart0_cfg: uart0-cfg {
|
||||
uart0-pins {
|
||||
pinmux = <PINMUX(PIN_UART0_TX, 0)>,
|
||||
<PINMUX(PIN_UART0_RX, 0)>;
|
||||
bias-pull-up;
|
||||
drive-strength-microamp = <13400>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
||||
+15
@@ -1253,6 +1253,14 @@ F: Documentation/devicetree/bindings/perf/amlogic,g12-ddr-pmu.yaml
|
||||
F: drivers/perf/amlogic/
|
||||
F: include/soc/amlogic/
|
||||
|
||||
AMLOGIC PINCTRL DRIVER
|
||||
M: Xianwei Zhao <xianwei.zhao@amlogic.com>
|
||||
L: linux-amlogic@lists.infradead.org
|
||||
L: linux-gpio@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pinctrl/amlogic,pinctrl-a4.yaml
|
||||
F: drivers/pinctrl/meson/pinctrl-amlogic-a4.c
|
||||
|
||||
AMLOGIC RTC DRIVER
|
||||
M: Yiting Deng <yiting.deng@amlogic.com>
|
||||
M: Xianwei Zhao <xianwei.zhao@amlogic.com>
|
||||
@@ -12050,12 +12058,19 @@ S: Supported
|
||||
F: arch/x86/include/asm/intel-mid.h
|
||||
F: arch/x86/pci/intel_mid_pci.c
|
||||
F: arch/x86/platform/intel-mid/
|
||||
F: drivers/dma/hsu/
|
||||
F: drivers/extcon/extcon-intel-mrfld.c
|
||||
F: drivers/gpio/gpio-merrifield.c
|
||||
F: drivers/gpio/gpio-tangier.*
|
||||
F: drivers/iio/adc/intel_mrfld_adc.c
|
||||
F: drivers/mfd/intel_soc_pmic_mrfld.c
|
||||
F: drivers/pinctrl/intel/pinctrl-merrifield.c
|
||||
F: drivers/pinctrl/intel/pinctrl-moorefield.c
|
||||
F: drivers/pinctrl/intel/pinctrl-tangier.*
|
||||
F: drivers/platform/x86/intel/mrfld_pwrbtn.c
|
||||
F: drivers/platform/x86/intel_scu_*
|
||||
F: drivers/staging/media/atomisp/
|
||||
F: drivers/tty/serial/8250/8250_mid.c
|
||||
F: drivers/watchdog/intel-mid_wdt.c
|
||||
F: include/linux/mfd/intel_soc_pmic_mrfld.h
|
||||
F: include/linux/platform_data/x86/intel-mid_wdt.h
|
||||
|
||||
@@ -1245,8 +1245,8 @@ static int xadc_parse_dt(struct iio_dev *indio_dev, unsigned int *conf, int irq)
|
||||
channel_templates = xadc_us_channels;
|
||||
max_channels = ARRAY_SIZE(xadc_us_channels);
|
||||
}
|
||||
channels = devm_kmemdup(dev, channel_templates,
|
||||
sizeof(channels[0]) * max_channels, GFP_KERNEL);
|
||||
channels = devm_kmemdup_array(dev, channel_templates, max_channels,
|
||||
sizeof(*channel_templates), GFP_KERNEL);
|
||||
if (!channels)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
@@ -102,9 +102,8 @@ static int micro_key_probe(struct platform_device *pdev)
|
||||
|
||||
keys->input->keycodesize = sizeof(micro_keycodes[0]);
|
||||
keys->input->keycodemax = ARRAY_SIZE(micro_keycodes);
|
||||
keys->codes = devm_kmemdup(&pdev->dev, micro_keycodes,
|
||||
keys->input->keycodesize * keys->input->keycodemax,
|
||||
GFP_KERNEL);
|
||||
keys->codes = devm_kmemdup_array(&pdev->dev, micro_keycodes, keys->input->keycodemax,
|
||||
keys->input->keycodesize, GFP_KERNEL);
|
||||
if (!keys->codes)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
@@ -176,8 +176,7 @@ int sparse_keymap_setup(struct input_dev *dev,
|
||||
for (e = keymap; e->type != KE_END; e++)
|
||||
map_size++;
|
||||
|
||||
map = devm_kmemdup(&dev->dev, keymap, map_size * sizeof(*map),
|
||||
GFP_KERNEL);
|
||||
map = devm_kmemdup_array(&dev->dev, keymap, map_size, sizeof(*keymap), GFP_KERNEL);
|
||||
if (!map)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
@@ -49,6 +49,20 @@ config PINCTRL_AMD
|
||||
Requires ACPI/FDT device enumeration code to set up a platform
|
||||
device.
|
||||
|
||||
config PINCTRL_AMDISP
|
||||
tristate "AMDISP GPIO pin control"
|
||||
depends on DRM_AMD_ISP || COMPILE_TEST
|
||||
depends on HAS_IOMEM
|
||||
select GPIOLIB
|
||||
select PINCONF
|
||||
select GENERIC_PINCONF
|
||||
help
|
||||
The driver for memory mapped GPIO functionality on AMD platforms
|
||||
with ISP support. All the pins are output controlled only
|
||||
|
||||
Requires AMDGPU to MFD add device for enumeration to set up as
|
||||
platform device.
|
||||
|
||||
config PINCTRL_APPLE_GPIO
|
||||
tristate "Apple SoC GPIO pin controller driver"
|
||||
depends on ARCH_APPLE
|
||||
|
||||
@@ -10,6 +10,7 @@ obj-$(CONFIG_GENERIC_PINCONF) += pinconf-generic.o
|
||||
obj-$(CONFIG_OF) += devicetree.o
|
||||
|
||||
obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o
|
||||
obj-$(CONFIG_PINCTRL_AMDISP) += pinctrl-amdisp.o
|
||||
obj-$(CONFIG_PINCTRL_APPLE_GPIO) += pinctrl-apple-gpio.o
|
||||
obj-$(CONFIG_PINCTRL_ARTPEC6) += pinctrl-artpec6.o
|
||||
obj-$(CONFIG_PINCTRL_AS3722) += pinctrl-as3722.o
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -346,14 +346,14 @@ static int bcm2835_gpio_get_direction(struct gpio_chip *chip, unsigned int offse
|
||||
struct bcm2835_pinctrl *pc = gpiochip_get_data(chip);
|
||||
enum bcm2835_fsel fsel = bcm2835_pinctrl_fsel_get(pc, offset);
|
||||
|
||||
/* Alternative function doesn't clearly provide a direction */
|
||||
if (fsel > BCM2835_FSEL_GPIO_OUT)
|
||||
return -EINVAL;
|
||||
if (fsel == BCM2835_FSEL_GPIO_OUT)
|
||||
return GPIO_LINE_DIRECTION_OUT;
|
||||
|
||||
if (fsel == BCM2835_FSEL_GPIO_IN)
|
||||
return GPIO_LINE_DIRECTION_IN;
|
||||
|
||||
return GPIO_LINE_DIRECTION_OUT;
|
||||
/*
|
||||
* Alternative function doesn't clearly provide a direction. Default
|
||||
* to INPUT.
|
||||
*/
|
||||
return GPIO_LINE_DIRECTION_IN;
|
||||
}
|
||||
|
||||
static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||
|
||||
@@ -143,10 +143,14 @@ static int dt_to_map_one_config(struct pinctrl *p,
|
||||
pctldev = get_pinctrl_dev_from_of_node(np_pctldev);
|
||||
if (pctldev)
|
||||
break;
|
||||
/* Do not defer probing of hogs (circular loop) */
|
||||
/*
|
||||
* Do not defer probing of hogs (circular loop)
|
||||
*
|
||||
* Return 1 to let the caller catch the case.
|
||||
*/
|
||||
if (np_pctldev == p->dev->of_node) {
|
||||
of_node_put(np_pctldev);
|
||||
return -ENODEV;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
of_node_put(np_pctldev);
|
||||
@@ -265,6 +269,8 @@ int pinctrl_dt_to_map(struct pinctrl *p, struct pinctrl_dev *pctldev)
|
||||
ret = dt_to_map_one_config(p, pctldev, statename,
|
||||
np_config);
|
||||
of_node_put(np_config);
|
||||
if (ret == 1)
|
||||
continue;
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user