dt-bindings: Add devicetree bindings
Add snapshot of device tree bindings from keystone common kernel, branch "android-mainline-keystone-qcom-release" at c4c12103f9c0 ("Snap for 9228065 from e32903b9a63bb558df8b803b076619c53c16baad to android-mainline-keystone-qcom-release"). Change-Id: I7682079615cbd9f29340a5c1f2a1d84ec441a1f1 Signed-off-by: Melody Olvera <quic_molvera@quicinc.com>
This commit is contained in:
63
bindings/i2c/allwinner,sun6i-a31-p2wi.yaml
Normal file
63
bindings/i2c/allwinner,sun6i-a31-p2wi.yaml
Normal file
@@ -0,0 +1,63 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/allwinner,sun6i-a31-p2wi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Allwinner A31 P2WI (Push/Pull 2 Wires Interface)
|
||||
|
||||
maintainers:
|
||||
- Chen-Yu Tsai <wens@csie.org>
|
||||
- Maxime Ripard <mripard@kernel.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: allwinner,sun6i-a31-p2wi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
minimum: 1
|
||||
maximum: 6000000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@1f03400 {
|
||||
compatible = "allwinner,sun6i-a31-p2wi";
|
||||
reg = <0x01f03400 0x400>;
|
||||
interrupts = <0 39 4>;
|
||||
clocks = <&apb0_gates 3>;
|
||||
clock-frequency = <100000>;
|
||||
resets = <&apb0_rst 3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
axp221: pmic@68 {
|
||||
/* compatible = "x-powers,axp221"; */
|
||||
reg = <0x68>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
55
bindings/i2c/amlogic,meson6-i2c.yaml
Normal file
55
bindings/i2c/amlogic,meson6-i2c.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2019 BayLibre, SAS
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/amlogic,meson6-i2c.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Amlogic Meson I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||
- Beniamino Galvani <b.galvani@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- amlogic,meson6-i2c # Meson6, Meson8 and compatible SoCs
|
||||
- amlogic,meson-gxbb-i2c # GXBB and compatible SoCs
|
||||
- amlogic,meson-axg-i2c # AXG and compatible SoCs
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@c8100500 {
|
||||
compatible = "amlogic,meson6-i2c";
|
||||
reg = <0xc8100500 0x20>;
|
||||
interrupts = <92>;
|
||||
clocks = <&clk81>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
eeprom@52 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x52>;
|
||||
};
|
||||
};
|
66
bindings/i2c/apple,i2c.yaml
Normal file
66
bindings/i2c/apple,i2c.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/apple,i2c.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Apple/PASemi I2C controller
|
||||
|
||||
maintainers:
|
||||
- Sven Peter <sven@svenpeter.dev>
|
||||
|
||||
description: |
|
||||
Apple SoCs such as the M1 come with a I2C controller based on the one found
|
||||
in machines with P. A. Semi's PWRficient processors.
|
||||
The bus is used to communicate with e.g. USB PD chips or the speaker
|
||||
amp.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- apple,t8103-i2c
|
||||
- apple,t6000-i2c
|
||||
- const: apple,i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: I2C bus reference clock
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description: |
|
||||
Desired I2C bus clock frequency in Hz. If not specified, 100 kHz will be
|
||||
used. This frequency is generated by dividing the reference clock.
|
||||
Allowed values are between ref_clk/(16*4) and ref_clk/(16*255).
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@35010000 {
|
||||
compatible = "apple,t8103-i2c", "apple,i2c";
|
||||
reg = <0x35010000 0x4000>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <0 627 4>;
|
||||
clocks = <&ref_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
29
bindings/i2c/arm,i2c-versatile.yaml
Normal file
29
bindings/i2c/arm,i2c-versatile.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/arm,i2c-versatile.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: I2C Controller on ARM Ltd development platforms
|
||||
|
||||
maintainers:
|
||||
- Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: arm,versatile-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
...
|
||||
|
73
bindings/i2c/aspeed,i2c.yaml
Normal file
73
bindings/i2c/aspeed,i2c.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/aspeed,i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ASPEED I2C on the AST24XX, AST25XX, and AST26XX SoCs
|
||||
|
||||
maintainers:
|
||||
- Rayn Chen <rayn_chen@aspeedtech.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- aspeed,ast2400-i2c-bus
|
||||
- aspeed,ast2500-i2c-bus
|
||||
- aspeed,ast2600-i2c-bus
|
||||
|
||||
reg:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: address offset and range of bus
|
||||
- description: address offset and range of bus buffer
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
description:
|
||||
root clock of bus, should reference the APB
|
||||
clock in the second cell
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
bus-frequency:
|
||||
minimum: 500
|
||||
maximum: 4000000
|
||||
default: 100000
|
||||
description: frequency of the bus clock in Hz defaults to 100 kHz when not
|
||||
specified
|
||||
|
||||
multi-master:
|
||||
type: boolean
|
||||
description:
|
||||
states that there is another master active on this bus
|
||||
|
||||
required:
|
||||
- reg
|
||||
- compatible
|
||||
- clocks
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/aspeed-clock.h>
|
||||
i2c0: i2c-bus@40 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
reg = <0x40 0x40>;
|
||||
clocks = <&syscon ASPEED_CLK_APB>;
|
||||
resets = <&syscon ASPEED_RESET_I2C>;
|
||||
bus-frequency = <100000>;
|
||||
interrupts = <0>;
|
||||
interrupt-parent = <&i2c_ic>;
|
||||
};
|
146
bindings/i2c/atmel,at91sam-i2c.yaml
Normal file
146
bindings/i2c/atmel,at91sam-i2c.yaml
Normal file
@@ -0,0 +1,146 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
# Copyright (C) 2022 Microchip Technology, Inc. and its subsidiaries
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/atmel,at91sam-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: I2C for Atmel/Microchip platforms
|
||||
|
||||
maintainers:
|
||||
- Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- atmel,at91rm9200-i2c
|
||||
- atmel,at91sam9261-i2c
|
||||
- atmel,at91sam9260-i2c
|
||||
- atmel,at91sam9g20-i2c
|
||||
- atmel,at91sam9g10-i2c
|
||||
- atmel,at91sam9x5-i2c
|
||||
- atmel,sama5d4-i2c
|
||||
- atmel,sama5d2-i2c
|
||||
- microchip,sam9x60-i2c
|
||||
- items:
|
||||
- const: microchip,sama7g5-i2c
|
||||
- const: microchip,sam9x60-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: TX DMA Channel Specifier
|
||||
- description: RX DMA Channel Specifier
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
atmel,fifo-size:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: |
|
||||
Maximum number of data the RX and TX FIFOs can store for
|
||||
FIFO capable I2C controllers.
|
||||
|
||||
scl-gpios: true
|
||||
|
||||
sda-gpios: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- clocks
|
||||
|
||||
allOf:
|
||||
- $ref: "i2c-controller.yaml"
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- atmel,sama5d4-i2c
|
||||
- atmel,sama5d2-i2c
|
||||
- microchip,sam9x60-i2c
|
||||
- microchip,sama7g5-i2c
|
||||
then:
|
||||
properties:
|
||||
i2c-sda-hold-time-ns:
|
||||
description:
|
||||
TWD hold time
|
||||
maxItems: 1
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/dma/at91.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
i2c0: i2c@fff84000 {
|
||||
compatible = "atmel,at91sam9g20-i2c";
|
||||
reg = <0xfff84000 0x100>;
|
||||
interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&twi0_clk>;
|
||||
clock-frequency = <400000>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c512";
|
||||
reg = <0x50>;
|
||||
pagesize = <128>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1: i2c@f8034600 {
|
||||
compatible = "atmel,sama5d2-i2c";
|
||||
reg = <0xf8034600 0x100>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
|
||||
dmas = <&dma0
|
||||
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
|
||||
AT91_XDMAC_DT_PERID(11)>,
|
||||
<&dma0
|
||||
(AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1))
|
||||
AT91_XDMAC_DT_PERID(12)>;
|
||||
dma-names = "tx", "rx";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&flx0>;
|
||||
atmel,fifo-size = <16>;
|
||||
i2c-sda-hold-time-ns = <336>;
|
||||
pinctrl-names = "default", "gpio";
|
||||
pinctrl-0 = <&pinctrl_i2c0>;
|
||||
pinctrl-1 = <&pinctrl_i2c0_gpio>;
|
||||
sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>;
|
||||
scl-gpios = <&pioA 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
||||
|
||||
eeprom@54 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x54>;
|
||||
pagesize = <16>;
|
||||
};
|
||||
};
|
54
bindings/i2c/brcm,bcm2835-i2c.yaml
Normal file
54
bindings/i2c/brcm,bcm2835-i2c.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/brcm,bcm2835-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM2835 I2C controller
|
||||
|
||||
maintainers:
|
||||
- Stephen Warren <swarren@wwwdotorg.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- brcm,bcm2835-i2c
|
||||
- items:
|
||||
- const: brcm,bcm2711-i2c
|
||||
- const: brcm,bcm2835-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@7e205000 {
|
||||
compatible = "brcm,bcm2835-i2c";
|
||||
reg = <0x7e205000 0x1000>;
|
||||
interrupts = <2 21>;
|
||||
clocks = <&clk_i2c>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
96
bindings/i2c/brcm,brcmstb-i2c.yaml
Normal file
96
bindings/i2c/brcm,brcmstb-i2c.yaml
Normal file
@@ -0,0 +1,96 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/brcm,brcmstb-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom STB BSC IIC Master Controller
|
||||
|
||||
maintainers:
|
||||
- Kamal Dasu <kdasu.kdev@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- brcm,bcm2711-hdmi-i2c
|
||||
- brcm,brcmstb-i2c
|
||||
- brcm,brcmper-i2c
|
||||
|
||||
reg:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: BSC register range
|
||||
- description: Auto-I2C register range
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: bsc
|
||||
- const: auto-i2c
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-names:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
enum:
|
||||
- 46875
|
||||
- 50000
|
||||
- 93750
|
||||
- 97500
|
||||
- 187500
|
||||
- 200000
|
||||
- 375000
|
||||
- 390000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clock-frequency
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- brcm,bcm2711-hdmi-i2c
|
||||
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 2
|
||||
|
||||
required:
|
||||
- reg-names
|
||||
|
||||
else:
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
examples:
|
||||
- |
|
||||
bsca: i2c@f0406200 {
|
||||
clock-frequency = <390000>;
|
||||
compatible = "brcm,brcmstb-i2c";
|
||||
interrupt-parent = <&irq0_intc>;
|
||||
reg = <0xf0406200 0x58>;
|
||||
interrupts = <0x18>;
|
||||
interrupt-names = "upg_bsca";
|
||||
};
|
||||
|
||||
- |
|
||||
ddc0: i2c@7ef04500 {
|
||||
compatible = "brcm,bcm2711-hdmi-i2c";
|
||||
reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>;
|
||||
reg-names = "bsc", "auto-i2c";
|
||||
clock-frequency = <390000>;
|
||||
};
|
||||
|
||||
...
|
71
bindings/i2c/brcm,iproc-i2c.yaml
Normal file
71
bindings/i2c/brcm,iproc-i2c.yaml
Normal file
@@ -0,0 +1,71 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/brcm,iproc-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom iProc I2C controller
|
||||
|
||||
maintainers:
|
||||
- Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- brcm,iproc-i2c
|
||||
- brcm,iproc-nic-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
enum: [ 100000, 400000 ]
|
||||
|
||||
interrupts:
|
||||
description: |
|
||||
Should contain the I2C interrupt. For certain revisions of the I2C
|
||||
controller, I2C interrupt is unwired to the interrupt controller. In such
|
||||
case, this property should be left unspecified, and driver will fall back
|
||||
to polling mode
|
||||
maxItems: 1
|
||||
|
||||
brcm,ape-hsls-addr-mask:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Host view of address mask into the 'APE' co-processor
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: brcm,iproc-nic-i2c
|
||||
then:
|
||||
required:
|
||||
- brcm,ape-hsls-addr-mask
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- clock-frequency
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c@18008000 {
|
||||
compatible = "brcm,iproc-i2c";
|
||||
reg = <0x18008000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>;
|
||||
clock-frequency = <100000>;
|
||||
|
||||
wm8750@1a {
|
||||
compatible = "wlf,wm8750";
|
||||
reg = <0x1a>;
|
||||
};
|
||||
};
|
35
bindings/i2c/brcm,kona-i2c.txt
Normal file
35
bindings/i2c/brcm,kona-i2c.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
Broadcom Kona Family I2C
|
||||
=========================
|
||||
|
||||
This I2C controller is used in the following Broadcom SoCs:
|
||||
|
||||
BCM11130
|
||||
BCM11140
|
||||
BCM11351
|
||||
BCM28145
|
||||
BCM28155
|
||||
|
||||
Required Properties
|
||||
-------------------
|
||||
- compatible: "brcm,bcm11351-i2c", "brcm,kona-i2c"
|
||||
- reg: Physical base address and length of controller registers
|
||||
- interrupts: The interrupt number used by the controller
|
||||
- clocks: clock specifier for the kona i2c external clock
|
||||
- clock-frequency: The I2C bus frequency in Hz
|
||||
- #address-cells: Should be <1>
|
||||
- #size-cells: Should be <0>
|
||||
|
||||
Refer to clocks/clock-bindings.txt for generic clock consumer
|
||||
properties.
|
||||
|
||||
Example:
|
||||
|
||||
i2c@3e016000 {
|
||||
compatible = "brcm,bcm11351-i2c","brcm,kona-i2c";
|
||||
reg = <0x3e016000 0x80>;
|
||||
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&bsc1_clk>;
|
||||
clock-frequency = <400000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
60
bindings/i2c/cdns,i2c-r1p10.yaml
Normal file
60
bindings/i2c/cdns,i2c-r1p10.yaml
Normal file
@@ -0,0 +1,60 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/cdns,i2c-r1p10.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Cadence I2C controller
|
||||
|
||||
maintainers:
|
||||
- Michal Simek <michal.simek@xilinx.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cdns,i2c-r1p10 # cadence i2c controller version 1.0
|
||||
- cdns,i2c-r1p14 # cadence i2c controller version 1.4
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
minimum: 1
|
||||
maximum: 400000
|
||||
description: |
|
||||
Desired operating frequency, in Hz, of the bus.
|
||||
|
||||
clock-name:
|
||||
const: pclk
|
||||
description: |
|
||||
Input clock name.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c@e0004000 {
|
||||
compatible = "cdns,i2c-r1p10";
|
||||
clocks = <&clkc 38>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg = <0xe0004000 0x1000>;
|
||||
clock-frequency = <400000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
66
bindings/i2c/google,cros-ec-i2c-tunnel.yaml
Normal file
66
bindings/i2c/google,cros-ec-i2c-tunnel.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
|
||||
$id: http://devicetree.org/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: I2C bus that tunnels through the ChromeOS EC (cros-ec)
|
||||
|
||||
maintainers:
|
||||
- Doug Anderson <dianders@chromium.org>
|
||||
- Benson Leung <bleung@chromium.org>
|
||||
|
||||
description: |
|
||||
On some ChromeOS board designs we've got a connection to the EC
|
||||
(embedded controller) but no direct connection to some devices on the
|
||||
other side of the EC (like a battery and PMIC). To get access to
|
||||
those devices we need to tunnel our i2c commands through the EC.
|
||||
|
||||
The node for this device should be under a cros-ec node like
|
||||
google,cros-ec-spi or google,cros-ec-i2c.
|
||||
|
||||
allOf:
|
||||
- $ref: i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: google,cros-ec-i2c-tunnel
|
||||
|
||||
google,remote-bus:
|
||||
description: The EC bus we'd like to talk to.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- google,remote-bus
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
spi0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cros-ec@0 {
|
||||
compatible = "google,cros-ec-spi";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <5000000>;
|
||||
interrupts = <99 0>;
|
||||
|
||||
i2c-tunnel {
|
||||
compatible = "google,cros-ec-i2c-tunnel";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
google,remote-bus = <0>;
|
||||
|
||||
battery: sbs-battery@b {
|
||||
compatible = "sbs,sbs-battery";
|
||||
reg = <0xb>;
|
||||
sbs,poll-retry-count = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
39
bindings/i2c/i2c-altera.txt
Normal file
39
bindings/i2c/i2c-altera.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
* Altera I2C Controller
|
||||
* This is Altera's synthesizable logic block I2C Controller for use
|
||||
* in Altera's FPGAs.
|
||||
|
||||
Required properties :
|
||||
- compatible : should be "altr,softip-i2c-v1.0"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : <IRQ> where IRQ is the interrupt number.
|
||||
- clocks : phandle to input clock.
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Recommended properties :
|
||||
- clock-frequency : desired I2C bus clock frequency in Hz.
|
||||
|
||||
Optional properties :
|
||||
- fifo-size : Size of the RX and TX FIFOs in bytes.
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Example :
|
||||
|
||||
i2c@100080000 {
|
||||
compatible = "altr,softip-i2c-v1.0";
|
||||
reg = <0x00000001 0x00080000 0x00000040>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 43 4>;
|
||||
clocks = <&clk_0>;
|
||||
clock-frequency = <100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
fifo-size = <4>;
|
||||
|
||||
eeprom@51 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x51>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
};
|
||||
|
82
bindings/i2c/i2c-arb-gpio-challenge.txt
Normal file
82
bindings/i2c/i2c-arb-gpio-challenge.txt
Normal file
@@ -0,0 +1,82 @@
|
||||
GPIO-based I2C Arbitration Using a Challenge & Response Mechanism
|
||||
=================================================================
|
||||
This uses GPIO lines and a challenge & response mechanism to arbitrate who is
|
||||
the master of an I2C bus in a multimaster situation.
|
||||
|
||||
In many cases using GPIOs to arbitrate is not needed and a design can use
|
||||
the standard I2C multi-master rules. Using GPIOs is generally useful in
|
||||
the case where there is a device on the bus that has errata and/or bugs
|
||||
that makes standard multimaster mode not feasible.
|
||||
|
||||
Note that this scheme works well enough but has some downsides:
|
||||
* It is nonstandard (not using standard I2C multimaster)
|
||||
* Having two masters on a bus in general makes it relatively hard to debug
|
||||
problems (hard to tell if i2c issues were caused by one master, another, or
|
||||
some device on the bus).
|
||||
|
||||
|
||||
Algorithm:
|
||||
|
||||
All masters on the bus have a 'bus claim' line which is an output that the
|
||||
others can see. These are all active low with pull-ups enabled. We'll
|
||||
describe these lines as:
|
||||
|
||||
- OUR_CLAIM: output from us signaling to other hosts that we want the bus
|
||||
- THEIR_CLAIMS: output from others signaling that they want the bus
|
||||
|
||||
The basic algorithm is to assert your line when you want the bus, then make
|
||||
sure that the other side doesn't want it also. A detailed explanation is best
|
||||
done with an example.
|
||||
|
||||
Let's say we want to claim the bus. We:
|
||||
1. Assert OUR_CLAIM.
|
||||
2. Waits a little bit for the other sides to notice (slew time, say 10
|
||||
microseconds).
|
||||
3. Check THEIR_CLAIMS. If none are asserted then the we have the bus and we are
|
||||
done.
|
||||
4. Otherwise, wait for a few milliseconds and see if THEIR_CLAIMS are released.
|
||||
5. If not, back off, release the claim and wait for a few more milliseconds.
|
||||
6. Go back to 1 (until retry time has expired).
|
||||
|
||||
|
||||
Required properties:
|
||||
- compatible: i2c-arb-gpio-challenge
|
||||
- our-claim-gpio: The GPIO that we use to claim the bus.
|
||||
- their-claim-gpios: The GPIOs that the other sides use to claim the bus.
|
||||
Note that some implementations may only support a single other master.
|
||||
- I2C arbitration bus node. See i2c-arb.txt in this directory.
|
||||
|
||||
Optional properties:
|
||||
- slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
|
||||
- wait-retry-us: we'll attempt another claim after this many microseconds.
|
||||
Default is 3000 us.
|
||||
- wait-free-us: we'll give up after this many microseconds. Default is 50000 us.
|
||||
|
||||
|
||||
Example:
|
||||
i2c@12ca0000 {
|
||||
compatible = "acme,some-i2c-device";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c-arbitrator {
|
||||
compatible = "i2c-arb-gpio-challenge";
|
||||
|
||||
i2c-parent = <&{/i2c@12CA0000}>;
|
||||
|
||||
our-claim-gpio = <&gpf0 3 1>;
|
||||
their-claim-gpios = <&gpe0 4 1>;
|
||||
slew-delay-us = <10>;
|
||||
wait-retry-us = <3000>;
|
||||
wait-free-us = <50000>;
|
||||
|
||||
i2c-arb {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@52 {
|
||||
// Normal I2C device
|
||||
};
|
||||
};
|
||||
};
|
35
bindings/i2c/i2c-arb.txt
Normal file
35
bindings/i2c/i2c-arb.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
Common i2c arbitration bus properties.
|
||||
|
||||
- i2c-arb child node
|
||||
|
||||
Required properties for the i2c-arb child node:
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Optional properties for i2c-arb child node:
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
|
||||
Example :
|
||||
|
||||
/*
|
||||
An NXP pca9541 I2C bus master selector at address 0x74
|
||||
with a NXP pca8574 GPIO expander attached.
|
||||
*/
|
||||
|
||||
arb@74 {
|
||||
compatible = "nxp,pca9541";
|
||||
reg = <0x74>;
|
||||
|
||||
i2c-arb {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio@38 {
|
||||
compatible = "nxp,pca8574";
|
||||
reg = <0x38>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
};
|
||||
};
|
||||
};
|
30
bindings/i2c/i2c-axxia.txt
Normal file
30
bindings/i2c/i2c-axxia.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
LSI Axxia I2C
|
||||
|
||||
Required properties :
|
||||
- compatible : Must be "lsi,api2c"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : the interrupt specifier
|
||||
- #address-cells : Must be <1>;
|
||||
- #size-cells : Must be <0>;
|
||||
- clock-names : Must contain "i2c".
|
||||
- clocks: Must contain an entry for each name in clock-names. See the common
|
||||
clock bindings.
|
||||
|
||||
Optional properties :
|
||||
- clock-frequency : Desired I2C bus clock frequency in Hz. If not specified,
|
||||
the default 100 kHz frequency will be used. As only Normal and Fast modes
|
||||
are supported, possible values are 100000 and 400000.
|
||||
|
||||
Example :
|
||||
|
||||
i2c@2010084000 {
|
||||
compatible = "lsi,api2c";
|
||||
device_type = "i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x20 0x10084000 0x00 0x1000>;
|
||||
interrupts = <0 19 4>;
|
||||
clocks = <&clk_per>;
|
||||
clock-names = "i2c";
|
||||
clock-frequency = <400000>;
|
||||
};
|
27
bindings/i2c/i2c-cbus-gpio.txt
Normal file
27
bindings/i2c/i2c-cbus-gpio.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
Device tree bindings for i2c-cbus-gpio driver
|
||||
|
||||
Required properties:
|
||||
- compatible = "i2c-cbus-gpio";
|
||||
- gpios: clk, dat, sel
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Optional properties:
|
||||
- child nodes conforming to i2c bus binding
|
||||
|
||||
Example:
|
||||
|
||||
i2c@0 {
|
||||
compatible = "i2c-cbus-gpio";
|
||||
gpios = <&gpio 66 0 /* clk */
|
||||
&gpio 65 0 /* dat */
|
||||
&gpio 64 0 /* sel */
|
||||
>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
retu: retu@1 {
|
||||
compatible = "nokia,retu";
|
||||
reg = <0x1>;
|
||||
};
|
||||
};
|
43
bindings/i2c/i2c-davinci.txt
Normal file
43
bindings/i2c/i2c-davinci.txt
Normal file
@@ -0,0 +1,43 @@
|
||||
* Texas Instruments Davinci/Keystone I2C
|
||||
|
||||
This file provides information, what the device node for the
|
||||
davinci/keystone i2c interface contains.
|
||||
|
||||
Required properties:
|
||||
- compatible: "ti,davinci-i2c" or "ti,keystone-i2c";
|
||||
- reg : Offset and length of the register set for the device
|
||||
- clocks: I2C functional clock phandle.
|
||||
For 66AK2G this property should be set per binding,
|
||||
Documentation/devicetree/bindings/clock/ti,sci-clk.yaml
|
||||
|
||||
SoC-specific Required Properties:
|
||||
|
||||
The following are mandatory properties for Keystone 2 66AK2G SoCs only:
|
||||
|
||||
- power-domains: Should contain a phandle to a PM domain provider node
|
||||
and an args specifier containing the I2C device id
|
||||
value. This property is as per the binding,
|
||||
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
|
||||
|
||||
Recommended properties :
|
||||
- interrupts : standard interrupt property.
|
||||
- clock-frequency : desired I2C bus clock frequency in Hz.
|
||||
- ti,has-pfunc: boolean; if defined, it indicates that SoC supports PFUNC
|
||||
registers. PFUNC registers allow to switch I2C pins to function as
|
||||
GPIOs, so they can be toggled manually.
|
||||
|
||||
Example (enbw_cmc board):
|
||||
i2c@1c22000 {
|
||||
compatible = "ti,davinci-i2c";
|
||||
reg = <0x22000 0x1000>;
|
||||
clock-frequency = <100000>;
|
||||
interrupts = <15>;
|
||||
interrupt-parent = <&intc>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
dtt@48 {
|
||||
compatible = "national,lm75";
|
||||
reg = <0x48>;
|
||||
};
|
||||
};
|
135
bindings/i2c/i2c-demux-pinctrl.txt
Normal file
135
bindings/i2c/i2c-demux-pinctrl.txt
Normal file
@@ -0,0 +1,135 @@
|
||||
Pinctrl-based I2C Bus DeMux
|
||||
|
||||
This binding describes an I2C bus demultiplexer that uses pin multiplexing to
|
||||
route the I2C signals, and represents the pin multiplexing configuration using
|
||||
the pinctrl device tree bindings. This may be used to select one I2C IP core at
|
||||
runtime which may have a better feature set for a given task than another I2C
|
||||
IP core on the SoC. The most simple example is to fall back to GPIO bitbanging
|
||||
if your current runtime configuration hits an errata of the internal IP core.
|
||||
|
||||
+-------------------------------+
|
||||
| SoC |
|
||||
| | +-----+ +-----+
|
||||
| +------------+ | | dev | | dev |
|
||||
| |I2C IP Core1|--\ | +-----+ +-----+
|
||||
| +------------+ \-------+ | | |
|
||||
| |Pinctrl|--|------+--------+
|
||||
| +------------+ +-------+ |
|
||||
| |I2C IP Core2|--/ |
|
||||
| +------------+ |
|
||||
| |
|
||||
+-------------------------------+
|
||||
|
||||
Required properties:
|
||||
- compatible: "i2c-demux-pinctrl"
|
||||
- i2c-parent: List of phandles of I2C masters available for selection. The first
|
||||
one will be used as default.
|
||||
- i2c-bus-name: The name of this bus. Also needed as pinctrl-name for the I2C
|
||||
parents.
|
||||
|
||||
Furthermore, I2C mux properties and child nodes. See i2c-mux.yaml in this
|
||||
directory.
|
||||
|
||||
Example:
|
||||
|
||||
Here is a snipplet for a bus to be demuxed. It contains various i2c clients for
|
||||
HDMI, so the bus is named "i2c-hdmi":
|
||||
|
||||
i2chdmi: i2c@8 {
|
||||
|
||||
compatible = "i2c-demux-pinctrl";
|
||||
i2c-parent = <&gpioi2c>, <&iic2>, <&i2c2>;
|
||||
i2c-bus-name = "i2c-hdmi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ak4643: sound-codec@12 {
|
||||
compatible = "asahi-kasei,ak4643";
|
||||
|
||||
#sound-dai-cells = <0>;
|
||||
reg = <0x12>;
|
||||
};
|
||||
|
||||
composite-in@20 {
|
||||
compatible = "adi,adv7180";
|
||||
reg = <0x20>;
|
||||
remote = <&vin1>;
|
||||
|
||||
port {
|
||||
adv7180: endpoint {
|
||||
bus-width = <8>;
|
||||
remote-endpoint = <&vin1ep0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hdmi@39 {
|
||||
compatible = "adi,adv7511w";
|
||||
reg = <0x39>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
adi,input-depth = <8>;
|
||||
adi,input-colorspace = "rgb";
|
||||
adi,input-clock = "1x";
|
||||
adi,input-style = <1>;
|
||||
adi,input-justification = "evenly";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
adv7511_in: endpoint {
|
||||
remote-endpoint = <&du_out_lvds0>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
adv7511_out: endpoint {
|
||||
remote-endpoint = <&hdmi_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
And for clarification, here are the snipplets for the i2c-parents:
|
||||
|
||||
gpioi2c: i2c@9 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <&gpio5 6 GPIO_ACTIVE_HIGH /* sda */
|
||||
&gpio5 5 GPIO_ACTIVE_HIGH /* scl */
|
||||
>;
|
||||
i2c-gpio,delay-us = <5>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
&i2c2 {
|
||||
pinctrl-0 = <&i2c2_pins>;
|
||||
pinctrl-names = "i2c-hdmi";
|
||||
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
&iic2 {
|
||||
pinctrl-0 = <&iic2_pins>;
|
||||
pinctrl-names = "i2c-hdmi";
|
||||
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
Please note:
|
||||
|
||||
- pinctrl properties for the parent I2C controllers need a pinctrl state
|
||||
with the same name as i2c-bus-name, not "default"!
|
||||
|
||||
- the i2c masters must have their status "disabled". This driver will
|
||||
enable them at runtime when needed.
|
25
bindings/i2c/i2c-digicolor.txt
Normal file
25
bindings/i2c/i2c-digicolor.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
Conexant Digicolor I2C controller
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "cnxt,cx92755-i2c"
|
||||
- reg: physical address and length of the device registers
|
||||
- interrupts: a single interrupt specifier
|
||||
- clocks: clock for the device
|
||||
- #address-cells: should be <1>
|
||||
- #size-cells: should be <0>
|
||||
|
||||
Optional properties:
|
||||
- clock-frequency: the desired I2C bus clock frequency in Hz; in
|
||||
absence of this property the default value is used (100 kHz).
|
||||
|
||||
Example:
|
||||
|
||||
i2c: i2c@f0000120 {
|
||||
compatible = "cnxt,cx92755-i2c";
|
||||
reg = <0xf0000120 0x10>;
|
||||
interrupts = <28>;
|
||||
clocks = <&main_clk>;
|
||||
clock-frequency = <100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
133
bindings/i2c/i2c-exynos5.yaml
Normal file
133
bindings/i2c/i2c-exynos5.yaml
Normal file
@@ -0,0 +1,133 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-exynos5.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Samsung's High Speed I2C controller
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzk@kernel.org>
|
||||
|
||||
description: |
|
||||
The Samsung's High Speed I2C controller is used to interface with I2C devices
|
||||
at various speeds ranging from 100kHz to 3.4MHz.
|
||||
|
||||
In case the HSI2C controller is encapsulated within USI block (it's the case
|
||||
e.g. for Exynos850 and Exynos Auto V9 SoCs), it might be also necessary to
|
||||
define USI node in device tree file, choosing "i2c" configuration. Please see
|
||||
Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml for details.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- samsung,exynos5250-hsi2c # Exynos5250 and Exynos5420
|
||||
- samsung,exynos5260-hsi2c # Exynos5260
|
||||
- samsung,exynos7-hsi2c # Exynos7
|
||||
- samsung,exynosautov9-hsi2c # ExynosAutoV9 and Exynos850
|
||||
- const: samsung,exynos5-hsi2c # Exynos5250 and Exynos5420
|
||||
deprecated: true
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
description:
|
||||
Desired operating frequency in Hz of the bus.
|
||||
|
||||
If not specified, the bus operates in fast-speed mode at 100kHz.
|
||||
|
||||
If specified, the bus operates in high-speed mode only if the
|
||||
clock-frequency is >= 1MHz.
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: I2C operating clock
|
||||
- description: Bus clock (APB)
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: hsi2c
|
||||
- const: hsi2c_pclk
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- samsung,exynosautov9-hsi2c
|
||||
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 2
|
||||
|
||||
clock-names:
|
||||
minItems: 2
|
||||
|
||||
required:
|
||||
- clock-names
|
||||
|
||||
else:
|
||||
properties:
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos5420.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
hsi2c_8: i2c@12e00000 {
|
||||
compatible = "samsung,exynos5250-hsi2c";
|
||||
reg = <0x12e00000 0x1000>;
|
||||
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clock-frequency = <100000>;
|
||||
clocks = <&clock CLK_USI4>;
|
||||
clock-names = "hsi2c";
|
||||
|
||||
pmic@66 {
|
||||
/* compatible = "samsung,s2mps11-pmic"; */
|
||||
reg = <0x66>;
|
||||
};
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos850.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
hsi2c_2: i2c@138c0000 {
|
||||
compatible = "samsung,exynosautov9-hsi2c";
|
||||
reg = <0x138c0000 0xc0>;
|
||||
interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&cmu_peri CLK_GOUT_HSI2C2_IPCLK>,
|
||||
<&cmu_peri CLK_GOUT_HSI2C2_PCLK>;
|
||||
clock-names = "hsi2c", "hsi2c_pclk";
|
||||
|
||||
pmic@66 {
|
||||
/* compatible = "samsung,s2mps11-pmic"; */
|
||||
reg = <0x66>;
|
||||
};
|
||||
};
|
40
bindings/i2c/i2c-fsi.txt
Normal file
40
bindings/i2c/i2c-fsi.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
Device-tree bindings for FSI-attached I2C master and busses
|
||||
-----------------------------------------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible = "ibm,i2c-fsi";
|
||||
- reg = < address size >; : The FSI CFAM address and address
|
||||
space size.
|
||||
- #address-cells = <1>; : Number of address cells in child
|
||||
nodes.
|
||||
- #size-cells = <0>; : Number of size cells in child nodes.
|
||||
- child nodes : Nodes to describe busses off the I2C
|
||||
master.
|
||||
|
||||
Child node required properties:
|
||||
- reg = < port number > : The port number on the I2C master.
|
||||
|
||||
Child node optional properties:
|
||||
- child nodes : Nodes to describe devices on the I2C
|
||||
bus.
|
||||
|
||||
Examples:
|
||||
|
||||
i2c@1800 {
|
||||
compatible = "ibm,i2c-fsi";
|
||||
reg = < 0x1800 0x400 >;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-bus@0 {
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
i2c-bus@1 {
|
||||
reg = <1>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "vendor,dev-name";
|
||||
};
|
||||
};
|
||||
};
|
38
bindings/i2c/i2c-gate.yaml
Normal file
38
bindings/i2c/i2c-gate.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-gate.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Common i2c gate properties
|
||||
|
||||
maintainers:
|
||||
- Peter Rosin <peda@axentia.se>
|
||||
|
||||
description: |
|
||||
An i2c gate is useful to e.g. reduce the digital noise for RF tuners connected
|
||||
to the i2c bus. Gates are similar to arbitrators in that you need to perform
|
||||
some kind of operation to access the i2c bus past the arbitrator/gate, but
|
||||
there are no competing masters to consider for gates and therefore there is
|
||||
no arbitration happening for gates.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: i2c-gate
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c-gate {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ak8975@c {
|
||||
compatible = "asahi-kasei,ak8975";
|
||||
reg = <0x0c>;
|
||||
};
|
||||
};
|
||||
...
|
73
bindings/i2c/i2c-gpio.yaml
Normal file
73
bindings/i2c/i2c-gpio.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-gpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Bindings for GPIO bitbanged I2C
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa@kernel.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: i2c-gpio
|
||||
|
||||
sda-gpios:
|
||||
description:
|
||||
gpio used for the sda signal, this should be flagged as
|
||||
active high using open drain with (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)
|
||||
from <dt-bindings/gpio/gpio.h> since the signal is by definition
|
||||
open drain.
|
||||
maxItems: 1
|
||||
|
||||
scl-gpios:
|
||||
description:
|
||||
gpio used for the scl signal, this should be flagged as
|
||||
active high using open drain with (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)
|
||||
from <dt-bindings/gpio/gpio.h> since the signal is by definition
|
||||
open drain.
|
||||
maxItems: 1
|
||||
|
||||
i2c-gpio,scl-output-only:
|
||||
description: scl as output only
|
||||
type: boolean
|
||||
|
||||
i2c-gpio,delay-us:
|
||||
description: delay between GPIO operations (may depend on each platform)
|
||||
|
||||
i2c-gpio,timeout-ms:
|
||||
description: timeout to get data
|
||||
|
||||
# Deprecated properties, do not use in new device tree sources:
|
||||
gpios:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
description: sda and scl gpio, alternative for {sda,scl}-gpios
|
||||
|
||||
i2c-gpio,sda-open-drain:
|
||||
type: boolean
|
||||
deprecated: true
|
||||
description: this means that something outside of our control has put
|
||||
the GPIO line used for SDA into open drain mode, and that something is
|
||||
not the GPIO chip. It is essentially an inconsistency flag.
|
||||
|
||||
i2c-gpio,scl-open-drain:
|
||||
type: boolean
|
||||
deprecated: true
|
||||
description: this means that something outside of our control has put the
|
||||
GPIO line used for SCL into open drain mode, and that something is not
|
||||
the GPIO chip. It is essentially an inconsistency flag.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- sda-gpios
|
||||
- scl-gpios
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
...
|
24
bindings/i2c/i2c-hix5hd2.txt
Normal file
24
bindings/i2c/i2c-hix5hd2.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
I2C for Hisilicon hix5hd2 chipset platform
|
||||
|
||||
Required properties:
|
||||
- compatible: Must be "hisilicon,hix5hd2-i2c"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: interrupt number to the cpu.
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- clocks: phandles to input clocks.
|
||||
|
||||
Optional properties:
|
||||
- clock-frequency: Desired I2C bus frequency in Hz, otherwise defaults to 100000
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Examples:
|
||||
I2C0@f8b10000 {
|
||||
compatible = "hisilicon,hix5hd2-i2c";
|
||||
reg = <0xf8b10000 0x1000>;
|
||||
interrupts = <0 38 4>;
|
||||
clocks = <&clock HIX5HD2_I2C0_RST>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
}
|
26
bindings/i2c/i2c-img-scb.txt
Normal file
26
bindings/i2c/i2c-img-scb.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
IMG Serial Control Bus (SCB) I2C Controller
|
||||
|
||||
Required Properties:
|
||||
- compatible: "img,scb-i2c"
|
||||
- reg: Physical base address and length of controller registers
|
||||
- interrupts: Interrupt number used by the controller
|
||||
- clocks : Should contain a clock specifier for each entry in clock-names
|
||||
- clock-names : Should contain the following entries:
|
||||
"scb", for the SCB core clock.
|
||||
"sys", for the system clock.
|
||||
- clock-frequency: The I2C bus frequency in Hz
|
||||
- #address-cells: Should be <1>
|
||||
- #size-cells: Should be <0>
|
||||
|
||||
Example:
|
||||
|
||||
i2c@18100000 {
|
||||
compatible = "img,scb-i2c";
|
||||
reg = <0x18100000 0x200>;
|
||||
interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&i2c0_clk>, <&system_clk>;
|
||||
clock-names = "scb", "sys";
|
||||
clock-frequency = <400000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
81
bindings/i2c/i2c-imx-lpi2c.yaml
Normal file
81
bindings/i2c/i2c-imx-lpi2c.yaml
Normal file
@@ -0,0 +1,81 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-imx-lpi2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale Low Power Inter IC (LPI2C) for i.MX
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- fsl,imx7ulp-lpi2c
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx8qxp-lpi2c
|
||||
- fsl,imx8dxl-lpi2c
|
||||
- fsl,imx8qm-lpi2c
|
||||
- fsl,imx8ulp-lpi2c
|
||||
- fsl,imx93-lpi2c
|
||||
- const: fsl,imx7ulp-lpi2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
assigned-clock-parents: true
|
||||
assigned-clock-rates: true
|
||||
assigned-clocks: true
|
||||
clock-frequency: true
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: per
|
||||
- const: ipg
|
||||
|
||||
clocks:
|
||||
maxItems: 2
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA controller phandle and request line for TX
|
||||
- description: DMA controller phandle and request line for RX
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/imx7ulp-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c@40a50000 {
|
||||
compatible = "fsl,imx7ulp-lpi2c";
|
||||
reg = <0x40A50000 0x10000>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks IMX7ULP_CLK_LPI2C7>,
|
||||
<&clks IMX7ULP_CLK_NIC1_BUS_DIV>;
|
||||
};
|
123
bindings/i2c/i2c-imx.yaml
Normal file
123
bindings/i2c/i2c-imx.yaml
Normal file
@@ -0,0 +1,123 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-imx.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX
|
||||
|
||||
maintainers:
|
||||
- Oleksij Rempel <o.rempel@pengutronix.de>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: fsl,imx1-i2c
|
||||
- const: fsl,imx21-i2c
|
||||
- const: fsl,vf610-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,ls1012a-i2c
|
||||
- fsl,ls1021a-i2c
|
||||
- fsl,ls1028a-i2c
|
||||
- fsl,ls1043a-i2c
|
||||
- fsl,ls1046a-i2c
|
||||
- fsl,ls1088a-i2c
|
||||
- fsl,ls208xa-i2c
|
||||
- fsl,lx2160a-i2c
|
||||
- const: fsl,vf610-i2c
|
||||
- items:
|
||||
- const: fsl,imx35-i2c
|
||||
- const: fsl,imx1-i2c
|
||||
- items:
|
||||
- const: fsl,imx7d-i2c
|
||||
- const: fsl,imx21-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx25-i2c
|
||||
- fsl,imx27-i2c
|
||||
- fsl,imx31-i2c
|
||||
- fsl,imx50-i2c
|
||||
- fsl,imx51-i2c
|
||||
- fsl,imx53-i2c
|
||||
- fsl,imx6q-i2c
|
||||
- fsl,imx6sl-i2c
|
||||
- fsl,imx6sx-i2c
|
||||
- fsl,imx6sll-i2c
|
||||
- fsl,imx6ul-i2c
|
||||
- fsl,imx7s-i2c
|
||||
- fsl,imx8mq-i2c
|
||||
- fsl,imx8mm-i2c
|
||||
- fsl,imx8mn-i2c
|
||||
- fsl,imx8mp-i2c
|
||||
- const: fsl,imx21-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: ipg
|
||||
|
||||
clock-frequency:
|
||||
minimum: 1
|
||||
default: 100000
|
||||
maximum: 400000
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA controller phandle and request line for RX
|
||||
- description: DMA controller phandle and request line for TX
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
sda-gpios:
|
||||
maxItems: 1
|
||||
|
||||
scl-gpios:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/imx5-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c@83fc4000 {
|
||||
compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
|
||||
reg = <0x83fc4000 0x4000>;
|
||||
interrupts = <63>;
|
||||
clocks = <&clks IMX5_CLK_I2C2_GATE>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/clock/vf610-clock.h>
|
||||
|
||||
i2c@40066000 {
|
||||
compatible = "fsl,vf610-i2c";
|
||||
reg = <0x40066000 0x1000>;
|
||||
interrupts = <71 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks VF610_CLK_I2C0>;
|
||||
clock-names = "ipg";
|
||||
dmas = <&edma0 0 50>,
|
||||
<&edma0 0 51>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
20
bindings/i2c/i2c-iop3xx.txt
Normal file
20
bindings/i2c/i2c-iop3xx.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
i2c Controller on XScale platforms such as IOP3xx and IXP4xx
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be one of
|
||||
"intel,iop3xx-i2c"
|
||||
"intel,ixp4xx-i2c";
|
||||
- reg
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Optional properties:
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Example:
|
||||
|
||||
i2c@c8011000 {
|
||||
compatible = "intel,ixp4xx-i2c";
|
||||
reg = <0xc8011000 0x18>;
|
||||
interrupts = <33 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
33
bindings/i2c/i2c-lpc2k.txt
Normal file
33
bindings/i2c/i2c-lpc2k.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
NXP I2C controller for LPC2xxx/178x/18xx/43xx
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "nxp,lpc1788-i2c"
|
||||
- reg: physical address and length of the device registers
|
||||
- interrupts: a single interrupt specifier
|
||||
- clocks: clock for the device
|
||||
- #address-cells: should be <1>
|
||||
- #size-cells: should be <0>
|
||||
|
||||
Optional properties:
|
||||
- clock-frequency: the desired I2C bus clock frequency in Hz; in
|
||||
absence of this property the default value is used (100 kHz).
|
||||
|
||||
Example:
|
||||
i2c0: i2c@400a1000 {
|
||||
compatible = "nxp,lpc1788-i2c";
|
||||
reg = <0x400a1000 0x1000>;
|
||||
interrupts = <18>;
|
||||
clocks = <&ccu1 CLK_APB1_I2C0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
clock-frequency = <400000>;
|
||||
|
||||
lm75@48 {
|
||||
compatible = "nxp,lm75";
|
||||
reg = <0x48>;
|
||||
};
|
||||
};
|
||||
|
100
bindings/i2c/i2c-mpc.yaml
Normal file
100
bindings/i2c/i2c-mpc.yaml
Normal file
@@ -0,0 +1,100 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mpc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: I2C-Bus adapter for MPC824x/83xx/85xx/86xx/512x/52xx SoCs
|
||||
|
||||
maintainers:
|
||||
- Chris Packham <chris.packham@alliedtelesis.co.nz>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- mpc5200-i2c
|
||||
- fsl,mpc5200-i2c
|
||||
- fsl,mpc5121-i2c
|
||||
- fsl,mpc8313-i2c
|
||||
- fsl,mpc8543-i2c
|
||||
- fsl,mpc8544-i2c
|
||||
- const: fsl-i2c
|
||||
- items:
|
||||
- const: fsl,mpc5200b-i2c
|
||||
- const: fsl,mpc5200-i2c
|
||||
- const: fsl-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
fsl,preserve-clocking:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: |
|
||||
if defined, the clock settings from the bootloader are
|
||||
preserved (not touched)
|
||||
|
||||
fsl,timeout:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: |
|
||||
I2C bus timeout in microseconds
|
||||
|
||||
fsl,i2c-erratum-a004447:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: |
|
||||
Indicates the presence of QorIQ erratum A-004447, which
|
||||
says that the standard i2c recovery scheme mechanism does
|
||||
not work and an alternate implementation is needed.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
/* MPC5121 based board */
|
||||
i2c@1740 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1740 0x20>;
|
||||
interrupts = <11 0x8>;
|
||||
interrupt-parent = <&ipic>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
- |
|
||||
/* MPC5200B based board */
|
||||
i2c@3d00 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5200b-i2c", "fsl,mpc5200-i2c", "fsl-i2c";
|
||||
reg = <0x3d00 0x40>;
|
||||
interrupts = <2 15 0>;
|
||||
interrupt-parent = <&mpc5200_pic>;
|
||||
fsl,preserve-clocking;
|
||||
};
|
||||
|
||||
- |
|
||||
/* MPC8544 base board */
|
||||
i2c@3100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc8544-i2c", "fsl-i2c";
|
||||
reg = <0x3100 0x100>;
|
||||
interrupts = <43 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
clock-frequency = <400000>;
|
||||
fsl,timeout = <10000>;
|
||||
};
|
||||
...
|
119
bindings/i2c/i2c-mt65xx.yaml
Normal file
119
bindings/i2c/i2c-mt65xx.yaml
Normal file
@@ -0,0 +1,119 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mt65xx.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: MediaTek I2C controller
|
||||
|
||||
description:
|
||||
This driver interfaces with the native I2C controller present in
|
||||
various MediaTek SoCs.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
maintainers:
|
||||
- Qii Wang <qii.wang@mediatek.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: mediatek,mt2712-i2c
|
||||
- const: mediatek,mt6577-i2c
|
||||
- const: mediatek,mt6589-i2c
|
||||
- const: mediatek,mt7622-i2c
|
||||
- const: mediatek,mt8168-i2c
|
||||
- const: mediatek,mt8173-i2c
|
||||
- const: mediatek,mt8183-i2c
|
||||
- const: mediatek,mt8186-i2c
|
||||
- const: mediatek,mt8188-i2c
|
||||
- const: mediatek,mt8192-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt7629-i2c
|
||||
- mediatek,mt8516-i2c
|
||||
- const: mediatek,mt2712-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt2701-i2c
|
||||
- mediatek,mt6797-i2c
|
||||
- mediatek,mt7623-i2c
|
||||
- const: mediatek,mt6577-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8195-i2c
|
||||
- const: mediatek,mt8192-i2c
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: Physical base address
|
||||
- description: DMA base address
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 2
|
||||
items:
|
||||
- description: Main clock for I2C bus
|
||||
- description: Clock for I2C via DMA
|
||||
- description: Bus arbitrator clock
|
||||
- description: Clock for I2C from PMIC
|
||||
|
||||
clock-names:
|
||||
minItems: 2
|
||||
items:
|
||||
- const: main
|
||||
- const: dma
|
||||
- const: arb
|
||||
- const: pmic
|
||||
|
||||
clock-div:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Frequency divider of clock source in I2C module
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
description:
|
||||
SCL frequency to use (in Hz). If omitted, 100kHz is used.
|
||||
|
||||
mediatek,have-pmic:
|
||||
description: Platform controls I2C from PMIC side
|
||||
type: boolean
|
||||
|
||||
mediatek,use-push-pull:
|
||||
description: Use push-pull mode I/O config
|
||||
type: boolean
|
||||
|
||||
vbus-supply:
|
||||
description: Phandle to the regulator providing power to SCL/SDA
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- clock-div
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c0: i2c@1100d000 {
|
||||
compatible = "mediatek,mt6577-i2c";
|
||||
reg = <0x1100d000 0x70>, <0x11000300 0x80>;
|
||||
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_LOW>;
|
||||
clocks = <&i2c0_ck>, <&ap_dma_ck>;
|
||||
clock-names = "main", "dma";
|
||||
clock-div = <16>;
|
||||
clock-frequency = <400000>;
|
||||
mediatek,have-pmic;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
104
bindings/i2c/i2c-mux-gpio.yaml
Normal file
104
bindings/i2c/i2c-mux-gpio.yaml
Normal file
@@ -0,0 +1,104 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: GPIO-based I2C Bus Mux
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa@kernel.org>
|
||||
|
||||
description: |
|
||||
This binding describes an I2C bus multiplexer that uses GPIOs to route the I2C signals.
|
||||
|
||||
+-----+ +-----+
|
||||
| dev | | dev |
|
||||
+------------+ +-----+ +-----+
|
||||
| SoC | | |
|
||||
| | /--------+--------+
|
||||
| +------+ | +------+ child bus A, on GPIO value set to 0
|
||||
| | I2C |-|--| Mux |
|
||||
| +------+ | +--+---+ child bus B, on GPIO value set to 1
|
||||
| | | \----------+--------+--------+
|
||||
| +------+ | | | | |
|
||||
| | GPIO |-|-----+ +-----+ +-----+ +-----+
|
||||
| +------+ | | dev | | dev | | dev |
|
||||
+------------+ +-----+ +-----+ +-----+
|
||||
|
||||
For each I2C child node, an I2C child bus will be created. They will be numbered based on their
|
||||
order in the device tree.
|
||||
|
||||
Whenever an access is made to a device on a child bus, the value set in the relevant node's reg
|
||||
property will be output using the list of GPIOs, the first in the list holding the least-
|
||||
significant value.
|
||||
|
||||
If an idle state is defined, using the idle-state (optional) property, whenever an access is not
|
||||
being made to a device on a child bus, the GPIOs will be set according to the idle value.
|
||||
|
||||
If an idle state is not defined, the most recently used value will be left programmed into
|
||||
hardware whenever no access is being made to a device on a child bus.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: i2c-mux-gpio
|
||||
|
||||
i2c-parent:
|
||||
description: phandle of the I2C bus that this multiplexer's master-side port is connected to
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle"
|
||||
|
||||
mux-gpios:
|
||||
description: list of GPIOs used to control the muxer
|
||||
minItems: 1
|
||||
maxItems: 4 # Should be enough
|
||||
|
||||
idle-state:
|
||||
description: Value to set the muxer to when idle. When no value is given, it defaults to the
|
||||
last value used.
|
||||
$ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
|
||||
allOf:
|
||||
- $ref: i2c-mux.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- i2c-parent
|
||||
- mux-gpios
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2cmux {
|
||||
compatible = "i2c-mux-gpio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
mux-gpios = <&gpio1 22 0>, <&gpio1 23 0>;
|
||||
i2c-parent = <&i2c1>;
|
||||
|
||||
i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ssd1307: oled@3c {
|
||||
compatible = "solomon,ssd1307fb-i2c";
|
||||
reg = <0x3c>;
|
||||
pwms = <&pwm 4 3000>;
|
||||
reset-gpios = <&gpio2 7 1>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@3 {
|
||||
reg = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pca9555: pca9555@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
};
|
123
bindings/i2c/i2c-mux-gpmux.yaml
Normal file
123
bindings/i2c/i2c-mux-gpmux.yaml
Normal file
@@ -0,0 +1,123 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mux-gpmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: General Purpose I2C Bus Mux
|
||||
|
||||
maintainers:
|
||||
- Peter Rosin <peda@axentia.se>
|
||||
|
||||
description: |+
|
||||
This binding describes an I2C bus multiplexer that uses a mux controller
|
||||
from the mux subsystem to route the I2C signals.
|
||||
|
||||
.-----. .-----.
|
||||
| dev | | dev |
|
||||
.------------. '-----' '-----'
|
||||
| SoC | | |
|
||||
| | .--------+--------'
|
||||
| .------. | .------+ child bus A, on MUX value set to 0
|
||||
| | I2C |-|--| Mux |
|
||||
| '------' | '--+---+ child bus B, on MUX value set to 1
|
||||
| .------. | | '----------+--------+--------.
|
||||
| | MUX- | | | | | |
|
||||
| | Ctrl |-|-----+ .-----. .-----. .-----.
|
||||
| '------' | | dev | | dev | | dev |
|
||||
'------------' '-----' '-----' '-----'
|
||||
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-mux.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: i2c-mux
|
||||
|
||||
i2c-parent:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
The phandle of the I2C bus that this multiplexer's master-side port is
|
||||
connected to.
|
||||
|
||||
mux-controls:
|
||||
maxItems: 1
|
||||
description:
|
||||
The mux-controller states are the I2C sub-bus numbers.
|
||||
|
||||
mux-locked:
|
||||
type: boolean
|
||||
description: |
|
||||
Explicitly allow unrelated I2C transactions on the parent I2C adapter at
|
||||
these times:
|
||||
- during setup of the multiplexer
|
||||
- between setup of the multiplexer and the child bus I2C transaction
|
||||
- between the child bus I2C transaction and releasing of the multiplexer
|
||||
- during releasing of the multiplexer
|
||||
|
||||
However, I2C transactions to devices behind all I2C multiplexers connected
|
||||
to the same parent adapter that this multiplexer is connected to are blocked
|
||||
for the full duration of the complete multiplexed I2C transaction (i.e.
|
||||
including the times covered by the above list).
|
||||
If mux-locked is not present, the multiplexer is assumed to be parent-locked.
|
||||
This means that no unrelated I2C transactions are allowed on the parent I2C
|
||||
adapter for the complete multiplexed I2C transaction.
|
||||
The properties of mux-locked and parent-locked multiplexers are discussed
|
||||
in more detail in Documentation/i2c/i2c-topology.rst.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- i2c-parent
|
||||
- mux-controls
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
mux: mux-controller {
|
||||
compatible = "gpio-mux";
|
||||
#mux-control-cells = <0>;
|
||||
|
||||
mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>,
|
||||
<&pioA 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
i2c-mux {
|
||||
compatible = "i2c-mux";
|
||||
mux-locked;
|
||||
i2c-parent = <&i2c1>;
|
||||
|
||||
mux-controls = <&mux>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@3 {
|
||||
reg = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
61
bindings/i2c/i2c-mux-ltc4306.txt
Normal file
61
bindings/i2c/i2c-mux-ltc4306.txt
Normal file
@@ -0,0 +1,61 @@
|
||||
* Linear Technology / Analog Devices I2C bus switch
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Must contain one of the following.
|
||||
"lltc,ltc4305", "lltc,ltc4306"
|
||||
- reg: The I2C address of the device.
|
||||
|
||||
The following required properties are defined externally:
|
||||
|
||||
- Standard I2C mux properties. See i2c-mux.yaml in this directory.
|
||||
- I2C child bus nodes. See i2c-mux.yaml in this directory.
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- enable-gpios: Reference to the GPIO connected to the enable input.
|
||||
- i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all
|
||||
children in idle state. This is necessary for example, if there are several
|
||||
multiplexers on the bus and the devices behind them use same I2C addresses.
|
||||
- gpio-controller: Marks the device node as a GPIO Controller.
|
||||
- #gpio-cells: Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify flags.
|
||||
See ../gpio/gpio.txt for more information.
|
||||
- ltc,downstream-accelerators-enable: Enables the rise time accelerators
|
||||
on the downstream port.
|
||||
- ltc,upstream-accelerators-enable: Enables the rise time accelerators
|
||||
on the upstream port.
|
||||
|
||||
Example:
|
||||
|
||||
ltc4306: i2c-mux@4a {
|
||||
compatible = "lltc,ltc4306";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x4a>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
i2c@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <1>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
};
|
110
bindings/i2c/i2c-mux-pca954x.yaml
Normal file
110
bindings/i2c/i2c-mux-pca954x.yaml
Normal file
@@ -0,0 +1,110 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NXP PCA954x I2C bus switch
|
||||
|
||||
maintainers:
|
||||
- Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
|
||||
description:
|
||||
The binding supports NXP PCA954x and PCA984x I2C mux/switch devices.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-mux.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- nxp,pca9540
|
||||
- nxp,pca9542
|
||||
- nxp,pca9543
|
||||
- nxp,pca9544
|
||||
- nxp,pca9545
|
||||
- nxp,pca9546
|
||||
- nxp,pca9547
|
||||
- nxp,pca9548
|
||||
- nxp,pca9846
|
||||
- nxp,pca9847
|
||||
- nxp,pca9848
|
||||
- nxp,pca9849
|
||||
- items:
|
||||
- const: nxp,pca9646
|
||||
- const: nxp,pca9546
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
i2c-mux-idle-disconnect:
|
||||
type: boolean
|
||||
description: Forces mux to disconnect all children in idle state. This is
|
||||
necessary for example, if there are several multiplexers on the bus and
|
||||
the devices behind them use same I2C addresses.
|
||||
|
||||
idle-state:
|
||||
description: if present, overrides i2c-mux-idle-disconnect
|
||||
$ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-mux@74 {
|
||||
compatible = "nxp,pca9548";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x74>;
|
||||
|
||||
interrupt-parent = <&ipic>;
|
||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
i2c@2 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <2>;
|
||||
|
||||
eeprom@54 {
|
||||
compatible = "atmel,24c08";
|
||||
reg = <0x54>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@4 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <4>;
|
||||
|
||||
rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
103
bindings/i2c/i2c-mux-pinctrl.yaml
Normal file
103
bindings/i2c/i2c-mux-pinctrl.yaml
Normal file
@@ -0,0 +1,103 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mux-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Pinctrl-based I2C Bus Mux
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa@kernel.org>
|
||||
|
||||
description: |
|
||||
This binding describes an I2C bus multiplexer that uses pin multiplexing to route the I2C
|
||||
signals, and represents the pin multiplexing configuration using the pinctrl device tree
|
||||
bindings.
|
||||
|
||||
+-----+ +-----+
|
||||
| dev | | dev |
|
||||
+------------------------+ +-----+ +-----+
|
||||
| SoC | | |
|
||||
| /----|------+--------+
|
||||
| +---+ +------+ | child bus A, on first set of pins
|
||||
| |I2C|---|Pinmux| |
|
||||
| +---+ +------+ | child bus B, on second set of pins
|
||||
| \----|------+--------+--------+
|
||||
| | | | |
|
||||
+------------------------+ +-----+ +-----+ +-----+
|
||||
| dev | | dev | | dev |
|
||||
+-----+ +-----+ +-----+
|
||||
|
||||
For each named state defined in the pinctrl-names property, an I2C child bus will be created.
|
||||
I2C child bus numbers are assigned based on the index into the pinctrl-names property.
|
||||
|
||||
The only exception is that no bus will be created for a state named "idle". If such a state is
|
||||
defined, it must be the last entry in pinctrl-names. For example:
|
||||
|
||||
pinctrl-names = "ddc", "pta", "idle" -> ddc = bus 0, pta = bus 1
|
||||
pinctrl-names = "ddc", "idle", "pta" -> Invalid ("idle" not last)
|
||||
pinctrl-names = "idle", "ddc", "pta" -> Invalid ("idle" not last)
|
||||
|
||||
Whenever an access is made to a device on a child bus, the relevant pinctrl state will be
|
||||
programmed into hardware.
|
||||
|
||||
If an idle state is defined, whenever an access is not being made to a device on a child bus,
|
||||
the idle pinctrl state will be programmed into hardware.
|
||||
|
||||
If an idle state is not defined, the most recently used pinctrl state will be left programmed
|
||||
into hardware whenever no access is being made of a device on a child bus.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: i2c-mux-pinctrl
|
||||
|
||||
i2c-parent:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: The phandle of the I2C bus that this multiplexer's master-side port is connected
|
||||
to.
|
||||
|
||||
allOf:
|
||||
- $ref: i2c-mux.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- i2c-parent
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2cmux {
|
||||
compatible = "i2c-mux-pinctrl";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-parent = <&i2c1>;
|
||||
|
||||
pinctrl-names = "ddc", "pta", "idle";
|
||||
pinctrl-0 = <&state_i2cmux_ddc>;
|
||||
pinctrl-1 = <&state_i2cmux_pta>;
|
||||
pinctrl-2 = <&state_i2cmux_idle>;
|
||||
|
||||
i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
};
|
74
bindings/i2c/i2c-mux-reg.txt
Normal file
74
bindings/i2c/i2c-mux-reg.txt
Normal file
@@ -0,0 +1,74 @@
|
||||
Register-based I2C Bus Mux
|
||||
|
||||
This binding describes an I2C bus multiplexer that uses a single register
|
||||
to route the I2C signals.
|
||||
|
||||
Required properties:
|
||||
- compatible: i2c-mux-reg
|
||||
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
||||
port is connected to.
|
||||
* Standard I2C mux properties. See i2c-mux.yaml in this directory.
|
||||
* I2C child bus nodes. See i2c-mux.yaml in this directory.
|
||||
|
||||
Optional properties:
|
||||
- reg: this pair of <offset size> specifies the register to control the mux.
|
||||
The <offset size> depends on its parent node. It can be any memory-mapped
|
||||
address. The size must be either 1, 2, or 4 bytes. If reg is omitted, the
|
||||
resource of this device will be used.
|
||||
- little-endian: The existence indicates the register is in little endian.
|
||||
- big-endian: The existence indicates the register is in big endian.
|
||||
If both little-endian and big-endian are omitted, the endianness of the
|
||||
CPU will be used.
|
||||
- write-only: The existence indicates the register is write-only.
|
||||
- idle-state: value to set the muxer to when idle. When no value is
|
||||
given, it defaults to the last value used.
|
||||
|
||||
Whenever an access is made to a device on a child bus, the value set
|
||||
in the relevant node's reg property will be output to the register.
|
||||
|
||||
If an idle state is defined, using the idle-state (optional) property,
|
||||
whenever an access is not being made to a device on a child bus, the
|
||||
register will be set according to the idle value.
|
||||
|
||||
If an idle state is not defined, the most recently used value will be
|
||||
left programmed into the register.
|
||||
|
||||
Example of a mux on PCIe card, the host is a powerpc SoC (big endian):
|
||||
|
||||
i2c-mux {
|
||||
/* the <offset size> depends on the address translation
|
||||
* of the parent device. If omitted, device resource
|
||||
* will be used instead. The size is to determine
|
||||
* whether iowrite32, iowrite16, or iowrite8 will be used.
|
||||
*/
|
||||
reg = <0x6028 0x4>;
|
||||
little-endian; /* little endian register on PCIe */
|
||||
compatible = "i2c-mux-reg";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
i2c-parent = <&i2c1>;
|
||||
i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
si5338: clock-generator@70 {
|
||||
compatible = "silabs,si5338";
|
||||
reg = <0x70>;
|
||||
/* other stuff */
|
||||
};
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
/* data is written using iowrite32 */
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
si5338: clock-generator@70 {
|
||||
compatible = "silabs,si5338";
|
||||
reg = <0x70>;
|
||||
/* other stuff */
|
||||
};
|
||||
};
|
||||
};
|
87
bindings/i2c/i2c-mux.yaml
Normal file
87
bindings/i2c/i2c-mux.yaml
Normal file
@@ -0,0 +1,87 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Common i2c bus multiplexer/switch properties.
|
||||
|
||||
maintainers:
|
||||
- Peter Rosin <peda@axentia.se>
|
||||
|
||||
description: |+
|
||||
An i2c bus multiplexer/switch will have several child busses that are numbered
|
||||
uniquely in a device dependent manner. The nodes for an i2c bus
|
||||
multiplexer/switch will have one child node for each child bus.
|
||||
|
||||
For i2c multiplexers/switches that have child nodes that are a mixture of both
|
||||
i2c child busses and other child nodes, the 'i2c-mux' subnode can be used for
|
||||
populating the i2c child busses. If an 'i2c-mux' subnode is present, only
|
||||
subnodes of this will be considered as i2c child busses.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: '^(i2c-?)?mux'
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
'^i2c@[0-9a-f]+$':
|
||||
$ref: /schemas/i2c/i2c-controller.yaml
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
reg:
|
||||
description: The mux selector sub-bus number for the child I2C bus.
|
||||
maxItems: 1
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
examples:
|
||||
- |
|
||||
/*
|
||||
* An NXP pca9548 8 channel I2C multiplexer at address 0x70
|
||||
* with two NXP pca8574 GPIO expanders attached, one each to
|
||||
* ports 3 and 4.
|
||||
*/
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9548";
|
||||
reg = <0x70>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@3 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <3>;
|
||||
|
||||
gpio@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
i2c@4 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <4>;
|
||||
|
||||
gpio@20 {
|
||||
compatible = "nxp,pca9555";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
51
bindings/i2c/i2c-mxs.yaml
Normal file
51
bindings/i2c/i2c-mxs.yaml
Normal file
@@ -0,0 +1,51 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-mxs.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale MXS Inter IC (I2C) Controller
|
||||
|
||||
maintainers:
|
||||
- Shawn Guo <shawnguo@kernel.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- fsl,imx23-i2c
|
||||
- fsl,imx28-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
enum: [ 100000, 400000 ]
|
||||
|
||||
dmas:
|
||||
maxItems: 1
|
||||
|
||||
dma-names:
|
||||
const: rx-tx
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- dmas
|
||||
- dma-names
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@80058000 {
|
||||
compatible = "fsl,imx28-i2c";
|
||||
reg = <0x80058000 2000>;
|
||||
interrupts = <111>;
|
||||
clock-frequency = <100000>;
|
||||
dmas = <&dma_apbx 6>;
|
||||
dma-names = "rx-tx";
|
||||
};
|
40
bindings/i2c/i2c-octeon.txt
Normal file
40
bindings/i2c/i2c-octeon.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
* Two Wire Serial Interface (TWSI) / I2C
|
||||
|
||||
- compatible: "cavium,octeon-3860-twsi"
|
||||
|
||||
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||
|
||||
or
|
||||
|
||||
compatible: "cavium,octeon-7890-twsi"
|
||||
|
||||
Compatibility with cn78XX SOCs.
|
||||
|
||||
- reg: The base address of the TWSI/I2C bus controller register bank.
|
||||
|
||||
- #address-cells: Must be <1>.
|
||||
|
||||
- #size-cells: Must be <0>. I2C addresses have no size component.
|
||||
|
||||
- interrupts: A single interrupt specifier.
|
||||
|
||||
- clock-frequency: The I2C bus clock rate in Hz.
|
||||
|
||||
Example:
|
||||
twsi0: i2c@1180000001000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "cavium,octeon-3860-twsi";
|
||||
reg = <0x11800 0x00001000 0x0 0x200>;
|
||||
interrupts = <0 45>;
|
||||
clock-frequency = <100000>;
|
||||
|
||||
rtc@68 {
|
||||
compatible = "dallas,ds1337";
|
||||
reg = <0x68>;
|
||||
};
|
||||
tmp@4c {
|
||||
compatible = "ti,tmp421";
|
||||
reg = <0x4c>;
|
||||
};
|
||||
};
|
37
bindings/i2c/i2c-opal.txt
Normal file
37
bindings/i2c/i2c-opal.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
Device-tree bindings for I2C OPAL driver
|
||||
----------------------------------------
|
||||
|
||||
Most of the device node and properties layout is specific to the firmware and
|
||||
used by the firmware itself for configuring the port. From the linux
|
||||
perspective, the properties of use are "ibm,port-name" and "ibm,opal-id".
|
||||
|
||||
Required properties:
|
||||
|
||||
- reg: Port-id within a given master
|
||||
- compatible: must be "ibm,opal-i2c"
|
||||
- ibm,opal-id: Refers to a specific bus and used to identify it when calling
|
||||
the relevant OPAL functions.
|
||||
- bus-frequency: Operating frequency of the i2c bus (in HZ). Informational for
|
||||
linux, used by the FW though.
|
||||
|
||||
Optional properties:
|
||||
- ibm,port-name: Firmware provides this name that uniquely identifies the i2c
|
||||
port.
|
||||
|
||||
The node contains a number of other properties that are used by the FW itself
|
||||
and depend on the specific hardware implementation. The example below depicts
|
||||
a P8 on-chip bus.
|
||||
|
||||
Example:
|
||||
|
||||
i2c-bus@0 {
|
||||
reg = <0x0>;
|
||||
bus-frequency = <0x61a80>;
|
||||
compatible = "ibm,power8-i2c-port", "ibm,opal-i2c";
|
||||
ibm,opal-id = <0x1>;
|
||||
ibm,port-name = "p8_00000000_e1p0";
|
||||
#address-cells = <0x1>;
|
||||
phandle = <0x10000006>;
|
||||
#size-cells = <0x0>;
|
||||
linux,phandle = <0x10000006>;
|
||||
};
|
62
bindings/i2c/i2c-owl.yaml
Normal file
62
bindings/i2c/i2c-owl.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-owl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Actions Semi Owl I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
||||
|
||||
description: |
|
||||
This I2C controller is found in the Actions Semi Owl SoCs:
|
||||
S500, S700 and S900.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- actions,s500-i2c # Actions Semi S500 compatible SoCs
|
||||
- actions,s700-i2c # Actions Semi S700 compatible SoCs
|
||||
- actions,s900-i2c # Actions Semi S900 compatible SoCs
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description: Phandle of the clock feeding the I2C controller.
|
||||
minItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description: |
|
||||
Desired I2C bus clock frequency in Hz. As only Standard and Fast
|
||||
modes are supported, possible values are 100000 and 400000.
|
||||
enum: [100000, 400000]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/actions,s900-cmu.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c@e0170000 {
|
||||
compatible = "actions,s900-i2c";
|
||||
reg = <0xe0170000 0x1000>;
|
||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cmu CLK_I2C0>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
...
|
27
bindings/i2c/i2c-pca-platform.txt
Normal file
27
bindings/i2c/i2c-pca-platform.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
* NXP PCA PCA9564/PCA9665 I2C controller
|
||||
|
||||
The PCA9564/PCA9665 serves as an interface between most standard
|
||||
parallel-bus microcontrollers/microprocessors and the serial I2C-bus
|
||||
and allows the parallel bus system to communicate bi-directionally
|
||||
with the I2C-bus.
|
||||
|
||||
Required properties :
|
||||
|
||||
- reg : Offset and length of the register set for the device
|
||||
- compatible : one of "nxp,pca9564" or "nxp,pca9665"
|
||||
|
||||
Optional properties
|
||||
- interrupts : the interrupt number
|
||||
- reset-gpios : gpio specifier for gpio connected to RESET_N pin. As the line
|
||||
is active low, it should be marked GPIO_ACTIVE_LOW.
|
||||
- clock-frequency : I2C bus frequency.
|
||||
|
||||
Example:
|
||||
i2c0: i2c@80000 {
|
||||
compatible = "nxp,pca9564";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x80000 0x4>;
|
||||
reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
34
bindings/i2c/i2c-pnx.txt
Normal file
34
bindings/i2c/i2c-pnx.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
* NXP PNX I2C Controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- reg: Offset and length of the register set for the device
|
||||
- compatible: should be "nxp,pnx-i2c"
|
||||
- interrupts: configure one interrupt line
|
||||
- #address-cells: always 1 (for i2c addresses)
|
||||
- #size-cells: always 0
|
||||
|
||||
Optional properties:
|
||||
|
||||
- clock-frequency: desired I2C bus clock frequency in Hz, Default: 100000 Hz
|
||||
|
||||
Examples:
|
||||
|
||||
i2c1: i2c@400a0000 {
|
||||
compatible = "nxp,pnx-i2c";
|
||||
reg = <0x400a0000 0x100>;
|
||||
interrupt-parent = <&mic>;
|
||||
interrupts = <51 0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c2: i2c@400a8000 {
|
||||
compatible = "nxp,pnx-i2c";
|
||||
reg = <0x400a8000 0x100>;
|
||||
interrupt-parent = <&mic>;
|
||||
interrupts = <50 0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
93
bindings/i2c/i2c-pxa-pci-ce4100.txt
Normal file
93
bindings/i2c/i2c-pxa-pci-ce4100.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
CE4100 I2C
|
||||
----------
|
||||
|
||||
CE4100 has one PCI device which is described as the I2C-Controller. This
|
||||
PCI device has three PCI-bars, each bar contains a complete I2C
|
||||
controller. So we have a total of three independent I2C-Controllers
|
||||
which share only an interrupt line.
|
||||
The driver is probed via the PCI-ID and is gathering the information of
|
||||
attached devices from the devices tree.
|
||||
Grant Likely recommended to use the ranges property to map the PCI-Bar
|
||||
number to its physical address and to use this to find the child nodes
|
||||
of the specific I2C controller. This were his exact words:
|
||||
|
||||
Here's where the magic happens. Each entry in
|
||||
ranges describes how the parent pci address space
|
||||
(middle group of 3) is translated to the local
|
||||
address space (first group of 2) and the size of
|
||||
each range (last cell). In this particular case,
|
||||
the first cell of the local address is chosen to be
|
||||
1:1 mapped to the BARs, and the second is the
|
||||
offset from be base of the BAR (which would be
|
||||
non-zero if you had 2 or more devices mapped off
|
||||
the same BAR)
|
||||
|
||||
ranges allows the address mapping to be described
|
||||
in a way that the OS can interpret without
|
||||
requiring custom device driver code.
|
||||
|
||||
This is an example which is used on FalconFalls:
|
||||
------------------------------------------------
|
||||
i2c-controller@b,2 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
compatible = "pci8086,2e68.2",
|
||||
"pci8086,2e68",
|
||||
"pciclass,ff0000",
|
||||
"pciclass,ff00";
|
||||
|
||||
reg = <0x15a00 0x0 0x0 0x0 0x0>;
|
||||
interrupts = <16 1>;
|
||||
|
||||
/* as described by Grant, the first number in the group of
|
||||
* three is the bar number followed by the 64bit bar address
|
||||
* followed by size of the mapping. The bar address
|
||||
* requires also a valid translation in parents ranges
|
||||
* property.
|
||||
*/
|
||||
ranges = <0 0 0x02000000 0 0xdffe0500 0x100
|
||||
1 0 0x02000000 0 0xdffe0600 0x100
|
||||
2 0 0x02000000 0 0xdffe0700 0x100>;
|
||||
|
||||
i2c@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "intel,ce4100-i2c-controller";
|
||||
|
||||
/* The first number in the reg property is the
|
||||
* number of the bar
|
||||
*/
|
||||
reg = <0 0 0x100>;
|
||||
|
||||
/* This I2C controller has no devices */
|
||||
};
|
||||
|
||||
i2c@1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "intel,ce4100-i2c-controller";
|
||||
reg = <1 0 0x100>;
|
||||
|
||||
/* This I2C controller has one gpio controller */
|
||||
gpio@26 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "nxp,pcf8575";
|
||||
reg = <0x26>;
|
||||
gpio-controller;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@2 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "intel,ce4100-i2c-controller";
|
||||
reg = <2 0 0x100>;
|
||||
|
||||
gpio@26 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "nxp,pcf8575";
|
||||
reg = <0x26>;
|
||||
gpio-controller;
|
||||
};
|
||||
};
|
||||
};
|
74
bindings/i2c/i2c-pxa.yaml
Normal file
74
bindings/i2c/i2c-pxa.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-pxa.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Marvell MMP I2C controller bindings
|
||||
|
||||
maintainers:
|
||||
- Rob Herring <robh+dt@kernel.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
not:
|
||||
required:
|
||||
- mrvl,i2c-polling
|
||||
then:
|
||||
required:
|
||||
- interrupts
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mrvl,mmp-twsi
|
||||
- mrvl,pxa-i2c
|
||||
- marvell,armada-3700-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
|
||||
mrvl,i2c-polling:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: |
|
||||
Disable interrupt of i2c controller. Polling status register of i2c
|
||||
controller instead.
|
||||
|
||||
mrvl,i2c-fast-mode:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: Enable fast mode of i2c controller.
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/marvell,mmp2.h>
|
||||
i2c@d4011000 {
|
||||
compatible = "mrvl,mmp-twsi";
|
||||
reg = <0xd4011000 0x1000>;
|
||||
interrupts = <7>;
|
||||
clocks = <&soc_clocks MMP2_CLK_TWSI1>;
|
||||
mrvl,i2c-fast-mode;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
...
|
142
bindings/i2c/i2c-rk3x.yaml
Normal file
142
bindings/i2c/i2c-rk3x.yaml
Normal file
@@ -0,0 +1,142 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-rk3x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Rockchip RK3xxx I2C controller
|
||||
|
||||
description:
|
||||
This driver interfaces with the native I2C controller present in Rockchip
|
||||
RK3xxx SoCs.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
maintainers:
|
||||
- Heiko Stuebner <heiko@sntech.de>
|
||||
|
||||
# Everything else is described in the common file
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: rockchip,rv1108-i2c
|
||||
- const: rockchip,rk3066-i2c
|
||||
- const: rockchip,rk3188-i2c
|
||||
- const: rockchip,rk3228-i2c
|
||||
- const: rockchip,rk3288-i2c
|
||||
- const: rockchip,rk3399-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- rockchip,rk3036-i2c
|
||||
- rockchip,rk3128-i2c
|
||||
- rockchip,rk3368-i2c
|
||||
- const: rockchip,rk3288-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- rockchip,px30-i2c
|
||||
- rockchip,rk3308-i2c
|
||||
- rockchip,rk3328-i2c
|
||||
- rockchip,rk3568-i2c
|
||||
- rockchip,rk3588-i2c
|
||||
- rockchip,rv1126-i2c
|
||||
- const: rockchip,rk3399-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
items:
|
||||
- description:
|
||||
For older hardware (rk3066, rk3188, rk3228, rk3288)
|
||||
there is one clock that is used both to derive the functional clock
|
||||
for the device and as the bus clock.
|
||||
For newer hardware (rk3399) this clock is used to derive
|
||||
the functional clock
|
||||
- description:
|
||||
For newer hardware (rk3399) this is the bus clock
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: i2c
|
||||
- const: pclk
|
||||
|
||||
rockchip,grf:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
Required on RK3066, RK3188 the phandle of the syscon node for
|
||||
the general register file (GRF)
|
||||
On those SoCs an alias with the correct I2C bus ID
|
||||
(bit offset in the GRF) is also required.
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
description:
|
||||
SCL frequency to use (in Hz). If omitted, 100kHz is used.
|
||||
|
||||
i2c-scl-rising-time-ns:
|
||||
default: 1000
|
||||
description:
|
||||
Number of nanoseconds the SCL signal takes to rise
|
||||
(t(r) in I2C specification). If not specified this is assumed to be
|
||||
the maximum the specification allows(1000 ns for Standard-mode,
|
||||
300 ns for Fast-mode) which might cause slightly slower communication.
|
||||
|
||||
i2c-scl-falling-time-ns:
|
||||
default: 300
|
||||
description:
|
||||
Number of nanoseconds the SCL signal takes to fall
|
||||
(t(f) in the I2C specification). If not specified this is assumed to
|
||||
be the maximum the specification allows (300 ns) which might cause
|
||||
slightly slower communication.
|
||||
|
||||
i2c-sda-falling-time-ns:
|
||||
default: 300
|
||||
description:
|
||||
Number of nanoseconds the SDA signal takes to fall
|
||||
(t(f) in the I2C specification). If not specified we will use the SCL
|
||||
value since they are the same in nearly all cases.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- rockchip,rk3066-i2c
|
||||
- rockchip,rk3188-i2c
|
||||
|
||||
then:
|
||||
required:
|
||||
- rockchip,grf
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/rk3188-cru-common.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
i2c0: i2c@2002d000 {
|
||||
compatible = "rockchip,rk3188-i2c";
|
||||
reg = <0x2002d000 0x1000>;
|
||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru PCLK_I2C0>;
|
||||
clock-names = "i2c";
|
||||
rockchip,grf = <&grf>;
|
||||
i2c-scl-falling-time-ns = <100>;
|
||||
i2c-scl-rising-time-ns = <800>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
31
bindings/i2c/i2c-sprd.txt
Normal file
31
bindings/i2c/i2c-sprd.txt
Normal file
@@ -0,0 +1,31 @@
|
||||
I2C for Spreadtrum platforms
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "sprd,sc9860-i2c".
|
||||
- reg: Specify the physical base address of the controller and length
|
||||
of memory mapped region.
|
||||
- interrupts: Should contain I2C interrupt.
|
||||
- clock-names: Should contain following entries:
|
||||
"i2c" for I2C clock,
|
||||
"source" for I2C source (parent) clock,
|
||||
"enable" for I2C module enable clock.
|
||||
- clocks: Should contain a clock specifier for each entry in clock-names.
|
||||
- clock-frequency: Constains desired I2C bus clock frequency in Hz.
|
||||
- #address-cells: Should be 1 to describe address cells for I2C device address.
|
||||
- #size-cells: Should be 0 means no size cell for I2C device address.
|
||||
|
||||
Optional properties:
|
||||
- Child nodes conforming to I2C bus binding
|
||||
|
||||
Examples:
|
||||
i2c0: i2c@70500000 {
|
||||
compatible = "sprd,sc9860-i2c";
|
||||
reg = <0 0x70500000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clock-names = "i2c", "source", "enable";
|
||||
clocks = <&clk_i2c3>, <&ext_26m>, <&clk_ap_apb_gates 11>;
|
||||
clock-frequency = <400000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
41
bindings/i2c/i2c-st.txt
Normal file
41
bindings/i2c/i2c-st.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
ST SSC binding, for I2C mode operation
|
||||
|
||||
Required properties :
|
||||
- compatible : Must be "st,comms-ssc-i2c" or "st,comms-ssc4-i2c"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : the interrupt specifier
|
||||
- clock-names: Must contain "ssc".
|
||||
- clocks: Must contain an entry for each name in clock-names. See the common
|
||||
clock bindings.
|
||||
- A pinctrl state named "default" must be defined to set pins in mode of
|
||||
operation for I2C transfer.
|
||||
|
||||
Optional properties :
|
||||
- clock-frequency : Desired I2C bus clock frequency in Hz. If not specified,
|
||||
the default 100 kHz frequency will be used. As only Normal and Fast modes
|
||||
are supported, possible values are 100000 and 400000.
|
||||
- st,i2c-min-scl-pulse-width-us : The minimum valid SCL pulse width that is
|
||||
allowed through the deglitch circuit. In units of us.
|
||||
- st,i2c-min-sda-pulse-width-us : The minimum valid SDA pulse width that is
|
||||
allowed through the deglitch circuit. In units of us.
|
||||
- A pinctrl state named "idle" could be defined to set pins in idle state
|
||||
when I2C instance is not performing a transfer.
|
||||
- A pinctrl state named "sleep" could be defined to set pins in sleep state
|
||||
when driver enters in suspend.
|
||||
|
||||
|
||||
|
||||
Example :
|
||||
|
||||
i2c0: i2c@fed40000 {
|
||||
compatible = "st,comms-ssc4-i2c";
|
||||
reg = <0xfed40000 0x110>;
|
||||
interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk_s_a0_ls CLK_ICN_REG>;
|
||||
clock-names = "ssc";
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c0_default>;
|
||||
st,i2c-min-scl-pulse-width-us = <0>;
|
||||
st,i2c-min-sda-pulse-width-us = <5>;
|
||||
};
|
29
bindings/i2c/i2c-synquacer.txt
Normal file
29
bindings/i2c/i2c-synquacer.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
Socionext SynQuacer I2C
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "socionext,synquacer-i2c"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : A single interrupt specifier
|
||||
- #address-cells : Must be <1>;
|
||||
- #size-cells : Must be <0>;
|
||||
- clock-names : Must contain "pclk".
|
||||
- clocks : Must contain an entry for each name in clock-names.
|
||||
(See the common clock bindings.)
|
||||
|
||||
Optional properties:
|
||||
- clock-frequency : Desired I2C bus clock frequency in Hz. As only Normal and
|
||||
Fast modes are supported, possible values are 100000 and
|
||||
400000.
|
||||
|
||||
Example :
|
||||
|
||||
i2c@51210000 {
|
||||
compatible = "socionext,synquacer-i2c";
|
||||
reg = <0x51210000 0x1000>;
|
||||
interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clock-names = "pclk";
|
||||
clocks = <&clk_i2c>;
|
||||
clock-frequency = <400000>;
|
||||
};
|
51
bindings/i2c/i2c-virtio.yaml
Normal file
51
bindings/i2c/i2c-virtio.yaml
Normal file
@@ -0,0 +1,51 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/i2c-virtio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Virtio I2C Adapter
|
||||
|
||||
maintainers:
|
||||
- Viresh Kumar <viresh.kumar@linaro.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- $ref: /schemas/virtio/virtio-device.yaml#
|
||||
|
||||
description:
|
||||
Virtio I2C device, see /schemas/virtio/virtio-device.yaml for more details.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: i2c
|
||||
|
||||
compatible:
|
||||
const: virtio,device22
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
virtio@3000 {
|
||||
compatible = "virtio,mmio";
|
||||
reg = <0x3000 0x100>;
|
||||
interrupts = <41>;
|
||||
|
||||
i2c {
|
||||
compatible = "virtio,device22";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
light-sensor@20 {
|
||||
compatible = "dynaimage,al3320a";
|
||||
reg = <0x20>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
24
bindings/i2c/i2c-wmt.txt
Normal file
24
bindings/i2c/i2c-wmt.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
* Wondermedia I2C Controller
|
||||
|
||||
Required properties :
|
||||
|
||||
- compatible : should be "wm,wm8505-i2c"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : <IRQ> where IRQ is the interrupt number
|
||||
- clocks : phandle to the I2C clock source
|
||||
|
||||
Optional properties :
|
||||
|
||||
- clock-frequency : desired I2C bus clock frequency in Hz.
|
||||
Valid values are 100000 and 400000.
|
||||
Default to 100000 if not specified, or invalid value.
|
||||
|
||||
Example :
|
||||
|
||||
i2c_0: i2c@d8280000 {
|
||||
compatible = "wm,wm8505-i2c";
|
||||
reg = <0xd8280000 0x1000>;
|
||||
interrupts = <19>;
|
||||
clocks = <&clki2c0>;
|
||||
clock-frequency = <400000>;
|
||||
};
|
15
bindings/i2c/i2c-xgene-slimpro.txt
Normal file
15
bindings/i2c/i2c-xgene-slimpro.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
APM X-Gene SLIMpro Mailbox I2C Driver
|
||||
|
||||
An I2C controller accessed over the "SLIMpro" mailbox.
|
||||
|
||||
Required properties :
|
||||
|
||||
- compatible : should be "apm,xgene-slimpro-i2c"
|
||||
- mboxes : use the label reference for the mailbox as the first parameter.
|
||||
The second parameter is the channel number.
|
||||
|
||||
Example :
|
||||
i2cslimpro {
|
||||
compatible = "apm,xgene-slimpro-i2c";
|
||||
mboxes = <&mailbox 0>;
|
||||
};
|
151
bindings/i2c/i2c.txt
Normal file
151
bindings/i2c/i2c.txt
Normal file
@@ -0,0 +1,151 @@
|
||||
Generic device tree bindings for I2C busses
|
||||
===========================================
|
||||
|
||||
This document describes generic bindings which can be used to describe I2C
|
||||
busses and their child devices in a device tree.
|
||||
|
||||
Required properties (per bus)
|
||||
-----------------------------
|
||||
|
||||
- #address-cells - should be <1>. Read more about addresses below.
|
||||
- #size-cells - should be <0>.
|
||||
- compatible - name of I2C bus controller
|
||||
|
||||
For other required properties e.g. to describe register sets,
|
||||
clocks, etc. check the binding documentation of the specific driver.
|
||||
|
||||
The cells properties above define that an address of children of an I2C bus
|
||||
are described by a single value.
|
||||
|
||||
Optional properties (per bus)
|
||||
-----------------------------
|
||||
|
||||
These properties may not be supported by all drivers. However, if a driver
|
||||
wants to support one of the below features, it should adapt these bindings.
|
||||
|
||||
- clock-frequency
|
||||
frequency of bus clock in Hz.
|
||||
|
||||
- i2c-bus
|
||||
For I2C adapters that have child nodes that are a mixture of both I2C
|
||||
devices and non-I2C devices, the 'i2c-bus' subnode can be used for
|
||||
populating I2C devices. If the 'i2c-bus' subnode is present, only
|
||||
subnodes of this will be considered as I2C slaves. The properties,
|
||||
'#address-cells' and '#size-cells' must be defined under this subnode
|
||||
if present.
|
||||
|
||||
- i2c-scl-falling-time-ns
|
||||
Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
|
||||
specification.
|
||||
|
||||
- i2c-scl-internal-delay-ns
|
||||
Number of nanoseconds the IP core additionally needs to setup SCL.
|
||||
|
||||
- i2c-scl-rising-time-ns
|
||||
Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
|
||||
specification.
|
||||
|
||||
- i2c-sda-falling-time-ns
|
||||
Number of nanoseconds the SDA signal takes to fall; t(f) in the I2C
|
||||
specification.
|
||||
|
||||
- i2c-analog-filter
|
||||
Enable analog filter for i2c lines.
|
||||
|
||||
- i2c-digital-filter
|
||||
Enable digital filter for i2c lines.
|
||||
|
||||
- i2c-digital-filter-width-ns
|
||||
Width of spikes which can be filtered by digital filter
|
||||
(i2c-digital-filter). This width is specified in nanoseconds.
|
||||
|
||||
- i2c-analog-filter-cutoff-frequency
|
||||
Frequency that the analog filter (i2c-analog-filter) uses to distinguish
|
||||
which signal to filter. Signal with higher frequency than specified will
|
||||
be filtered out. Only lower frequency will pass (this is applicable to
|
||||
a low-pass analog filter). Typical value should be above the normal
|
||||
i2c bus clock frequency (clock-frequency).
|
||||
Specified in Hz.
|
||||
|
||||
- multi-master
|
||||
states that there is another master active on this bus. The OS can use
|
||||
this information to adapt power management to keep the arbitration awake
|
||||
all the time, for example. Can not be combined with 'single-master'.
|
||||
|
||||
- pinctrl
|
||||
add extra pinctrl to configure SCL/SDA pins to GPIO function for bus
|
||||
recovery, call it "gpio" or "recovery" (deprecated) state
|
||||
|
||||
- scl-gpios
|
||||
specify the gpio related to SCL pin. Used for GPIO bus recovery.
|
||||
|
||||
- sda-gpios
|
||||
specify the gpio related to SDA pin. Optional for GPIO bus recovery.
|
||||
|
||||
- single-master
|
||||
states that there is no other master active on this bus. The OS can use
|
||||
this information to detect a stalled bus more reliably, for example.
|
||||
Can not be combined with 'multi-master'.
|
||||
|
||||
- smbus
|
||||
states that additional SMBus restrictions and features apply to this bus.
|
||||
An example of feature is SMBusHostNotify. Examples of restrictions are
|
||||
more reserved addresses and timeout definitions.
|
||||
|
||||
- smbus-alert
|
||||
states that the optional SMBus-Alert feature apply to this bus.
|
||||
|
||||
- mctp-controller
|
||||
indicates that the system is accessible via this bus as an endpoint for
|
||||
MCTP over I2C transport.
|
||||
|
||||
Required properties (per child device)
|
||||
--------------------------------------
|
||||
|
||||
- compatible
|
||||
name of I2C slave device
|
||||
|
||||
- reg
|
||||
One or many I2C slave addresses. These are usually a 7 bit addresses.
|
||||
However, flags can be attached to an address. I2C_TEN_BIT_ADDRESS is
|
||||
used to mark a 10 bit address. It is needed to avoid the ambiguity
|
||||
between e.g. a 7 bit address of 0x50 and a 10 bit address of 0x050
|
||||
which, in theory, can be on the same bus.
|
||||
Another flag is I2C_OWN_SLAVE_ADDRESS to mark addresses on which we
|
||||
listen to be devices ourselves.
|
||||
|
||||
Optional properties (per child device)
|
||||
--------------------------------------
|
||||
|
||||
These properties may not be supported by all drivers. However, if a driver
|
||||
wants to support one of the below features, it should adapt these bindings.
|
||||
|
||||
- host-notify
|
||||
device uses SMBus host notify protocol instead of interrupt line.
|
||||
|
||||
- interrupts
|
||||
interrupts used by the device.
|
||||
|
||||
- interrupt-names
|
||||
"irq", "wakeup" and "smbus_alert" names are recognized by I2C core,
|
||||
other names are left to individual drivers.
|
||||
|
||||
- reg-names
|
||||
Names of map programmable addresses.
|
||||
It can contain any map needing another address than default one.
|
||||
|
||||
- wakeup-source
|
||||
device can be used as a wakeup source.
|
||||
|
||||
Binding may contain optional "interrupts" property, describing interrupts
|
||||
used by the device. I2C core will assign "irq" interrupt (or the very first
|
||||
interrupt if not using interrupt names) as primary interrupt for the slave.
|
||||
|
||||
Alternatively, devices supporting SMBus Host Notify, and connected to
|
||||
adapters that support this feature, may use "host-notify" property. I2C
|
||||
core will create a virtual interrupt for Host Notify and assign it as
|
||||
primary interrupt for the slave.
|
||||
|
||||
Also, if device is marked as a wakeup source, I2C core will set up "wakeup"
|
||||
interrupt for the device. If "wakeup" interrupt name is not present in the
|
||||
binding, then primary interrupt will be used as wakeup interrupt.
|
90
bindings/i2c/ingenic,i2c.yaml
Normal file
90
bindings/i2c/ingenic,i2c.yaml
Normal file
@@ -0,0 +1,90 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/ingenic,i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Ingenic SoCs I2C controller devicetree bindings
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^i2c@[0-9a-f]+$"
|
||||
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- ingenic,jz4770-i2c
|
||||
- ingenic,x1000-i2c
|
||||
- items:
|
||||
- const: ingenic,jz4780-i2c
|
||||
- const: ingenic,jz4770-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
enum: [ 100000, 400000 ]
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA controller phandle and request line for RX
|
||||
- description: DMA controller phandle and request line for TX
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-frequency
|
||||
- dmas
|
||||
- dma-names
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/ingenic,jz4780-cgu.h>
|
||||
#include <dt-bindings/dma/jz4780-dma.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
i2c@10054000 {
|
||||
compatible = "ingenic,jz4780-i2c", "ingenic,jz4770-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x10054000 0x1000>;
|
||||
|
||||
interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_SMB4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pins_i2c4_data>;
|
||||
|
||||
dmas = <&dma JZ4780_DMA_SMB4_RX 0xffffffff>,
|
||||
<&dma JZ4780_DMA_SMB4_TX 0xffffffff>;
|
||||
dma-names = "rx", "tx";
|
||||
|
||||
clock-frequency = <400000>;
|
||||
|
||||
rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
|
||||
interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
140
bindings/i2c/marvell,mv64xxx-i2c.yaml
Normal file
140
bindings/i2c/marvell,mv64xxx-i2c.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/marvell,mv64xxx-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Marvell MV64XXX I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Gregory CLEMENT <gregory.clement@bootlin.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: allwinner,sun4i-a10-i2c
|
||||
- items:
|
||||
- const: allwinner,sun7i-a20-i2c
|
||||
- const: allwinner,sun4i-a10-i2c
|
||||
- const: allwinner,sun6i-a31-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- allwinner,sun8i-a23-i2c
|
||||
- allwinner,sun8i-a83t-i2c
|
||||
- allwinner,sun8i-v536-i2c
|
||||
- allwinner,sun50i-a64-i2c
|
||||
- allwinner,sun50i-h6-i2c
|
||||
- const: allwinner,sun6i-a31-i2c
|
||||
- description: Allwinner SoCs with offload support
|
||||
items:
|
||||
- enum:
|
||||
- allwinner,sun20i-d1-i2c
|
||||
- allwinner,sun50i-a100-i2c
|
||||
- allwinner,sun50i-h616-i2c
|
||||
- allwinner,sun50i-r329-i2c
|
||||
- const: allwinner,sun8i-v536-i2c
|
||||
- const: allwinner,sun6i-a31-i2c
|
||||
- const: marvell,mv64xxx-i2c
|
||||
- const: marvell,mv78230-i2c
|
||||
- const: marvell,mv78230-a0-i2c
|
||||
|
||||
description:
|
||||
Only use "marvell,mv78230-a0-i2c" for a very rare, initial
|
||||
version of the SoC which had broken offload support. Linux
|
||||
auto-detects this and sets it appropriately.
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: Reference clock for the I2C bus
|
||||
- description: Bus clock (Only for Armada 7K/8K)
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: core
|
||||
- const: reg
|
||||
description:
|
||||
Mandatory if two clocks are used (only for Armada 7k and 8k).
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: RX DMA Channel
|
||||
- description: TX DMA Channel
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
dependencies:
|
||||
dmas: [ dma-names ]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- allwinner,sun4i-a10-i2c
|
||||
- allwinner,sun6i-a31-i2c
|
||||
|
||||
then:
|
||||
required:
|
||||
- clocks
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: allwinner,sun6i-a31-i2c
|
||||
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@11000 {
|
||||
compatible = "marvell,mv64xxx-i2c";
|
||||
reg = <0x11000 0x20>;
|
||||
interrupts = <29>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
- |
|
||||
i2c@11000 {
|
||||
compatible = "marvell,mv78230-i2c";
|
||||
reg = <0x11000 0x100>;
|
||||
interrupts = <29>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
- |
|
||||
i2c@701000 {
|
||||
compatible = "marvell,mv78230-i2c";
|
||||
reg = <0x701000 0x20>;
|
||||
interrupts = <29>;
|
||||
clock-frequency = <100000>;
|
||||
clock-names = "core", "reg";
|
||||
clocks = <&core_clock>, <®_clock>;
|
||||
};
|
||||
|
||||
...
|
61
bindings/i2c/mediatek,mt7621-i2c.yaml
Normal file
61
bindings/i2c/mediatek,mt7621-i2c.yaml
Normal file
@@ -0,0 +1,61 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/mediatek,mt7621-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
maintainers:
|
||||
- Stefan Roese <sr@denx.de>
|
||||
|
||||
title: Mediatek MT7621/MT7628 I2C master controller
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt7621-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: i2c
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
const: i2c
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- resets
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/mt7621-clk.h>
|
||||
#include <dt-bindings/reset/mt7621-reset.h>
|
||||
|
||||
i2c: i2c@900 {
|
||||
compatible = "mediatek,mt7621-i2c";
|
||||
reg = <0x900 0x100>;
|
||||
clocks = <&sysc MT7621_CLK_I2C>;
|
||||
clock-names = "i2c";
|
||||
resets = <&sysc MT7621_RST_I2C>;
|
||||
reset-names = "i2c";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
};
|
56
bindings/i2c/microchip,corei2c.yaml
Normal file
56
bindings/i2c/microchip,corei2c.yaml
Normal file
@@ -0,0 +1,56 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/microchip,corei2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Microchip MPFS I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Daire McNamara <daire.mcnamara@microchip.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- const: microchip,mpfs-i2c # Microchip PolarFire SoC compatible SoCs
|
||||
- const: microchip,corei2c-rtl-v7 # Microchip Fabric based i2c IP core
|
||||
- const: microchip,corei2c-rtl-v7 # Microchip Fabric based i2c IP core
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description: |
|
||||
Desired I2C bus clock frequency in Hz. As only Standard and Fast
|
||||
modes are supported, possible values are 100000 and 400000.
|
||||
enum: [100000, 400000]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@2010a000 {
|
||||
compatible = "microchip,mpfs-i2c", "microchip,corei2c-rtl-v7";
|
||||
reg = <0x2010a000 0x1000>;
|
||||
clocks = <&clkcfg 15>;
|
||||
interrupt-parent = <&plic>;
|
||||
interrupts = <58>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
...
|
77
bindings/i2c/nuvoton,npcm7xx-i2c.yaml
Normal file
77
bindings/i2c/nuvoton,npcm7xx-i2c.yaml
Normal file
@@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/nuvoton,npcm7xx-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: nuvoton NPCM7XX I2C Controller
|
||||
|
||||
description: |
|
||||
I2C bus controllers of the NPCM series support both master and
|
||||
slave mode. Each controller can switch between master and slave at run time
|
||||
(i.e. IPMB mode). HW FIFO for TX and RX are supported.
|
||||
|
||||
maintainers:
|
||||
- Tali Perry <tali.perry1@gmail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- nuvoton,npcm750-i2c
|
||||
- nuvoton,npcm845-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
description: Reference clock for the I2C bus
|
||||
|
||||
clock-frequency:
|
||||
description: Desired I2C bus clock frequency in Hz. If not specified,
|
||||
the default 100 kHz frequency will be used.
|
||||
possible values are 100000, 400000 and 1000000.
|
||||
default: 100000
|
||||
enum: [100000, 400000, 1000000]
|
||||
|
||||
nuvoton,sys-mgr:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: The phandle of system manager register node.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nuvoton,npcm845-i2c
|
||||
|
||||
then:
|
||||
required:
|
||||
- nuvoton,sys-mgr
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c0: i2c@80000 {
|
||||
reg = <0x80000 0x1000>;
|
||||
clocks = <&clk NPCM7XX_CLK_APB2>;
|
||||
clock-frequency = <100000>;
|
||||
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||
compatible = "nuvoton,npcm750-i2c";
|
||||
nuvoton,sys-mgr = <&gcr>;
|
||||
};
|
||||
|
||||
...
|
45
bindings/i2c/nvidia,tegra186-bpmp-i2c.yaml
Normal file
45
bindings/i2c/nvidia,tegra186-bpmp-i2c.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/nvidia,tegra186-bpmp-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra186 (and later) BPMP I2C controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
description: |
|
||||
In Tegra186 and later, the BPMP (Boot and Power Management Processor)
|
||||
owns certain HW devices, such as the I2C controller for the power
|
||||
management I2C bus. Software running on other CPUs must perform IPC to
|
||||
the BPMP in order to execute transactions on that I2C bus. This
|
||||
binding describes an I2C bus that is accessed in such a fashion.
|
||||
|
||||
The BPMP I2C node must be located directly inside the main BPMP node.
|
||||
See ../firmware/nvidia,tegra186-bpmp.yaml for details of the BPMP
|
||||
binding.
|
||||
|
||||
This node represents an I2C controller. See ../i2c/i2c.txt for details
|
||||
of the core I2C binding.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra186-bpmp-i2c
|
||||
|
||||
nvidia,bpmp-bus-id:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Indicates the I2C bus number this DT node represents,
|
||||
as defined by the BPMP firmware.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- nvidia,bpmp-bus-id
|
192
bindings/i2c/nvidia,tegra20-i2c.yaml
Normal file
192
bindings/i2c/nvidia,tegra20-i2c.yaml
Normal file
@@ -0,0 +1,192 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/nvidia,tegra20-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
title: NVIDIA Tegra I2C controller driver
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- description: Tegra20 has 4 generic I2C controller. This can support
|
||||
master and slave mode of I2C communication. The i2c-tegra driver
|
||||
only support master mode of I2C communication. Driver of I2C
|
||||
controller is only compatible with "nvidia,tegra20-i2c".
|
||||
const: nvidia,tegra20-i2c
|
||||
- description: Tegra20 has specific I2C controller called as DVC I2C
|
||||
controller. This only support master mode of I2C communication.
|
||||
Register interface/offset and interrupts handling are different than
|
||||
generic I2C controller. Driver of DVC I2C controller is only
|
||||
compatible with "nvidia,tegra20-i2c-dvc".
|
||||
const: nvidia,tegra20-i2c-dvc
|
||||
- description: |
|
||||
Tegra30 has 5 generic I2C controller. This controller is very much
|
||||
similar to Tegra20 I2C controller with additional feature: Continue
|
||||
Transfer Support. This feature helps to implement M_NO_START as per
|
||||
I2C core API transfer flags. Driver of I2C controller is compatible
|
||||
with "nvidia,tegra30-i2c" to enable the continue transfer support.
|
||||
This is also compatible with "nvidia,tegra20-i2c" without continue
|
||||
transfer support.
|
||||
items:
|
||||
- const: nvidia,tegra30-i2c
|
||||
- const: nvidia,tegra20-i2c
|
||||
- description: |
|
||||
Tegra114 has 5 generic I2C controllers. This controller is very much
|
||||
similar to Tegra30 I2C controller with some hardware modification:
|
||||
- Tegra30/Tegra20 I2C controller has 2 clock source called div-clk
|
||||
and fast-clk. Tegra114 has only one clock source called as
|
||||
div-clk and hence clock mechanism is changed in I2C controller.
|
||||
- Tegra30/Tegra20 I2C controller has enabled per packet transfer
|
||||
by default and there is no way to disable it. Tegra114 has this
|
||||
interrupt disable by default and SW need to enable explicitly.
|
||||
Due to above changes, Tegra114 I2C driver makes incompatible with
|
||||
previous hardware driver. Hence, Tegra114 I2C controller is
|
||||
compatible with "nvidia,tegra114-i2c".
|
||||
const: nvidia,tegra114-i2c
|
||||
- description: |
|
||||
Tegra124 has 6 generic I2C controllers. These controllers are very
|
||||
similar to those found on Tegra114 but also contain several hardware
|
||||
improvements and new registers.
|
||||
const: nvidia,tegra124-i2c
|
||||
- description: |
|
||||
Tegra210 has 6 generic I2C controllers. These controllers are very
|
||||
similar to those found on Tegra124.
|
||||
items:
|
||||
- const: nvidia,tegra210-i2c
|
||||
- const: nvidia,tegra124-i2c
|
||||
- description: |
|
||||
Tegra210 has one I2C controller that is on host1x bus and is part of
|
||||
the VE power domain and typically used for camera use-cases. This VI
|
||||
I2C controller is mostly compatible with the programming model of
|
||||
the regular I2C controllers with a few exceptions. The I2C registers
|
||||
start at an offset of 0xc00 (instead of 0), registers are 16 bytes
|
||||
apart (rather than 4) and the controller does not support slave
|
||||
mode.
|
||||
const: nvidia,tegra210-i2c-vi
|
||||
- description: |
|
||||
Tegra186 has 9 generic I2C controllers, two of which are in the AON
|
||||
(always-on) partition of the SoC. All of these controllers are very
|
||||
similar to those found on Tegra210.
|
||||
const: nvidia,tegra186-i2c
|
||||
- description: |
|
||||
Tegra194 has 8 generic I2C controllers, two of which are in the AON
|
||||
(always-on) partition of the SoC. All of these controllers are very
|
||||
similar to those found on Tegra186. However, these controllers have
|
||||
support for 64 KiB transactions whereas earlier chips supported no
|
||||
more than 4 KiB per transactions.
|
||||
const: nvidia,tegra194-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: module reset
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: i2c
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA channel for the reception FIFO
|
||||
- description: DMA channel for the transmission FIFO
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- nvidia,tegra20-i2c
|
||||
- nvidia,tegra30-i2c
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: div-clk
|
||||
- const: fast-clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra114-i2c
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: div-clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra210-i2c
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: div-clk
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra210-i2c-vi
|
||||
then:
|
||||
properties:
|
||||
clock-names:
|
||||
items:
|
||||
- const: div-clk
|
||||
- const: slow
|
||||
power-domains:
|
||||
items:
|
||||
- description: phandle to the VENC power domain
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
interrupts = <0 38 0x04>;
|
||||
clocks = <&tegra_car 12>, <&tegra_car 124>;
|
||||
clock-names = "div-clk", "fast-clk";
|
||||
resets = <&tegra_car 12>;
|
||||
reset-names = "i2c";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
29
bindings/i2c/nxp,pca9541.txt
Normal file
29
bindings/i2c/nxp,pca9541.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
* NXP PCA9541 I2C bus master selector
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Must be "nxp,pca9541"
|
||||
|
||||
- reg: The I2C address of the device.
|
||||
|
||||
The following required properties are defined externally:
|
||||
|
||||
- I2C arbitration bus node. See i2c-arb.txt in this directory.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
i2c-arbitrator@74 {
|
||||
compatible = "nxp,pca9541";
|
||||
reg = <0x74>;
|
||||
|
||||
i2c-arb {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
eeprom@54 {
|
||||
compatible = "atmel,24c08";
|
||||
reg = <0x54>;
|
||||
};
|
||||
};
|
||||
};
|
113
bindings/i2c/opencores,i2c-ocores.yaml
Normal file
113
bindings/i2c/opencores,i2c-ocores.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/opencores,i2c-ocores.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: OpenCores I2C controller
|
||||
|
||||
maintainers:
|
||||
- Peter Korsgaard <peter@korsgaard.com>
|
||||
- Andrew Lunn <andrew@lunn.ch>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- sifive,fu740-c000-i2c # Opencore based IP block FU740-C000 SoC
|
||||
- sifive,fu540-c000-i2c # Opencore based IP block FU540-C000 SoC
|
||||
- const: sifive,i2c0
|
||||
- enum:
|
||||
- opencores,i2c-ocores
|
||||
- aeroflexgaisler,i2cmst
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description: |
|
||||
clock-frequency property is meant to control the bus frequency for i2c bus
|
||||
drivers, but it was incorrectly used to specify i2c controller input clock
|
||||
frequency. So the following rules are set to fix this situation:
|
||||
- if clock-frequency is present and neither opencores,ip-clock-frequency nor
|
||||
clocks are, then clock-frequency specifies i2c controller clock frequency.
|
||||
This is to keep backwards compatibility with setups using old DTB. i2c bus
|
||||
frequency is fixed at 100 KHz.
|
||||
- if clocks is present it specifies i2c controller clock. clock-frequency
|
||||
property specifies i2c bus frequency.
|
||||
- if opencores,ip-clock-frequency is present it specifies i2c controller
|
||||
clock frequency. clock-frequency property specifies i2c bus frequency.
|
||||
default: 100000
|
||||
|
||||
reg-io-width:
|
||||
description: |
|
||||
io register width in bytes
|
||||
enum: [1, 2, 4]
|
||||
|
||||
reg-shift:
|
||||
description: |
|
||||
device register offsets are shifted by this value
|
||||
default: 0
|
||||
|
||||
regstep:
|
||||
description: |
|
||||
deprecated, use reg-shift above
|
||||
deprecated: true
|
||||
|
||||
opencores,ip-clock-frequency:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: |
|
||||
Frequency of the controller clock in Hz. Mutually exclusive with clocks.
|
||||
See the note above.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
oneOf:
|
||||
- required:
|
||||
- opencores,ip-clock-frequency
|
||||
- required:
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@a0000000 {
|
||||
compatible = "opencores,i2c-ocores";
|
||||
reg = <0xa0000000 0x8>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <10>;
|
||||
opencores,ip-clock-frequency = <20000000>;
|
||||
|
||||
reg-shift = <0>; /* 8 bit registers */
|
||||
reg-io-width = <1>; /* 8 bit read/write */
|
||||
};
|
||||
|
||||
i2c@b0000000 {
|
||||
compatible = "opencores,i2c-ocores";
|
||||
reg = <0xa0000000 0x8>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <10>;
|
||||
clocks = <&osc>;
|
||||
clock-frequency = <400000>; /* i2c bus frequency 400 KHz */
|
||||
|
||||
reg-shift = <0>; /* 8 bit registers */
|
||||
reg-io-width = <1>; /* 8 bit read/write */
|
||||
};
|
||||
...
|
262
bindings/i2c/qcom,i2c-cci.yaml
Normal file
262
bindings/i2c/qcom,i2c-cci.yaml
Normal file
@@ -0,0 +1,262 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/qcom,i2c-cci.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Camera Control Interface (CCI) I2C controller
|
||||
|
||||
maintainers:
|
||||
- Loic Poulain <loic.poulain@linaro.org>
|
||||
- Robert Foss <robert.foss@linaro.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,msm8226-cci
|
||||
- qcom,msm8916-cci
|
||||
- qcom,msm8974-cci
|
||||
- qcom,msm8996-cci
|
||||
- qcom,sdm845-cci
|
||||
- qcom,sm8250-cci
|
||||
- qcom,sm8450-cci
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
clocks:
|
||||
minItems: 3
|
||||
maxItems: 6
|
||||
|
||||
clock-names:
|
||||
minItems: 3
|
||||
maxItems: 6
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
"^i2c-bus@[01]$":
|
||||
$ref: /schemas/i2c/i2c-controller.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clock-names
|
||||
- clocks
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8996-cci
|
||||
then:
|
||||
required:
|
||||
- power-domains
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8226-cci
|
||||
- qcom,msm8916-cci
|
||||
then:
|
||||
properties:
|
||||
i2c-bus@1: false
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8226-cci
|
||||
- qcom,msm8974-cci
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
maxItems: 3
|
||||
clock-names:
|
||||
items:
|
||||
- const: camss_top_ahb
|
||||
- const: cci_ahb
|
||||
- const: cci
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,msm8916-cci
|
||||
- qcom,msm8996-cci
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
maxItems: 4
|
||||
clock-names:
|
||||
items:
|
||||
- const: camss_top_ahb
|
||||
- const: cci_ahb
|
||||
- const: cci
|
||||
- const: camss_ahb
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,sdm845-cci
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 6
|
||||
clock-names:
|
||||
items:
|
||||
- const: camnoc_axi
|
||||
- const: soc_ahb
|
||||
- const: slow_ahb_src
|
||||
- const: cpas_ahb
|
||||
- const: cci
|
||||
- const: cci_src
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,sm8250-cci
|
||||
- qcom,sm8450-cci
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 5
|
||||
maxItems: 5
|
||||
clock-names:
|
||||
items:
|
||||
- const: camnoc_axi
|
||||
- const: slow_ahb_src
|
||||
- const: cpas_ahb
|
||||
- const: cci
|
||||
- const: cci_src
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,camcc-sdm845.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
cci@ac4a000 {
|
||||
reg = <0x0ac4a000 0x4000>;
|
||||
compatible = "qcom,sdm845-cci";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
|
||||
power-domains = <&clock_camcc TITAN_TOP_GDSC>;
|
||||
|
||||
clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
|
||||
<&clock_camcc CAM_CC_SOC_AHB_CLK>,
|
||||
<&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
|
||||
<&clock_camcc CAM_CC_CPAS_AHB_CLK>,
|
||||
<&clock_camcc CAM_CC_CCI_CLK>,
|
||||
<&clock_camcc CAM_CC_CCI_CLK_SRC>;
|
||||
clock-names = "camnoc_axi",
|
||||
"soc_ahb",
|
||||
"slow_ahb_src",
|
||||
"cpas_ahb",
|
||||
"cci",
|
||||
"cci_src";
|
||||
|
||||
assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
|
||||
<&clock_camcc CAM_CC_CCI_CLK>;
|
||||
assigned-clock-rates = <80000000>,
|
||||
<37500000>;
|
||||
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&cci0_default &cci1_default>;
|
||||
pinctrl-1 = <&cci0_sleep &cci1_sleep>;
|
||||
|
||||
i2c-bus@0 {
|
||||
reg = <0>;
|
||||
clock-frequency = <1000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
camera@10 {
|
||||
compatible = "ovti,ov8856";
|
||||
reg = <0x10>;
|
||||
|
||||
reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&cam0_default>;
|
||||
|
||||
clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
|
||||
clock-names = "xvclk";
|
||||
clock-frequency = <19200000>;
|
||||
|
||||
dovdd-supply = <&vreg_lvs1a_1p8>;
|
||||
avdd-supply = <&cam0_avdd_2v8>;
|
||||
dvdd-supply = <&cam0_dvdd_1v2>;
|
||||
|
||||
port {
|
||||
ov8856_ep: endpoint {
|
||||
link-frequencies = /bits/ 64 <360000000 180000000>;
|
||||
data-lanes = <1 2 3 4>;
|
||||
remote-endpoint = <&csiphy0_ep>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cci_i2c1: i2c-bus@1 {
|
||||
reg = <1>;
|
||||
clock-frequency = <1000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
camera@60 {
|
||||
compatible = "ovti,ov7251";
|
||||
reg = <0x60>;
|
||||
|
||||
enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&cam3_default>;
|
||||
|
||||
clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
|
||||
clock-names = "xclk";
|
||||
clock-frequency = <24000000>;
|
||||
|
||||
vdddo-supply = <&vreg_lvs1a_1p8>;
|
||||
vdda-supply = <&cam3_avdd_2v8>;
|
||||
|
||||
port {
|
||||
ov7251_ep: endpoint {
|
||||
data-lanes = <0 1>;
|
||||
remote-endpoint = <&csiphy3_ep>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
100
bindings/i2c/qcom,i2c-geni-qcom.yaml
Normal file
100
bindings/i2c/qcom,i2c-geni-qcom.yaml
Normal file
@@ -0,0 +1,100 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Qualcomm Geni based QUP I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Andy Gross <agross@kernel.org>
|
||||
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: qcom,geni-i2c
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: se
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
|
||||
dmas:
|
||||
maxItems: 2
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
interconnects:
|
||||
maxItems: 3
|
||||
|
||||
interconnect-names:
|
||||
items:
|
||||
- const: qup-core
|
||||
- const: qup-config
|
||||
- const: qup-memory
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
pinctrl-0: true
|
||||
pinctrl-1: true
|
||||
|
||||
pinctrl-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: default
|
||||
- const: sleep
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required-opps:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-names
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/clock/qcom,gcc-sc7180.h>
|
||||
#include <dt-bindings/interconnect/qcom,sc7180.h>
|
||||
#include <dt-bindings/power/qcom-rpmpd.h>
|
||||
|
||||
i2c@88000 {
|
||||
compatible = "qcom,geni-i2c";
|
||||
reg = <0x00880000 0x4000>;
|
||||
clock-names = "se";
|
||||
clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&qup_i2c0_default>;
|
||||
interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interconnects = <&qup_virt MASTER_QUP_CORE_0 0 &qup_virt SLAVE_QUP_CORE_0 0>,
|
||||
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_0 0>,
|
||||
<&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
|
||||
interconnect-names = "qup-core", "qup-config", "qup-memory";
|
||||
power-domains = <&rpmhpd SC7180_CX>;
|
||||
required-opps = <&rpmhpd_opp_low_svs>;
|
||||
};
|
||||
...
|
89
bindings/i2c/qcom,i2c-qup.yaml
Normal file
89
bindings/i2c/qcom,i2c-qup.yaml
Normal file
@@ -0,0 +1,89 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/qcom,i2c-qup.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Universal Peripheral (QUP) I2C controller
|
||||
|
||||
maintainers:
|
||||
- Andy Gross <agross@kernel.org>
|
||||
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,i2c-qup-v1.1.1 # for 8660, 8960 and 8064
|
||||
- qcom,i2c-qup-v2.1.1 # for 8974 v1
|
||||
- qcom,i2c-qup-v2.2.1 # for 8974 v2 and later
|
||||
|
||||
clocks:
|
||||
maxItems: 2
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: core
|
||||
- const: iface
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
|
||||
dmas:
|
||||
maxItems: 2
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
pinctrl-0: true
|
||||
pinctrl-1: true
|
||||
|
||||
pinctrl-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: default
|
||||
- const: sleep
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clock-names
|
||||
- clocks
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,gcc-msm8998.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c@c175000 {
|
||||
compatible = "qcom,i2c-qup-v2.2.1";
|
||||
reg = <0x0c175000 0x600>;
|
||||
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>,
|
||||
<&gcc GCC_BLSP1_AHB_CLK>;
|
||||
clock-names = "core", "iface";
|
||||
dmas = <&blsp1_dma 6>, <&blsp1_dma 7>;
|
||||
dma-names = "tx", "rx";
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&blsp1_i2c1_default>;
|
||||
pinctrl-1 = <&blsp1_i2c1_sleep>;
|
||||
clock-frequency = <400000>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
54
bindings/i2c/renesas,iic-emev2.yaml
Normal file
54
bindings/i2c/renesas,iic-emev2.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/renesas,iic-emev2.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas EMMA Mobile EV2 IIC Interface
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: renesas,iic-emev2
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: sclk
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-names
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
iic0: i2c@e0070000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,iic-emev2";
|
||||
reg = <0xe0070000 0x28>;
|
||||
interrupts = <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
|
||||
clocks = <&iic0_sclk>;
|
||||
clock-names = "sclk";
|
||||
};
|
165
bindings/i2c/renesas,rcar-i2c.yaml
Normal file
165
bindings/i2c/renesas,rcar-i2c.yaml
Normal file
@@ -0,0 +1,165 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/renesas,rcar-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas R-Car I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,i2c-r8a7778 # R-Car M1A
|
||||
- renesas,i2c-r8a7779 # R-Car H1
|
||||
- const: renesas,rcar-gen1-i2c # R-Car Gen1
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,i2c-r8a7742 # RZ/G1H
|
||||
- renesas,i2c-r8a7743 # RZ/G1M
|
||||
- renesas,i2c-r8a7744 # RZ/G1N
|
||||
- renesas,i2c-r8a7745 # RZ/G1E
|
||||
- renesas,i2c-r8a77470 # RZ/G1C
|
||||
- renesas,i2c-r8a7790 # R-Car H2
|
||||
- renesas,i2c-r8a7791 # R-Car M2-W
|
||||
- renesas,i2c-r8a7792 # R-Car V2H
|
||||
- renesas,i2c-r8a7793 # R-Car M2-N
|
||||
- renesas,i2c-r8a7794 # R-Car E2
|
||||
- const: renesas,rcar-gen2-i2c # R-Car Gen2 and RZ/G1
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,i2c-r8a774a1 # RZ/G2M
|
||||
- renesas,i2c-r8a774b1 # RZ/G2N
|
||||
- renesas,i2c-r8a774c0 # RZ/G2E
|
||||
- renesas,i2c-r8a774e1 # RZ/G2H
|
||||
- renesas,i2c-r8a7795 # R-Car H3
|
||||
- renesas,i2c-r8a7796 # R-Car M3-W
|
||||
- renesas,i2c-r8a77961 # R-Car M3-W+
|
||||
- renesas,i2c-r8a77965 # R-Car M3-N
|
||||
- renesas,i2c-r8a77970 # R-Car V3M
|
||||
- renesas,i2c-r8a77980 # R-Car V3H
|
||||
- renesas,i2c-r8a77990 # R-Car E3
|
||||
- renesas,i2c-r8a77995 # R-Car D3
|
||||
- const: renesas,rcar-gen3-i2c # R-Car Gen3 and RZ/G2
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,i2c-r8a779a0 # R-Car V3U
|
||||
- renesas,i2c-r8a779f0 # R-Car S4-8
|
||||
- renesas,i2c-r8a779g0 # R-Car V4H
|
||||
- const: renesas,rcar-gen4-i2c # R-Car Gen4
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description:
|
||||
Desired I2C bus clock frequency in Hz. The absence of this property
|
||||
indicates the default frequency 100 kHz.
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
dmas:
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
description:
|
||||
Must contain a list of pairs of references to DMA specifiers, one for
|
||||
transmission, and one for reception.
|
||||
|
||||
dma-names:
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
items:
|
||||
enum:
|
||||
- tx
|
||||
- rx
|
||||
|
||||
i2c-scl-falling-time-ns:
|
||||
default: 35
|
||||
description:
|
||||
Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
|
||||
specification.
|
||||
|
||||
i2c-scl-internal-delay-ns:
|
||||
default: 50
|
||||
description:
|
||||
Number of nanoseconds the IP core additionally needs to setup SCL.
|
||||
|
||||
i2c-scl-rising-time-ns:
|
||||
default: 200
|
||||
description:
|
||||
Number of nanoseconds the SCL signal takes to rise; t(r) in the I2C
|
||||
specification.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- power-domains
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,rcar-gen1-i2c
|
||||
- renesas,rcar-gen2-i2c
|
||||
then:
|
||||
properties:
|
||||
dmas: false
|
||||
dma-names: false
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,rcar-gen2-i2c
|
||||
- renesas,rcar-gen3-i2c
|
||||
- renesas,rcar-gen4-i2c
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/r8a7791-cpg-mssr.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/power/r8a7791-sysc.h>
|
||||
|
||||
i2c0: i2c@e6508000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "renesas,i2c-r8a7791", "renesas,rcar-gen2-i2c";
|
||||
reg = <0xe6508000 0x40>;
|
||||
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clock-frequency = <400000>;
|
||||
clocks = <&cpg CPG_MOD 931>;
|
||||
power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 931>;
|
||||
i2c-scl-internal-delay-ns = <6>;
|
||||
};
|
114
bindings/i2c/renesas,riic.yaml
Normal file
114
bindings/i2c/renesas,riic.yaml
Normal file
@@ -0,0 +1,114 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/renesas,riic.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas RZ/A and RZ/G2L I2C Bus Interface (RIIC)
|
||||
|
||||
maintainers:
|
||||
- Chris Brandt <chris.brandt@renesas.com>
|
||||
- Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- renesas,riic-r7s72100 # RZ/A1H
|
||||
- renesas,riic-r7s9210 # RZ/A2M
|
||||
- renesas,riic-r9a07g043 # RZ/G2UL
|
||||
- renesas,riic-r9a07g044 # RZ/G2{L,LC}
|
||||
- renesas,riic-r9a07g054 # RZ/V2L
|
||||
- const: renesas,riic-rz # RZ/A or RZ/G2L
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
items:
|
||||
- description: Transmit End Interrupt
|
||||
- description: Receive Data Full Interrupt
|
||||
- description: Transmit Data Empty Interrupt
|
||||
- description: Stop Condition Detection Interrupt
|
||||
- description: Start Condition Detection Interrupt
|
||||
- description: NACK Reception Interrupt
|
||||
- description: Arbitration-Lost Interrupt
|
||||
- description: Timeout Interrupt
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: tei
|
||||
- const: ri
|
||||
- const: ti
|
||||
- const: spi
|
||||
- const: sti
|
||||
- const: naki
|
||||
- const: ali
|
||||
- const: tmoi
|
||||
|
||||
clock-frequency:
|
||||
description:
|
||||
Desired I2C bus clock frequency in Hz. The absence of this property
|
||||
indicates the default frequency 100 kHz.
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- clocks
|
||||
- clock-frequency
|
||||
- power-domains
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,riic-r9a07g043
|
||||
- renesas,riic-r9a07g044
|
||||
- renesas,riic-r9a07g054
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/r7s72100-clock.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c0: i2c@fcfee000 {
|
||||
compatible = "renesas,riic-r7s72100", "renesas,riic-rz";
|
||||
reg = <0xfcfee000 0x44>;
|
||||
interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 158 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 159 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali",
|
||||
"tmoi";
|
||||
clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
|
||||
clock-frequency = <100000>;
|
||||
power-domains = <&cpg_clocks>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
149
bindings/i2c/renesas,rmobile-iic.yaml
Normal file
149
bindings/i2c/renesas,rmobile-iic.yaml
Normal file
@@ -0,0 +1,149 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/renesas,rmobile-iic.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas R-Mobile I2C Bus Interface (IIC)
|
||||
|
||||
maintainers:
|
||||
- Wolfram Sang <wsa+renesas@sang-engineering.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,iic-r8a73a4 # R-Mobile APE6
|
||||
- renesas,iic-r8a7740 # R-Mobile A1
|
||||
- renesas,iic-sh73a0 # SH-Mobile AG5
|
||||
- const: renesas,rmobile-iic # Generic
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,iic-r8a7742 # RZ/G1H
|
||||
- renesas,iic-r8a7743 # RZ/G1M
|
||||
- renesas,iic-r8a7744 # RZ/G1N
|
||||
- renesas,iic-r8a7745 # RZ/G1E
|
||||
- renesas,iic-r8a7790 # R-Car H2
|
||||
- renesas,iic-r8a7791 # R-Car M2-W
|
||||
- renesas,iic-r8a7792 # R-Car V2H
|
||||
- renesas,iic-r8a7793 # R-Car M2-N
|
||||
- renesas,iic-r8a7794 # R-Car E2
|
||||
- const: renesas,rcar-gen2-iic # R-Car Gen2 and RZ/G1
|
||||
- const: renesas,rmobile-iic # Generic
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,iic-r8a774a1 # RZ/G2M
|
||||
- renesas,iic-r8a774b1 # RZ/G2N
|
||||
- renesas,iic-r8a774c0 # RZ/G2E
|
||||
- renesas,iic-r8a774e1 # RZ/G2H
|
||||
- renesas,iic-r8a7795 # R-Car H3
|
||||
- renesas,iic-r8a7796 # R-Car M3-W
|
||||
- renesas,iic-r8a77961 # R-Car M3-W+
|
||||
- renesas,iic-r8a77965 # R-Car M3-N
|
||||
- renesas,iic-r8a77990 # R-Car E3
|
||||
- const: renesas,rcar-gen3-iic # R-Car Gen3 and RZ/G2
|
||||
- const: renesas,rmobile-iic # Generic
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts: true
|
||||
|
||||
clock-frequency:
|
||||
description:
|
||||
Desired I2C bus clock frequency in Hz. The absence of this property
|
||||
indicates the default frequency 100 kHz.
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
dmas:
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
description:
|
||||
Must contain a list of pairs of references to DMA specifiers, one for
|
||||
transmission, and one for reception.
|
||||
|
||||
dma-names:
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
items:
|
||||
enum:
|
||||
- tx
|
||||
- rx
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- power-domains
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,iic-r8a7740
|
||||
- renesas,iic-sh73a0
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
items:
|
||||
- description: Arbitration Lost Interrupt (ALI)
|
||||
- description: Non-acknowledge Detection Interrupt (TACKI)
|
||||
- description: Wait Interrupt (WAITI)
|
||||
- description: Data Transmit Enable interrupt (DTEI)
|
||||
else:
|
||||
properties:
|
||||
interrupts:
|
||||
items:
|
||||
- description: Single combined interrupt
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,rcar-gen2-iic
|
||||
- renesas,rcar-gen3-iic
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/r8a7790-cpg-mssr.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/power/r8a7790-sysc.h>
|
||||
|
||||
iic0: i2c@e6500000 {
|
||||
compatible = "renesas,iic-r8a7790", "renesas,rcar-gen2-iic",
|
||||
"renesas,rmobile-iic";
|
||||
reg = <0xe6500000 0x425>;
|
||||
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cpg CPG_MOD 318>;
|
||||
clock-frequency = <400000>;
|
||||
dmas = <&dmac0 0x61>, <&dmac0 0x62>, <&dmac1 0x61>, <&dmac1 0x62>;
|
||||
dma-names = "tx", "rx", "tx", "rx";
|
||||
power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 318>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
80
bindings/i2c/renesas,rzv2m.yaml
Normal file
80
bindings/i2c/renesas,rzv2m.yaml
Normal file
@@ -0,0 +1,80 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/renesas,rzv2m.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas RZ/V2M I2C Bus Interface
|
||||
|
||||
maintainers:
|
||||
- Phil Edworthy <phil.edworthy@renesas.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- renesas,i2c-r9a09g011 # RZ/V2M
|
||||
- const: renesas,rzv2m-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
items:
|
||||
- description: Data transmission/reception interrupt
|
||||
- description: Status interrupt
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: tia
|
||||
- const: tis
|
||||
|
||||
clock-frequency:
|
||||
default: 100000
|
||||
enum: [ 100000, 400000 ]
|
||||
description:
|
||||
Desired I2C bus clock frequency in Hz.
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- clocks
|
||||
- power-domains
|
||||
- resets
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/r9a09g011-cpg.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c0: i2c@a4030000 {
|
||||
compatible = "renesas,i2c-r9a09g011", "renesas,rzv2m-i2c";
|
||||
reg = <0xa4030000 0x80>;
|
||||
interrupts = <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 236 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "tia", "tis";
|
||||
clocks = <&cpg CPG_MOD R9A09G011_IIC_PCLK0>;
|
||||
resets = <&cpg R9A09G011_IIC_GPA_PRESETN>;
|
||||
power-domains = <&cpg>;
|
||||
clock-frequency = <100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
164
bindings/i2c/samsung,s3c2410-i2c.yaml
Normal file
164
bindings/i2c/samsung,s3c2410-i2c.yaml
Normal file
@@ -0,0 +1,164 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/samsung,s3c2410-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Samsung S3C/S5P/Exynos SoC I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzk@kernel.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- samsung,s3c2410-i2c
|
||||
- samsung,s3c2440-i2c
|
||||
# For s3c2440-like I2C used inside HDMIPHY block found on several SoCs:
|
||||
- samsung,s3c2440-hdmiphy-i2c
|
||||
# For s3c2440-like I2C used as a host to SATA PHY controller on an
|
||||
# internal bus:
|
||||
- samsung,exynos5-sata-phy-i2c
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: i2c
|
||||
|
||||
gpios:
|
||||
description: |
|
||||
The order of the GPIOs should be the following:: <SDA, SCL>. The GPIO
|
||||
specifier depends on the gpio controller. Required in all cases except
|
||||
for "samsung,s3c2440-hdmiphy-i2c" whose input/output lines are
|
||||
permanently wired to the respective client.
|
||||
This property is deprecated. Use "pinctrl-0" and "pinctrl-names" instead.
|
||||
deprecated: yes
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
samsung,i2c-max-bus-freq:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Desired frequency in Hz of the bus.
|
||||
default: 100000
|
||||
|
||||
samsung,i2c-sda-delay:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Delay (in ns) applied to data line (SDA) edges.
|
||||
default: 0
|
||||
|
||||
samsung,i2c-slave-addr:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
Slave address in multi-master environment.
|
||||
default: 0
|
||||
|
||||
samsung,sysreg-phandle:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: Pandle to syscon used to control the system registers.
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- samsung,s3c2440-hdmiphy-i2c
|
||||
- samsung,exynos5-sata-phy-i2c
|
||||
then:
|
||||
properties:
|
||||
gpios: false
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- samsung,s3c2410-i2c
|
||||
- samsung,s3c2440-i2c
|
||||
- samsung,s3c2440-hdmiphy-i2c
|
||||
then:
|
||||
required:
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos5250.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
i2c@12c60000 {
|
||||
compatible = "samsung,s3c2440-i2c";
|
||||
reg = <0x12C60000 0x100>;
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&clock CLK_I2C0>;
|
||||
clock-names = "i2c";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c0_bus>;
|
||||
|
||||
samsung,sysreg-phandle = <&sysreg_system_controller>;
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <20000>;
|
||||
samsung,i2c-slave-addr = <0x66>;
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "samsung,s524ad0xd1", "atmel,24c128";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@12ce0000 {
|
||||
compatible = "samsung,s3c2440-hdmiphy-i2c";
|
||||
reg = <0x12CE0000 0x1000>;
|
||||
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&clock CLK_I2C_HDMI>;
|
||||
clock-names = "i2c";
|
||||
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <66000>;
|
||||
|
||||
phy-i2c@38 {
|
||||
compatible = "samsung,exynos4212-hdmiphy";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@121d0000 {
|
||||
compatible = "samsung,exynos5-sata-phy-i2c";
|
||||
reg = <0x121D0000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&clock CLK_SATA_PHYI2C>;
|
||||
clock-names = "i2c";
|
||||
|
||||
samsung,i2c-sda-delay = <100>;
|
||||
samsung,i2c-max-bus-freq = <40000>;
|
||||
|
||||
phy-i2c@38 {
|
||||
compatible = "samsung,exynos-sataphy-i2c";
|
||||
reg = <0x38>;
|
||||
};
|
||||
};
|
145
bindings/i2c/snps,designware-i2c.yaml
Normal file
145
bindings/i2c/snps,designware-i2c.yaml
Normal file
@@ -0,0 +1,145 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/snps,designware-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Synopsys DesignWare APB I2C Controller
|
||||
|
||||
maintainers:
|
||||
- Jarkko Nikula <jarkko.nikula@linux.intel.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
not:
|
||||
contains:
|
||||
const: mscc,ocelot-i2c
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- description: Generic Synopsys DesignWare I2C controller
|
||||
const: snps,designware-i2c
|
||||
- description: Microsemi Ocelot SoCs I2C controller
|
||||
items:
|
||||
- const: mscc,ocelot-i2c
|
||||
- const: snps,designware-i2c
|
||||
- description: Baikal-T1 SoC System I2C controller
|
||||
const: baikal,bt1-sys-i2c
|
||||
|
||||
reg:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: DW APB I2C controller memory mapped registers
|
||||
- description: |
|
||||
ICPU_CFG:TWI_DELAY registers to setup the SDA hold time.
|
||||
This registers are specific to the Ocelot I2C-controller.
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
items:
|
||||
- description: I2C controller reference clock source
|
||||
- description: APB interface clock source
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: ref
|
||||
- const: pclk
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
description: Desired I2C bus clock frequency in Hz
|
||||
enum: [100000, 400000, 1000000, 3400000]
|
||||
default: 400000
|
||||
|
||||
i2c-sda-hold-time-ns:
|
||||
description: |
|
||||
The property should contain the SDA hold time in nanoseconds. This option
|
||||
is only supported in hardware blocks version 1.11a or newer or on
|
||||
Microsemi SoCs.
|
||||
|
||||
i2c-scl-falling-time-ns:
|
||||
description: |
|
||||
The property should contain the SCL falling time in nanoseconds.
|
||||
This value is used to compute the tLOW period.
|
||||
default: 300
|
||||
|
||||
i2c-sda-falling-time-ns:
|
||||
description: |
|
||||
The property should contain the SDA falling time in nanoseconds.
|
||||
This value is used to compute the tHIGH period.
|
||||
default: 300
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: TX DMA Channel
|
||||
- description: RX DMA Channel
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c@f0000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
reg = <0xf0000 0x1000>;
|
||||
interrupts = <11>;
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
- |
|
||||
i2c@1120000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
reg = <0x1120000 0x1000>;
|
||||
interrupts = <12 1>;
|
||||
clock-frequency = <400000>;
|
||||
i2c-sda-hold-time-ns = <300>;
|
||||
i2c-sda-falling-time-ns = <300>;
|
||||
i2c-scl-falling-time-ns = <300>;
|
||||
};
|
||||
- |
|
||||
i2c@2000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
reg = <0x2000 0x100>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clock-frequency = <400000>;
|
||||
clocks = <&i2cclk>;
|
||||
interrupts = <0>;
|
||||
|
||||
eeprom@64 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x64>;
|
||||
};
|
||||
};
|
||||
- |
|
||||
i2c@100400 {
|
||||
compatible = "mscc,ocelot-i2c", "snps,designware-i2c";
|
||||
reg = <0x100400 0x100>, <0x198 0x8>;
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
interrupts = <8>;
|
||||
clocks = <&ahb_clk>;
|
||||
};
|
||||
...
|
52
bindings/i2c/socionext,uniphier-fi2c.yaml
Normal file
52
bindings/i2c/socionext,uniphier-fi2c.yaml
Normal file
@@ -0,0 +1,52 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/socionext,uniphier-fi2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: UniPhier I2C controller (FIFO-builtin)
|
||||
|
||||
maintainers:
|
||||
- Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: socionext,uniphier-fi2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
minimum: 100000
|
||||
maximum: 400000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c0: i2c@58780000 {
|
||||
compatible = "socionext,uniphier-fi2c";
|
||||
reg = <0x58780000 0x80>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <0 41 4>;
|
||||
clocks = <&i2c_clk>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
52
bindings/i2c/socionext,uniphier-i2c.yaml
Normal file
52
bindings/i2c/socionext,uniphier-i2c.yaml
Normal file
@@ -0,0 +1,52 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/socionext,uniphier-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: UniPhier I2C controller (FIFO-less)
|
||||
|
||||
maintainers:
|
||||
- Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: socionext,uniphier-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
minimum: 100000
|
||||
maximum: 400000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c0: i2c@58400000 {
|
||||
compatible = "socionext,uniphier-i2c";
|
||||
reg = <0x58400000 0x40>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <0 41 1>;
|
||||
clocks = <&i2c_clk>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
115
bindings/i2c/st,nomadik-i2c.yaml
Normal file
115
bindings/i2c/st,nomadik-i2c.yaml
Normal file
@@ -0,0 +1,115 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/st,nomadik-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ST Microelectronics Nomadik I2C Bindings
|
||||
|
||||
description: The Nomadik I2C host controller began its life in the ST
|
||||
Microelectronics STn8800 SoC, and was then inherited into STn8810 and
|
||||
STn8815. It was part of the prototype STn8500 which then became ST-Ericsson
|
||||
DB8500 after the merge of these two companies wireless divisions.
|
||||
|
||||
maintainers:
|
||||
- Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
# Need a custom select here or 'arm,primecell' will match on lots of nodes
|
||||
select:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- st,nomadik-i2c
|
||||
required:
|
||||
- compatible
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
# The variant found in STn8815
|
||||
- items:
|
||||
- const: st,nomadik-i2c
|
||||
- const: arm,primecell
|
||||
# The variant found in DB8500
|
||||
- items:
|
||||
- const: stericsson,db8500-i2c
|
||||
- const: st,nomadik-i2c
|
||||
- const: arm,primecell
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 2
|
||||
|
||||
clock-names:
|
||||
oneOf:
|
||||
# Clock name in STn8815
|
||||
- items:
|
||||
- const: mclk
|
||||
- const: apb_pclk
|
||||
# Clock name in DB8500
|
||||
- items:
|
||||
- const: i2cclk
|
||||
- const: apb_pclk
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
clock-frequency:
|
||||
minimum: 1
|
||||
maximum: 400000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/reset/stericsson,db8500-prcc-reset.h>
|
||||
#include <dt-bindings/arm/ux500_pm_domains.h>
|
||||
i2c@80004000 {
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x80004000 0x1000>;
|
||||
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
clock-frequency = <400000>;
|
||||
clocks = <&prcc_kclk 3 3>, <&prcc_pclk 3 3>;
|
||||
clock-names = "i2cclk", "apb_pclk";
|
||||
power-domains = <&pm_domains DOMAIN_VAPE>;
|
||||
resets = <&prcc_reset DB8500_PRCC_3 DB8500_PRCC_3_RESET_I2C0>;
|
||||
};
|
||||
|
||||
i2c@101f8000 {
|
||||
compatible = "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x101f8000 0x1000>;
|
||||
interrupt-parent = <&vica>;
|
||||
interrupts = <20>;
|
||||
clock-frequency = <100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&i2c0clk>, <&pclki2c0>;
|
||||
clock-names = "mclk", "apb_pclk";
|
||||
};
|
||||
|
||||
...
|
161
bindings/i2c/st,stm32-i2c.yaml
Normal file
161
bindings/i2c/st,stm32-i2c.yaml
Normal file
@@ -0,0 +1,161 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/st,stm32-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: I2C controller embedded in STMicroelectronics STM32 I2C platform
|
||||
|
||||
maintainers:
|
||||
- Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- st,stm32f7-i2c
|
||||
- st,stm32mp13-i2c
|
||||
- st,stm32mp15-i2c
|
||||
then:
|
||||
properties:
|
||||
i2c-scl-rising-time-ns:
|
||||
default: 25
|
||||
|
||||
i2c-scl-falling-time-ns:
|
||||
default: 10
|
||||
else:
|
||||
properties:
|
||||
st,syscfg-fmp: false
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- st,stm32f4-i2c
|
||||
then:
|
||||
properties:
|
||||
clock-frequency:
|
||||
enum: [100000, 400000]
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- st,stm32f4-i2c
|
||||
- st,stm32f7-i2c
|
||||
- st,stm32mp13-i2c
|
||||
- st,stm32mp15-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
items:
|
||||
- description: interrupt ID for I2C event
|
||||
- description: interrupt ID for I2C error
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: event
|
||||
- const: error
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: RX DMA Channel phandle
|
||||
- description: TX DMA Channel phandle
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
clock-frequency:
|
||||
description: Desired I2C bus clock frequency in Hz. If not specified,
|
||||
the default 100 kHz frequency will be used.
|
||||
For STM32F7, STM32H7 and STM32MP1 SoCs, if timing parameters
|
||||
match, the bus clock frequency can be from 1Hz to 1MHz.
|
||||
default: 100000
|
||||
minimum: 1
|
||||
maximum: 1000000
|
||||
|
||||
st,syscfg-fmp:
|
||||
description: Use to set Fast Mode Plus bit within SYSCFG when Fast Mode
|
||||
Plus speed is selected by slave.
|
||||
$ref: "/schemas/types.yaml#/definitions/phandle-array"
|
||||
items:
|
||||
- items:
|
||||
- description: phandle to syscfg
|
||||
- description: register offset within syscfg
|
||||
- description: register bitmask for FMP bit
|
||||
|
||||
wakeup-source: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- resets
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||
//Example 1 (with st,stm32f4-i2c compatible)
|
||||
i2c@40005400 {
|
||||
compatible = "st,stm32f4-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x40005400 0x400>;
|
||||
interrupts = <31>,
|
||||
<32>;
|
||||
resets = <&rcc 277>;
|
||||
clocks = <&rcc 0 149>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||
//Example 2 (with st,stm32f7-i2c compatible)
|
||||
i2c@40005800 {
|
||||
compatible = "st,stm32f7-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x40005800 0x400>;
|
||||
interrupts = <31>,
|
||||
<32>;
|
||||
resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
|
||||
clocks = <&rcc 1 CLK_I2C1>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/mfd/stm32f7-rcc.h>
|
||||
#include <dt-bindings/clock/stm32fx-clock.h>
|
||||
//Example 3 (with st,stm32mp15-i2c compatible on stm32mp)
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/clock/stm32mp1-clks.h>
|
||||
#include <dt-bindings/reset/stm32mp1-resets.h>
|
||||
i2c@40013000 {
|
||||
compatible = "st,stm32mp15-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x40013000 0x400>;
|
||||
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc I2C2_K>;
|
||||
resets = <&rcc I2C2_R>;
|
||||
i2c-scl-rising-time-ns = <185>;
|
||||
i2c-scl-falling-time-ns = <20>;
|
||||
st,syscfg-fmp = <&syscfg 0x4 0x2>;
|
||||
};
|
102
bindings/i2c/ti,omap4-i2c.yaml
Normal file
102
bindings/i2c/ti,omap4-i2c.yaml
Normal file
@@ -0,0 +1,102 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/i2c/ti,omap4-i2c.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Bindings for I2C controllers on TI's OMAP and K3 SoCs
|
||||
|
||||
maintainers:
|
||||
- Vignesh Raghavendra <vigneshr@ti.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- ti,omap2420-i2c
|
||||
- ti,omap2430-i2c
|
||||
- ti,omap3-i2c
|
||||
- ti,omap4-i2c
|
||||
- items:
|
||||
- enum:
|
||||
- ti,am4372-i2c
|
||||
- ti,am64-i2c
|
||||
- ti,am654-i2c
|
||||
- ti,j721e-i2c
|
||||
- const: ti,omap4-i2c
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
const: fck
|
||||
|
||||
clock-frequency: true
|
||||
|
||||
power-domains: true
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
ti,hwmods:
|
||||
description:
|
||||
Must be "i2c<n>", n being the instance number (1-based).
|
||||
This property is applicable only on legacy platforms mainly omap2/3
|
||||
and ti81xx and should not be used on other platforms.
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
deprecated: true
|
||||
|
||||
# subnode's properties
|
||||
patternProperties:
|
||||
"@[0-9a-f]+$":
|
||||
type: object
|
||||
description:
|
||||
Flash device uses the below defined properties in the subnode.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ti,omap2420-i2c
|
||||
- ti,omap2430-i2c
|
||||
- ti,omap3-i2c
|
||||
- ti,omap4-i2c
|
||||
|
||||
then:
|
||||
properties:
|
||||
ti,hwmods:
|
||||
items:
|
||||
- pattern: "^i2c([1-9])$"
|
||||
|
||||
else:
|
||||
properties:
|
||||
ti,hwmods: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
main_i2c0: i2c@2000000 {
|
||||
compatible = "ti,j721e-i2c", "ti,omap4-i2c";
|
||||
reg = <0x2000000 0x100>;
|
||||
interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
51
bindings/i2c/xlnx,xps-iic-2.00.a.yaml
Normal file
51
bindings/i2c/xlnx,xps-iic-2.00.a.yaml
Normal file
@@ -0,0 +1,51 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/i2c/xlnx,xps-iic-2.00.a.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Xilinx IIC controller
|
||||
|
||||
maintainers:
|
||||
- info@mocean-labs.com
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: xlnx,xps-iic-2.00.a
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
|
||||
clock-name:
|
||||
const: pclk
|
||||
description: |
|
||||
Input clock name.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
axi_iic_0: i2c@40800000 {
|
||||
compatible = "xlnx,xps-iic-2.00.a";
|
||||
clocks = <&clkc 15>;
|
||||
interrupts = < 1 2 >;
|
||||
reg = < 0x40800000 0x10000 >;
|
||||
|
||||
#size-cells = <0>;
|
||||
#address-cells = <1>;
|
||||
};
|
Reference in New Issue
Block a user