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