1 # SPDX-License-Identifier: (GPL-2.0-only OR BS 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://devicetree.org/schemas/soc/samsung 4 $id: http://devicetree.org/schemas/soc/samsung/exynos-usi.yaml# 5 $schema: http://devicetree.org/meta-schemas/co 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 title: Samsung's Exynos USI (Universal Serial !! 7 title: Samsung's Exynos USI (Universal Serial Interface) binding 8 8 9 maintainers: 9 maintainers: 10 - Sam Protsenko <semen.protsenko@linaro.org> 10 - Sam Protsenko <semen.protsenko@linaro.org> 11 - Krzysztof Kozlowski <krzk@kernel.org> !! 11 - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> 12 12 13 description: | 13 description: | 14 USI IP-core provides selectable serial proto 14 USI IP-core provides selectable serial protocol (UART, SPI or High-Speed I2C). 15 USI shares almost all internal circuits with 15 USI shares almost all internal circuits within each protocol, so only one 16 protocol can be chosen at a time. USI is mod 16 protocol can be chosen at a time. USI is modeled as a node with zero or more 17 child nodes, each representing a serial sub- 17 child nodes, each representing a serial sub-node device. The mode setting 18 selects which particular function will be us 18 selects which particular function will be used. 19 19 >> 20 Refer to next bindings documentation for information on protocol subnodes that >> 21 can exist under USI node: >> 22 >> 23 [1] Documentation/devicetree/bindings/serial/samsung_uart.yaml >> 24 [2] Documentation/devicetree/bindings/i2c/i2c-exynos5.txt >> 25 [3] Documentation/devicetree/bindings/spi/spi-samsung.txt >> 26 20 properties: 27 properties: 21 $nodename: 28 $nodename: 22 pattern: "^usi@[0-9a-f]+$" 29 pattern: "^usi@[0-9a-f]+$" 23 30 24 compatible: 31 compatible: 25 oneOf: !! 32 enum: 26 - items: !! 33 - samsung,exynos850-usi # for USIv2 (Exynos850, ExynosAutoV9) 27 - enum: << 28 - google,gs101-usi << 29 - samsung,exynosautov9-usi << 30 - samsung,exynosautov920-usi << 31 - const: samsung,exynos850-usi << 32 - enum: << 33 - samsung,exynos850-usi << 34 34 35 reg: !! 35 reg: true 36 maxItems: 1 << 37 36 38 clocks: !! 37 clocks: true 39 maxItems: 2 << 40 38 41 clock-names: !! 39 clock-names: true 42 items: << 43 - const: pclk << 44 - const: ipclk << 45 40 46 ranges: true 41 ranges: true 47 42 48 "#address-cells": 43 "#address-cells": 49 const: 1 44 const: 1 50 45 51 "#size-cells": 46 "#size-cells": 52 const: 1 47 const: 1 53 48 54 samsung,sysreg: 49 samsung,sysreg: 55 $ref: /schemas/types.yaml#/definitions/pha 50 $ref: /schemas/types.yaml#/definitions/phandle-array 56 items: << 57 - items: << 58 - description: phandle to System Reg << 59 - description: offset of SW_CONF reg << 60 description: 51 description: 61 Should be phandle/offset pair. The phand 52 Should be phandle/offset pair. The phandle to System Register syscon node 62 (for the same domain where this USI cont 53 (for the same domain where this USI controller resides) and the offset 63 of SW_CONF register for this USI control 54 of SW_CONF register for this USI controller. 64 55 65 samsung,mode: 56 samsung,mode: 66 $ref: /schemas/types.yaml#/definitions/uin 57 $ref: /schemas/types.yaml#/definitions/uint32 67 description: 58 description: 68 Selects USI function (which serial proto 59 Selects USI function (which serial protocol to use). Refer to 69 <include/dt-bindings/soc/samsung,exynos- 60 <include/dt-bindings/soc/samsung,exynos-usi.h> for valid USI mode values. 70 61 71 samsung,clkreq-on: 62 samsung,clkreq-on: 72 type: boolean 63 type: boolean 73 description: 64 description: 74 Enable this property if underlying proto 65 Enable this property if underlying protocol requires the clock to be 75 continuously provided without automatic 66 continuously provided without automatic gating. As suggested by SoC 76 manual, it should be set in case of SPI/ 67 manual, it should be set in case of SPI/I2C slave, UART Rx and I2C 77 multi-master mode. Usually this property 68 multi-master mode. Usually this property is needed if USI mode is set 78 to "UART". 69 to "UART". 79 70 80 This property is optional. 71 This property is optional. 81 72 82 patternProperties: 73 patternProperties: 83 "^i2c@[0-9a-f]+$": !! 74 # All other properties should be child nodes 84 $ref: /schemas/i2c/i2c-exynos5.yaml !! 75 "^(serial|spi|i2c)@[0-9a-f]+$": 85 description: Child node describing underly !! 76 type: object 86 !! 77 description: Child node describing underlying USI serial protocol 87 "^serial@[0-9a-f]+$": << 88 $ref: /schemas/serial/samsung_uart.yaml << 89 description: Child node describing underly << 90 << 91 "^spi@[0-9a-f]+$": << 92 $ref: /schemas/spi/samsung,spi.yaml << 93 description: Child node describing underly << 94 78 95 required: 79 required: 96 - compatible 80 - compatible 97 - ranges 81 - ranges 98 - "#address-cells" 82 - "#address-cells" 99 - "#size-cells" 83 - "#size-cells" 100 - samsung,sysreg 84 - samsung,sysreg 101 - samsung,mode 85 - samsung,mode 102 86 103 if: 87 if: 104 properties: 88 properties: 105 compatible: 89 compatible: 106 contains: 90 contains: 107 enum: 91 enum: 108 - samsung,exynos850-usi 92 - samsung,exynos850-usi 109 93 110 then: 94 then: 111 properties: 95 properties: 112 reg: 96 reg: 113 maxItems: 1 97 maxItems: 1 114 98 115 clocks: 99 clocks: 116 items: 100 items: 117 - description: Bus (APB) clock 101 - description: Bus (APB) clock 118 - description: Operating clock for UAR 102 - description: Operating clock for UART/SPI/I2C protocol 119 103 120 clock-names: 104 clock-names: 121 maxItems: 2 !! 105 items: >> 106 - const: pclk >> 107 - const: ipclk 122 108 123 required: 109 required: 124 - reg 110 - reg 125 - clocks 111 - clocks 126 - clock-names 112 - clock-names 127 113 128 else: 114 else: 129 properties: 115 properties: 130 reg: false 116 reg: false 131 clocks: false 117 clocks: false 132 clock-names: false 118 clock-names: false 133 samsung,clkreq-on: false 119 samsung,clkreq-on: false 134 120 135 additionalProperties: false 121 additionalProperties: false 136 122 137 examples: 123 examples: 138 - | 124 - | 139 #include <dt-bindings/interrupt-controller 125 #include <dt-bindings/interrupt-controller/arm-gic.h> 140 #include <dt-bindings/soc/samsung,exynos-u 126 #include <dt-bindings/soc/samsung,exynos-usi.h> 141 127 142 usi0: usi@138200c0 { 128 usi0: usi@138200c0 { 143 compatible = "samsung,exynos850-usi"; 129 compatible = "samsung,exynos850-usi"; 144 reg = <0x138200c0 0x20>; 130 reg = <0x138200c0 0x20>; 145 samsung,sysreg = <&sysreg_peri 0x1010> 131 samsung,sysreg = <&sysreg_peri 0x1010>; 146 samsung,mode = <USI_V2_UART>; 132 samsung,mode = <USI_V2_UART>; 147 samsung,clkreq-on; /* needed for UART 133 samsung,clkreq-on; /* needed for UART mode */ 148 #address-cells = <1>; 134 #address-cells = <1>; 149 #size-cells = <1>; 135 #size-cells = <1>; 150 ranges; 136 ranges; 151 clocks = <&cmu_peri 32>, <&cmu_peri 31 137 clocks = <&cmu_peri 32>, <&cmu_peri 31>; 152 clock-names = "pclk", "ipclk"; 138 clock-names = "pclk", "ipclk"; 153 139 154 serial_0: serial@13820000 { 140 serial_0: serial@13820000 { 155 compatible = "samsung,exynos850-ua 141 compatible = "samsung,exynos850-uart"; 156 reg = <0x13820000 0xc0>; 142 reg = <0x13820000 0xc0>; 157 interrupts = <GIC_SPI 227 IRQ_TYPE 143 interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>; 158 clocks = <&cmu_peri 32>, <&cmu_per 144 clocks = <&cmu_peri 32>, <&cmu_peri 31>; 159 clock-names = "uart", "clk_uart_ba 145 clock-names = "uart", "clk_uart_baud0"; 160 status = "disabled"; 146 status = "disabled"; 161 }; 147 }; 162 148 163 hsi2c_0: i2c@13820000 { 149 hsi2c_0: i2c@13820000 { 164 compatible = "samsung,exynos850-hs !! 150 compatible = "samsung,exynosautov9-hsi2c"; 165 reg = <0x13820000 0xc0>; 151 reg = <0x13820000 0xc0>; 166 interrupts = <GIC_SPI 227 IRQ_TYPE 152 interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>; 167 #address-cells = <1>; 153 #address-cells = <1>; 168 #size-cells = <0>; 154 #size-cells = <0>; 169 clocks = <&cmu_peri 31>, <&cmu_per 155 clocks = <&cmu_peri 31>, <&cmu_peri 32>; 170 clock-names = "hsi2c", "hsi2c_pclk 156 clock-names = "hsi2c", "hsi2c_pclk"; 171 status = "disabled"; 157 status = "disabled"; 172 }; 158 }; 173 }; 159 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.