Based on kernel version 6.18. Page generated on 2025-12-02 09:03 EST.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/silabs,si5341.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Silicon Labs Si5340/1/2/4/5 programmable i2c clock generator maintainers: - Mike Looijmans <mike.looijmans@topic.nl> description: > Silicon Labs Si5340, Si5341 Si5342, Si5344 and Si5345 programmable i2c clock generator. Reference [1] Si5341 Data Sheet https://www.silabs.com/documents/public/data-sheets/Si5341-40-D-DataSheet.pdf [2] Si5341 Reference Manual https://www.silabs.com/documents/public/reference-manuals/Si5341-40-D-RM.pdf [3] Si5345 Reference Manual https://www.silabs.com/documents/public/reference-manuals/Si5345-44-42-D-RM.pdf The Si5341 and Si5340 are programmable i2c clock generators with up to 10 output clocks. The chip contains a PLL that sources 5 (or 4) multisynth clocks, which in turn can be directed to any of the 10 (or 4) outputs through a divider. The internal structure of the clock generators can be found in [2]. The Si5345 is similar to the Si5341 with the addition of fractional input dividers and automatic input selection, as described in [3]. The Si5342 and Si5344 are smaller versions of the Si5345, with 2 or 4 outputs. The driver can be used in "as is" mode, reading the current settings from the chip at boot, in case you have a (pre-)programmed device. If the PLL is not configured when the driver probes, it assumes the driver must fully initialize it. The device type, speed grade and revision are determined runtime by probing. properties: compatible: enum: - silabs,si5340 - silabs,si5341 - silabs,si5342 - silabs,si5344 - silabs,si5345 reg: maxItems: 1 "#clock-cells": const: 2 description: > The first value is "0" for outputs, "1" for synthesizers. The second value is the output or synthesizer index. "#address-cells": const: 1 "#size-cells": const: 0 clocks: minItems: 1 maxItems: 4 clock-names: minItems: 1 items: - const: xtal - const: in0 - const: in1 - const: in2 clock-output-names: true interrupts: maxItems: 1 description: Interrupt for INTRb pin vdd-supply: description: Regulator node for VDD vdda-supply: description: Regulator node for VDDA vdds-supply: description: Regulator node for VDDS silabs,pll-m-num: description: Numerator for PLL feedback divider. Must be such that the PLL output is in the valid range. For example, to create 14GHz from a 48MHz xtal, use m-num=14000 and m-den=48. Only the fraction matters, using 3500 and 12 will deliver the exact same result. If these are not specified, and the PLL is not yet programmed when the driver probes, the PLL will be set to 14GHz. $ref: /schemas/types.yaml#/definitions/uint32 silabs,pll-m-den: description: Denominator for PLL feedback divider $ref: /schemas/types.yaml#/definitions/uint32 silabs,reprogram: description: Always perform soft-reset and reinitialize PLL type: boolean silabs,xaxb-ext-clk: description: Use XA/XB pins as external reference clock type: boolean silabs,iovdd-33: description: I2C lines use 3.3V thresholds type: boolean patternProperties: "^vddo[0-9]-supply$": true "^out@[0-9]$": description: > Output-specific override nodes Each of the clock outputs can be overwritten individually by using a child node. If a child node for a clock output is not set, the configuration remains unchanged. type: object additionalProperties: false properties: reg: description: Number of clock output maximum: 9 always-on: description: Set to keep the clock output always running type: boolean silabs,format: description: Output format $ref: /schemas/types.yaml#/definitions/uint32 enum: [1, 2, 4] silabs,common-mode: description: Override output common mode $ref: /schemas/types.yaml#/definitions/uint32 silabs,amplitude: description: Override output amplitude $ref: /schemas/types.yaml#/definitions/uint32 silabs,synth-master: description: Allow dynamic multisynth rate control type: boolean silabs,disable-high: description: Drive output HIGH when disabled type: boolean required: - reg required: - compatible - reg - "#clock-cells" - "#address-cells" - "#size-cells" - clocks - clock-names additionalProperties: false examples: - | i2c { #address-cells = <1>; #size-cells = <0>; clock-generator@74 { reg = <0x74>; compatible = "silabs,si5341"; #clock-cells = <2>; #address-cells = <1>; #size-cells = <0>; clocks = <&ref48>; clock-names = "xtal"; silabs,pll-m-num = <14000>; /* PLL at 14.0 GHz */ silabs,pll-m-den = <48>; silabs,reprogram; /* Chips are not programmed, always reset */ out@0 { reg = <0>; silabs,format = <1>; /* LVDS 3v3 */ silabs,common-mode = <3>; silabs,amplitude = <3>; silabs,synth-master; }; /* * Output 6 configuration: * LVDS 1v8 */ out@6 { reg = <6>; silabs,format = <1>; /* LVDS 1v8 */ silabs,common-mode = <13>; silabs,amplitude = <3>; }; /* * Output 8 configuration: * HCSL 3v3 */ out@8 { reg = <8>; silabs,format = <2>; silabs,common-mode = <11>; silabs,amplitude = <3>; }; }; }; |