Add the obvious compatible name to the existing I2C binding, and pair it with the existing A31 fallback compatible string, as the devices are compatible. On the way use enums to group all compatible devices together. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Wolfram Sang <wsa@kernel.org>
122 lines
2.6 KiB
YAML
122 lines
2.6 KiB
YAML
# 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 Device Tree Bindings
|
|
|
|
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,sun50i-a64-i2c
|
|
- allwinner,sun50i-a100-i2c
|
|
- allwinner,sun50i-h6-i2c
|
|
- allwinner,sun50i-h616-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
|
|
maxItems: 2
|
|
items:
|
|
- description: Reference clock for the I2C bus
|
|
- description: Bus clock (Only for Armada 7K/8K)
|
|
|
|
clock-names:
|
|
minItems: 1
|
|
maxItems: 2
|
|
items:
|
|
- const: core
|
|
- const: reg
|
|
description:
|
|
Mandatory if two clocks are used (only for Armada 7k and 8k).
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
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>;
|
|
};
|
|
|
|
...
|