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