+++ /dev/null
-/*****************************************************************************\r
-* © 2015 Microchip Technology Inc. and its subsidiaries.\r
-* You may use this software and any derivatives exclusively with\r
-* Microchip products.\r
-* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".\r
-* NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,\r
-* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,\r
-* AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP\r
-* PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.\r
-* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,\r
-* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND\r
-* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS\r
-* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.\r
-* TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL\r
-* CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF\r
-* FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.\r
-* MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE\r
-* OF THESE TERMS.\r
-******************************************************************************\r
-\r
-Version Control Information (Perforce)\r
-******************************************************************************\r
-$Revision: #1 $ \r
-$DateTime: 2016/09/22 08:03:49 $ \r
-$Author: pramans $\r
-Last Change: Updated for tabs\r
-******************************************************************************/\r
-/** @file pcr_api.c\r
-* \brief Power, Clocks, and Resets API Source file\r
-* \author jvasanth\r
-* \r
-* This file implements the PCR APIs \r
-******************************************************************************/\r
-\r
-/** @defgroup PCR\r
- * @{\r
- */\r
-\r
-#include "common_lib.h"\r
-#include "pcr.h"\r
-\r
-\r
-/* ------------------------------------------------------------------------------- */\r
-/* Functions to program Sleep Enable, CLK Reqd Status, Reset Enable for a block */\r
-/* ------------------------------------------------------------------------------- */\r
-\r
-/** Sets or Clears block specific bit in PCR Sleep Enable Register\r
- * @param pcr_block_id - pcr block id encoded using PCRx_REGS_BIT \r
- * @param set_clr_flag - Flag to set (1) or clear (0) bit in the PCR Sleep Enable Register\r
- */\r
-void pcr_sleep_enable(uint32_t pcr_block_id, uint8_t set_clr_flag)\r
-{\r
- uint32_t bit_mask;\r
- uint8_t pcr_reg_id; \r
- \r
- bit_mask = 1UL<<(pcr_block_id & 0xFFu);\r
- pcr_reg_id = (uint8_t)((pcr_block_id >> PCRx_REGS_POS_SLEEP_ENABLE) & 0xFFu);\r
-\r
- p_pcr_reg_update(pcr_reg_id, bit_mask, set_clr_flag); \r
-}\r
-\r
-\r
-/** Get Clock Required Status for the block\r
- * @param pcr_block_id - pcr block id encoded using PCRx_REGS_BIT \r
- * @return uint8_t - 1 if Clock Required Status set, else 0\r
- */\r
-uint8_t pcr_clock_reqd_status_get(uint32_t pcr_block_id)\r
-{\r
- uint32_t bit_mask;\r
- uint8_t pcr_reg_id, retVal; \r
- \r
- bit_mask = 1UL<<(pcr_block_id & 0xFFu);\r
- pcr_reg_id = (uint8_t)((pcr_block_id >> PCRx_REGS_POS_CLK_REQD_STS) & 0xFFu);\r
-\r
- retVal = 0;\r
- if (p_pcr_reg_get(pcr_reg_id, bit_mask))\r
- {\r
- retVal = 1;\r
- }\r
- \r
- return retVal;\r
-}\r
-\r
-/** Sets or Clears Reset Enable register bit for the block\r
- * @param pcr_block_id - pcr block id encoded using PCRx_REGS_BIT \r
- * @param set_clr_flag - Flag to set (1) or clear (0) bit in the PCR Reset Enable Register\r
- */\r
-void pcr_reset_enable(uint32_t pcr_block_id, uint8_t set_clr_flag)\r
-{\r
- uint32_t bit_mask;\r
- uint8_t pcr_reg_id; \r
- \r
- bit_mask = 1UL<<(pcr_block_id & 0xFFu);\r
- pcr_reg_id = (uint8_t)((pcr_block_id >> PCRx_REGS_POS_RESET_ENABLE) & 0xFFu);\r
-\r
- p_pcr_reg_update(pcr_reg_id, bit_mask, set_clr_flag); \r
-}\r
-\r
-\r
-/* ------------------------------------------------------------------------------- */\r
-/* Functions for entering low power modes */\r
-/* ------------------------------------------------------------------------------- */\r
-\r
-/** Instructs all blocks to sleep by setting the Sleep Enable bits */\r
-void pcr_all_blocks_sleep(void)\r
-{\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_0, 0xFFFFFFFF);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_1, 0xFFFFFFFF);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_2, 0xFFFFFFFF);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_3, 0xFFFFFFFF); \r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_4, 0xFFFFFFFF); \r
-}\r
-\r
-/** Clears the Sleep Enable bits for all blocks */\r
- void pcr_all_blocks_wake(void)\r
-{\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_0, 0);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_1, 0);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_2, 0);\r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_3, 0); \r
- p_pcr_reg_write(PCR_REG_EC_SLEEP_ENABLE_4, 0); \r
-}\r
-\r
-/** Programs required sleep mode in System Sleep Control Register\r
- * @param sleep_mode - see enum SYSTEM_SLEEP_MODES\r
- */\r
-void pcr_system_sleep(uint8_t sleep_mode)\r
-{\r
- p_pcr_system_sleep_ctrl_write(sleep_mode);\r
-}\r
-\r
-/** Reads the value of Power Reset status register\r
- * @param none\r
- * @return Power Reset Status Reg value\r
- */\r
-uint16_t pcr_power_reset_status_read(void)\r
-{\r
- return (p_pcr_pwr_reset_sts_get());\r
-}\r
-\r
-/** Reads the value of Power Reset control register\r
- * @param none\r
- * @return Power reset control Reg value\r
- */\r
-uint16_t pcr_power_reset_ctrl_read(void)\r
-{\r
- return (p_pcr_pwr_reset_ctrl_read());\r
-}\r
-\r
-/** Sets the value of PWR_INV bit to 1 or 0\r
-* @param set_clr: 1 or 0\r
- * @return none\r
- */\r
-void pcr_pwr_reset_ctrl_pwr_inv_set_clr(uint8_t set_clr)\r
-{\r
- p_pcr_pwr_reset_ctrl_pwr_inv_set_clr(set_clr);\r
-}\r
-\r
-/** Sets the value of HOST_RESET bit to 1 or 0\r
-* @param set_clr: 1 or 0\r
- * @return none\r
- */\r
-void pcr_pwr_reset_ctrl_host_rst_set_clr(uint8_t set_clr)\r
-{\r
- p_pcr_pwr_reset_ctrl_host_rst_set_clr(set_clr);\r
-}\r
-\r
-/** Sets the SOFT SYS RESET bit to 1\r
-* @param none\r
- * @return none\r
- */\r
-void pcr_system_reset_set()\r
-{\r
- p_pcr_system_reset_set();\r
-}\r
-\r
-/** Writes to the PKE Clock register\r
-* @param clock value\r
- * @return none\r
- */\r
-void pcr_pke_clock_write(uint8_t pke_clk_val)\r
-{\r
- p_pcr_pke_clock_write(pke_clk_val);\r
-}\r
-\r
-/** Reads the PKE clock register\r
-* @param none\r
- * @return clock value\r
- */\r
-uint8_t pcr_pke_clock_read()\r
-{\r
- return (p_pcr_pke_clock_read());\r
-}\r
-\r
-/** Writes to the OSC cal register\r
-* @param calibration value: 1 or 0\r
- * @return none\r
- */\r
-void pcr_osc_cal_write(uint8_t pke_clk_val)\r
-{\r
- p_pcr_osc_cal_write(pke_clk_val);\r
-}\r
-\r
-/** Reads the osc cal register\r
-* @param none\r
- * @return cal value\r
- */\r
-uint8_t pcr_osc_cal_read()\r
-{\r
- return (p_pcr_osc_cal_read());\r
-}\r
-\r
-\r
-/* end pcr_api.c */\r
-/** @}\r
- */\r