| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- * Nuvoton NPCM7XX Clock Controller
- Nuvoton Poleg BMC NPCM7XX contains an integrated clock controller, which
- generates and supplies clocks to all modules within the BMC.
- External clocks:
- There are six fixed clocks that are generated outside the BMC. All clocks are of
- a known fixed value that cannot be changed. clk_refclk, clk_mcbypck and
- clk_sysbypck are inputs to the clock controller.
- clk_rg1refck, clk_rg2refck and clk_xin are external clocks suppling the
- network. They are set on the device tree, but not used by the clock module. The
- network devices use them directly.
- Example can be found below.
- All available clocks are defined as preprocessor macros in:
- dt-bindings/clock/nuvoton,npcm7xx-clock.h
- and can be reused as DT sources.
- Required Properties of clock controller:
- - compatible: "nuvoton,npcm750-clk" : for clock controller of Nuvoton
- Poleg BMC NPCM750
- - reg: physical base address of the clock controller and length of
- memory mapped region.
- - #clock-cells: should be 1.
- Example: Clock controller node:
- clk: clock-controller@f0801000 {
- compatible = "nuvoton,npcm750-clk";
- #clock-cells = <1>;
- reg = <0xf0801000 0x1000>;
- clock-names = "refclk", "sysbypck", "mcbypck";
- clocks = <&clk_refclk>, <&clk_sysbypck>, <&clk_mcbypck>;
- };
- Example: Required external clocks for network:
- /* external reference clock */
- clk_refclk: clk-refclk {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <25000000>;
- clock-output-names = "refclk";
- };
- /* external reference clock for cpu. float in normal operation */
- clk_sysbypck: clk-sysbypck {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <800000000>;
- clock-output-names = "sysbypck";
- };
- /* external reference clock for MC. float in normal operation */
- clk_mcbypck: clk-mcbypck {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <800000000>;
- clock-output-names = "mcbypck";
- };
- /* external clock signal rg1refck, supplied by the phy */
- clk_rg1refck: clk-rg1refck {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <125000000>;
- clock-output-names = "clk_rg1refck";
- };
- /* external clock signal rg2refck, supplied by the phy */
- clk_rg2refck: clk-rg2refck {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <125000000>;
- clock-output-names = "clk_rg2refck";
- };
- clk_xin: clk-xin {
- compatible = "fixed-clock";
- #clock-cells = <0>;
- clock-frequency = <50000000>;
- clock-output-names = "clk_xin";
- };
- Example: GMAC controller node that consumes two clocks: a generated clk by the
- clock controller and a fixed clock from DT (clk_rg1refck).
- ethernet0: ethernet@f0802000 {
- compatible = "snps,dwmac";
- reg = <0xf0802000 0x2000>;
- interrupts = <0 14 4>;
- interrupt-names = "macirq";
- clocks = <&clk_rg1refck>, <&clk NPCM7XX_CLK_AHB>;
- clock-names = "stmmaceth", "clk_gmac";
- };
|