forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'i3c/for-5.12' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/i3c/linux Pull i3c update from Alexandre Belloni: "Subsystem: - Handle drivers without probe or remove callback - Remove callback now returns void - DT documentation is now in yaml New driver: - Silvaco I3C master" * tag 'i3c/for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux: i3c: master: dw: Drop redundant disec call MAINTAINERS: Add Silvaco I3C master i3c: master: svc: Add Silvaco I3C master driver dt-bindings: i3c: Describe Silvaco master binding dt-bindings: Add vendor prefix for Silvaco dt-bindings: i3c: mipi-hci: Include the bus binding dt-bindings: i3c: Convert the bus description to yaml i3c: Make remove callback return void i3c: Handle drivers without probe or remove callback i3c/master/mipi-i3c-hci: Specify HAS_IOMEM dependency
- Loading branch information
Showing
13 changed files
with
1,753 additions
and
153 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/i3c/i3c.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: I3C bus binding | ||
|
||
maintainers: | ||
- Alexandre Belloni <[email protected]> | ||
- Miquel Raynal <[email protected]> | ||
|
||
description: | | ||
I3C busses can be described with a node for the primary I3C controller device | ||
and a set of child nodes for each I2C or I3C slave on the bus. Each of them | ||
may, during the life of the bus, request mastership. | ||
properties: | ||
$nodename: | ||
pattern: "^i3c-master@[0-9a-f]+$" | ||
|
||
"#address-cells": | ||
const: 3 | ||
description: | | ||
Each I2C device connected to the bus should be described in a subnode. | ||
All I3C devices are supposed to support DAA (Dynamic Address Assignment), | ||
and are thus discoverable. So, by default, I3C devices do not have to be | ||
described in the device tree. This being said, one might want to attach | ||
extra resources to these devices, and those resources may have to be | ||
described in the device tree, which in turn means we have to describe | ||
I3C devices. | ||
Another use case for describing an I3C device in the device tree is when | ||
this I3C device has a static I2C address and we want to assign it a | ||
specific I3C dynamic address before the DAA takes place (so that other | ||
devices on the bus can't take this dynamic address). | ||
"#size-cells": | ||
const: 0 | ||
|
||
i3c-scl-hz: | ||
description: | | ||
Frequency of the SCL signal used for I3C transfers. When undefined, the | ||
default value should be 12.5MHz. | ||
May not be supported by all controllers. | ||
i2c-scl-hz: | ||
description: | | ||
Frequency of the SCL signal used for I2C transfers. When undefined, the | ||
default should be to look at LVR (Legacy Virtual Register) values of | ||
I2C devices described in the device tree to determine the maximum I2C | ||
frequency. | ||
May not be supported by all controllers. | ||
required: | ||
- "#address-cells" | ||
- "#size-cells" | ||
|
||
patternProperties: | ||
"@[0-9a-f]+$": | ||
type: object | ||
description: | | ||
I2C child, should be named: <device-type>@<i2c-address> | ||
All properties described in Documentation/devicetree/bindings/i2c/i2c.txt | ||
are valid here, except the reg property whose content is changed. | ||
properties: | ||
compatible: | ||
description: | ||
Compatible of the I2C device. | ||
|
||
reg: | ||
items: | ||
- items: | ||
- description: | | ||
I2C address. 10 bit addressing is not supported. Devices with | ||
10-bit address can't be properly passed through DEFSLVS | ||
command. | ||
minimum: 0 | ||
maximum: 0x7f | ||
- const: 0 | ||
- description: | | ||
Shall encode the I3C LVR (Legacy Virtual Register): | ||
bit[31:8]: unused/ignored | ||
bit[7:5]: I2C device index. Possible values: | ||
* 0: I2C device has a 50 ns spike filter | ||
* 1: I2C device does not have a 50 ns spike filter but | ||
supports high frequency on SCL | ||
* 2: I2C device does not have a 50 ns spike filter and is | ||
not tolerant to high frequencies | ||
* 3-7: reserved | ||
bit[4]: tell whether the device operates in FM (Fast Mode) | ||
or FM+ mode: | ||
* 0: FM+ mode | ||
* 1: FM mode | ||
bit[3:0]: device type | ||
* 0-15: reserved | ||
required: | ||
- compatible | ||
- reg | ||
|
||
"@[0-9a-f]+,[0-9a-f]+$": | ||
type: object | ||
description: | | ||
I3C child, should be named: <device-type>@<static-i2c-address>,<i3c-pid> | ||
properties: | ||
reg: | ||
items: | ||
- items: | ||
- description: | | ||
Encodes the static I2C address. Should be 0 if the device does | ||
not have one (0 is not a valid I2C address). | ||
minimum: 0 | ||
maximum: 0x7f | ||
- description: | | ||
First half of the Provisional ID (following the PID | ||
definition provided by the I3C specification). | ||
Contains the manufacturer ID left-shifted by 1. | ||
- description: | | ||
Second half of the Provisional ID (following the PID | ||
definition provided by the I3C specification). | ||
Contains the ORing of the part ID left-shifted by 16, | ||
the instance ID left-shifted by 12 and extra information. | ||
assigned-address: | ||
$ref: /schemas/types.yaml#/definitions/uint32 | ||
minimum: 0x1 | ||
maximum: 0xff | ||
description: | | ||
Dynamic address to be assigned to this device. This property is only | ||
valid if the I3C device has a static address (first cell of the reg | ||
property != 0). | ||
required: | ||
- reg | ||
|
||
additionalProperties: true | ||
|
||
examples: | ||
- | | ||
i3c-master@d040000 { | ||
compatible = "cdns,i3c-master"; | ||
clocks = <&coreclock>, <&i3csysclock>; | ||
clock-names = "pclk", "sysclk"; | ||
interrupts = <3 0>; | ||
reg = <0x0d040000 0x1000>; | ||
#address-cells = <3>; | ||
#size-cells = <0>; | ||
i2c-scl-hz = <100000>; | ||
/* I2C device. */ | ||
nunchuk: nunchuk@52 { | ||
compatible = "nintendo,nunchuk"; | ||
reg = <0x52 0x0 0x10>; | ||
}; | ||
/* I3C device with a static I2C address. */ | ||
thermal_sensor: sensor@68,39200144004 { | ||
reg = <0x68 0x392 0x144004>; | ||
assigned-address = <0xa>; | ||
}; | ||
/* | ||
* I3C device without a static I2C address but requiring | ||
* resources described in the DT. | ||
*/ | ||
sensor@0,39200154004 { | ||
reg = <0x0 0x392 0x154004>; | ||
clocks = <&clock_provider 0>; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,9 @@ title: MIPI I3C HCI Device Tree Bindings | |
maintainers: | ||
- Nicolas Pitre <[email protected]> | ||
|
||
allOf: | ||
- $ref: /schemas/i3c/i3c.yaml# | ||
|
||
description: | | ||
MIPI I3C Host Controller Interface | ||
|
@@ -36,12 +39,14 @@ required: | |
- reg | ||
- interrupts | ||
|
||
additionalProperties: false | ||
unevaluatedProperties: false | ||
|
||
examples: | ||
- | | ||
i3c@a0000000 { | ||
i3c-master@a0000000 { | ||
compatible = "mipi-i3c-hci"; | ||
reg = <0xa0000000 0x2000>; | ||
interrupts = <89>; | ||
#address-cells = <3>; | ||
#size-cells = <0>; | ||
}; |
Oops, something went wrong.