1*c66ec88fSEmmanuel Vadot* Samsung S3C64xx Clock Controller 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThe S3C64xx clock controller generates and supplies clock to various controllers 4*c66ec88fSEmmanuel Vadotwithin the SoC. The clock binding described here is applicable to all SoCs in 5*c66ec88fSEmmanuel Vadotthe S3C64xx family. 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel VadotRequired Properties: 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel Vadot- compatible: should be one of the following. 10*c66ec88fSEmmanuel Vadot - "samsung,s3c6400-clock" - controller compatible with S3C6400 SoC. 11*c66ec88fSEmmanuel Vadot - "samsung,s3c6410-clock" - controller compatible with S3C6410 SoC. 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel Vadot- reg: physical base address of the controller and length of memory mapped 14*c66ec88fSEmmanuel Vadot region. 15*c66ec88fSEmmanuel Vadot 16*c66ec88fSEmmanuel Vadot- #clock-cells: should be 1. 17*c66ec88fSEmmanuel Vadot 18*c66ec88fSEmmanuel VadotEach clock is assigned an identifier and client nodes can use this identifier 19*c66ec88fSEmmanuel Vadotto specify the clock which they consume. Some of the clocks are available only 20*c66ec88fSEmmanuel Vadoton a particular S3C64xx SoC and this is specified where applicable. 21*c66ec88fSEmmanuel Vadot 22*c66ec88fSEmmanuel VadotAll available clocks are defined as preprocessor macros in 23*c66ec88fSEmmanuel Vadotdt-bindings/clock/samsung,s3c64xx-clock.h header and can be used in device 24*c66ec88fSEmmanuel Vadottree sources. 25*c66ec88fSEmmanuel Vadot 26*c66ec88fSEmmanuel VadotExternal clocks: 27*c66ec88fSEmmanuel Vadot 28*c66ec88fSEmmanuel VadotThere are several clocks that are generated outside the SoC. It is expected 29*c66ec88fSEmmanuel Vadotthat they are defined using standard clock bindings with following 30*c66ec88fSEmmanuel Vadotclock-output-names: 31*c66ec88fSEmmanuel Vadot - "fin_pll" - PLL input clock (xtal/extclk) - required, 32*c66ec88fSEmmanuel Vadot - "xusbxti" - USB xtal - required, 33*c66ec88fSEmmanuel Vadot - "iiscdclk0" - I2S0 codec clock - optional, 34*c66ec88fSEmmanuel Vadot - "iiscdclk1" - I2S1 codec clock - optional, 35*c66ec88fSEmmanuel Vadot - "iiscdclk2" - I2S2 codec clock - optional, 36*c66ec88fSEmmanuel Vadot - "pcmcdclk0" - PCM0 codec clock - optional, 37*c66ec88fSEmmanuel Vadot - "pcmcdclk1" - PCM1 codec clock - optional, only S3C6410. 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel VadotExample: Clock controller node: 40*c66ec88fSEmmanuel Vadot 41*c66ec88fSEmmanuel Vadot clock: clock-controller@7e00f000 { 42*c66ec88fSEmmanuel Vadot compatible = "samsung,s3c6410-clock"; 43*c66ec88fSEmmanuel Vadot reg = <0x7e00f000 0x1000>; 44*c66ec88fSEmmanuel Vadot #clock-cells = <1>; 45*c66ec88fSEmmanuel Vadot }; 46*c66ec88fSEmmanuel Vadot 47*c66ec88fSEmmanuel VadotExample: Required external clocks: 48*c66ec88fSEmmanuel Vadot 49*c66ec88fSEmmanuel Vadot fin_pll: clock-fin-pll { 50*c66ec88fSEmmanuel Vadot compatible = "fixed-clock"; 51*c66ec88fSEmmanuel Vadot clock-output-names = "fin_pll"; 52*c66ec88fSEmmanuel Vadot clock-frequency = <12000000>; 53*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 54*c66ec88fSEmmanuel Vadot }; 55*c66ec88fSEmmanuel Vadot 56*c66ec88fSEmmanuel Vadot xusbxti: clock-xusbxti { 57*c66ec88fSEmmanuel Vadot compatible = "fixed-clock"; 58*c66ec88fSEmmanuel Vadot clock-output-names = "xusbxti"; 59*c66ec88fSEmmanuel Vadot clock-frequency = <48000000>; 60*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 61*c66ec88fSEmmanuel Vadot }; 62*c66ec88fSEmmanuel Vadot 63*c66ec88fSEmmanuel VadotExample: UART controller node that consumes the clock generated by the clock 64*c66ec88fSEmmanuel Vadot controller (refer to the standard clock bindings for information about 65*c66ec88fSEmmanuel Vadot "clocks" and "clock-names" properties): 66*c66ec88fSEmmanuel Vadot 67*c66ec88fSEmmanuel Vadot uart0: serial@7f005000 { 68*c66ec88fSEmmanuel Vadot compatible = "samsung,s3c6400-uart"; 69*c66ec88fSEmmanuel Vadot reg = <0x7f005000 0x100>; 70*c66ec88fSEmmanuel Vadot interrupt-parent = <&vic1>; 71*c66ec88fSEmmanuel Vadot interrupts = <5>; 72*c66ec88fSEmmanuel Vadot clock-names = "uart", "clk_uart_baud2", 73*c66ec88fSEmmanuel Vadot "clk_uart_baud3"; 74*c66ec88fSEmmanuel Vadot clocks = <&clock PCLK_UART0>, <&clocks PCLK_UART0>, 75*c66ec88fSEmmanuel Vadot <&clock SCLK_UART>; 76*c66ec88fSEmmanuel Vadot }; 77