1c66ec88fSEmmanuel VadotAlphascale Clock Controller 2c66ec88fSEmmanuel Vadot 3*aa1a8ff2SEmmanuel VadotThe ACC (Alphascale Clock Controller) is responsible for choosing proper 4*aa1a8ff2SEmmanuel Vadotclock source, setting dividers and clock gates. 5c66ec88fSEmmanuel Vadot 6c66ec88fSEmmanuel VadotRequired properties for the ACC node: 7c66ec88fSEmmanuel Vadot - compatible: must be "alphascale,asm9260-clock-controller" 8c66ec88fSEmmanuel Vadot - reg: must contain the ACC register base and size 9c66ec88fSEmmanuel Vadot - #clock-cells : shall be set to 1. 10c66ec88fSEmmanuel Vadot 11c66ec88fSEmmanuel VadotSimple one-cell clock specifier format is used, where the only cell is used 12c66ec88fSEmmanuel Vadotas an index of the clock inside the provider. 13c66ec88fSEmmanuel VadotIt is encouraged to use dt-binding for clock index definitions. SoC specific 14c66ec88fSEmmanuel Vadotdt-binding should be included to the device tree descriptor. For example 15c66ec88fSEmmanuel VadotAlphascale ASM9260: 16c66ec88fSEmmanuel Vadot#include <dt-bindings/clock/alphascale,asm9260.h> 17c66ec88fSEmmanuel Vadot 18c66ec88fSEmmanuel VadotThis binding contains two types of clock providers: 19c66ec88fSEmmanuel Vadot _AHB_ - AHB gate; 20c66ec88fSEmmanuel Vadot _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider. 21c66ec88fSEmmanuel VadotAll clock specific details can be found in the SoC documentation. 22c66ec88fSEmmanuel VadotCLKID_AHB_ROM 0 23c66ec88fSEmmanuel VadotCLKID_AHB_RAM 1 24c66ec88fSEmmanuel VadotCLKID_AHB_GPIO 2 25c66ec88fSEmmanuel VadotCLKID_AHB_MAC 3 26c66ec88fSEmmanuel VadotCLKID_AHB_EMI 4 27c66ec88fSEmmanuel VadotCLKID_AHB_USB0 5 28c66ec88fSEmmanuel VadotCLKID_AHB_USB1 6 29c66ec88fSEmmanuel VadotCLKID_AHB_DMA0 7 30c66ec88fSEmmanuel VadotCLKID_AHB_DMA1 8 31c66ec88fSEmmanuel VadotCLKID_AHB_UART0 9 32c66ec88fSEmmanuel VadotCLKID_AHB_UART1 10 33c66ec88fSEmmanuel VadotCLKID_AHB_UART2 11 34c66ec88fSEmmanuel VadotCLKID_AHB_UART3 12 35c66ec88fSEmmanuel VadotCLKID_AHB_UART4 13 36c66ec88fSEmmanuel VadotCLKID_AHB_UART5 14 37c66ec88fSEmmanuel VadotCLKID_AHB_UART6 15 38c66ec88fSEmmanuel VadotCLKID_AHB_UART7 16 39c66ec88fSEmmanuel VadotCLKID_AHB_UART8 17 40c66ec88fSEmmanuel VadotCLKID_AHB_UART9 18 41c66ec88fSEmmanuel VadotCLKID_AHB_I2S0 19 42c66ec88fSEmmanuel VadotCLKID_AHB_I2C0 20 43c66ec88fSEmmanuel VadotCLKID_AHB_I2C1 21 44c66ec88fSEmmanuel VadotCLKID_AHB_SSP0 22 45c66ec88fSEmmanuel VadotCLKID_AHB_IOCONFIG 23 46c66ec88fSEmmanuel VadotCLKID_AHB_WDT 24 47c66ec88fSEmmanuel VadotCLKID_AHB_CAN0 25 48c66ec88fSEmmanuel VadotCLKID_AHB_CAN1 26 49c66ec88fSEmmanuel VadotCLKID_AHB_MPWM 27 50c66ec88fSEmmanuel VadotCLKID_AHB_SPI0 28 51c66ec88fSEmmanuel VadotCLKID_AHB_SPI1 29 52c66ec88fSEmmanuel VadotCLKID_AHB_QEI 30 53c66ec88fSEmmanuel VadotCLKID_AHB_QUADSPI0 31 54c66ec88fSEmmanuel VadotCLKID_AHB_CAMIF 32 55c66ec88fSEmmanuel VadotCLKID_AHB_LCDIF 33 56c66ec88fSEmmanuel VadotCLKID_AHB_TIMER0 34 57c66ec88fSEmmanuel VadotCLKID_AHB_TIMER1 35 58c66ec88fSEmmanuel VadotCLKID_AHB_TIMER2 36 59c66ec88fSEmmanuel VadotCLKID_AHB_TIMER3 37 60c66ec88fSEmmanuel VadotCLKID_AHB_IRQ 38 61c66ec88fSEmmanuel VadotCLKID_AHB_RTC 39 62c66ec88fSEmmanuel VadotCLKID_AHB_NAND 40 63c66ec88fSEmmanuel VadotCLKID_AHB_ADC0 41 64c66ec88fSEmmanuel VadotCLKID_AHB_LED 42 65c66ec88fSEmmanuel VadotCLKID_AHB_DAC0 43 66c66ec88fSEmmanuel VadotCLKID_AHB_LCD 44 67c66ec88fSEmmanuel VadotCLKID_AHB_I2S1 45 68c66ec88fSEmmanuel VadotCLKID_AHB_MAC1 46 69c66ec88fSEmmanuel Vadot 70c66ec88fSEmmanuel VadotCLKID_SYS_CPU 47 71c66ec88fSEmmanuel VadotCLKID_SYS_AHB 48 72c66ec88fSEmmanuel VadotCLKID_SYS_I2S0M 49 73c66ec88fSEmmanuel VadotCLKID_SYS_I2S0S 50 74c66ec88fSEmmanuel VadotCLKID_SYS_I2S1M 51 75c66ec88fSEmmanuel VadotCLKID_SYS_I2S1S 52 76c66ec88fSEmmanuel VadotCLKID_SYS_UART0 53 77c66ec88fSEmmanuel VadotCLKID_SYS_UART1 54 78c66ec88fSEmmanuel VadotCLKID_SYS_UART2 55 79c66ec88fSEmmanuel VadotCLKID_SYS_UART3 56 80c66ec88fSEmmanuel VadotCLKID_SYS_UART4 56 81c66ec88fSEmmanuel VadotCLKID_SYS_UART5 57 82c66ec88fSEmmanuel VadotCLKID_SYS_UART6 58 83c66ec88fSEmmanuel VadotCLKID_SYS_UART7 59 84c66ec88fSEmmanuel VadotCLKID_SYS_UART8 60 85c66ec88fSEmmanuel VadotCLKID_SYS_UART9 61 86c66ec88fSEmmanuel VadotCLKID_SYS_SPI0 62 87c66ec88fSEmmanuel VadotCLKID_SYS_SPI1 63 88c66ec88fSEmmanuel VadotCLKID_SYS_QUADSPI 64 89c66ec88fSEmmanuel VadotCLKID_SYS_SSP0 65 90c66ec88fSEmmanuel VadotCLKID_SYS_NAND 66 91c66ec88fSEmmanuel VadotCLKID_SYS_TRACE 67 92c66ec88fSEmmanuel VadotCLKID_SYS_CAMM 68 93c66ec88fSEmmanuel VadotCLKID_SYS_WDT 69 94c66ec88fSEmmanuel VadotCLKID_SYS_CLKOUT 70 95c66ec88fSEmmanuel VadotCLKID_SYS_MAC 71 96c66ec88fSEmmanuel VadotCLKID_SYS_LCD 72 97c66ec88fSEmmanuel VadotCLKID_SYS_ADCANA 73 98c66ec88fSEmmanuel Vadot 99c66ec88fSEmmanuel VadotExample of clock consumer with _SYS_ and _AHB_ sinks. 100c66ec88fSEmmanuel Vadotuart4: serial@80010000 { 101c66ec88fSEmmanuel Vadot compatible = "alphascale,asm9260-uart"; 102c66ec88fSEmmanuel Vadot reg = <0x80010000 0x4000>; 103c66ec88fSEmmanuel Vadot clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>; 104c66ec88fSEmmanuel Vadot interrupts = <19>; 105c66ec88fSEmmanuel Vadot}; 106c66ec88fSEmmanuel Vadot 107c66ec88fSEmmanuel VadotClock consumer with only one, _AHB_ sink. 108c66ec88fSEmmanuel Vadottimer0: timer@80088000 { 109c66ec88fSEmmanuel Vadot compatible = "alphascale,asm9260-timer"; 110c66ec88fSEmmanuel Vadot reg = <0x80088000 0x4000>; 111c66ec88fSEmmanuel Vadot clocks = <&acc CLKID_AHB_TIMER0>; 112c66ec88fSEmmanuel Vadot interrupts = <29>; 113c66ec88fSEmmanuel Vadot}; 114c66ec88fSEmmanuel Vadot 115