1c66ec88fSEmmanuel VadotBinding for Silicon Labs Si5351a/b/c programmable i2c clock generator. 2c66ec88fSEmmanuel Vadot 3c66ec88fSEmmanuel VadotReference 4c66ec88fSEmmanuel Vadot[1] Si5351A/B/C Data Sheet 5*8cc087a1SEmmanuel Vadot https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/data-sheets/Si5351-B.pdf 6c66ec88fSEmmanuel Vadot 7c66ec88fSEmmanuel VadotThe Si5351a/b/c are programmable i2c clock generators with up to 8 output 8c66ec88fSEmmanuel Vadotclocks. Si5351a also has a reduced pin-count package (MSOP10) where only 9c66ec88fSEmmanuel Vadot3 output clocks are accessible. The internal structure of the clock 10c66ec88fSEmmanuel Vadotgenerators can be found in [1]. 11c66ec88fSEmmanuel Vadot 12c66ec88fSEmmanuel Vadot==I2C device node== 13c66ec88fSEmmanuel Vadot 14c66ec88fSEmmanuel VadotRequired properties: 15c66ec88fSEmmanuel Vadot- compatible: shall be one of the following: 16c66ec88fSEmmanuel Vadot "silabs,si5351a" - Si5351a, QFN20 package 17c66ec88fSEmmanuel Vadot "silabs,si5351a-msop" - Si5351a, MSOP10 package 18c66ec88fSEmmanuel Vadot "silabs,si5351b" - Si5351b, QFN20 package 19c66ec88fSEmmanuel Vadot "silabs,si5351c" - Si5351c, QFN20 package 20c66ec88fSEmmanuel Vadot- reg: i2c device address, shall be 0x60 or 0x61. 21c66ec88fSEmmanuel Vadot- #clock-cells: from common clock binding; shall be set to 1. 22c66ec88fSEmmanuel Vadot- clocks: from common clock binding; list of parent clock 23c66ec88fSEmmanuel Vadot handles, shall be xtal reference clock or xtal and clkin for 24c66ec88fSEmmanuel Vadot si5351c only. Corresponding clock input names are "xtal" and 25c66ec88fSEmmanuel Vadot "clkin" respectively. 26c66ec88fSEmmanuel Vadot- #address-cells: shall be set to 1. 27c66ec88fSEmmanuel Vadot- #size-cells: shall be set to 0. 28c66ec88fSEmmanuel Vadot 29c66ec88fSEmmanuel VadotOptional properties: 30c66ec88fSEmmanuel Vadot- silabs,pll-source: pair of (number, source) for each pll. Allows 31c66ec88fSEmmanuel Vadot to overwrite clock source of pll A (number=0) or B (number=1). 32c66ec88fSEmmanuel Vadot 33c66ec88fSEmmanuel Vadot==Child nodes== 34c66ec88fSEmmanuel Vadot 35c66ec88fSEmmanuel VadotEach of the clock outputs can be overwritten individually by 36c66ec88fSEmmanuel Vadotusing a child node to the I2C device node. If a child node for a clock 37c66ec88fSEmmanuel Vadotoutput is not set, the eeprom configuration is not overwritten. 38c66ec88fSEmmanuel Vadot 39c66ec88fSEmmanuel VadotRequired child node properties: 40c66ec88fSEmmanuel Vadot- reg: number of clock output. 41c66ec88fSEmmanuel Vadot 42c66ec88fSEmmanuel VadotOptional child node properties: 43c66ec88fSEmmanuel Vadot- silabs,clock-source: source clock of the output divider stage N, shall be 44c66ec88fSEmmanuel Vadot 0 = multisynth N 45c66ec88fSEmmanuel Vadot 1 = multisynth 0 for output clocks 0-3, else multisynth4 46c66ec88fSEmmanuel Vadot 2 = xtal 47c66ec88fSEmmanuel Vadot 3 = clkin (si5351c only) 48c66ec88fSEmmanuel Vadot- silabs,drive-strength: output drive strength in mA, shall be one of {2,4,6,8}. 49c66ec88fSEmmanuel Vadot- silabs,multisynth-source: source pll A(0) or B(1) of corresponding multisynth 50c66ec88fSEmmanuel Vadot divider. 51c66ec88fSEmmanuel Vadot- silabs,pll-master: boolean, multisynth can change pll frequency. 52c66ec88fSEmmanuel Vadot- silabs,pll-reset: boolean, clock output can reset its pll. 53c66ec88fSEmmanuel Vadot- silabs,disable-state : clock output disable state, shall be 54c66ec88fSEmmanuel Vadot 0 = clock output is driven LOW when disabled 55c66ec88fSEmmanuel Vadot 1 = clock output is driven HIGH when disabled 56c66ec88fSEmmanuel Vadot 2 = clock output is FLOATING (HIGH-Z) when disabled 57c66ec88fSEmmanuel Vadot 3 = clock output is NEVER disabled 58c66ec88fSEmmanuel Vadot 59c66ec88fSEmmanuel Vadot==Example== 60c66ec88fSEmmanuel Vadot 61c66ec88fSEmmanuel Vadot/* 25MHz reference crystal */ 62c66ec88fSEmmanuel Vadotref25: ref25M { 63c66ec88fSEmmanuel Vadot compatible = "fixed-clock"; 64c66ec88fSEmmanuel Vadot #clock-cells = <0>; 65c66ec88fSEmmanuel Vadot clock-frequency = <25000000>; 66c66ec88fSEmmanuel Vadot}; 67c66ec88fSEmmanuel Vadot 68c66ec88fSEmmanuel Vadoti2c-master-node { 69c66ec88fSEmmanuel Vadot 70c66ec88fSEmmanuel Vadot /* Si5351a msop10 i2c clock generator */ 71c66ec88fSEmmanuel Vadot si5351a: clock-generator@60 { 72c66ec88fSEmmanuel Vadot compatible = "silabs,si5351a-msop"; 73c66ec88fSEmmanuel Vadot reg = <0x60>; 74c66ec88fSEmmanuel Vadot #address-cells = <1>; 75c66ec88fSEmmanuel Vadot #size-cells = <0>; 76c66ec88fSEmmanuel Vadot #clock-cells = <1>; 77c66ec88fSEmmanuel Vadot 78c66ec88fSEmmanuel Vadot /* connect xtal input to 25MHz reference */ 79c66ec88fSEmmanuel Vadot clocks = <&ref25>; 80c66ec88fSEmmanuel Vadot clock-names = "xtal"; 81c66ec88fSEmmanuel Vadot 82c66ec88fSEmmanuel Vadot /* connect xtal input as source of pll0 and pll1 */ 83c66ec88fSEmmanuel Vadot silabs,pll-source = <0 0>, <1 0>; 84c66ec88fSEmmanuel Vadot 85c66ec88fSEmmanuel Vadot /* 86c66ec88fSEmmanuel Vadot * overwrite clkout0 configuration with: 87c66ec88fSEmmanuel Vadot * - 8mA output drive strength 88c66ec88fSEmmanuel Vadot * - pll0 as clock source of multisynth0 89c66ec88fSEmmanuel Vadot * - multisynth0 as clock source of output divider 90c66ec88fSEmmanuel Vadot * - multisynth0 can change pll0 91c66ec88fSEmmanuel Vadot * - set initial clock frequency of 74.25MHz 92c66ec88fSEmmanuel Vadot */ 93c66ec88fSEmmanuel Vadot clkout0 { 94c66ec88fSEmmanuel Vadot reg = <0>; 95c66ec88fSEmmanuel Vadot silabs,drive-strength = <8>; 96c66ec88fSEmmanuel Vadot silabs,multisynth-source = <0>; 97c66ec88fSEmmanuel Vadot silabs,clock-source = <0>; 98c66ec88fSEmmanuel Vadot silabs,pll-master; 99c66ec88fSEmmanuel Vadot clock-frequency = <74250000>; 100c66ec88fSEmmanuel Vadot }; 101c66ec88fSEmmanuel Vadot 102c66ec88fSEmmanuel Vadot /* 103c66ec88fSEmmanuel Vadot * overwrite clkout1 configuration with: 104c66ec88fSEmmanuel Vadot * - 4mA output drive strength 105c66ec88fSEmmanuel Vadot * - pll1 as clock source of multisynth1 106c66ec88fSEmmanuel Vadot * - multisynth1 as clock source of output divider 107c66ec88fSEmmanuel Vadot * - multisynth1 can change pll1 108c66ec88fSEmmanuel Vadot */ 109c66ec88fSEmmanuel Vadot clkout1 { 110c66ec88fSEmmanuel Vadot reg = <1>; 111c66ec88fSEmmanuel Vadot silabs,drive-strength = <4>; 112c66ec88fSEmmanuel Vadot silabs,multisynth-source = <1>; 113c66ec88fSEmmanuel Vadot silabs,clock-source = <0>; 114c66ec88fSEmmanuel Vadot pll-master; 115c66ec88fSEmmanuel Vadot }; 116c66ec88fSEmmanuel Vadot 117c66ec88fSEmmanuel Vadot /* 118c66ec88fSEmmanuel Vadot * overwrite clkout2 configuration with: 119c66ec88fSEmmanuel Vadot * - xtal as clock source of output divider 120c66ec88fSEmmanuel Vadot */ 121c66ec88fSEmmanuel Vadot clkout2 { 122c66ec88fSEmmanuel Vadot reg = <2>; 123c66ec88fSEmmanuel Vadot silabs,clock-source = <2>; 124c66ec88fSEmmanuel Vadot }; 125c66ec88fSEmmanuel Vadot }; 126c66ec88fSEmmanuel Vadot}; 127