//! Top-level PAC-style bring-up entry for {{ ir.board.name }}.
//!
//! Call [`init`] once from your application reset handler before touching
//! any peripheral. It performs the following in order:
//!
//! 1. [`super::clocks::init`] — ungate peripheral clocks via the SimpleLink
//!    Power, Reset and Clock Module (PRCM) and release each used peripheral
//!    from reset. See TI SWCU185 §4 (PRCM).
//! 2. [`super::io_mux::init`] — route each board pin via the IO Controller
//!    (IOC) per the `db/boards/{{ board_stem }}.yaml` pin table. SimpleLink
//!    uses a single-stage IOC PORT_CFG write per DIO; there is no GPIO
//!    matrix second stage (cite CHIPS-TI-00 §10.3). See TI SWCU185 §11
//!    (IO Controller).
//! 3. [`super::peripherals::init`] — per-peripheral init (UART0 real when
//!    it is the console, others stubbed).
//!
//! The generated code uses the `{{ ir.chip.pac_crate }}` PAC crate
//! (`{{ ir.chip.pac_crate_version | default("^0.10") }}`) for all register
//! access; add it as a dependency of the consuming crate. Sibling references
//! use `super::` so this module can be either a crate root (when consumed
//! directly) or a child module of the host crate.

#[allow(unused_imports)]
pub use {{ ir.chip.pac_crate }}::*;

/// Bring up the board.
///
/// Safety: must be called exactly once from a single-threaded reset handler
/// before any other code touches `{{ ir.chip.pac_crate }}::Peripherals`.
pub fn init() {
    super::clocks::init();
    super::io_mux::init();
    super::peripherals::init();
}
