1a03d23f8SBiju Das# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2a03d23f8SBiju Das%YAML 1.2
3a03d23f8SBiju Das---
4a03d23f8SBiju Das$id: http://devicetree.org/schemas/clock/renesas,5p35023.yaml#
5a03d23f8SBiju Das$schema: http://devicetree.org/meta-schemas/core.yaml#
6a03d23f8SBiju Das
7a03d23f8SBiju Dastitle: Renesas 5p35023 VersaClock 3 programmable I2C clock generator
8a03d23f8SBiju Das
9a03d23f8SBiju Dasmaintainers:
10a03d23f8SBiju Das  - Biju Das <biju.das.jz@bp.renesas.com>
11a03d23f8SBiju Das
12a03d23f8SBiju Dasdescription: |
13a03d23f8SBiju Das  The 5P35023 is a VersaClock programmable clock generator and
14a03d23f8SBiju Das  is designed for low-power, consumer, and high-performance PCI
15a03d23f8SBiju Das  express applications. The 5P35023 device is a three PLL
16a03d23f8SBiju Das  architecture design, and each PLL is individually programmable
17a03d23f8SBiju Das  and allowing for up to 6 unique frequency outputs.
18a03d23f8SBiju Das
19a03d23f8SBiju Das  An internal OTP memory allows the user to store the configuration
20a03d23f8SBiju Das  in the device. After power up, the user can change the device register
21a03d23f8SBiju Das  settings through the I2C interface when I2C mode is selected.
22a03d23f8SBiju Das
23a03d23f8SBiju Das  The driver can read a full register map from the DT, and will use that
24a03d23f8SBiju Das  register map to initialize the attached part (via I2C) when the system
25a03d23f8SBiju Das  boots. Any configuration not supported by the common clock framework
26a03d23f8SBiju Das  must be done via the full register map, including optimized settings.
27a03d23f8SBiju Das
28a03d23f8SBiju Das  Link to datasheet:
29a03d23f8SBiju Das  https://www.renesas.com/us/en/products/clocks-timing/clock-generation/programmable-clocks/5p35023-versaclock-3s-programmable-clock-generator
30a03d23f8SBiju Das
31a03d23f8SBiju Dasproperties:
32a03d23f8SBiju Das  compatible:
33a03d23f8SBiju Das    enum:
34a03d23f8SBiju Das      - renesas,5p35023
35a03d23f8SBiju Das
36a03d23f8SBiju Das  reg:
37a03d23f8SBiju Das    maxItems: 1
38a03d23f8SBiju Das
39a03d23f8SBiju Das  '#clock-cells':
40*1aa2a9f2SBiju Das    description:
41*1aa2a9f2SBiju Das      The index in the assigned-clocks is mapped to the output clock as below
42*1aa2a9f2SBiju Das      0 - REF, 1 - SE1, 2 - SE2, 3 - SE3, 4 - DIFF1, 5 - DIFF2.
43a03d23f8SBiju Das    const: 1
44a03d23f8SBiju Das
45a03d23f8SBiju Das  clocks:
46a03d23f8SBiju Das    maxItems: 1
47a03d23f8SBiju Das
48a03d23f8SBiju Das  renesas,settings:
49a03d23f8SBiju Das    description: Optional, complete register map of the device.
50a03d23f8SBiju Das      Optimized settings for the device must be provided in full
51a03d23f8SBiju Das      and are written during initialization.
52a03d23f8SBiju Das    $ref: /schemas/types.yaml#/definitions/uint8-array
53a03d23f8SBiju Das    maxItems: 37
54a03d23f8SBiju Das
55a03d23f8SBiju Dasrequired:
56a03d23f8SBiju Das  - compatible
57a03d23f8SBiju Das  - reg
58a03d23f8SBiju Das  - '#clock-cells'
59a03d23f8SBiju Das  - clocks
60a03d23f8SBiju Das
61a03d23f8SBiju DasadditionalProperties: false
62a03d23f8SBiju Das
63a03d23f8SBiju Dasexamples:
64a03d23f8SBiju Das  - |
65a03d23f8SBiju Das    i2c {
66a03d23f8SBiju Das        #address-cells = <1>;
67a03d23f8SBiju Das        #size-cells = <0>;
68a03d23f8SBiju Das
69a03d23f8SBiju Das        versa3: clock-generator@68 {
70a03d23f8SBiju Das            compatible = "renesas,5p35023";
71a03d23f8SBiju Das            reg = <0x68>;
72a03d23f8SBiju Das            #clock-cells = <1>;
73a03d23f8SBiju Das
74*1aa2a9f2SBiju Das            clocks = <&x1>;
75a03d23f8SBiju Das
76a03d23f8SBiju Das            renesas,settings = [
77a03d23f8SBiju Das                80 00 11 19 4c 02 23 7f 83 19 08 a9 5f 25 24 bf
78a03d23f8SBiju Das                00 14 7a e1 00 00 00 00 01 55 59 bb 3f 30 90 b6
79a03d23f8SBiju Das                80 b0 45 c4 95
80a03d23f8SBiju Das            ];
81a03d23f8SBiju Das
82a03d23f8SBiju Das            assigned-clocks = <&versa3 0>, <&versa3 1>,
83a03d23f8SBiju Das                              <&versa3 2>, <&versa3 3>,
84a03d23f8SBiju Das                              <&versa3 4>, <&versa3 5>;
85*1aa2a9f2SBiju Das            assigned-clock-rates = <24000000>, <11289600>,
86*1aa2a9f2SBiju Das                                   <11289600>, <12000000>,
87*1aa2a9f2SBiju Das                                   <25000000>, <12288000>;
88a03d23f8SBiju Das        };
89a03d23f8SBiju Das    };
90