214 lines
5.2 KiB
YAML
214 lines
5.2 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/clock/axis,artpec8-clock.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Axis ARTPEC-8 SoC clock controller
|
|
|
|
maintainers:
|
|
- Jesper Nilsson <jesper.nilsson@axis.com>
|
|
|
|
description: |
|
|
ARTPEC-8 clock controller is comprised of several CMU (Clock Management Unit)
|
|
units, generating clocks for different domains. Those CMU units are modeled
|
|
as separate device tree nodes, and might depend on each other.
|
|
The root clock in that root tree is an external clock: OSCCLK (25 MHz).
|
|
This external clock must be defined as a fixed-rate clock in dts.
|
|
|
|
CMU_CMU is a top-level CMU, where all base clocks are prepared using PLLs and
|
|
dividers; all other clocks of function blocks (other CMUs) are usually
|
|
derived from CMU_CMU.
|
|
|
|
Each clock is assigned an identifier and client nodes can use this identifier
|
|
to specify the clock which they consume. All clocks available for usage
|
|
in clock consumer nodes are defined as preprocessor macros in
|
|
'include/dt-bindings/clock/axis,artpec8-clk.h' header.
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- axis,artpec8-cmu-cmu
|
|
- axis,artpec8-cmu-bus
|
|
- axis,artpec8-cmu-core
|
|
- axis,artpec8-cmu-cpucl
|
|
- axis,artpec8-cmu-fsys
|
|
- axis,artpec8-cmu-imem
|
|
- axis,artpec8-cmu-peri
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
clocks:
|
|
minItems: 1
|
|
maxItems: 5
|
|
|
|
clock-names:
|
|
minItems: 1
|
|
maxItems: 5
|
|
|
|
"#clock-cells":
|
|
const: 1
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- clocks
|
|
- clock-names
|
|
- "#clock-cells"
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-cmu
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-bus
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_BUS BUS clock (from CMU_CMU)
|
|
- description: CMU_BUS DLP clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: bus
|
|
- const: dlp
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-core
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_CORE main clock (from CMU_CMU)
|
|
- description: CMU_CORE DLP clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: main
|
|
- const: dlp
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-cpucl
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_CPUCL switch clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: switch
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-fsys
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_FSYS SCAN0 clock (from CMU_CMU)
|
|
- description: CMU_FSYS SCAN1 clock (from CMU_CMU)
|
|
- description: CMU_FSYS BUS clock (from CMU_CMU)
|
|
- description: CMU_FSYS IP clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: scan0
|
|
- const: scan1
|
|
- const: bus
|
|
- const: ip
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-imem
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_IMEM ACLK clock (from CMU_CMU)
|
|
- description: CMU_IMEM JPEG clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: aclk
|
|
- const: jpeg
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
const: axis,artpec8-cmu-peri
|
|
|
|
then:
|
|
properties:
|
|
clocks:
|
|
items:
|
|
- description: External reference clock (25 MHz)
|
|
- description: CMU_PERI IP clock (from CMU_CMU)
|
|
- description: CMU_PERI AUDIO clock (from CMU_CMU)
|
|
- description: CMU_PERI DISP clock (from CMU_CMU)
|
|
|
|
clock-names:
|
|
items:
|
|
- const: fin_pll
|
|
- const: ip
|
|
- const: audio
|
|
- const: disp
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
# Clock controller node for CMU_FSYS
|
|
- |
|
|
#include <dt-bindings/clock/axis,artpec8-clk.h>
|
|
|
|
cmu_fsys: clock-controller@16c10000 {
|
|
compatible = "axis,artpec8-cmu-fsys";
|
|
reg = <0x16c10000 0x4000>;
|
|
#clock-cells = <1>;
|
|
clocks = <&fin_pll>,
|
|
<&cmu_cmu CLK_DOUT_CMU_FSYS_SCAN0>,
|
|
<&cmu_cmu CLK_DOUT_CMU_FSYS_SCAN1>,
|
|
<&cmu_cmu CLK_DOUT_CMU_FSYS_BUS>,
|
|
<&cmu_cmu CLK_DOUT_CMU_FSYS_IP>;
|
|
clock-names = "fin_pll", "scan0", "scan1", "bus", "ip";
|
|
};
|
|
|
|
...
|