// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// The following is an example configuration of the clock attribute structure needed
// by clkmgr.
// This same format is generated as part of topgen.

// Clock Group attributes
// name: name of group.
//
// sw_cfg: whether software is allowed to gate the clock
// "no"   - software is not allowed to gate clocks
// "yes"  - software is allowed to gate clocks
// "hint" - software can provide a hint, and hw controls the rest
//
// unique: whether each module in the group can be separately gated
//         if sw_cfg is "no", this field has no meaning
// "yes"  - each clock is individually controlled
// "no"   - the group is controlled as one single unit
//
// The powerup and proc groups are unique.
// The powerup group of clocks do not need through the clock
// controller as they manage clock controller behavior
// The proc group is not peripheral, and direclty hardwired

{
  clocks:
  {
    srcs:
    [
      {
        name: main
        freq: "100000000"
      }
      {
        name: fixed
        freq: "100000000"
      }
      {
        name: usb_48mhz
        freq: "48000000"
      }
    ]
    groups:
    [
      {
        name: powerup
        sw_cg: no
        unique: no
        clocks:
        {
          clk_fixed_powerup: fixed
          clk_main_powerup: main
          clk_usb_48mhz_powerup: usb_48mhz
        }
      }
      {
        name: trans
        sw_cg: hint
        unique: yes
        clocks:
        {
          clk_main_aes: main
          clk_main_hmac: main
        }
      }
      {
        name: infra
        sw_cg: no
        unique: no
        clocks:
        {
          clk_main_infra: main
          clk_fixed_infra: fixed
        }
      }
      {
        name: secure
        sw_cg: no
        unique: no
        clocks:
        {
          clk_fixed_secure: fixed
          clk_main_secure: main
        }
      }
      {
        name: peri
        sw_cg: yes
        unique: no
        clocks:
        {
          clk_fixed_peri: fixed
          clk_usb_48mhz_peri: usb_48mhz
        }
      }
      {
        name: timers
        sw_cg: no
        unique: no
        clocks:
        {
          clk_fixed_timers: fixed
        }
      }
      {
        name: proc
        sw_cg: no
        unique: no
        clocks:
        {
          clk_proc_main: main
        }
      }
    ]
  }
}