1*c66ec88fSEmmanuel Vadot* Samsung Exynos4 Clock Controller 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThe Exynos4 clock controller generates and supplies clock to various controllers 4*c66ec88fSEmmanuel Vadotwithin the Exynos4 SoC. The clock binding described here is applicable to all 5*c66ec88fSEmmanuel VadotSoC's in the Exynos4 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,exynos4210-clock" - controller compatible with Exynos4210 SoC. 11*c66ec88fSEmmanuel Vadot - "samsung,exynos4412-clock" - controller compatible with Exynos4412 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. 20*c66ec88fSEmmanuel Vadot 21*c66ec88fSEmmanuel VadotAll available clocks are defined as preprocessor macros in 22*c66ec88fSEmmanuel Vadotdt-bindings/clock/exynos4.h header and can be used in device 23*c66ec88fSEmmanuel Vadottree sources. 24*c66ec88fSEmmanuel Vadot 25*c66ec88fSEmmanuel VadotExample 1: An example of a clock controller node is listed below. 26*c66ec88fSEmmanuel Vadot 27*c66ec88fSEmmanuel Vadot clock: clock-controller@10030000 { 28*c66ec88fSEmmanuel Vadot compatible = "samsung,exynos4210-clock"; 29*c66ec88fSEmmanuel Vadot reg = <0x10030000 0x20000>; 30*c66ec88fSEmmanuel Vadot #clock-cells = <1>; 31*c66ec88fSEmmanuel Vadot }; 32*c66ec88fSEmmanuel Vadot 33*c66ec88fSEmmanuel VadotExample 2: UART controller node that consumes the clock generated by the clock 34*c66ec88fSEmmanuel Vadot controller. Refer to the standard clock bindings for information 35*c66ec88fSEmmanuel Vadot about 'clocks' and 'clock-names' property. 36*c66ec88fSEmmanuel Vadot 37*c66ec88fSEmmanuel Vadot serial@13820000 { 38*c66ec88fSEmmanuel Vadot compatible = "samsung,exynos4210-uart"; 39*c66ec88fSEmmanuel Vadot reg = <0x13820000 0x100>; 40*c66ec88fSEmmanuel Vadot interrupts = <0 54 0>; 41*c66ec88fSEmmanuel Vadot clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>; 42*c66ec88fSEmmanuel Vadot clock-names = "uart", "clk_uart_baud0"; 43*c66ec88fSEmmanuel Vadot }; 44*c66ec88fSEmmanuel Vadot 45*c66ec88fSEmmanuel VadotExynos4412 SoC contains some additional clocks for FIMC-ISP (Camera ISP) 46*c66ec88fSEmmanuel Vadotsubsystem. Registers for those clocks are located in the ISP power domain. 47*c66ec88fSEmmanuel VadotBecause those registers are also located in a different memory region than 48*c66ec88fSEmmanuel Vadotthe main clock controller, a separate clock controller has to be defined for 49*c66ec88fSEmmanuel Vadothandling them. 50*c66ec88fSEmmanuel Vadot 51*c66ec88fSEmmanuel VadotRequired Properties: 52*c66ec88fSEmmanuel Vadot 53*c66ec88fSEmmanuel Vadot- compatible: should be "samsung,exynos4412-isp-clock". 54*c66ec88fSEmmanuel Vadot 55*c66ec88fSEmmanuel Vadot- reg: physical base address of the ISP clock controller and length of memory 56*c66ec88fSEmmanuel Vadot mapped region. 57*c66ec88fSEmmanuel Vadot 58*c66ec88fSEmmanuel Vadot- #clock-cells: should be 1. 59*c66ec88fSEmmanuel Vadot 60*c66ec88fSEmmanuel Vadot- clocks: list of the clock controller input clock identifiers, 61*c66ec88fSEmmanuel Vadot from common clock bindings, should point to CLK_ACLK200 and 62*c66ec88fSEmmanuel Vadot CLK_ACLK400_MCUISP clocks from the main clock controller. 63*c66ec88fSEmmanuel Vadot 64*c66ec88fSEmmanuel Vadot- clock-names: list of the clock controller input clock names, 65*c66ec88fSEmmanuel Vadot as described in clock-bindings.txt, should be "aclk200" and 66*c66ec88fSEmmanuel Vadot "aclk400_mcuisp". 67*c66ec88fSEmmanuel Vadot 68*c66ec88fSEmmanuel Vadot- power-domains: a phandle to ISP power domain node as described by 69*c66ec88fSEmmanuel Vadot generic PM domain bindings. 70*c66ec88fSEmmanuel Vadot 71*c66ec88fSEmmanuel VadotExample 3: The clock controllers bindings for Exynos4412 SoCs. 72*c66ec88fSEmmanuel Vadot 73*c66ec88fSEmmanuel Vadot clock: clock-controller@10030000 { 74*c66ec88fSEmmanuel Vadot compatible = "samsung,exynos4412-clock"; 75*c66ec88fSEmmanuel Vadot reg = <0x10030000 0x18000>; 76*c66ec88fSEmmanuel Vadot #clock-cells = <1>; 77*c66ec88fSEmmanuel Vadot }; 78*c66ec88fSEmmanuel Vadot 79*c66ec88fSEmmanuel Vadot isp_clock: clock-controller@10048000 { 80*c66ec88fSEmmanuel Vadot compatible = "samsung,exynos4412-isp-clock"; 81*c66ec88fSEmmanuel Vadot reg = <0x10048000 0x1000>; 82*c66ec88fSEmmanuel Vadot #clock-cells = <1>; 83*c66ec88fSEmmanuel Vadot power-domains = <&pd_isp>; 84*c66ec88fSEmmanuel Vadot clocks = <&clock CLK_ACLK200>, <&clock CLK_ACLK400_MCUISP>; 85*c66ec88fSEmmanuel Vadot clock-names = "aclk200", "aclk400_mcuisp"; 86*c66ec88fSEmmanuel Vadot }; 87