176b4701aSOleksij RempelAlphascale Clock Controller 276b4701aSOleksij Rempel 3*47aab533SBjorn HelgaasThe ACC (Alphascale Clock Controller) is responsible for choosing proper 4*47aab533SBjorn Helgaasclock source, setting dividers and clock gates. 576b4701aSOleksij Rempel 676b4701aSOleksij RempelRequired properties for the ACC node: 776b4701aSOleksij Rempel - compatible: must be "alphascale,asm9260-clock-controller" 876b4701aSOleksij Rempel - reg: must contain the ACC register base and size 976b4701aSOleksij Rempel - #clock-cells : shall be set to 1. 1076b4701aSOleksij Rempel 1176b4701aSOleksij RempelSimple one-cell clock specifier format is used, where the only cell is used 1276b4701aSOleksij Rempelas an index of the clock inside the provider. 1376b4701aSOleksij RempelIt is encouraged to use dt-binding for clock index definitions. SoC specific 1476b4701aSOleksij Rempeldt-binding should be included to the device tree descriptor. For example 1576b4701aSOleksij RempelAlphascale ASM9260: 1676b4701aSOleksij Rempel#include <dt-bindings/clock/alphascale,asm9260.h> 1776b4701aSOleksij Rempel 1876b4701aSOleksij RempelThis binding contains two types of clock providers: 1976b4701aSOleksij Rempel _AHB_ - AHB gate; 2076b4701aSOleksij Rempel _SYS_ - adjustable clock source. Not all peripheral have _SYS_ clock provider. 2176b4701aSOleksij RempelAll clock specific details can be found in the SoC documentation. 2276b4701aSOleksij RempelCLKID_AHB_ROM 0 2376b4701aSOleksij RempelCLKID_AHB_RAM 1 2476b4701aSOleksij RempelCLKID_AHB_GPIO 2 2576b4701aSOleksij RempelCLKID_AHB_MAC 3 2676b4701aSOleksij RempelCLKID_AHB_EMI 4 2776b4701aSOleksij RempelCLKID_AHB_USB0 5 2876b4701aSOleksij RempelCLKID_AHB_USB1 6 2976b4701aSOleksij RempelCLKID_AHB_DMA0 7 3076b4701aSOleksij RempelCLKID_AHB_DMA1 8 3176b4701aSOleksij RempelCLKID_AHB_UART0 9 3276b4701aSOleksij RempelCLKID_AHB_UART1 10 3376b4701aSOleksij RempelCLKID_AHB_UART2 11 3476b4701aSOleksij RempelCLKID_AHB_UART3 12 3576b4701aSOleksij RempelCLKID_AHB_UART4 13 3676b4701aSOleksij RempelCLKID_AHB_UART5 14 3776b4701aSOleksij RempelCLKID_AHB_UART6 15 3876b4701aSOleksij RempelCLKID_AHB_UART7 16 3976b4701aSOleksij RempelCLKID_AHB_UART8 17 4076b4701aSOleksij RempelCLKID_AHB_UART9 18 4176b4701aSOleksij RempelCLKID_AHB_I2S0 19 4276b4701aSOleksij RempelCLKID_AHB_I2C0 20 4376b4701aSOleksij RempelCLKID_AHB_I2C1 21 4476b4701aSOleksij RempelCLKID_AHB_SSP0 22 4576b4701aSOleksij RempelCLKID_AHB_IOCONFIG 23 4676b4701aSOleksij RempelCLKID_AHB_WDT 24 4776b4701aSOleksij RempelCLKID_AHB_CAN0 25 4876b4701aSOleksij RempelCLKID_AHB_CAN1 26 4976b4701aSOleksij RempelCLKID_AHB_MPWM 27 5076b4701aSOleksij RempelCLKID_AHB_SPI0 28 5176b4701aSOleksij RempelCLKID_AHB_SPI1 29 5276b4701aSOleksij RempelCLKID_AHB_QEI 30 5376b4701aSOleksij RempelCLKID_AHB_QUADSPI0 31 5476b4701aSOleksij RempelCLKID_AHB_CAMIF 32 5576b4701aSOleksij RempelCLKID_AHB_LCDIF 33 5676b4701aSOleksij RempelCLKID_AHB_TIMER0 34 5776b4701aSOleksij RempelCLKID_AHB_TIMER1 35 5876b4701aSOleksij RempelCLKID_AHB_TIMER2 36 5976b4701aSOleksij RempelCLKID_AHB_TIMER3 37 6076b4701aSOleksij RempelCLKID_AHB_IRQ 38 6176b4701aSOleksij RempelCLKID_AHB_RTC 39 6276b4701aSOleksij RempelCLKID_AHB_NAND 40 6376b4701aSOleksij RempelCLKID_AHB_ADC0 41 6476b4701aSOleksij RempelCLKID_AHB_LED 42 6576b4701aSOleksij RempelCLKID_AHB_DAC0 43 6676b4701aSOleksij RempelCLKID_AHB_LCD 44 6776b4701aSOleksij RempelCLKID_AHB_I2S1 45 6876b4701aSOleksij RempelCLKID_AHB_MAC1 46 6976b4701aSOleksij Rempel 7076b4701aSOleksij RempelCLKID_SYS_CPU 47 7176b4701aSOleksij RempelCLKID_SYS_AHB 48 7276b4701aSOleksij RempelCLKID_SYS_I2S0M 49 7376b4701aSOleksij RempelCLKID_SYS_I2S0S 50 7476b4701aSOleksij RempelCLKID_SYS_I2S1M 51 7576b4701aSOleksij RempelCLKID_SYS_I2S1S 52 7676b4701aSOleksij RempelCLKID_SYS_UART0 53 7776b4701aSOleksij RempelCLKID_SYS_UART1 54 7876b4701aSOleksij RempelCLKID_SYS_UART2 55 7976b4701aSOleksij RempelCLKID_SYS_UART3 56 8076b4701aSOleksij RempelCLKID_SYS_UART4 56 8176b4701aSOleksij RempelCLKID_SYS_UART5 57 8276b4701aSOleksij RempelCLKID_SYS_UART6 58 8376b4701aSOleksij RempelCLKID_SYS_UART7 59 8476b4701aSOleksij RempelCLKID_SYS_UART8 60 8576b4701aSOleksij RempelCLKID_SYS_UART9 61 8676b4701aSOleksij RempelCLKID_SYS_SPI0 62 8776b4701aSOleksij RempelCLKID_SYS_SPI1 63 8876b4701aSOleksij RempelCLKID_SYS_QUADSPI 64 8976b4701aSOleksij RempelCLKID_SYS_SSP0 65 9076b4701aSOleksij RempelCLKID_SYS_NAND 66 9176b4701aSOleksij RempelCLKID_SYS_TRACE 67 9276b4701aSOleksij RempelCLKID_SYS_CAMM 68 9376b4701aSOleksij RempelCLKID_SYS_WDT 69 9476b4701aSOleksij RempelCLKID_SYS_CLKOUT 70 9576b4701aSOleksij RempelCLKID_SYS_MAC 71 9676b4701aSOleksij RempelCLKID_SYS_LCD 72 9776b4701aSOleksij RempelCLKID_SYS_ADCANA 73 9876b4701aSOleksij Rempel 9976b4701aSOleksij RempelExample of clock consumer with _SYS_ and _AHB_ sinks. 10076b4701aSOleksij Rempeluart4: serial@80010000 { 10176b4701aSOleksij Rempel compatible = "alphascale,asm9260-uart"; 10276b4701aSOleksij Rempel reg = <0x80010000 0x4000>; 10376b4701aSOleksij Rempel clocks = <&acc CLKID_SYS_UART4>, <&acc CLKID_AHB_UART4>; 10476b4701aSOleksij Rempel interrupts = <19>; 10576b4701aSOleksij Rempel}; 10676b4701aSOleksij Rempel 10776b4701aSOleksij RempelClock consumer with only one, _AHB_ sink. 10876b4701aSOleksij Rempeltimer0: timer@80088000 { 10976b4701aSOleksij Rempel compatible = "alphascale,asm9260-timer"; 11076b4701aSOleksij Rempel reg = <0x80088000 0x4000>; 11176b4701aSOleksij Rempel clocks = <&acc CLKID_AHB_TIMER0>; 11276b4701aSOleksij Rempel interrupts = <29>; 11376b4701aSOleksij Rempel}; 11476b4701aSOleksij Rempel 115