// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// Example configuration
{
  // Reset attributes
  // name: name of reset.
  //
  // gen: whether the reset is generated
  // 1: it is a generated reset inside rstmgr
  // 0: it is a hardwired design reset inside rstmgr (roots and por)
  //
  // type: the reset type [ext, top]
  // ext: the reset is coming in from the ports, external to earlgrey
  // int: the reset is only used inside rstmgr
  // top: the reset is output from rstmgr to top level struct
  //
  // root: The parent reset
  // If type is "ext", there is no root, since it is external
  //
  // domain: The power domain
  // If no domain, it means there is no choice, just inherits from root.
  // Otherwise, selects the domain to which it is related
  // 0 is defaulted for always on.
  // TBD: This should eventually be changed to a name->index project wide lookup
  //
  // clk:  related clock domain for synchronous release
  // If type is "por", there is not related clock, since it is
  // likely external or generated from a voltage comparator
  //
  resets: [
    { name: "rst_ni",      gen: 0, type: "ext"                                                  }
    { name: "por_aon",     gen: 0, type: "top",              root: "rst_ni",  clk: "aon"        }
    { name: "lc_src",      gen: 0, type: "int",              root: "por",     clk: "io_div2"    }
    { name: "sys_src",     gen: 0, type: "int",              root: "por",     clk: "io_div2"    }
    { name: "por",         gen: 1, type: "top",              root: "por_aon", clk: "main"       }
    { name: "por_io",      gen: 1, type: "top",              root: "por_aon", clk: "io"         }
    { name: "por_io_div2", gen: 1, type: "top",              root: "por_aon", clk: "io_div2"    }
    { name: "por_usb",     gen: 1, type: "top",              root: "por_aon", clk: "usb"        }
    { name: "lc",          gen: 1, type: "top", domain: "0", root: "lc_src",  clk: "io_div2"    }
    { name: "sys",         gen: 1, type: "top", domain: "0", root: "sys_src", clk: "main"       }
    { name: "sys_io",      gen: 1, type: "top", domain: "0", root: "sys_src", clk: "io_div2"    }
    { name: "sys_aon",     gen: 1, type: "top", domain: "0", root: "sys_src", clk: "aon"        }
    { name: "spi_device",  gen: 1, type: "top", domain: "0", root: "sys_src", clk: "io_div2",  sw: 1 }
    { name: "usb",         gen: 1, type: "top", domain: "0", root: "sys_src", clk: "usb", sw: 1 }
  ]
}
