text: /***********************************************************************************************************************
   * Copyright [2015-2017] Renesas Electronics Corporation and/or its licensors. All Rights Reserved.
   * 
   * This file is part of Renesas SynergyTM Software Package (SSP)
   *
   * The contents of this file (the "contents") are proprietary and confidential to Renesas Electronics Corporation
   * and/or its licensors ("Renesas") and subject to statutory and contractual protections.
   *
   * This file is subject to a Renesas SSP license agreement. Unless otherwise agreed in an SSP license agreement with
   * Renesas: 1) you may not use, copy, modify, distribute, display, or perform the contents; 2) you may not use any name
   * or mark of Renesas for advertising or publicity purposes or in connection with your use of the contents; 3) RENESAS
   * MAKES NO WARRANTY OR REPRESENTATIONS ABOUT THE SUITABILITY OF THE CONTENTS FOR ANY PURPOSE; THE CONTENTS ARE PROVIDED
   * "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
   * PARTICULAR PURPOSE, AND NON-INFRINGEMENT; AND 4) RENESAS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, OR
   * CONSEQUENTIAL DAMAGES, INCLUDING DAMAGES RESULTING FROM LOSS OF USE, DATA, OR PROJECTS, WHETHER IN AN ACTION OF
   * CONTRACT OR TORT, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE CONTENTS. Third-party contents
   * included in this file may be subject to different terms.
   **********************************************************************************************************************/
  /***********************************************************************************************************************
  * File Name    : bsp_clocks.h
  * Description  : Calls the CGC module to setup the system clocks. Settings for clocks are based on macros in
  *                bsp_clock_cfg.h.
  ***********************************************************************************************************************/
  
  #ifndef BSP_CLOCKS_H_
  #define BSP_CLOCKS_H_
  
  /** Common macro for SSP header files. There is also a corresponding SSP_FOOTER macro at the end of this file. */
  SSP_HEADER
  /***********************************************************************************************************************
  Macro definitions
  ***********************************************************************************************************************/
  
  /***********************************************************************************************************************
  Typedef definitions
  ***********************************************************************************************************************/
  typedef enum e_bsp_clock_set_event
  {
      BSP_CLOCK_SET_EVENT_PRE_CHANGE,    ///< Called before system clock source is changed
      BSP_CLOCK_SET_EVENT_POST_CHANGE,   ///< Called after system clock source is changed
  } bsp_clock_set_event_t;
  
  typedef struct e_bsp_clock_set_callback_args
  {
      bsp_clock_set_event_t event;       ///< Context of which callback event is called
      uint32_t requested_freq_hz;        ///< Requested frequency
      uint32_t current_freq_hz;          ///< Current frequency
      uint8_t new_rom_wait_state;        ///< The new wait state to be set in the ROMWT register.
  } bsp_clock_set_callback_args_t;
  
  /***********************************************************************************************************************
  Exported global variables
  ***********************************************************************************************************************/
  
  /***********************************************************************************************************************
  Exported global functions (to be accessed by other files)
  ***********************************************************************************************************************/
  /* Public functions defined in bsp.h */
  void      bsp_clock_init(void);            // Used internally by BSP
  uint32_t  bsp_cpu_clock_get(void);         // Used internally by BSP
  
  /* Used internally by CGC */
  ssp_err_t bsp_clock_set_callback(bsp_clock_set_callback_args_t * p_args);
  
  /** Common macro for SSP header files. There is also a corresponding SSP_HEADER macro at the top of this file. */
  SSP_FOOTER
  
  #endif /* BSP_CLOCKS_H_ */
  
  
  