cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mipi-dsi-bus.txt (5818B)


      1MIPI DSI (Display Serial Interface) busses
      2==========================================
      3
      4The MIPI Display Serial Interface specifies a serial bus and a protocol for
      5communication between a host and up to four peripherals. This document will
      6define the syntax used to represent a DSI bus in a device tree.
      7
      8This document describes DSI bus-specific properties only or defines existing
      9standard properties in the context of the DSI bus.
     10
     11Each DSI host provides a DSI bus. The DSI host controller's node contains a
     12set of properties that characterize the bus. Child nodes describe individual
     13peripherals on that bus.
     14
     15The following assumes that only a single peripheral is connected to a DSI
     16host. Experience shows that this is true for the large majority of setups.
     17
     18DSI host
     19========
     20
     21In addition to the standard properties and those defined by the parent bus of
     22a DSI host, the following properties apply to a node representing a DSI host.
     23
     24Required properties:
     25- #address-cells: The number of cells required to represent an address on the
     26  bus. DSI peripherals are addressed using a 2-bit virtual channel number, so
     27  a maximum of 4 devices can be addressed on a single bus. Hence the value of
     28  this property should be 1.
     29- #size-cells: Should be 0. There are cases where it makes sense to use a
     30  different value here. See below.
     31
     32Optional properties:
     33- clock-master: boolean. Should be enabled if the host is being used in
     34  conjunction with another DSI host to drive the same peripheral. Hardware
     35  supporting such a configuration generally requires the data on both the busses
     36  to be driven by the same clock. Only the DSI host instance controlling this
     37  clock should contain this property.
     38
     39DSI peripheral
     40==============
     41
     42Peripherals with DSI as control bus, or no control bus
     43------------------------------------------------------
     44
     45Peripherals with the DSI bus as the primary control bus, or peripherals with
     46no control bus but use the DSI bus to transmit pixel data are represented
     47as child nodes of the DSI host's node. Properties described here apply to all
     48DSI peripherals, but individual bindings may want to define additional,
     49device-specific properties.
     50
     51Required properties:
     52- reg: The virtual channel number of a DSI peripheral. Must be in the range
     53  from 0 to 3.
     54
     55Some DSI peripherals respond to more than a single virtual channel. In that
     56case two alternative representations can be chosen:
     57- The reg property can take multiple entries, one for each virtual channel
     58  that the peripheral responds to.
     59- If the virtual channels that a peripheral responds to are consecutive, the
     60  #size-cells can be set to 1. The first cell of each entry in the reg
     61  property is the number of the first virtual channel and the second cell is
     62  the number of consecutive virtual channels.
     63
     64Peripherals with a different control bus
     65----------------------------------------
     66
     67There are peripherals that have I2C/SPI (or some other non-DSI bus) as the
     68primary control bus, but are also connected to a DSI bus (mostly for the data
     69path). Connections between such peripherals and a DSI host can be represented
     70using the graph bindings [1], [2].
     71
     72Peripherals that support dual channel DSI
     73-----------------------------------------
     74
     75Peripherals with higher bandwidth requirements can be connected to 2 DSI
     76busses. Each DSI bus/channel drives some portion of the pixel data (generally
     77left/right half of each line of the display, or even/odd lines of the display).
     78The graph bindings should be used to represent the multiple DSI busses that are
     79connected to this peripheral. Each DSI host's output endpoint can be linked to
     80an input endpoint of the DSI peripheral.
     81
     82[1] Documentation/devicetree/bindings/graph.txt
     83[2] Documentation/devicetree/bindings/media/video-interfaces.txt
     84
     85Examples
     86========
     87- (1), (2) and (3) are examples of a DSI host and peripheral on the DSI bus
     88  with different virtual channel configurations.
     89- (4) is an example of a peripheral on a I2C control bus connected to a
     90  DSI host using of-graph bindings.
     91- (5) is an example of 2 DSI hosts driving a dual-channel DSI peripheral,
     92  which uses I2C as its primary control bus.
     93
     941)
     95	dsi-host {
     96		...
     97
     98		#address-cells = <1>;
     99		#size-cells = <0>;
    100
    101		/* peripheral responds to virtual channel 0 */
    102		peripheral@0 {
    103			compatible = "...";
    104			reg = <0>;
    105		};
    106
    107		...
    108	};
    109
    1102)
    111	dsi-host {
    112		...
    113
    114		#address-cells = <1>;
    115		#size-cells = <0>;
    116
    117		/* peripheral responds to virtual channels 0 and 2 */
    118		peripheral@0 {
    119			compatible = "...";
    120			reg = <0, 2>;
    121		};
    122
    123		...
    124	};
    125
    1263)
    127	dsi-host {
    128		...
    129
    130		#address-cells = <1>;
    131		#size-cells = <1>;
    132
    133		/* peripheral responds to virtual channels 1, 2 and 3 */
    134		peripheral@1 {
    135			compatible = "...";
    136			reg = <1 3>;
    137		};
    138
    139		...
    140	};
    141
    1424)
    143	i2c-host {
    144		...
    145
    146		dsi-bridge@35 {
    147			compatible = "...";
    148			reg = <0x35>;
    149
    150			ports {
    151				...
    152
    153				port {
    154					bridge_mipi_in: endpoint {
    155						remote-endpoint = <&host_mipi_out>;
    156					};
    157				};
    158			};
    159		};
    160	};
    161
    162	dsi-host {
    163		...
    164
    165		ports {
    166			...
    167
    168			port {
    169				host_mipi_out: endpoint {
    170					remote-endpoint = <&bridge_mipi_in>;
    171				};
    172			};
    173		};
    174	};
    175
    1765)
    177	i2c-host {
    178		dsi-bridge@35 {
    179			compatible = "...";
    180			reg = <0x35>;
    181
    182			ports {
    183				#address-cells = <1>;
    184				#size-cells = <0>;
    185
    186				port@0 {
    187					reg = <0>;
    188					dsi0_in: endpoint {
    189						remote-endpoint = <&dsi0_out>;
    190					};
    191				};
    192
    193				port@1 {
    194					reg = <1>;
    195					dsi1_in: endpoint {
    196						remote-endpoint = <&dsi1_out>;
    197					};
    198				};
    199			};
    200		};
    201	};
    202
    203	dsi0-host {
    204		...
    205
    206		/*
    207		 * this DSI instance drives the clock for both the host
    208		 * controllers
    209		 */
    210		clock-master;
    211
    212		ports {
    213			...
    214
    215			port {
    216				dsi0_out: endpoint {
    217					remote-endpoint = <&dsi0_in>;
    218				};
    219			};
    220		};
    221	};
    222
    223	dsi1-host {
    224		...
    225
    226		ports {
    227			...
    228
    229			port {
    230				dsi1_out: endpoint {
    231					remote-endpoint = <&dsi1_in>;
    232				};
    233			};
    234		};
    235	};