modules : hal : microchip Add remaining MEC1501 HAL headers

Updates the MEC1501 peripheral headers to version 0.2.
Added the missing peripheral header files to the MEC1501 HAL.
The added peripherals are: ACPI PM1, ADC, HDMI_CEC, PECI,
PROCHOT, PWM, RTC, SPI slave, TACH, VBAT VCI.
Modified headers are ACPI EC, ECIA, ECS, QMSPI, VBAT, and WDT.

Origin: Peripheral-MEC1501
License: Apache 2.0
URL: https://github.com/MicrochipTech/Peripheral-MEC1501
Purpose: Provide device header files for MEC1501
Maintained-by: External

Signed-off-by: Scott Worley <scott.worley@microchip.com>
This commit is contained in:
Scott Worley 2019-08-28 09:34:22 -04:00 committed by Anas Nashif
parent a92582bc65
commit 85302959c0
16 changed files with 1956 additions and 75 deletions

View File

@ -283,6 +283,10 @@ static __always_inline void write_read_back32(volatile uint32_t* addr, uint32_t
#endif
#ifdef __cplusplus
}
#endif
#endif /* #ifndef _CPU_H */
/** @}
*/

View File

@ -431,6 +431,7 @@ typedef enum IRQn {
/** @} *//* End of group Device_Peripheral_peripheralAddr */
#include "component/acpi_ec.h"
#include "component/adc.h"
#include "component/dma.h"
#include "component/ecia.h"
#include "component/ecs.h"
@ -440,16 +441,24 @@ typedef enum IRQn {
#include "component/espi_mem.h"
#include "component/espi_vw.h"
#include "component/global_cfg.h"
#include "component/hdmi_cec.h"
#include "component/i2c.h"
#include "component/kbc.h"
#include "component/keyscan.h"
#include "component/led.h"
#include "component/mailbox.h"
#include "component/pcr.h"
#include "component/peci.h"
#include "component/port80cap.h"
#include "component/port92.h"
#include "component/prochot.h"
#include "component/ps2_ctrl.h"
#include "component/pwm.h"
#include "component/qmspi.h"
#include "component/rtc.h"
#include "component/smb.h"
#include "component/spi_slave.h"
#include "component/tach.h"
#include "component/tfdp.h"
#include "component/timer.h"
#include "component/uart.h"
@ -486,14 +495,39 @@ typedef enum IRQn {
#define DMA10_REGS ((DMA_CHAN_Type *)(DMA_CHAN_BASE(10)))
#define DMA11_REGS ((DMA_CHAN_Type *)(DMA_CHAN_BASE(11)))
#define PROCHOT_REGS ((PROCHOT_Type *) PROCHOT_BASE)
#define SMB0_REGS ((I2C_SMB_Type *) SMB0_BASE)
#define SMB1_REGS ((I2C_SMB_Type *) SMB1_BASE)
#define SMB2_REGS ((I2C_SMB_Type *) SMB2_BASE)
#define SMB3_REGS ((I2C_SMB_Type *) SMB3_BASE)
#define SMB4_REGS ((I2C_SMB_Type *) SMB4_BASE)
#define PWM0_REGS ((PWM_Type *) PWM0_BASE)
#define PWM1_REGS ((PWM_Type *) PWM1_BASE)
#define PWM2_REGS ((PWM_Type *) PWM2_BASE)
#define PWM3_REGS ((PWM_Type *) PWM3_BASE)
#define PWM4_REGS ((PWM_Type *) PWM4_BASE)
#define PWM5_REGS ((PWM_Type *) PWM5_BASE)
#define PWM6_REGS ((PWM_Type *) PWM6_BASE)
#define PWM7_REGS ((PWM_Type *) PWM7_BASE)
#define PWM8_REGS ((PWM_Type *) PWM8_BASE)
#define TACH0_REGS ((TACH_Type *) TACH0_BASE)
#define TACH1_REGS ((TACH_Type *) TACH1_BASE)
#define TACH2_REGS ((TACH_Type *) TACH2_BASE)
#define TACH3_REGS ((TACH_Type *) TACH3_BASE)
#define PECI_REGS ((PECI_Type *) PECI_BASE)
#define HDMI_CEC_REGS ((HDMI_CEC_Type *) HDMI_CEC_BASE)
#define SPISLV_REGS ((SPISLV_Type *) SPISLV_BASE)
#define RTMR_REGS ((RTMR_Type *) RTMR_BASE)
#define ADC_REGS ((ADC_Type *) ADC_BASE)
#define TFDP_REGS ((TFDP_Type *) TFDP_BASE)
#define PS2_0_REGS ((PS2_Type *) PS2_0_BASE)
@ -508,6 +542,8 @@ typedef enum IRQn {
#define VBATM_REGS ((VBATM_Type *) VBATM_BASE)
#define WKTMR_REGS ((WKTMR_Type *) WKTMR_BASE)
#define VCI_REGS ((VCI_Type *) VCI_BASE)
#define LED0_REGS ((LED_Type *) LED0_BASE)
#define LED1_REGS ((LED_Type *) LED1_BASE)
#define LED2_REGS ((LED_Type *) LED2_BASE)
@ -554,6 +590,8 @@ typedef enum IRQn {
#define ACPI_EC_2_REGS ((ACPI_EC_Type *)(ACPI_EC_2_BASE))
#define ACPI_EC_3_REGS ((ACPI_EC_Type *)(ACPI_EC_3_BASE))
#define ACPI_PM1_REGS ((ACPI_PM1_Type *) ACPI_PM1_BASE)
#define PORT92_REGS ((PORT92_Type *)(PORT92_BASE))
#define UART0_REGS ((UART_Type *) UART0_BASE)
@ -586,6 +624,8 @@ typedef enum IRQn {
#define EMI0_REGS ((EMI_Type *)(EMI0_BASE))
#define EMI1_REGS ((EMI_Type *)(EMI0_BASE))
#define RTC_REGS ((RTC_Type *) RTC_BASE)
#define PORT80_CAP0_REGS ((PORT80_CAP_Type *)(P80CAP0_BASE))
#define PORT80_CAP1_REGS ((PORT80_CAP_Type *)(P80CAP1_BASE))

View File

@ -39,7 +39,7 @@
#include "regaccess.h"
/* =========================================================================*/
/* ================ ACPI_EC ================ */
/* ================ ACPI_EC =================== */
/* =========================================================================*/
#define MCHP_ACPI_EC_BASE_ADDR 0x400F0800ul
@ -129,8 +129,7 @@
/**
* @brief ACPI EC Registers (ACPI_EC)
*/
typedef struct acpi_ec_regs
{
typedef struct acpi_ec_regs {
__IOM uint32_t OS_DATA; /*!< (@ 0x0000) OS Data */
__IOM uint8_t OS_CMD_STS; /*!< (@ 0x0004) OS Command(WO), Status(RO) */
__IOM uint8_t OS_BYTE_CTRL; /*!< (@ 0x0005) OS Byte Control */
@ -142,6 +141,121 @@ typedef struct acpi_ec_regs
__IOM uint32_t OS2EC_DATA; /*!< (@ 0x0108) OS to EC Data */
} ACPI_EC_Type;
/* =========================================================================*/
/* ================ ACPI_PM1 =================== */
/* =========================================================================*/
#define MCHP_ACPI_PM1_BASE_ADDR 0x400F1C00ul
/*
* ACPI_PM1 interrupts
*/
#define MCHP_ACPI_PM1_CTL_GIRQ 15u
#define MCHP_ACPI_PM1_EN_GIRQ 15u
#define MCHP_ACPI_PM1_STS_GIRQ 15u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_ACPI_PM1_CTL_GIRQ_POS 15u
#define MCHP_ACPI_PM1_EN_GIRQ_POS 16u
#define MCHP_ACPI_PM1_STS_GIRQ_POS 17u
#define MCHP_ACPI_PM1_CTL_GIRQ_VAL (1ul << MCHP_ACPI_PM1_CTL_GIRQ_POS)
#define MCHP_ACPI_PM1_EN_GIRQ_VAL (1ul << MCHP_ACPI_PM1_EN_GIRQ_POS)
#define MCHP_ACPI_PM1_STS_GIRQ_VAL (1ul << MCHP_ACPI_PM1_STS_GIRQ_POS)
/* VCI GIRQ aggregated NVIC input */
#define MCHP_ACPI_PM1_CTL_NVIC_AGGR 7u
#define MCHP_ACPI_PM1_EN_NVIC_AGGR 7u
#define MCHP_ACPI_PM1_STS_NVIC_AGGR 7u
/* VCI direct NVIC inputs */
#define MCHP_ACPI_PM1_CTL_NVIC_DIRECT 55u
#define MCHP_ACPI_PM1_EN_NVIC_DIRECT 56u
#define MCHP_ACPI_PM1_STS_NVIC_DIRECT 57u
/* ACPI_PM1 RT/EC Status 1 */
#define MCHP_ACPI_PM1_RT_STS1_REG_OFS 0x0000ul
#define MCHP_ACPI_PM1_EC_STS1_REG_OFS 0x0100ul
#define MCHP_ACPI_PM1_STS1_REG_MASK 0x0000ul
/* ACPI_PM1 RT/EC Status 2 */
#define MCHP_ACPI_PM1_RT_STS2_REG_OFS 0x0001ul
#define MCHP_ACPI_PM1_EC_STS2_REG_OFS 0x0101ul
#define MCHP_ACPI_PM1_STS2_REG_MASK 0x008Ful
#define MCHP_ACPI_PM1_STS2_PWRBTN (1ul << 0)
#define MCHP_ACPI_PM1_STS2_SLPBTN (1ul << 1)
#define MCHP_ACPI_PM1_STS2_RTC (1ul << 2)
#define MCHP_ACPI_PM1_STS2_PWRBTNOR (1ul << 3)
#define MCHP_ACPI_PM1_STS2_WAK (1ul << 7)
/* ACPI_PM1 RT/EC Enable 1 */
#define MCHP_ACPI_PM1_RT_EN1_REG_OFS 0x0002ul
#define MCHP_ACPI_PM1_EC_EN1_REG_OFS 0x0102ul
#define MCHP_ACPI_PM1_EN1_REG_MASK 0x0000ul
/* ACPI_PM1 RT/EC Enable 2 */
#define MCHP_ACPI_PM1_RT_EN2_REG_OFS 0x0003ul
#define MCHP_ACPI_PM1_EC_EN2_REG_OFS 0x0103ul
#define MCHP_ACPI_PM1_EN2_REG_MASK 0x0007ul
#define MCHP_ACPI_PM1_EN2_PWRBTN (1ul << 0)
#define MCHP_ACPI_PM1_EN2_SLPBTN (1ul << 1)
#define MCHP_ACPI_PM1_EN2_RTC (1ul << 2)
/* ACPI_PM1 RT/EC Control 1 */
#define MCHP_ACPI_PM1_RT_CTRL1_REG_OFS 0x0004ul
#define MCHP_ACPI_PM1_EC_CTRL1_REG_OFS 0x0104ul
#define MCHP_ACPI_PM1_CTRL1_REG_MASK 0x0000ul
/* ACPI_PM1 RT/EC Control 2 */
#define MCHP_ACPI_PM1_RT_CTRL2_REG_OFS 0x0005ul
#define MCHP_ACPI_PM1_EC_CTRL2_REG_OFS 0x0105ul
#define MCHP_ACPI_PM1_CTRL2_REG_MASK 0x003Eul
#define MCHP_ACPI_PM1_CTRL2_PWRBTNOR_EN (1ul << 1)
#define MCHP_ACPI_PM1_CTRL2_SLP_TYPE_POS 2
#define MCHP_ACPI_PM1_CTRL2_SLP_TYPE_MASK (0x03ul << 2)
#define MCHP_ACPI_PM1_CTRL2_SLP_EN (1ul << 5)
/* ACPI_PM1 RT/EC Control 21 */
#define MCHP_ACPI_PM1_RT_CTRL21_REG_OFS 0x0006ul
#define MCHP_ACPI_PM1_EC_CTRL21_REG_OFS 0x0106ul
#define MCHP_ACPI_PM1_CTRL21_REG_MASK 0x0000ul
/* ACPI_PM1 RT/EC Control 22 */
#define MCHP_ACPI_PM1_RT_CTRL22_REG_OFS 0x0007ul
#define MCHP_ACPI_PM1_EC_CTRL22_REG_OFS 0x0107ul
#define MCHP_ACPI_PM1_CTRL22_REG_MASK 0x0000ul
/* ACPI_PM1 EC PM Status register */
#define MCHP_ACPI_PM1_EC_PM_STS_REG_OFS 0x0110ul
#define MCHP_ACPI_PM1_EC_PM_STS_REG_MASK 0x0001ul
#define MCHP_ACPI_PM1_EC_PM_STS_SCI 0x0001ul
/**
* @brief ACPI PM1 Registers (ACPI_PM1)
*/
typedef struct acpi_pm1_regs {
__IOM uint8_t RT_STS1; /*!< (@ 0x0000) */
__IOM uint8_t RT_STS2; /*!< (@ 0x0001) */
__IOM uint8_t RT_EN1; /*!< (@ 0x0002) */
__IOM uint8_t RT_EN2; /*!< (@ 0x0003) */
__IOM uint8_t RT_CTRL1; /*!< (@ 0x0004) */
__IOM uint8_t RT_CTRL2; /*!< (@ 0x0005) */
__IOM uint8_t RT_CTRL21; /*!< (@ 0x0006) */
__IOM uint8_t RT_CTRL22; /*!< (@ 0x0007) */
uint8_t RSVD1[(0x100u - 0x008u)];
__IOM uint8_t EC_STS1; /*!< (@ 0x0100) */
__IOM uint8_t EC_STS2; /*!< (@ 0x0101) */
__IOM uint8_t EC_EN1; /*!< (@ 0x0102) */
__IOM uint8_t EC_EN2; /*!< (@ 0x0103) */
__IOM uint8_t EC_CTRL1; /*!< (@ 0x0104) */
__IOM uint8_t EC_CTRL2; /*!< (@ 0x0105) */
__IOM uint8_t EC_CTRL21; /*!< (@ 0x0106) */
__IOM uint8_t EC_CTRL22; /*!< (@ 0x0107) */
uint8_t RSVD2[(0x0110u - 0x0108u)];
__IOM uint8_t EC_PM_STS; /*!< (@ 0x0110) */
uint8_t RSVD3[3];
} ACPI_PM1_Type;
#endif /* #ifndef _ACPI_EC_H */
/* end acpi_ec.h */
/** @}

194
mec/mec1501/component/adc.h Normal file
View File

@ -0,0 +1,194 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file peci.h
*MEC1501 Analog to Digital Converter registers
*/
/** @defgroup MEC1501 Peripherals ADC
*/
#ifndef _ADC_H
#define _ADC_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ ADC =========== */
/* =========================================================================*/
#define MCHP_ADC_BASE_ADDR 0x40007C00ul
/*
* ADC block implements two interrupt signals:
* single conversion and repeat conversion done.
*/
#define MCHP_ADC_GIRQ 17u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_ADC_SNG_DONE_GIRQ_POS 8
#define MCHP_ADC_RPT_DONE_GIRQ_POS 9
#define MCHP_ADC_SNG_DONE_GIRQ_VAL (1ul << MCHP_ADC_SNG_DONE_GIRQ_POS)
#define MCHP_ADC_RPT_DONE_GIRQ_VAL (1ul << MCHP_ADC_RPT_DONE_GIRQ_POS)
/* ADC GIRQ aggregated NVIC input */
#define MCHP_ADC_SNG_DONE_NVIC_AGGR 9u
#define MCHP_ADC_RPT_DONE_NVIC_AGGR 9u
/* ADC direct NVIC inputs */
#define MCHP_ADC_SNG_DONE_NVIC_DIRECT 78u
#define MCHP_ADC_RPT_DONE_NVIC_DIRECT 79u
/* Eight ADC channels numbered 0 - 7 */
#define MCHP_ADC_MAX_CHAN 8
#define MCHP_ADC_MAX_CHAN_MASK 0x07u
/* Control register */
#define MCHP_ADC_CTRL_REG_OFS 0
/* Delay register */
#define MCHP_ADC_DELAY_REG_OFS 4
/* Status register */
#define MCHP_ADC_STATUS_REG_OFS 8
/* Single Conversion Select register */
#define MCHP_ADC_SCS_REG_OFS 0x0C
#define MCHP_ADC_SCS_REG_MASK 0xffu
#define MCHP_ADC_SCS_CH_0_7 0xffu
#define MCHP_ADC_SCS_CH(n) (1ul << ((n) & 0x07))
/* Repeat Conversion Select register */
#define MCHP_ADC_RCS_REG_OFS 0x10
#define MCHP_ADC_RCS_REG_MASK 0xffu
#define MCHP_ADC_RCS_CH_0_7 0xffu
#define MCHP_ADC_RCS_CH(n) (1ul << ((n) & 0x07))
/* Channel reading registers */
#define MCHP_ADC_RDCH_REG_MASK 0xFFFul
#define MCHP_ADC_RDCH0_REG_OFS 0x14
#define MCHP_ADC_RDCH1_REG_OFS 0x18
#define MCHP_ADC_RDCH2_REG_OFS 0x1C
#define MCHP_ADC_RDCH3_REG_OFS 0x20
#define MCHP_ADC_RDCH4_REG_OFS 0x24
#define MCHP_ADC_RDCH5_REG_OFS 0x28
#define MCHP_ADC_RDCH6_REG_OFS 0x2C
#define MCHP_ADC_RDCH7_REG_OFS 0x30
/* Configuration register */
#define MCHP_ADC_CFG_REG_OFS 0x7Cu
#define MCHP_ADC_CFG_REG_MASK 0xffffu
#define MCHP_ADC_CFG_CLK_LO_TIME_POS 0
#define MCHP_ADC_CFG_CLK_LO_TIME_MASK0 0xffu
#define MCHP_ADC_CFG_CLK_LO_TIME_MASK 0xffu
#define MCHP_ADC_CFG_CLK_HI_TIME_POS 8
#define MCHP_ADC_CFG_CLK_HI_TIME_MASK0 0xffu
#define MCHP_ADC_CFG_CLK_HI_TIME_MASK (0xfful << 8)
/* Channel Vref Select register */
#define MCHP_ADC_CH_VREF_SEL_REG_OFS 0x80u
#define MCHP_ADC_CH_VREF_SEL_REG_MASK 0x00fffffful
#define MCHP_ADC_CH_VREF_SEL_MASK(n) (0x03ul << (((n) & 0x07) << 1))
#define MCHP_ADC_CH_VREF_SEL_PAD(n) (0x00ul << (((n) & 0x07) << 1))
#define MCHP_ADC_CH_VREF_SEL_GPIO(n) (0x01ul << (((n) & 0x07) << 1))
/* Vref Control register */
#define MCHP_ADC_VREF_CTRL_REG_OFS 0x84u
#define MCHP_ADC_VREF_CTRL_REG_MASK 0xffffffffu
#define MCHP_ADC_VREF_CTRL_CHRG_DEL_POS 0
#define MCHP_ADC_VREF_CTRL_CHRG_DEL_MASK0 0xffffu
#define MCHP_ADC_VREF_CTRL_CHRG_DEL_MASK 0xffffu
#define MCHP_ADC_VREF_CTRL_SW_DEL_POS 16
#define MCHP_ADC_VREF_CTRL_SW_DEL_MASK0 0x1fffu
#define MCHP_ADC_VREF_CTRL_SW_DEL_MASK (0x1ffful << 16)
#define MCHP_ADC_VREF_CTRL_PAD_POS 29
#define MCHP_ADC_VREF_CTRL_PAD_UNUSED_FLOAT (0ul << 29)
#define MCHP_ADC_VREF_CTRL_PAD_UNUSED_DRIVE_LO (1ul << 29)
#define MCHP_ADC_VREF_CTRL_SEL_STS_POS 30
#define MCHP_ADC_VREF_CTRL_SEL_STS_MASK0 0x03u
#define MCHP_ADC_VREF_CTRL_SEL_STS_MASK (0x03ul << 30)
/* SAR ADC Control register */
#define MCHP_ADC_SAR_CTRL_REG_OFS 0x88u
#define MCHP_ADC_SAR_CTRL_REG_MASK 0x0001FF8Ful
/* Select single ended or differential operation */
#define MCHP_ADC_SAR_CTRL_SELDIFF_POS 0
#define MCHP_ADC_SAR_CTRL_SELDIFF_DIS (0ul << 0)
#define MCHP_ADC_SAR_CTRL_SELDIFF_EN (1ul << 0)
/* Select resolution */
#define MCHP_ADC_SAR_CTRL_RES_POS 1
#define MCHP_ADC_SAR_CTRL_RES_MASK0 0x03u
#define MCHP_ADC_SAR_CTRL_RES_MASK (0x03ul << 1)
#define MCHP_ADC_SAR_CTRL_RES_10_BITS (0x01ul << 1)
#define MCHP_ADC_SAR_CTRL_RES_12_BITS (0x03ul << 1)
/* Shift data in reading register */
#define MCHP_ADC_SAR_CTRL_SHIFTD_POS 3
#define MCHP_ADC_SAR_CTRL_SHIFTD_DIS (0ul << 3)
#define MCHP_ADC_SAR_CTRL_SHIFTD_EN (1ul << 3)
/* Warm up delay in ADC clock cycles */
#define MCHP_ADC_SAR_CTRL_WUP_DLY_POS 7
#define MCHP_ADC_SAR_CTRL_WUP_DLY_MASK0 0x3fful
#define MCHP_ADC_SAR_CTRL_WUP_DLY_MASK (0x3fful << 7)
#define MCHP_ADC_SAR_CTRL_WUP_DLY_DFLT (0x202ul << 7)
/* Register interface */
#define MCHP_ADC_CH_NUM(n) ((n) & MCHP_ADC_MAX_CHAN_MASK)
#define MCHP_ADC_CH_OFS(n) (MCHP_ADC_CH_NUM(n) << 2)
#define MCHP_ADC_CH_ADDR(n) (MCHP_ADC_BASE_ADDR + MCHP_ADC_CH_OFS(n))
#define MCHP_ADC_RD_CHAN(n) REG32(MCHP_ADC_CH_ADDR(n))
/**
* @brief Analog to Digital Converter Registers (ADC)
*/
typedef struct adc_regs {
__IOM uint32_t CONTROL; /*!< (@ 0x0000) ADC Control */
__IOM uint32_t DELAY; /*!< (@ 0x0004) ADC Delay */
__IOM uint32_t STATUS; /*!< (@ 0x0008) ADC Status */
__IOM uint32_t SINGLE; /*!< (@ 0x000C) ADC Single */
__IOM uint32_t REPEAT; /*!< (@ 0x0010) ADC Repeat */
__IOM uint32_t RDCH0; /*!< (@ 0x0014) ADC Chan0 Reading */
__IOM uint32_t RDCH1; /*!< (@ 0x0018) ADC Chan1 Reading */
__IOM uint32_t RDCH2; /*!< (@ 0x001C) ADC Chan2 Reading */
__IOM uint32_t RDCH3; /*!< (@ 0x0020) ADC Chan3 Reading */
__IOM uint32_t RDCH4; /*!< (@ 0x0024) ADC Chan4 Reading */
__IOM uint32_t RDCH5; /*!< (@ 0x0028) ADC Chan5 Reading */
__IOM uint32_t RDCH6; /*!< (@ 0x002C) ADC Chan6 Reading */
__IOM uint32_t RDCH7; /*!< (@ 0x0030) ADC Chan7 Reading */
uint8_t RSVD1[0x7C - 0x34];
__IOM uint32_t CONFIG; /*!< (@ 0x007C) ADC Configuration */
__IOM uint32_t VREF_CHAN_SEL; /*!< (@ 0x0080) ADC Vref Channel Sel. */
__IOM uint32_t VREF_CTRL; /*!< (@ 0x0084) ADC Vref Control */
__IOM uint32_t SARADC_CTRL; /*!< (@ 0x0088) SAR ARD Control */
} ADC_Type;
#endif /* #ifndef _ADC_H */
/* end adc.h */
/** @}
*/

View File

@ -144,6 +144,9 @@
#define MCHP_GIRQ_BLK_ACTIVE_ADDR \
(MCHP_ECIA_ADDR + MCHP_ECIA_BLK_ACTIVE_OFS)
/* 8 <= n <= 26 */
#define MCHP_GIRQ_TO_AGGR_NVIC(n) (((n) < 23) ? ((n)-8) : ((n)-9))
/* 8 <= n <= 26 */
#define MCHP_GIRQ_SRC_ADDR(n) \
((MCHP_ECIA_ADDR + 0x00ul) + (((uint32_t)(n) - 8ul) * 0x14ul))

View File

@ -176,18 +176,18 @@ typedef struct ecs_regs
__IOM uint32_t JTAG_MTMS; /*!< (@ 0x0080) ECS JTAG Master TMS */
__IOM uint32_t JTAG_MCMD; /*!< (@ 0x0084) ECS JTAG Master Command */
uint8_t RSVD3[8];
__IOM uint32_t VW_FW_OVR; /*!< (@ 0x0090) ECS VWire FW Override */
__IOM uint32_t VW_FW_OVR; /*!< (@ 0x0090) ECS VWire Source Config */
__IOM uint32_t CMP_CTRL; /*!< (@ 0x0094) ECS Analog Comparator Control */
__IOM uint32_t CMP_SLP_CTRL; /*!< (@ 0x0098) ECS Analog Comparator Sleep Control */
uint8_t RSVD4[(0xF0 - 0x9C)];
__IOM uint32_t IP_TRIM; /*!< (@ 0x00F0) ECS IP Trim */
uint8_t RSVD5[12];
__IOM uint32_t TEST100;
uint8_t RSVD6[(0x180 - 0x94)];
__IOM uint32_t FW_SCR0; /*!< (@ 0x0180) ECS FW Scratch 0 */
__IOM uint32_t FW_SCR1; /*!< (@ 0x0180) ECS FW Scratch 1 */
__IOM uint32_t FW_SCR2; /*!< (@ 0x0180) ECS FW Scratch 2 */
__IOM uint32_t FW_SCR3; /*!< (@ 0x0180) ECS FW Scratch 3 */
uint8_t RSVD5[(0x144 - 0xF4)];
__IOM uint32_t SLP_STS_MIRROR; /*!< (@ 0x0144) ECS Sleep Status Mirror (RO) */
uint8_t RSVD6[(0x180 - 0x148)];
__IOM uint32_t BROM_SCR0; /*!< (@ 0x0180) ECS Boot-ROM Scratch 0 */
__IOM uint32_t BROM_SCR1; /*!< (@ 0x0180) ECS Boot-ROM Scratch 1 */
__IOM uint32_t BROM_SCR2; /*!< (@ 0x0180) ECS Boot-ROM Scratch 2 */
__IOM uint32_t BROM_SCR3; /*!< (@ 0x0180) ECS Boot-ROM Scratch 3 */
} ECS_Type;
#endif // #ifndef _ECS_H

View File

@ -0,0 +1,157 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file hdmi_cec.h
*MEC1501 HDMI CEC registers
*/
/** @defgroup MEC1501 Peripherals HDMI-CEC
*/
#ifndef _HDMI_CEC_H
#define _HDMI_CEC_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ HDMI CEC =========== */
/* =========================================================================*/
#define MCHP_HDMI_CEC_BASE_ADDR 0x40006800ul
/*
* HDMI_CEC interrupts
*/
#define MCHP_HDMI_CEC_GIRQ 17u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_HDMI_CEC_GIRQ_POS 5u
#define MCHP_HDMI_CEC_GIRQ_VAL (1ul << MCHP_HDMI_CEC_GIRQ_POS)
/* HDMI_CEC GIRQ aggregated NVIC input */
#define MCHP_HDMI_CEC_NVIC_AGGR 9u
/* HDMI_CEC direct NVIC inputs */
#define MCHP_HDMI_CEC_NVIC_DIRECT 160u
/* HDMI_CEC Control register */
#define MCHP_HDMI_CEC_CTRL_REG_OFS 0U
#define MCHP_HDMI_CEC_CTRL_MASK 0x0Fu
#define MCHP_HDMI_CEC_CTRL_ACT_POS 0
#define MCHP_HDMI_CEC_CTRL_ACT (1ul << 0)
#define MCHP_HDMI_CEC_CTRL_RST_POS 1
#define MCHP_HDMI_CEC_CTRL_RST (1ul << 1)
#define MCHP_HDMI_CEC_CTRL_FILT_EN_POS 2
#define MCHP_HDMI_CEC_CTRL_FILT_EN (1ul << 2)
#define MCHP_HDMI_CEC_CTRL_SFT5_POS 3
#define MCHP_HDMI_CEC_CTRL_SFT5_EN (1ul << 3)
/* HDMI_CEC Claimed Logic Address register */
#define MCHP_HDMI_CEC_CLA_REG_OFS 4U
#define MCHP_HDMI_CEC_CLA_MASK 0xFFFFu
/* HDMI_CEC Initiator Data Register */
#define MCHP_HDMI_CEC_IDATA_REG_OFS 8U
#define MCHP_HDMI_CEC_IDATA_REG_MASK 0x01ffU
#define MCHP_HDMI_CEC_IDATA_POS 0
#define MCHP_HDMI_CEC_IDATA_MASK 0xffU
#define MCHP_HDMI_CEC_IDATA_EOM_POS 8
#define MCHP_HDMI_CEC_IDATA_EOM (1ul << 8)
/* HDMI_CEC Follower Data Register */
#define MCHP_HDMI_CEC_FDATA_REG_OFS 0x0CU
#define MCHP_HDMI_CEC_FDATA_REG_MASK 0x01ffU
#define MCHP_HDMI_CEC_FDATA_POS 0
#define MCHP_HDMI_CEC_FDATA_MASK 0xffU
#define MCHP_HDMI_CEC_FDATA_EOM_POS 8
#define MCHP_HDMI_CEC_FDATA_EOM (1ul << 8)
/* HDMI_CEC Initiator/Follower Status Register */
#define MCHP_HDMI_CEC_IFSTS_REG_OFS 0x10U
#define MCHP_HDMI_CEC_IFSTS_REG_MASK 0x007F007Fu
#define MCHP_HDMI_CEC_ISTS_POS 0
#define MCHP_HDMI_CEC_ISTS_IDLE (1ul << 0)
#define MCHP_HDMI_CEC_ISTS_LAB (1ul << 1)
#define MCHP_HDMI_CEC_ISTS_UNDRN (1ul << 2)
#define MCHP_HDMI_CEC_ISTS_ACKERR (1ul << 3)
#define MCHP_HDMI_CEC_ISTS_CE (1ul << 4)
#define MCHP_HDMI_CEC_ISTS_IFE (1ul << 5)
#define MCHP_HDMI_CEC_ISTS_IFDONE (1ul << 6)
/* follower status */
#define MCHP_HDMI_CEC_FSTS_POS 16
#define MCHP_HDMI_CEC_FSTS_OVRN (1ul << 16)
#define MCHP_HDMI_CEC_FSTS_BERR (1ul << 17)
#define MCHP_HDMI_CEC_FSTS_BTO (1ul << 18)
#define MCHP_HDMI_CEC_FSTS_FFNE (1ul << 19)
#define MCHP_HDMI_CEC_FSTS_FFF (1ul << 20)
#define MCHP_HDMI_CEC_FSTS_FDR (1ul << 21)
#define MCHP_HDMI_CEC_FSTS_FFDONE (1ul << 22)
/* HDMI_CEC Initiator Control Register */
#define MCHP_HDMI_CEC_ICTRL_REG_OFS 0x18u
#define MCHP_HDMI_CEC_ICTRL_REG_MASK 0xE3u
#define MCHP_HDMI_CEC_ICTRL_FLUSH_POS 0
#define MCHP_HDMI_CEC_ICTRL_FLUSH (1ul << 0)
#define MCHP_HDMI_CEC_ICTRL_START_POS 1
#define MCHP_HDMI_CEC_ICTRL_START (1ul << 1)
#define MCHP_HDMI_CEC_ICTRL_IFE_EN_POS 5
#define MCHP_HDMI_CEC_ICTRL_IFE_EN (1ul << 5)
#define MCHP_HDMI_CEC_ICTRL_IFDONE_EN_POS 6
#define MCHP_HDMI_CEC_ICTRL_IFDONE_EN (1ul << 6)
/* HDMI_CEC Follower Control Register */
#define MCHP_HDMI_CEC_FCTRL_REG_OFS 0x1Cu
#define MCHP_HDMI_CEC_FCTRL_REG_MASK 0x71u
#define MCHP_HDMI_CEC_FCTRL_FLUSH_POS 0
#define MCHP_HDMI_CEC_FCTRL_FLUSH (1ul << 0)
#define MCHP_HDMI_CEC_FCTRL_FFF_EN_POS 4
#define MCHP_HDMI_CEC_FCTRL_FFF_EN (1ul << 4)
#define MCHP_HDMI_CEC_FCTRL_FDR_EN_POS 5
#define MCHP_HDMI_CEC_FCTRL_FDR_EN (1ul << 5)
#define MCHP_HDMI_CEC_FCTRL_FFDONE_EN_POS 6
#define MCHP_HDMI_CEC_FCTRL_FFDONE_EN (1ul << 6)
/**
* @brief HDMI CEC (HDMI_CEC)
*/
typedef struct hdmi_cec_regs {
__IOM uint32_t CEC_CONTROL; /*!< (@ 0x0000) HDMI_CEC Control */
__IOM uint32_t CL_ADDR; /*!< (@ 0x0004) HDMI_CEC Claimed Logic Address */
__IOM uint32_t IDATA; /*!< (@ 0x0008) HDMI_CEC Initiator Data */
__IOM uint32_t FDATA; /*!< (@ 0x000C) HDMI_CEC Follower Data */
__IOM uint32_t IFSTATUS; /*!< (@ 0x0010) HDMI_CEC Initiator/Follower Status */
uint8_t RSVD1[4];
__IOM uint32_t ICTRL; /*!< (@ 0x0018) HDMI_CEC Initiator Control */
__IOM uint32_t FCTRL; /*!< (@ 0x001C) HDMI_CEC Follower Control */
} HDMI_CEC_Type;
#endif /* #ifndef _HDMI_CEC_H */
/* end hdmi_cec.h */
/** @}
*/

View File

@ -0,0 +1,216 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file peci.h
*MEC1501 Platform Environment Control Interface registers
*/
/** @defgroup MEC1501 Peripherals PECI
*/
#ifndef _PECI_H
#define _PECI_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ PECI =========== */
/* =========================================================================*/
#define MCHP_PECI_BASE_ADDR 0x40006400ul
/*
* PECI interrupts.
*/
#define MCHP_PECI_GIRQ 17u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_PECI_GIRQ_POS 0
#define MCHP_PECI_GIRQ_VAL (1ul << MCHP_PECI_GIRQ_POS)
/* PECI GIRQ aggregated NVIC input */
#define MCHP_PECI_NVIC_AGGR 9u
/* PECI direct NVIC inputs */
#define MCHP_PECI_NVIC_DIRECT 70u
/*
* Write Data register
*/
#define MCHP_PECI_WR_DATA_REG_OFS 0U
#define MCHP_PECI_WR_DATA_MASK 0xffU
/*
* Read Data register
*/
#define MCHP_PECI_RD_DATA_REG_OFS 4U
#define MCHP_PECI_RD_DATA_MASK 0xffU
/*
* Control register
*/
#define MCHP_PECI_CTRL_REG_OFS 8U
#define MCHP_PECI_CTRL_MASK 0xE9U
#define MCHP_PECI_CTRL_PD_POS 0
#define MCHP_PECI_CTRL_PD (1u << MCHP_PECI_CTRL_PD_POS)
#define MCHP_PECI_CTRL_RST_POS 3
#define MCHP_PECI_CTRL_RST (1u << MCHP_PECI_CTRL_RST_POS)
#define MCHP_PECI_CTRL_FRST_POS 5
#define MCHP_PECI_CTRL_FRST (1u << MCHP_PECI_CTRL_FRST_POS)
#define MCHP_PECI_CTRL_TXEN_POS 6
#define MCHP_PECI_CTRL_TXEN (1u << MCHP_PECI_CTRL_TXEN_POS)
#define MCHP_PECI_CTRL_MIEN_POS 7
#define MCHP_PECI_CTRL_MIEN (1u << MCHP_PECI_CTRL_MIEN_POS)
/*
* Status 1 register. RW1C and read-only bits.
*/
#define MCHP_PECI_STS1_REG_OFS 0x0Cu
#define MCHP_PECI_STS1_MASK 0xBFu
#define MCHP_PECI_STS1_BOF_POS 0
#define MCHP_PECI_STS1_BOF (1u << MCHP_PECI_STS1_BOF_POS)
#define MCHP_PECI_STS1_EOF_POS 1
#define MCHP_PECI_STS1_EOF (1u << MCHP_PECI_STS1_EOF_POS)
/* Error is read-only */
#define MCHP_PECI_STS1_ERR_POS 2
#define MCHP_PECI_STS1_ERR (1u << MCHP_PECI_STS1_ERR_POS)
/* Ready is read-only */
#define MCHP_PECI_STS1_RDY_POS 3
#define MCHP_PECI_STS1_RDY (1u << MCHP_PECI_STS1_RDY_POS)
#define MCHP_PECI_STS1_RDYLO_POS 4
#define MCHP_PECI_STS1_RDYLO (1u << MCHP_PECI_STS1_RDYLO_POS)
#define MCHP_PECI_STS1_RDYHI_POS 5
#define MCHP_PECI_STS1_RDYHI (1u << MCHP_PECI_STS1_RDYHI_POS)
/* MINT is read-only */
#define MCHP_PECI_STS1_MINT_POS 7
#define MCHP_PECI_STS1_MINT (1u << MCHP_PECI_STS1_MINT_POS)
/*
* Status 2 register. Read-only bits.
*/
#define MCHP_PECI_STS2_REG_OFS 0x10u
#define MCHP_PECI_STS2_MASK 0x8Fu
#define MCHP_PECI_STS2_WFF_POS 0
#define MCHP_PECI_STS2_WFF (1u << MCHP_PECI_STS2_WFF_POS)
#define MCHP_PECI_STS2_WFE_POS 1
#define MCHP_PECI_STS2_WFE (1u << MCHP_PECI_STS2_WFE_POS)
#define MCHP_PECI_STS2_RFF_POS 2
#define MCHP_PECI_STS2_RFF (1u << MCHP_PECI_STS2_RFF_POS)
#define MCHP_PECI_STS1_RFE_POS 3
#define MCHP_PECI_STS1_RFE (1u << MCHP_PECI_STS2_RFE_POS)
#define MCHP_PECI_STS1_IDLE_POS 7
#define MCHP_PECI_STS1_IDLE (1u << MCHP_PECI_STS2_IDLE_POS)
/*
* Error register. R/W1C bits.
*/
#define MCHP_PECI_ERR_REG_OFS 0x14u
#define MCHP_PECI_ERR_MASK 0xF3u
#define MCHP_PECI_ERR_FERR_POS 0
#define MCHP_PECI_ERR_FERR (1u << MCHP_PECI_ERR_FERR_POS)
#define MCHP_PECI_ERR_BERR_POS 1
#define MCHP_PECI_ERR_BERR (1u << MCHP_PECI_ERR_BERR_POS)
#define MCHP_PECI_ERR_WROV_POS 4
#define MCHP_PECI_ERR_WROV (1u << MCHP_PECI_ERR_WROV_POS)
#define MCHP_PECI_ERR_WRUN_POS 5
#define MCHP_PECI_ERR_WRUN (1u << MCHP_PECI_ERR_WRUN_POS)
#define MCHP_PECI_ERR_RDOV_POS 6
#define MCHP_PECI_ERR_RDOV (1u << MCHP_PECI_ERR_RDOV_POS)
#define MCHP_PECI_ERR_CLK_POS 7
#define MCHP_PECI_ERR_CLK (1u << MCHP_PECI_ERR_CLK_POS)
/*
* Interrupt Enable 1 register.
*/
#define MCHP_PECI_IEN1_REG_OFS 0x18u
#define MCHP_PECI_IEN1_MASK 0x37u
#define MCHP_PECI_IEN1_BIEN_POS 0
#define MCHP_PECI_IEN1_BIEN (1u << MCHP_PECI_IEN1_BIEN_POS)
#define MCHP_PECI_IEN1_EIEN_POS 1
#define MCHP_PECI_IEN1_EIEN (1u << MCHP_PECI_IEN1_EIEN_POS)
#define MCHP_PECI_IEN1_EREN_POS 2
#define MCHP_PECI_IEN1_EREN (1u << MCHP_PECI_IEN1_EREN_POS)
#define MCHP_PECI_IEN1_RLEN_POS 4
#define MCHP_PECI_IEN1_RLEN (1u << MCHP_PECI_IEN1_RLEN_POS)
#define MCHP_PECI_IEN1_RHEN_POS 5
#define MCHP_PECI_IEN1_RHEN (1u << MCHP_PECI_IEN1_RHEN_POS)
/*
* Interrupt Enable 2 register.
*/
#define MCHP_PECI_IEN2_REG_OFS 0x1Cu
#define MCHP_PECI_IEN2_MASK 0x06u
#define MCHP_PECI_IEN2_ENWFE_POS 1
#define MCHP_PECI_IEN2_ENWFE (1u << MCHP_PECI_IEN2_ENWFE_POS)
#define MCHP_PECI_IEN2_ENRFF_POS 2
#define MCHP_PECI_IEN2_ENRFF (1u << MCHP_PECI_IEN2_ENRFF_POS)
/*
* Optimal Bit Time LSB register.
*/
#define MCHP_PECI_OPT_BT_LSB_REG_OFS 0x20u
#define MCHP_PECI_OPT_BT_LSB_MASK 0xFFu
/*
* Optimal Bit Time MSB register.
*/
#define MCHP_PECI_OPT_BT_MSB_REG_OFS 0x24u
#define MCHP_PECI_OPT_BT_MSB_MASK 0xFFu
/**
* @brief Platform Enviroment Control Interface Registers (PECI)
*/
typedef struct peci_regs {
__IOM uint8_t WR_DATA; /*!< (@ 0x0000) PECI Write Data */
uint8_t RSVD1[3];
__IOM uint8_t RD_DATA; /*!< (@ 0x0004) PECI Read data */
uint8_t RSVD2[3];
__IOM uint8_t CONTROL; /*!< (@ 0x0008) PECI Control */
uint8_t RSVD3[3];
__IOM uint8_t STATUS1; /*!< (@ 0x000C) PECI Status 1 */
uint8_t RSVD4[3];
__IOM uint8_t STATUS2; /*!< (@ 0x0010) PECI Status 2 */
uint8_t RSVD5[3];
__IOM uint8_t ERROR; /*!< (@ 0x0014) PECI Error */
uint8_t RSVD6[3];
__IOM uint8_t INT_EN1; /*!< (@ 0x0018) PECI Interrupt Enable 1 */
uint8_t RSVD7[3];
__IOM uint8_t INT_EN2; /*!< (@ 0x001C) PECI Interrupt Enable 2 */
uint8_t RSVD8[3];
__IOM uint8_t OPT_BIT_TIME_LSB; /*!< (@ 0x0020) PECI Optimal Bit Time LSB */
uint8_t RSVD9[3];
__IOM uint8_t OPT_BIT_TIME_MSB; /*!< (@ 0x0024) PECI Optimal Bit Time MSB */
uint8_t RSVD10[87]; /* 0x25 - 0x7C */
} PECI_Type;
#endif /* #ifndef _PECI_H */
/* end peci.h */
/** @}
*/

View File

@ -0,0 +1,114 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file prochot.h
*MEC1501 Processor temperature control registers
*/
/** @defgroup MEC1501 Peripherals PROCHOT
*/
#ifndef _PROCHOT_H
#define _PROCHOT_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ PROCHOT =========== */
/* =========================================================================*/
#define MCHP_PROCHOT_BASE_ADDR 0x40003400ul
/*
* PROCHOT interrupt signal:
*/
#define MCHP_PROCHOT_GIRQ 17u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_PROCHOT_GIRQ_POS 17
#define MCHP_PROCHOT_GIRQ_VAL (1ul << MCHP_PROCHOT_GIRQ_POS)
/* PROCHOT GIRQ aggregated NVIC input */
#define MCHP_PROCHOT_NVIC_AGGR 9u
/* PROCHOT direct NVIC inputs */
#define MCHP_PROCHOT_NVIC_DIRECT 87u
/* Cumulative Count register */
#define MCHP_PROCHOT_CCNT_REG_OFS 0
#define MCHP_PROCHOT_CCNT_REG_MASK 0x00fffffful
/* Duty cycle count register */
#define MCHP_PROCHOT_DCCNT_REG_OFS 4
#define MCHP_PROCHOT_DCCNT_REG_MASK 0x00fffffful
/* Duty cycle period register */
#define MCHP_PROCHOT_DCPER_REG_OFS 8
#define MCHP_PROCHOT_DCPER_REG_MASK 0x00fffffful
/* Control and Status register */
#define MCHP_PROCHOT_CTRLS_REG_OFS 0x0C
#define MCHP_PROCHOT_CTRLS_REG_MASK 0x00000C3Ful
#define MCHP_PROCHOT_CTRLS_EN_POS 0
#define MCHP_PROCHOT_CTRLS_EN (1ul << 0)
#define MCHP_PROCHOT_CTRLS_PIN_POS 1
#define MCHP_PROCHOT_CTRLS_PIN_HI (1ul << 1)
#define MCHP_PROCHOT_CTRLS_ASSERT_EN_POS 2
#define MCHP_PROCHOT_CTRLS_ASSERT_EN (1ul << 2)
#define MCHP_PROCHOT_CTRLS_PERIOD_EN_POS 3
#define MCHP_PROCHOT_CTRLS_PERIOD_EN (1ul << 3)
#define MCHP_PROCHOT_CTRLS_RESET_EN_POS 4
#define MCHP_PROCHOT_CTRLS_RESET_EN (1ul << 4)
#define MCHP_PROCHOT_CTRLS_FILT_EN_POS 5
#define MCHP_PROCHOT_CTRLS_FILT_EN (1ul << 5)
/* Assertion counter register */
#define MCHP_PROCHOT_ASSERT_CNT_REG_OFS 0x10
#define MCHP_PROCHOT_ASSERT_CNT_REG_MASK 0x0000fffful
/* Assertion counter limit register */
#define MCHP_PROCHOT_ASSERT_LIM_REG_OFS 0x14
#define MCHP_PROCHOT_ASSERT_LIM_REG_MASK 0x0000fffful
/**
* @brief Processor Hot Interface (PROCHOT)
*/
typedef struct prochot_regs {
__IOM uint32_t CUMUL_COUNT; /*!< (@ 0x0000) PROCHOT Cumulative Count */
__IOM uint32_t DUTY_COUNT; /*!< (@ 0x0004) PROCHOT Duty cycle count */
__IOM uint32_t DUTY_PERIOD; /*!< (@ 0x0008) PROCHOT Duty cycle period */
__IOM uint32_t CTRL_STS; /*!< (@ 0x000C) PROCHOT Control and Status */
__IOM uint32_t ASSERT_COUNT; /*!< (@ 0x0010) PROCHOT Assertion counter */
__IOM uint32_t ASSERT_LIMIT; /*!< (@ 0x0014) PROCHOT Assertion counter limit */
} PROCHOT_Type;
#endif /* #ifndef _PROCHOT_H */
/* end prochot.h */
/** @}
*/

143
mec/mec1501/component/pwm.h Normal file
View File

@ -0,0 +1,143 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file pwm.h
*MEC1501 Pulse width modulator controller registers
*/
/** @defgroup MEC1501 Peripherals PWM
*/
#ifndef _PWM_H
#define _PWM_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ PWM =========== */
/* =========================================================================*/
#define MCHP_PWM_BASE_ADDR 0x40005800ul
#define MCHP_PWM_MAX_INSTANCES 9u
#define MCHP_PWM_INST_SPACING 0x10ul
#define MCHP_PWM_INST_SPACING_P2 4u
#define MCHP_PWM_ADDR(n) (MCHP_PWM_BASE_ADDR + \
((n) << MCHP_PWM_INST_SPACING_P2))
/*
* PWM does not generate interrupts.
*/
/*
* PWM Count On register
*/
#define MCHP_PWM_COUNT_ON_REG_OFS 0U
#define MCHP_PWM_COUNT_ON_MASK 0xffffU
/*
* PWM Count Off register
*/
#define MCHP_PWM_COUNT_OFF_REG_OFS 4U
#define MCHP_PWM_COUNT_OFF_MASK 0xffffU
/*
* PWM Configuration Register
*/
#define MCHP_PWM_CONFIG_REG_OFS 8U
#define MCHP_PWM_CONFIG_MASK 0x7FU
/*
* Enable and start PWM. Clearing this bit resets internal counters.
* COUNT_ON and COUNT_OFF registers are not affected by enable bit.
*/
#define MCHP_PWM_CFG_ENABLE_POS 0
#define MCHP_PWM_CFG_ENABLE (1U << MCHP_PWM_CFG_ENABLE_POS)
/*
* Clock select
*/
#define MCHP_PWM_CFG_CLK_SEL_POS 1
#define MCHP_PWM_CFG_CLK_SEL_48M (0U << MCHP_PWM_CFG_CLK_SEL_POS)
#define MCHP_PWM_CFG_CLK_SEL_100K (1U << MCHP_PWM_CFG_CLK_SEL_POS)
/*
* ON state polarity.
* Default ON state is High.
*/
#define MCHP_PWM_CFG_ON_POL_POS 2
#define MCHP_PWM_CFG_ON_POL_HI (0U << MCHP_PWM_CFG_ON_POL_POS)
#define MCHP_PWM_CFG_ON_POL_LO (1U << MCHP_PWM_CFG_ON_POL_POS)
/*
* Clock pre-divider
* Clock divider value = pre-divider + 1
*/
#define MCHP_PWM_CFG_CLK_PRE_DIV_POS 3
#define MCHP_PWM_CFG_CLK_PRE_DIV_MASK0 0x0FU
#define MCHP_PWM_CFG_CLK_PRE_DIV_MASK \
(0x0FU << MCHP_PWM_CFG_CLK_PRE_DIV_POS)
#define MCHP_PWM_CFG_CLK_PRE_DIV(n) ( \
((n) & MCHP_PWM_CFG_CLK_PRE_DIV_MASK0) \
<< MCHP_PWM_CFG_CLK_PRE_DIV_POS )
/* PWM input frequencies selected in configuration register. */
#define MCHP_PWM_INPUT_FREQ_HI 48000000U
#define MCHP_PWM_INPUT_FREQ_LO 100000U
/*
* Register access
* 0 <= n < MCHP_PWM_MAX_INSTANCES
*/
#define MCHP_PWM_COUNT_ON(n) \
REG16(MCHP_PWM_ADDR(n) + MCHP_PWM_COUNT_ON_REG_OFS)
#define MCHP_PWM_COUNT_OFF(n) \
REG16(MCHP_PWM_ADDR(n) + MCHP_PWM_COUNT_OFF_REG_OFS)
#define MCHP_PWM_CONFIG(n) \
REG8(MCHP_PWM_ADDR(n) + MCHP_PWM_CONFIG_REG_OFS)
/*
* PWM Frequency =
* (1 / (pre_div + 1)) * PWM_INPUT_FREQ / ((COUNT_ON+1) + (COUNT_OFF+1))
*
* PWM Duty Cycle =
* (COUNT_ON+1) / ((COUNT_ON+1) + (COUNT_OFF + 1))
*/
/**
* @brief Pulse Width Modulator Registers (PWM)
*/
typedef struct pwm_regs {
__IOM uint32_t COUNT_ON; /*!< (@ 0x0000) PWM Counter ON b[15:0] */
__IOM uint32_t COUNT_OFF; /*!< (@ 0x0004) PWM Counter OFF b[15:0] */
__IOM uint32_t CONFIG; /*!< (@ 0x0008) PWM Configuration b[7:0] */
} PWM_Type;
#endif /* #ifndef _PWM_H */
/* end pwm.h */
/** @}
*/

View File

@ -51,16 +51,20 @@
#define MCHP_QMSPI_GIRQ_NUM 18u
#define MCHP_QMSPI_GIRQ_POS 1u
#define MCHP_QMSPI_GIRQ_OFS (((MCHP_QMSPI0_GIRQ_NUM) - 8) * 20u)
#define MCHP_QMSPI_GIRQ_BASE_ADDR 0x4000E0C8ul
/* Sleep Enable 4 bit 8 */
#define MCHP_QMSPI_PCR_SLP_EN_ADDR 0x40080140ul
#define MCHP_QMSPI_PCR_SLP_EN_BITPOS 8u
#define MCHP_QMSPI_GIRQ_NVIC_AGGR 10u
#define MCHP_QMSPI_GIRQ_NVIC_DIRECT 91u
#define MCHP_QMSPI_GIRQ_BASE_ADDR 0x4000E0C8ul
#define MCHP_QMSPI_GIRQ_SRC_ADDR (MCHP_QMSPI_GIRQ_BASE_ADDR)
#define MCHP_QMSPI_GIRQ_ENSET_ADDR (MCHP_QMSPI_GIRQ_BASE_ADDR + 0x04ul)
#define MCHP_QMSPI_GIRQ_RESULT_ADDR (MCHP_QMSPI_GIRQ_BASE_ADDR + 0x08ul)
#define MCHP_QMSPI_GIRQ_ENCLR_ADDR (MCHP_QMSPI_GIRQ_BASE_ADDR + 0x0Cul)
/* Sleep Enable 4 bit 8 */
#define MCHP_QMSPI_PCR_SLP_EN_ADDR 0x40080140ul
#define MCHP_QMSPI_PCR_SLP_EN_POS 8u
#define MCHP_QMSPI_GIRQ_EN (1ul << (MCHP_QMSPI_GIRQ_POS))
#define MCHP_QMSPI_GIRQ_STS (1ul << (MCHP_QMSPI_GIRQ_POS))
@ -111,11 +115,27 @@
#define MCHP_QMSPI_RXB_ADDR (MCHP_QMSPI_BASE_ADDR + 0x24)
#define MCHP_QMSPI_CSTM_ADDR (MCHP_QMSPI_BASE_ADDR + 0x28)
#define MCHP_QMSPI_DESCR_ADDR(n) \
(MCHP_QMSPI_BASE_ADDR + (0x30 + ((uint32_t)(n) << 2)))
(MCHP_QMSPI_BASE_ADDR + (0x30 + (((uint32_t)(n) & 0x0Ful) << 2)))
/* Mode Register */
#define MCHP_QMSPI_M_SRST 0x02ul
#define MCHP_QMSPI_M_ACTIVATE 0x01ul
#define MCHP_QMSPI_M_CPOL_POS 8u
#define MCHP_QMSPI_M_CPOL_CLK_IDLE_LO (0ul << 8)
#define MCHP_QMSPI_M_CPOL_CLK_IDLE_HI (0ul << 8)
#define MCHP_QMSPI_M_CPHA_MOSI_POS 9u
/* MOSI data changes on first clock edge of clock pulse */
#define MCHP_QMSPI_M_CPHA_MOSI_CE1 (0ul << 9)
/* MOSI data changes on second clock edge of clock pulse */
#define MCHP_QMSPI_M_CPHA_MOSI_CE2 (1ul << 9)
#define MCHP_QMSPI_M_CPHA_MIS0_POS 10u
/* MISO data capture on first clock edge of clock pulse */
#define MCHP_QMSPI_M_CPHA_MISO_CE1 (0ul << 9)
/* MISO data capture on second clock edge of clock pulse */
#define MCHP_QMSPI_M_CPHA_MISO_CE2 (1ul << 9)
#define MCHP_QMSPI_M_SIG_POS 8u
#define MCHP_QMSPI_M_SIG_MASK0 0x07ul
#define MCHP_QMSPI_M_SIG_MASK 0x0700ul
@ -231,7 +251,9 @@
/* Buffer Count Status (RO) */
#define MCHP_QMSPI_TX_BUF_CNT_STS_POS 0u
#define MCHP_QMSPI_TX_BUF_CNT_STS_MASK 0xffffu
#define MCHP_QMSPI_RX_BUF_CNT_STS_POS 16u
#define MCHP_QMSPI_RX_BUF_CNT_STS_MASK 0xffff0000ul
/* Interrupt Enable Register */
#define MCHP_QMSPI_IEN_XFR_DONE (1ul << 0)
@ -333,11 +355,6 @@
* 0 <= id < MCHP_QMSPI_MAX_DESCR
*/
#define MCHP_QMSPI_DESCR(id) REG32(MCHP_QMSPI_DESCR_ADDR(id))
#define MCHP_QMSPI_DESCR0() REG32(MCHP_QMSPI_DESCR_ADDR(0))
#define MCHP_QMSPI_DESCR1() REG32(MCHP_QMSPI_DESCR_ADDR(1))
#define MCHP_QMSPI_DESCR2() REG32(MCHP_QMSPI_DESCR_ADDR(2))
#define MCHP_QMSPI_DESCR3() REG32(MCHP_QMSPI_DESCR_ADDR(3))
#define MCHP_QMSPI_DESCR4() REG32(MCHP_QMSPI_DESCR_ADDR(4))
#define MCHP_QMSPI_DESCR_NUNITS(id, nu) MCHP_QMSPI_DESCR(id) = \
((MCHP_QMSPI_DESCR(id) & ~(MCHP_QMSPI_C_XFR_NUNITS_MASK)) +\
@ -348,27 +365,38 @@
/* ================ QMSPI ================ */
/* =========================================================================*/
typedef struct {
__IOM uint32_t u32;
} QMSPI_DESCR_Type;
/**
* @brief Quad Master SPI (QMSPI)
*/
typedef struct qmspi_regs
{
__IOM uint32_t MODE; /*!< (@ 0x00000000) QMSPI Mode */
__IOM uint32_t CTRL; /*!< (@ 0x00000004) QMSPI Control */
__IOM uint32_t EXE; /*!< (@ 0x00000008) QMSPI Execute */
__IOM uint32_t IFCTRL; /*!< (@ 0x0000000C) QMSPI Interface control */
__IOM uint32_t STS; /*!< (@ 0x00000010) QMSPI Status */
__IOM uint32_t BCNT_STS; /*!< (@ 0x00000014) QMSPI Buffer Count Status (RO) */
__IOM uint32_t IEN; /*!< (@ 0x00000018) QMSPI Interrupt Enable */
__IOM uint32_t BCNT_TRIG; /*!< (@ 0x0000001C) QMSPI Buffer Count Trigger */
__IOM uint32_t TX_FIFO; /*!< (@ 0x00000020) QMSPI TX FIFO */
__IOM uint32_t RX_FIFO; /*!< (@ 0x00000024) QMSPI RX FIFO */
uint8_t RSVD1[8];
QMSPI_DESCR_Type DESCR[QMSPI_MAX_DESCR]; /*!< (@ 0x00000030) QMSPI Descriptors 0-4 */
typedef struct qmspi_regs {
__IOM uint32_t MODE; /*!< (@ 0x0000) QMSPI Mode */
__IOM uint32_t CTRL; /*!< (@ 0x0004) QMSPI Control */
__IOM uint32_t EXE; /*!< (@ 0x0008) QMSPI Execute */
__IOM uint32_t IFCTRL; /*!< (@ 0x000C) QMSPI Interface control */
__IOM uint32_t STS; /*!< (@ 0x0010) QMSPI Status */
__IOM uint32_t BCNT_STS; /*!< (@ 0x0014) QMSPI Buffer Count Status (RO) */
__IOM uint32_t IEN; /*!< (@ 0x0018) QMSPI Interrupt Enable */
__IOM uint32_t BCNT_TRIG; /*!< (@ 0x001C) QMSPI Buffer Count Trigger */
__IOM uint32_t TX_FIFO; /*!< (@ 0x0020) QMSPI TX FIFO */
__IOM uint32_t RX_FIFO; /*!< (@ 0x0024) QMSPI RX FIFO */
__IOM uint32_t CSTM; /*!< (@ 0x0028) QMSPI Chip select timing */
uint8_t RSVD1[4];
__IOM uint32_t DESCR0; /*!< (@ 0x0030) QMSPI Descriptor 0 */
__IOM uint32_t DESCR1; /*!< (@ 0x0034) QMSPI Descriptor 1 */
__IOM uint32_t DESCR2; /*!< (@ 0x0038) QMSPI Descriptor 2 */
__IOM uint32_t DESCR3; /*!< (@ 0x003C) QMSPI Descriptor 3 */
__IOM uint32_t DESCR4; /*!< (@ 0x0040) QMSPI Descriptor 4 */
__IOM uint32_t DESCR5; /*!< (@ 0x0044) QMSPI Descriptor 5 */
__IOM uint32_t DESCR6; /*!< (@ 0x0048) QMSPI Descriptor 6 */
__IOM uint32_t DESCR7; /*!< (@ 0x004C) QMSPI Descriptor 7 */
__IOM uint32_t DESCR8; /*!< (@ 0x0050) QMSPI Descriptor 8 */
__IOM uint32_t DESCR9; /*!< (@ 0x0054) QMSPI Descriptor 9 */
__IOM uint32_t DESCR10; /*!< (@ 0x0058) QMSPI Descriptor 10 */
__IOM uint32_t DESCR11; /*!< (@ 0x005C) QMSPI Descriptor 11 */
__IOM uint32_t DESCR12; /*!< (@ 0x0060) QMSPI Descriptor 12 */
__IOM uint32_t DESCR13; /*!< (@ 0x0064) QMSPI Descriptor 13 */
__IOM uint32_t DESCR14; /*!< (@ 0x0068) QMSPI Descriptor 14 */
__IOM uint32_t DESCR15; /*!< (@ 0x006C) QMSPI Descriptor 15 */
} QMSPI_Type;
#endif /* #ifndef _QMSPI_H */

167
mec/mec1501/component/rtc.h Normal file
View File

@ -0,0 +1,167 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file rtc.h
*MEC1501 Real Time Clock definitions
*/
/** @defgroup MEC1501 Peripherals RTC
*/
#ifndef _RTC_H
#define _RTC_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ RTC =================== */
/* =========================================================================*/
/* Hours register */
#define MCHP_RTC_HOURS_REG_OFS 0x04u
#define MCHP_RTC_HOURS_MASK 0x7Fu
#define MCHP_RTC_HOURS_AM_PM_MASK 0x80u
#define MCHP_RTC_HOURS_PM 0x80u
/* RegA */
#define MCHP_RTC_REGA_REG_OFS 0x0Aul
#define MCHP_RTC_REGA_MASK 0xFFu
#define MCHP_RTC_REGA_RATE_SEL_POS 0
#define MCHP_RTC_REGA_RATE_SEL_MASK0 0x0Fu
#define MCHP_RTC_REGA_RATE_SEL_MASK 0x0Fu
#define MCHP_RTC_REGA_RATE_NONE 0x00u
#define MCHP_RTC_REGA_RATE_3906250_NS 0x01u
#define MCHP_RTC_REGA_RATE_7812500_NS 0x02u
#define MCHP_RTC_REGA_RATE_122070_NS 0x03u
#define MCHP_RTC_REGA_RATE_244141_NS 0x04u
#define MCHP_RTC_REGA_RATE_488281_NS 0x05u
#define MCHP_RTC_REGA_RATE_976563_NS 0x06u
#define MCHP_RTC_REGA_RATE_1953125_NS 0x07u
#define MCHP_RTC_REGA_RATE_3906250_NS_ALT 0x08u
#define MCHP_RTC_REGA_RATE_7812500_NS_ALT 0x09u
#define MCHP_RTC_REGA_RATE_15625_US 0x0Au
#define MCHP_RTC_REGA_RATE_31250_US 0x0Bu
#define MCHP_RTC_REGA_RATE_62500_US 0x0Cu
#define MCHP_RTC_REGA_RATE_125000_US 0x0Du
#define MCHP_RTC_REGA_RATE_250000_US 0x0Du
#define MCHP_RTC_REGA_RATE_500000_US 0x0Du
#define MCHP_RTC_REGA_DIVC_SEL_POS 4
#define MCHP_RTC_REGA_DIVC_SEL_MASK0 0x07u
#define MCHP_RTC_REGA_DIVC_SEL_MASK 0x70u
#define MCHP_RTC_REGA_DIVC_SEL_NORM (0x02u << 4)
#define MCHP_RTC_REGA_DIVC_SEL_HALT (0x03u << 4)
/* bit[7] is read-only status */
#define MCHP_RTC_REGA_UPDATE_IN_PROGESS_POS 7
#define MCHP_RTC_REGA_UPDATE_IN_PROGESS 0x80
/* RegB */
#define MCHP_RTC_REGB_REG_OFS 0x0Bul
#define MCHP_RTC_REGB_MASK 0xF7u
#define MCHP_RTC_REGB_DS_EN 0x01u
#define MCHP_RTC_REGB_FMT_12H 0x00u
#define MCHP_RTC_REGB_FMT_24H 0x02u
#define MCHP_RTC_REGB_DATA_BCD 0x00u
#define MCHP_RTC_REGB_DATA_BIN 0x04u
#define MCHP_RTC_REGB_UPDATE_DONE_IEN 0x10u
#define MCHP_RTC_REGB_ALARM_IEN 0x20u
#define MCHP_RTC_REGB_PERIODIC_IEN 0x40u
#define MCHP_RTC_REGB_UPDATE_INHIBIT 0x80u
/* RegC contains read-to-clear status */
#define MCHP_RTC_REGC_REG_OFS 0x0Cul
#define MCHP_RTC_REGC_MASK 0xF0u
#define MCHP_RTC_REGC_UPDATE_DONE_STS 0x10u
#define MCHP_RTC_REGC_ALARM_STS 0x20u
#define MCHP_RTC_REGC_PERIODIC_STS 0x40u
#define MCHP_RTC_REGC_INT_REQ_STS 0x80u
/* RegD */
#define MCHP_RTC_REGD_REG_OFS 0x0Dul
#define MCHP_RTC_REGD_MASK 0x3Fu
#define MCHP_RTC_REGD_DATE_ALARM_MASK 0x3Fu
/* Control */
#define MCHP_RTC_CTRL_REG_OFS 0x10ul
#define MCHP_RTC_CTRL_MASK 0x0Fu
#define MCHP_RTC_CTRL_BLK_EN 0x01u
#define MCHP_RTC_CTRL_SRST 0x02u
#define MCHP_RTC_CTRL_RSVD2 0x04u
#define MCHP_RTC_CTRL_ALARM_EN 0x08u
/* Daylight savings forward (DLSF) and backward (DLSB) registers */
#define MCHP_RTC_DLSF_REG_OFS 0x18ul
#define MCHP_RTC_DLSB_REG_OFS 0x1Cul
#define MCHP_RTC_DLS_MASK 0xFF0707FFul
#define MCHP_RTC_DLS_MON_POS 0
#define MCHP_RTC_DLS_MON_MASK 0xFFul
#define MCHP_RTC_DLS_DOFW_POS 8
#define MCHP_RTC_DLS_DOFW_MASK (0x07ul << 8)
#define MCHP_RTC_DLS_WEEK_POS 16
#define MCHP_RTC_DLS_WEEK_MASK (0x07ul << 16)
#define MCHP_RTC_DLS_WEEK_1 (1ul << 16)
#define MCHP_RTC_DLS_WEEK_2 (2ul << 16)
#define MCHP_RTC_DLS_WEEK_3 (3ul << 16)
#define MCHP_RTC_DLS_WEEK_4 (4ul << 16)
#define MCHP_RTC_DLS_WEEK_LAST (5ul << 16)
#define MCHP_RTC_DLS_HOUR_POS 24
#define MCHP_RTC_DLS_HOUR_MASK (0x3Ful << 24)
#define MCHP_RTC_DLS_AM_PM_POS 31
#define MCHP_RTC_DLS_PM (1ul << 31)
/**
* @brief Real Time Clock (RTC)
*/
typedef struct rtc_regs {
__IOM uint8_t SECONDS; /*! (@ 0x0000) RTC seconds */
__IOM uint8_t SEC_ALARM; /*! (@ 0x0001) RTC seconds alarm */
__IOM uint8_t MINUTES; /*! (@ 0x0002) RTC minutes */
__IOM uint8_t MIN_ALARM; /*! (@ 0x0003) RTC minutes alarm */
__IOM uint8_t HOURS; /*! (@ 0x0004) RTC hours */
__IOM uint8_t HOURS_ALARM; /*! (@ 0x0005) RTC hours alarm */
__IOM uint8_t DAY_OF_WEEK; /*! (@ 0x0006) RTC day of week */
__IOM uint8_t DAY_OF_MONTH; /*! (@ 0x0007) RTC day of month */
__IOM uint8_t MONTH; /*! (@ 0x0008) RTC month */
__IOM uint8_t YEAR; /*! (@ 0x0009) RTC year */
__IOM uint8_t REGA; /*! (@ 0x000A) RTC Reg A */
__IOM uint8_t REGB; /*! (@ 0x000B) RTC Reg B */
__IOM uint8_t REGC; /*! (@ 0x000C) RTC Reg C */
__IOM uint8_t REGD; /*! (@ 0x000D) RTC Reg D */
uint8_t RSVD1[2];
__IOM uint8_t CONTROL; /*! (@ 0x0010) RTC Control */
uint8_t RSVD2[3];
__IOM uint8_t WEEK_ALARM; /*! (@ 0x0014) RTC Alarm day of week */
uint8_t RSVD3[3];
__IOM uint32_t DLSF; /*! (@ 0x0018) RTC Daylight savings forward */
__IOM uint32_t DLSB; /*! (@ 0x0018) RTC Daylight savings backward */
} RTC_Type;
#endif /* #ifndef _RTC_H */
/* end rtc.h */
/** @}
*/

View File

@ -0,0 +1,341 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file spi_slave.h
*MEC1501 SPI Slave registers
*/
/** @defgroup MEC1501 Peripherals SPI Slave
*/
#ifndef _SPI_SLAVE_H
#define _SPI_SLAVE_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ SPISLV =========== */
/* =========================================================================*/
#define MCHP_SPISLV_BASE_ADDR 0x40007000ul
/*
* SPISLV interrupts
*/
#define MCHP_SPISLV_GIRQ 18u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_SPISLV_GIRQ_POS 0u
#define MCHP_SPISLV_GIRQ_VAL (1ul << MCHP_SPISLV_GIRQ_POS)
/* SPISLV GIRQ aggregated NVIC input */
#define MCHP_SPISLV_NVIC_AGGR 10u
/* SPISLV direct NVIC inputs */
#define MCHP_SPISLV_NVIC_DIRECT 90u
/* SPISLV Configuration register */
#define MCHP_SPISLV_CFG_REG_OFS 0
#define MCHP_SPISLV_CFG_REG_MASK 0x00ff0301ul
#define MCHP_SPISLV_CFG_SQ_SEL_POS 0
#define MCHP_SPISLV_CFG_SINGLE (0ul << 0)
#define MCHP_SPISLV_CFG_QUAD (1ul << 0)
#define MCHP_SPISLV_CFG_TAR_POS 8
#define MCHP_SPISLV_CFG_TAR_MASK0 0x03u
#define MCHP_SPISLV_CFG_TAR_MASK (0x03ul << 8)
#define MCHP_SPISLV_CFG_TAR_1 (0x00ul << 8)
#define MCHP_SPISLV_CFG_TAR_2 (0x01ul << 8)
#define MCHP_SPISLV_CFG_TAR_4 (0x02ul << 8)
#define MCHP_SPISLV_CFG_TAR_8 (0x03ul << 8)
#define MCHP_SPISLV_CFG_WTM_POS 16
#define MCHP_SPISLV_CFG_WTM_MASK0 0xffu
#define MCHP_SPISLV_CFG_WTM_MASK (0xfful << 16)
/* SPISLV Status register */
#define MCHP_SPISLV_STS_REG_OFS 4
#define MCHP_SPISLV_STS_REG_MASK 0x1FFFEF7Bul
#define MCHP_SPISLV_SPI_STS_MWD (1ul << 0)
#define MCHP_SPISLV_SPI_STS_MRD (1ul << 1)
#define MCHP_SPISLV_SPI_STS_MWB (1ul << 3)
#define MCHP_SPISLV_SPI_STS_MRB (1ul << 4)
#define MCHP_SPISLV_SPI_STS_SRTB (1ul << 5)
#define MCHP_SPISLV_SPI_STS_PHI_REQ (1ul << 6)
#define MCHP_SPISLV_SPI_STS_RXFE (1ul << 8)
#define MCHP_SPISLV_SPI_STS_RXFF (1ul << 9)
#define MCHP_SPISLV_SPI_STS_TXFE (1ul << 10)
#define MCHP_SPISLV_SPI_STS_TXFF (1ul << 11)
#define MCHP_SPISLV_SPI_STS_SCCE (1ul << 13)
#define MCHP_SPISLV_SPI_STS_OBF (1ul << 15)
#define MCHP_SPISLV_SPI_STS_SPIMR (1ul << 16)
#define MCHP_SPISLV_SPI_STS_RXF_RSTD (1ul << 17)
#define MCHP_SPISLV_SPI_STS_TXF_RSTD (1ul << 18)
#define MCHP_SPISLV_SPI_STS_LIM0 (1ul << 19)
#define MCHP_SPISLV_SPI_STS_LIM1 (1ul << 20)
#define MCHP_SPISLV_SPI_STS_ABERR (1ul << 21)
#define MCHP_SPISLV_SPI_STS_UNDEF_CMD (1ul << 22)
#define MCHP_SPISLV_SPI_STS_DVB (1ul << 23)
#define MCHP_SPISLV_SPI_STS_RXF_SZ (1ul << 24)
#define MCHP_SPISLV_SPI_STS_TXF_UNF (1ul << 25)
#define MCHP_SPISLV_SPI_STS_TXF_OVF (1ul << 26)
#define MCHP_SPISLV_SPI_STS_RXF_UNF (1ul << 27)
#define MCHP_SPISLV_SPI_STS_RXF_OVF (1ul << 28)
/* SPISLV EC Status register */
#define MCHP_SPISLV_EC_STS_REG_OFS 8
#define MCHP_SPISLV_EC_STS_REG_MASK 0x1FFFEF7Bul
#define MCHP_SPISLV_EC_STS_MWD (1ul << 0)
#define MCHP_SPISLV_EC_STS_MRD (1ul << 1)
#define MCHP_SPISLV_EC_STS_MWB (1ul << 3)
#define MCHP_SPISLV_EC_STS_MRB (1ul << 4)
#define MCHP_SPISLV_EC_STS_SRTB (1ul << 5)
#define MCHP_SPISLV_EC_STS_PHI_REQ (1ul << 6)
#define MCHP_SPISLV_EC_STS_RXFE (1ul << 8)
#define MCHP_SPISLV_EC_STS_RXFF (1ul << 9)
#define MCHP_SPISLV_EC_STS_TXFE (1ul << 10)
#define MCHP_SPISLV_EC_STS_TXFF (1ul << 11)
#define MCHP_SPISLV_EC_STS_SCCE (1ul << 13)
#define MCHP_SPISLV_EC_STS_IBF (1ul << 14)
#define MCHP_SPISLV_EC_STS_OBF (1ul << 15)
#define MCHP_SPISLV_EC_STS_SPIMR (1ul << 16)
#define MCHP_SPISLV_EC_STS_RXF_RSTD (1ul << 17)
#define MCHP_SPISLV_EC_STS_TXF_RSTD (1ul << 18)
#define MCHP_SPISLV_EC_STS_LIM0 (1ul << 19)
#define MCHP_SPISLV_EC_STS_LIM1 (1ul << 20)
#define MCHP_SPISLV_EC_STS_ABERR (1ul << 21)
#define MCHP_SPISLV_EC_STS_UNDEF_CMD (1ul << 22)
#define MCHP_SPISLV_EC_STS_DVB (1ul << 23)
#define MCHP_SPISLV_EC_STS_RXF_SZ (1ul << 24)
#define MCHP_SPISLV_EC_STS_TXF_UNF (1ul << 25)
#define MCHP_SPISLV_EC_STS_TXF_OVF (1ul << 26)
#define MCHP_SPISLV_EC_STS_RXF_UNF (1ul << 27)
#define MCHP_SPISLV_EC_STS_RXF_OVF (1ul << 28)
/* SPISLV SPI Interrupt Enable register */
#define MCHP_SPISLV_SPI_IEN_REG_OFS 0x0C
#define MCHP_SPISLV_SPI_IEN_REG_MASK 0x1FFFAF7Bul
#define MCHP_SPISLV_SPI_IEN_MWD (1ul << 0)
#define MCHP_SPISLV_SPI_IEN_MRD (1ul << 1)
#define MCHP_SPISLV_SPI_IEN_MWB (1ul << 3)
#define MCHP_SPISLV_SPI_IEN_MRB (1ul << 4)
#define MCHP_SPISLV_SPI_IEN_SRTB (1ul << 5)
#define MCHP_SPISLV_SPI_IEN_PHI_REQ (1ul << 6)
#define MCHP_SPISLV_SPI_IEN_RXFE (1ul << 8)
#define MCHP_SPISLV_SPI_IEN_RXFF (1ul << 9)
#define MCHP_SPISLV_SPI_IEN_TXFE (1ul << 10)
#define MCHP_SPISLV_SPI_IEN_TXFF (1ul << 11)
#define MCHP_SPISLV_SPI_IEN_SCCE (1ul << 13)
#define MCHP_SPISLV_SPI_IEN_OBF (1ul << 15)
#define MCHP_SPISLV_SPI_IEN_SPIMR (1ul << 16)
#define MCHP_SPISLV_SPI_IEN_RXF_RSTD (1ul << 17)
#define MCHP_SPISLV_SPI_IEN_TXF_RSTD (1ul << 18)
#define MCHP_SPISLV_SPI_IEN_LIM0 (1ul << 19)
#define MCHP_SPISLV_SPI_IEN_LIM1 (1ul << 20)
#define MCHP_SPISLV_SPI_IEN_ABERR (1ul << 21)
#define MCHP_SPISLV_SPI_IEN_UNDEF_CMD (1ul << 22)
#define MCHP_SPISLV_SPI_IEN_DVB (1ul << 23)
#define MCHP_SPISLV_SPI_IEN_RXF_SZ (1ul << 24)
#define MCHP_SPISLV_SPI_IEN_TXF_UNF (1ul << 25)
#define MCHP_SPISLV_SPI_IEN_TXF_OVF (1ul << 26)
#define MCHP_SPISLV_SPI_IEN_RXF_UNF (1ul << 27)
#define MCHP_SPISLV_SPI_IEN_RXF_OVF (1ul << 28)
/* SPISLV EC Interrupt Enable register */
#define MCHP_SPISLV_EC_IEN_REG_OFS 0x10
#define MCHP_SPISLV_EC_IEN_REG_MASK 0x1FFFEF7Bul
#define MCHP_SPISLV_EC_IEN_MWD (1ul << 0)
#define MCHP_SPISLV_EC_IEN_MRD (1ul << 1)
#define MCHP_SPISLV_EC_IEN_MWB (1ul << 3)
#define MCHP_SPISLV_EC_IEN_MRB (1ul << 4)
#define MCHP_SPISLV_EC_IEN_SRTB (1ul << 5)
#define MCHP_SPISLV_EC_IEN_PHI_REQ (1ul << 6)
#define MCHP_SPISLV_EC_IEN_RXFE (1ul << 8)
#define MCHP_SPISLV_EC_IEN_RXFF (1ul << 9)
#define MCHP_SPISLV_EC_IEN_TXFE (1ul << 10)
#define MCHP_SPISLV_EC_IEN_TXFF (1ul << 11)
#define MCHP_SPISLV_EC_IEN_SCCE (1ul << 13)
#define MCHP_SPISLV_EC_IEN_IBF (1ul << 14)
#define MCHP_SPISLV_EC_IEN_OBF (1ul << 15)
#define MCHP_SPISLV_EC_IEN_SPIMR (1ul << 16)
#define MCHP_SPISLV_EC_IEN_RXF_RSTD (1ul << 17)
#define MCHP_SPISLV_EC_IEN_TXF_RSTD (1ul << 18)
#define MCHP_SPISLV_EC_IEN_LIM0 (1ul << 19)
#define MCHP_SPISLV_EC_IEN_LIM1 (1ul << 20)
#define MCHP_SPISLV_EC_IEN_ABERR (1ul << 21)
#define MCHP_SPISLV_EC_IEN_UNDEF_CMD (1ul << 22)
#define MCHP_SPISLV_EC_IEN_DVB (1ul << 23)
#define MCHP_SPISLV_EC_IEN_RXF_SZ (1ul << 24)
#define MCHP_SPISLV_EC_IEN_TXF_UNF (1ul << 25)
#define MCHP_SPISLV_EC_IEN_TXF_OVF (1ul << 26)
#define MCHP_SPISLV_EC_IEN_RXF_UNF (1ul << 27)
#define MCHP_SPISLV_EC_IEN_RXF_OVF (1ul << 28)
/* SPISLV Memory Config register */
#define MCHP_SPISLV_MCFG_REG_OFS 0x14
#define MCHP_SPISLV_MCFG_REG_MASK 0x03ul
#define MCHP_SPISLV_MCFG_BAR0_EN_POS 0
#define MCHP_SPISLV_MCFG_BAR0_EN (1ul << 0)
#define MCHP_SPISLV_MCFG_BAR1_EN_POS 1
#define MCHP_SPISLV_MCFG_BAR1_EN (1ul << 1)
/* SPISLV Memory Base Address 0 register */
#define MCHP_SPISLV_MBA0_REG_OFS 0x18
#define MCHP_SPISLV_MBA0_REG_MASK 0xFFFFFFFCul
/* SPISLV Memory Write Limit 0 register */
#define MCHP_SPISLV_MWLIM0_REG_OFS 0x1C
#define MCHP_SPISLV_MWLIM0_REG_MASK 0xFFFFFFFCul
/* SPISLV Memory Read Limit 0 register */
#define MCHP_SPISLV_MRLIM0_REG_OFS 0x20
#define MCHP_SPISLV_MRLIM0_REG_MASK 0xFFFFFFFCul
/* SPISLV Memory Base Address 1 register */
#define MCHP_SPISLV_MBA1_REG_OFS 0x24
#define MCHP_SPISLV_MBA1_REG_MASK 0xFFFFFFFCul
/* SPISLV Memory Write Limit 1 register */
#define MCHP_SPISLV_MWLIM1_REG_OFS 0x28
#define MCHP_SPISLV_MWLIM1_REG_MASK 0xFFFFFFFCul
/* SPISLV Memory Read Limit 1 register */
#define MCHP_SPISLV_MRLIM1_REG_OFS 0x2C
#define MCHP_SPISLV_MRLIM1_REG_MASK 0xFFFFFFFCul
/* SPISLV RX FIFO Host BAR register */
#define MCHP_SPISLV_RXFHB_REG_OFS 0x30
#define MCHP_SPISLV_RXFHB_REG_MASK 0xFFFFul
/* SPISLV RX FIFO Host BAR register */
#define MCHP_SPISLV_RXFBC_REG_OFS 0x34
#define MCHP_SPISLV_RXFBC_REG_MASK 0x7FFFul
/* SPISLV TX FIFO Host BAR register */
#define MCHP_SPISLV_TXFHB_REG_OFS 0x38
#define MCHP_SPISLV_TXFHB_REG_MASK 0xFFFFul
/* SPISLV TX FIFO Host BAR register */
#define MCHP_SPISLV_TXFBC_REG_OFS 0x3C
#define MCHP_SPISLV_TXFBC_REG_MASK 0x7FFFul
/* SPISLV System Configuration register */
#define MCHP_SPISLV_SYSCFG_REG_OFS 0x40
#define MCHP_SPISLV_SYSCFG_REG_MASK 0x000F04FFul
#define MCHP_SPISLV_SYSCFG_SRST (1ul << 0)
#define MCHP_SPISLV_SYSCFG_LOCK_WM (1ul << 1)
#define MCHP_SPISLV_SYSCFG_LOCK_TAR (1ul << 2)
#define MCHP_SPISLV_SYSCFG_LOCK_WC (1ul << 3)
#define MCHP_SPISLV_SYSCFG_LOCK_SPI_STS (1ul << 4)
#define MCHP_SPISLV_SYSCFG_LOCK_SPI_IEN (1ul << 5)
#define MCHP_SPISLV_SYSCFG_LOCK_MBA0 (1ul << 6)
#define MCHP_SPISLV_SYSCFG_LOCK_MBA1 (1ul << 7)
#define MCHP_SPISLV_SYSCFG_LOCK_TST (1ul << 10)
#define MCHP_SPISLV_SYSCFG_LOCK_ALL 0x04FEul
#define MCHP_SPISLV_SYSCFG_ACT (1ul << 16)
#define MCHP_SPISLV_SYSCFG_MASK_EC (1ul << 17)
#define MCHP_SPISLV_SYSCFG_SIMPLE_MODE (1ul << 18)
#define MCHP_SPISLV_SYSCFG_ECDA (1ul << 19)
/* SPISLV SPI Master to EC Mailbox register */
#define MCHP_SPISLV_MB_S2EC_REG_OFS 0x44
#define MCHP_SPISLV_MB_S2EC_REG_MASK 0xFFFFFFFFul
#define MCHP_SPISLV_MB_S2EC_CLR 0xFFFFFFFFul
/* SPISLV EC to SPI Master Mailbox register */
#define MCHP_SPISLV_MB_EC2S_REG_OFS 0x48
#define MCHP_SPISLV_MB_EC2S_REG_MASK 0xFFFFFFFFul
#define MCHP_SPISLV_MB_EC2S_CLR 0xFFFFFFFFul
/* SPI commands supported by SPISLV */
#define SPISLV_CMD_IN_BAND_RST 0xFFu
#define SPISLV_CMD_UNDEF_W32 0x01u
#define SPISLV_CMD_UNDEF_W8 0x02u
#define SPISLV_CMD_UNDEF_R32 0x05u
#define SPISLV_CMD_UNDEF_R8 0x06u
#define SPISLV_CMD_SREG_W8 0x09u
#define SPISLV_CMD_SREG_W16 0x0Au
#define SPISLV_CMD_SREG_W32 0x0Bu
#define SPISLV_CMD_SREG_R8 0x0Du
#define SPISLV_CMD_SREG_R16 0x0Eu
#define SPISLV_CMD_SREG_R32 0x0Fu
#define SPISLV_CMD_RST_RX_FIFO 0x12u
#define SPISLV_CMD_RST_TX_FIFO 0x14u
#define SPISLV_CMD_RST_RXTX_FIFO 0x16u
#define SPISLV_CMD_MEM_W8 0x21u
#define SPISLV_CMD_MEM_W16 0x22u
#define SPISLV_CMD_MEM_W32 0x23u
#define SPISLV_CMD_MEM_R8 0x25u
#define SPISLV_CMD_MEM_R16 0x26u
#define SPISLV_CMD_MEM_R32 0x27u
#define SPISLV_CMD_RS_FIFO8 0x28u
#define SPISLV_CMD_RS_FIFO16 0x29u
#define SPISLV_CMD_RS_FIFO32 0x2Bu
#define SPISLV_CMD_POLL_LO 0x2Cu
#define SPISLV_CMD_POLL_HI 0x2Du
#define SPISLV_CMD_POLL_ALL 0x2Fu
#define SPISLV_CMD_EXT_REG_W8 0x41u
#define SPISLV_CMD_EXT_REG_R8 0x45u
#define SPISLV_CMD_RS_FIFO8_FSR 0x68u
#define SPISLV_CMD_RS_FIFO16_FSR 0x69u
#define SPISLV_CMD_RS_FIFO32_FSR 0x6Bu
#define SPISLV_CMD_EXT_END 0x6Cu
#define SPISLV_CMD_MBLK_W 0x80u
#define SPISLV_CMD_MBLK_R 0xA0u
#define SPISLV_CMD_RD_BLK_FIFO 0xC0u
#define SPISLV_CMD_RD_BLK_FIFO_FSR 0xE0u
/**
* @brief SPI Slave registers (SPISLV)
*/
typedef struct spislv_regs {
__IOM uint32_t CONFIG; /*!< (@ 0x0000) SPISLV Control */
__IOM uint32_t SLV_STATUS; /*!< (@ 0x0004) SPISLV Slave Status */
__IOM uint32_t EC_STATUS; /*!< (@ 0x0008) SPISLV EC Status */
__IOM uint32_t SPI_INT_EN; /*!< (@ 0x000C) SPISLV SPI Interrupt Enable */
__IOM uint32_t EC_INT_EN; /*!< (@ 0x0010) SPISLV EC Interrupt Enable */
__IOM uint32_t MCONFIG; /*!< (@ 0x0014) SPISLV Memory Config */
__IOM uint32_t MBA0; /*!< (@ 0x0018) SPISLV Memory Base Address 0 */
__IOM uint32_t MBA0_WLIM; /*!< (@ 0x001C) SPISLV Memory Base Address 0 Write Limit */
__IOM uint32_t MBA0_RLIM; /*!< (@ 0x0020) SPISLV Memory Base Address 0 Read Limit */
__IOM uint32_t MBA1; /*!< (@ 0x0024) SPISLV Memory Base Address 1 */
__IOM uint32_t MBA1_WLIM; /*!< (@ 0x0028) SPISLV Memory Base Address 0 Write Limit */
__IOM uint32_t MBA1_RLIM; /*!< (@ 0x002C) SPISLV Memory Base Address 0 Read Limit */
__IOM uint32_t RXF_HBAR; /*!< (@ 0x0030) SPISLV RX FIFO Host BAR */
__IOM uint32_t RXF_BCNT; /*!< (@ 0x0034) SPISLV RX FIFO Byte Counter */
__IOM uint32_t TXF_HBAR; /*!< (@ 0x0038) SPISLV RX FIFO Host BAR */
__IOM uint32_t TXF_BCNT; /*!< (@ 0x003C) SPISLV TX FIFO Byte Counter */
__IOM uint32_t SYS_CONFIG; /*!< (@ 0x0040) SPISLV System Config */
__IOM uint32_t MBOX_S2EC; /*!< (@ 0x0044) SPISLV SPI Master to EC Mailbox */
__IOM uint32_t MBOX_EC2S; /*!< (@ 0x0048) SPISLV EC to SPI Master Mailbox */
} SPISLV_Type;
#endif /* #ifndef _SPI_SLAVE_H */
/* end spi_slave.h */
/** @}
*/

View File

@ -0,0 +1,171 @@
/**
*
* Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \asf_license_stop
*
*/
/** @file tach.h
*MEC1501 Tachometer registers
*/
/** @defgroup MEC1501 Peripherals TACH
*/
#ifndef _TACH_H
#define _TACH_H
#include <stdint.h>
#include <stddef.h>
#include "regaccess.h"
/* =========================================================================*/
/* ================ TACH =========== */
/* =========================================================================*/
#define MCHP_TACH_BASE_ADDR 0x40006000ul
#define MCHP_TACH_MAX_INSTANCES 4u
#define MCHP_TACH_INST_SPACING 0x10ul
#define MCHP_TACH_INST_SPACING_P2 4u
#define MCHP_TACH_ADDR(n) (MCHP_TACH_BASE_ADDR + \
((n) << MCHP_TACH_INST_SPACING_P2))
/*
* TACH interrupts
*/
#define MCHP_TACH0_GIRQ 17u
#define MCHP_TACH1_GIRQ 17u
#define MCHP_TACH2_GIRQ 17u
#define MCHP_TACH3_GIRQ 17u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_TACH0_GIRQ_POS 1u
#define MCHP_TACH1_GIRQ_POS 2u
#define MCHP_TACH2_GIRQ_POS 3u
#define MCHP_TACH3_GIRQ_POS 4u
#define MCHP_TACH0_GIRQ_VAL (1ul << MCHP_TACH0_GIRQ_POS)
#define MCHP_TACH1_GIRQ_VAL (1ul << MCHP_TACH1_GIRQ_POS)
#define MCHP_TACH2_GIRQ_VAL (1ul << MCHP_TACH2_GIRQ_POS)
#define MCHP_TACH3_GIRQ_VAL (1ul << MCHP_TACH3_GIRQ_POS)
/* TACH GIRQ aggregated NVIC input */
#define MCHP_TACH0_NVIC_AGGR 9u
#define MCHP_TACH1_NVIC_AGGR 9u
#define MCHP_TACH2_NVIC_AGGR 9u
#define MCHP_TACH3_NVIC_AGGR 9u
/* TACH direct NVIC inputs */
#define MCHP_TACH0_NVIC_DIRECT 71u
#define MCHP_TACH1_NVIC_DIRECT 72u
#define MCHP_TACH2_NVIC_DIRECT 73u
#define MCHP_TACH3_NVIC_DIRECT 159u
/*
* TACH Control register
*/
#define MCHP_TACH_CONTROL_REG_OFS 0U
#define MCHP_TACH_CONTROL_MASK 0xffffdd03U
/* Enable exceed high or low limit detection */
#define MCHP_TACH_CTRL_EXCEED_LIM_EN_POS 0
#define MCHP_TACH_CTRL_EXCEED_LIM_EN \
(1ul << MCHP_TACH_CTRL_EXCEED_LIM_EN_POS)
/* Enable TACH operation */
#define MCHP_TACH_CTRL_EN_POS 1
#define MCHP_TACH_CTRL_EN (1ul << MCHP_TACH_CTRL_EN_POS)
/* Enable input filter */
#define MCHP_TACH_CTRL_FILTER_EN_POS 8
#define MCHP_TACH_CTRL_FILTER_EN (1ul << MCHP_TACH_CTRL_FILTER_EN_POS)
/* Select read mode. Latch data on rising edge of selected trigger */
#define MCHP_TACH_CTRL_READ_MODE_SEL_POS 10
#define MCHP_TACH_CTRL_READ_MODE_INPUT \
(0ul << MCHP_TACH_READ_MODE_SEL_POS)
#define MCHP_TACH_CTRL_READ_MODE_100K_CLOCK \
(1ul << MCHP_TACH_READ_MODE_SEL_POS)
/* Select TACH edges for counter increment */
#define MCHP_TACH_CTRL_NUM_EDGES_POS 11
#define MCHP_TACH_CTRL_NUM_EDGES_MASK0 0x03U
#define MCHP_TACH_CTRL_NUM_EDGES_MASK (MCHP_TACH_CTRL_NUM_EDGES_MASK0 \
<< MCHP_TACH_CTRL_NUM_EDGES_POS)
#define MCHP_TACH_CTRL_EDGES_2 (0ul << MCHP_TACH_CTRL_NUM_EDGES_POS)
#define MCHP_TACH_CTRL_EDGES_3 (1ul << MCHP_TACH_CTRL_NUM_EDGES_POS)
#define MCHP_TACH_CTRL_EDGES_5 (2ul << MCHP_TACH_CTRL_NUM_EDGES_POS)
#define MCHP_TACH_CTRL_EDGES_9 (3ul << MCHP_TACH_CTRL_NUM_EDGES_POS)
/* Enable count ready interrupt */
#define MCHP_TACH_CTRL_CNT_RDY_INT_EN_POS 14
#define MCHP_TACH_CTRL_CNT_RDY_INT_EN \
(1ul << MCHP_TACH_CTRL_CNT_RDY_INT_EN_POS)
/* Enable input toggle interrupt */
#define MCHP_TACH_CTRL_TOGGLE_INT_EN_POS 15
#define MCHP_TACH_CTRL_TOGGLE_INT_EN \
(1ul << MCHP_TACH_CTRL_TOGGLE_INT_EN_POS)
/* Read-only latched TACH pulse counter */
#define MCHP_TACH_CTRL_COUNTER_POS 16
#define MCHP_TACH_CTRL_COUNTER_MASK0 0xfffful
#define MCHP_TACH_CTRL_COUNTER_MASK \
(MCHP_TACH_CTRL_COUNTER_MASK0 << MCHP_TACH_CTRL_COUNTER_POS)
/*
* TACH Status register
* bits[0, 2-3] are R/W1C
* bit[1] is Read-Only
*/
#define MCHP_TACH_STATUS_REG_OFS 4U
#define MCHP_TACH_STATUS_MASK 0x0FU
#define MCHP_TACH_STS_EXCEED_LIMIT_POS 0
#define MCHP_TACH_STS_EXCEED_LIMIT (1U << MCHP_TACH_STS_EXCEED_LIMIT_POS)
#define MCHP_TACH_STS_PIN_STATE_POS 1
#define MCHP_TACH_STS_PIN_STATE_HI (1U << MCHP_TACH_STS_PIN_STATE_POS)
#define MCHP_TACH_STS_TOGGLE_POS 2
#define MCHP_TACH_STS_TOGGLE (1U << MCHP_TACH_STS_TOGGLE_POS)
#define MCHP_TACH_STS_CNT_RDY_POS 3
#define MCHP_TACH_STS_CNT_RDY (1U << MCHP_TACH_STS_CNT_RDY_POS)
/*
* TACH High Limit Register
*/
#define MCHP_TACH_HI_LIMIT_REG_OFS 8U
#define MCHP_TACH_HI_LIMIT_MASK 0xffffU
/*
* TACH Low Limit Register
*/
#define MCHP_TACH_LO_LIMIT_REG_OFS 0x0CU
#define MCHP_TACH_LO_LIMIT_MASK 0xffffU
/**
* @brief Tachometer Registers (TACH)
*/
typedef struct tach_regs {
__IOM uint32_t CONTROL; /*!< (@ 0x0000) TACH Control b[31:0] */
__IOM uint32_t STATUS; /*!< (@ 0x0004) TACH Status b[7:0] */
__IOM uint32_t LIMIT_HI; /*!< (@ 0x0008) TACH High LImit b[15:0] */
__IOM uint32_t LIMIT_LO; /*!< (@ 0x000C) TACH Low Limit b[15:0] */
} TACH_Type;
#endif /* #ifndef _TACH_H */
/* end tach.h */
/** @}
*/

View File

@ -116,8 +116,7 @@
/**
* @brief VBAT Register Bank (VBATR)
*/
typedef struct vbatr_regs
{ /*!< (@ 0x4000A400) VBATR Structure */
typedef struct vbatr_regs {
__IOM uint32_t PFRS; /*! (@ 0x00000000) VBATR Power Fail Reset Status */
uint8_t RSVD1[4];
__IOM uint32_t CLK32_EN; /*! (@ 0x00000008) VBATR 32K clock enable */
@ -137,8 +136,7 @@ typedef struct vbatr_regs
*/
#define MCHP_VBAT_MEM_LEN 64ul
typedef struct vbatm_regs
{ /*!< (@ 0x4000A800) VBATM Structure */
typedef struct vbatm_regs {
union vbmem_u {
uint32_t u32[(MCHP_VBAT_MEM_LEN) / 4];
uint16_t u16[(MCHP_VBAT_MEM_LEN) / 2];
@ -146,6 +144,156 @@ typedef struct vbatm_regs
} MEM;
} VBATM_Type;
/* =========================================================================*/
/* ================ VCI =================== */
/* =========================================================================*/
#define MCHP_VCI_BASE_ADDR 0x4000AE00ul
/*
* VCI interrupts
*/
#define MCHP_VCI_OVRD_GIRQ 21u
#define MCHP_VCI_IN0_GIRQ 21u
#define MCHP_VCI_IN1_GIRQ 21u
#define MCHP_VCI_IN2_GIRQ 21u
#define MCHP_VCI_IN3_GIRQ 21u
/* Bit position in GIRQ Source, Enable-Set/Clr, and Result registers */
#define MCHP_VCI_OVRD_GIRQ_POS 10u
#define MCHP_VCI_IN0_GIRQ_POS 11u
#define MCHP_VCI_IN1_GIRQ_POS 12u
#define MCHP_VCI_IN2_GIRQ_POS 13u
#define MCHP_VCI_IN3_GIRQ_POS 14u
#define MCHP_VCI_OVRD_GIRQ_VAL (1ul << MCHP_VCI_OVRD_GIRQ_POS)
#define MCHP_VCI_IN0_GIRQ_VAL (1ul << MCHP_VCI_IN0_GIRQ_POS)
#define MCHP_VCI_IN1_GIRQ_VAL (1ul << MCHP_VCI_IN1_GIRQ_POS)
#define MCHP_VCI_IN2_GIRQ_VAL (1ul << MCHP_VCI_IN2_GIRQ_POS)
#define MCHP_VCI_IN3_GIRQ_VAL (1ul << MCHP_VCI_IN3_GIRQ_POS)
/* VCI GIRQ aggregated NVIC input */
#define MCHP_VCI_OVRD_NVIC_AGGR 13u
#define MCHP_VCI_IN0_NVIC_AGGR 13u
#define MCHP_VCI_IN1_NVIC_AGGR 13u
#define MCHP_VCI_IN2_NVIC_AGGR 13u
#define MCHP_VCI_IN3_NVIC_AGGR 13u
/* VCI direct NVIC inputs */
#define MCHP_VCI_OVRD_NVIC_DIRECT 121u
#define MCHP_VCI_IN0_NVIC_DIRECT 122u
#define MCHP_VCI_IN1_NVIC_DIRECT 123u
#define MCHP_VCI_IN2_NVIC_DIRECT 124u
#define MCHP_VCI_IN3_NVIC_DIRECT 125u
/* VCI Config register */
#define MCHP_VCI_CFG_REG_OFS 0
#define MCHP_VCI_CFG_REG_MASK 0x00071F8Ful
#define MCHP_VCI_CFG_IN03_MASK 0x0Fu
#define MCHP_VCI_CFG_IN0_HI 0x01u
#define MCHP_VCI_CFG_IN1_HI 0x02u
#define MCHP_VCI_CFG_IN2_HI 0x04u
#define MCHP_VCI_CFG_IN3_HI 0x08u
#define MCHP_VCI_CFG_VPWR_POS 7
#define MCHP_VCI_CFG_VPWR_VTR (0ul << 7)
#define MCHP_VCI_CFG_VPWR_VBAT (1ul << 7)
#define MCHP_VCI_VCI_OVRD_IN_PIN (1ul << 8)
#define MCHP_VCI_VCI_OUT_PIN (1ul << 9)
#define MCHP_VCI_FW_CTRL_EN (1ul << 10)
#define MCHP_VCI_FW_EXT_SEL (1ul << 11)
#define MCHP_VCI_FILTER_BYPASS (1ul << 12)
#define MCHP_VCI_WEEK_ALARM (1ul << 16)
#define MCHP_VCI_RTC_ALARM (1ul << 17)
#define MCHP_VCI_SYS_PWR_PRES (1ul << 18)
/* VCI Latch Enable register */
#define MCHP_VCI_LE_REG_OFS 4
#define MCHP_VCI_LE_REG_MASK 0x0003000Ful
#define MCHP_VCI_LE_IN03_MASK 0x0Fu
#define MCHP_VCI_LE_IN0 0x01u
#define MCHP_VCI_LE_IN1 0x02u
#define MCHP_VCI_LE_IN2 0x04u
#define MCHP_VCI_LE_IN3 0x08u
#define MCHP_VCI_LE_WEEK_ALARM (1ul << 16)
#define MCHP_VCI_LE_RTC_ALARM (1ul << 17)
/* VCI Latch Resets register */
#define MCHP_VCI_LR_REG_OFS 8
#define MCHP_VCI_LR_REG_MASK 0x0003000Ful
#define MCHP_VCI_LR_IN03_MASK 0x0Fu
#define MCHP_VCI_LR_IN0 0x01u
#define MCHP_VCI_LR_IN1 0x02u
#define MCHP_VCI_LR_IN2 0x04u
#define MCHP_VCI_LR_IN3 0x08u
#define MCHP_VCI_LR_WEEK_ALARM (1ul << 16)
#define MCHP_VCI_LR_RTC_ALARM (1ul << 17)
/* VCI Input Enable register */
#define MCHP_VCI_INPUT_EN_REG_OFS 0x0C
#define MCHP_VCI_INPUT_EN_REG_MASK 0x0Ful
#define MCHP_VCI_INPUT_EN_IE30_MASK 0x0Fu
#define MCHP_VCI_INPUT_EN_IN0 0x01u
#define MCHP_VCI_INPUT_EN_IN1 0x02u
#define MCHP_VCI_INPUT_EN_IN2 0x04u
#define MCHP_VCI_INPUT_EN_IN3 0x08u
/* VCI Hold Off Count register */
#define MCHP_VCI_HDO_REG_OFS 0x10
#define MCHP_VCI_HDO_REG_MASK 0xFFul
/* VCI Polarity register */
#define MCHP_VCI_POL_REG_OFS 0x14
#define MCHP_VCI_POL_REG_MASK 0x0Ful
#define MCHP_VCI_POL_IE30_MASK 0x0Fu
#define MCHP_VCI_POL_ACT_HI_IN0 0x01u
#define MCHP_VCI_POL_ACT_HI_IN1 0x02u
#define MCHP_VCI_POL_ACT_HI_IN2 0x04u
#define MCHP_VCI_POL_ACT_HI_IN3 0x08u
/* VCI Positive Edge Detect register */
#define MCHP_VCI_PDET_REG_OFS 0x18
#define MCHP_VCI_PDET_REG_MASK 0x0Ful
#define MCHP_VCI_PDET_IE30_MASK 0x0Fu
#define MCHP_VCI_PDET_IN0 0x01u
#define MCHP_VCI_PDET_IN1 0x02u
#define MCHP_VCI_PDET_IN2 0x04u
#define MCHP_VCI_PDET_IN3 0x08u
/* VCI Positive Edge Detect register */
#define MCHP_VCI_NDET_REG_OFS 0x1C
#define MCHP_VCI_NDET_REG_MASK 0x0Ful
#define MCHP_VCI_NDET_IE30_MASK 0x0Fu
#define MCHP_VCI_NDET_IN0 0x01u
#define MCHP_VCI_NDET_IN1 0x02u
#define MCHP_VCI_NDET_IN2 0x04u
#define MCHP_VCI_NDET_IN3 0x08u
/* VCI Buffer Enable register */
#define MCHP_VCI_BEN_REG_OFS 0x20
#define MCHP_VCI_BEN_REG_MASK 0x0Ful
#define MCHP_VCI_BEN_IE30_MASK 0x0Fu
#define MCHP_VCI_BEN_IN0 0x01u
#define MCHP_VCI_BEN_IN1 0x02u
#define MCHP_VCI_BEN_IN2 0x04u
#define MCHP_VCI_BEN_IN3 0x08u
/**
* @brief VBAT powered control interface (VCI)
*/
typedef struct vci_regs {
__IOM uint32_t CONFIG; /*! (@ 0x0000) VCI Config register */
__IOM uint32_t LATCH_EN; /*! (@ 0x0004) VCI Latch enable register */
__IOM uint32_t LATCH_RST; /*! (@ 0x0008) VCI Latch resets register */
__IOM uint32_t INPUT_EN; /*! (@ 0x000C) VCI Input enable register */
__IOM uint32_t HOLD_OFF; /*! (@ 0x0010) VCI Hold off count register */
__IOM uint32_t POLARITY; /*! (@ 0x0014) VCI Polarity register */
__IOM uint32_t PEDGE_DET; /*! (@ 0x0018) VCI Positive edge detect register */
__IOM uint32_t NEDGE_DET; /*! (@ 0x001C) VCI Negative edge detect register */
__IOM uint32_t BUFFER_EN; /*! (@ 0x0020) VCI Buffer enable register */
} VCI_Type;
#endif /* #ifndef _VBAT_H */
/* end vbat.h */
/** @}

View File

@ -39,56 +39,97 @@
#include "regaccess.h"
/* =========================================================================*/
/* ================ WDT ================ */
/* ================ WDT ====================*/
/* =========================================================================*/
#define MCHP_WDT_BASE_ADDR 0x40000400ul
#define MCHP_WDT_CTRL_MASK 0x021Dul
/* WDT Interrupt */
#define MCHP_WDT_GIRQ 21u
#define MCHP_WDT_GIRQ_NVIC 13u
#define MCHP_WDT_GIRQ_NVIC_DIRECT 171u
/* Bit position in Interrupt Aggregator GIRQ registers */
#define MCHP_WDT_GIRQ_POS 2u
/* Interrupt Aggregator Source, Enable Set/Clear registers value */
#define MCHP_WDT_GIRQ_VAL (1ul << MCHP_WDT_GIRQ_POS)
/* Load register */
#define MCHP_WDT_LOAD_REG_OFS 0x00ul
#define MCHP_WDT_LOAD_REG_MASK 0xFFFFul
/* Control register */
#define MCHP_WDT_CTRL_REG_OFS 0x04ul
#define MCHP_WDT_CTRL_REG_MASK 0x021Dul
#define MCHP_WDT_CTRL_EN_POS 0u
#define MCHP_WDT_CTRL_EN_MASK (1u1 << (MCHP_WDT_CTRL_EN_POS))
#define MCHP_WDT_CTRL_EN (1u1 << (MCHP_WDT_CTRL_EN_POS))
#define MCHP_WDT_CTRL_EN_MASK (1ul << MCHP_WDT_CTRL_EN_POS)
#define MCHP_WDT_CTRL_EN (1ul << MCHP_WDT_CTRL_EN_POS)
#define MCHP_WDT_CTRL_HTMR_STALL_POS 2u
#define MCHP_WDT_CTRL_HTMR_STALL_MASK (1u1 << (MCHP_WDT_CTRL_HTMR_STALL_POS))
#define MCHP_WDT_CTRL_HTMR_STALL_EN (1u1 << (MCHP_WDT_CTRL_HTMR_STALL_POS))
#define MCHP_WDT_CTRL_HTMR_STALL_MASK (1ul << MCHP_WDT_CTRL_HTMR_STALL_POS)
#define MCHP_WDT_CTRL_HTMR_STALL_EN (1ul << MCHP_WDT_CTRL_HTMR_STALL_POS)
#define MCHP_WDT_CTRL_WKTMR_STALL_POS 3u
#define MCHP_WDT_CTRL_WKTMR_STALL_MASK (1u1 << (MCHP_WDT_CTRL_WKTMR_STALL_POS))
#define MCHP_WDT_CTRL_WKTMR_STALL_EN (1u1 << (MCHP_WDT_CTRL_WKTMR_STALL_POS))
#define MCHP_WDT_CTRL_WKTMR_STALL_MASK (1ul << MCHP_WDT_CTRL_WKTMR_STALL_POS)
#define MCHP_WDT_CTRL_WKTMR_STALL_EN (1ul << MCHP_WDT_CTRL_WKTMR_STALL_POS)
#define MCHP_WDT_CTRL_JTAG_STALL_POS 4u
#define MCHP_WDT_CTRL_JTAG_STALL_MASK (1u1 << (MCHP_WDT_CTRL_JTAG_STALL_POS))
#define MCHP_WDT_CTRL_JTAG_STALL_EN (1u1 << (MCHP_WDT_CTRL_JTAG_STALL_POS))
#define MCHP_WDT_CTRL_JTAG_STALL_MASK (1ul << MCHP_WDT_CTRL_JTAG_STALL_POS)
#define MCHP_WDT_CTRL_JTAG_STALL_EN (1ul << MCHP_WDT_CTRL_JTAG_STALL_POS)
/*
* WDT mode selecting action taken upon count expiration.
* 0 = Generate chip reset
* 1 = Clear this bit,
* Set event status
* Generate interrupt if event IEN bit is set
* Kick WDT causing it to reload from LOAD register
* If interrupt is enabled in GIRQ21 and NVIC then the EC will jump
* to the WDT ISR.
*/
#define MCHP_WDT_CTRL_MODE_POS 9u
#define MCHP_WDT_CTRL_MODE_MASK (1ul << MCHP_WDT_CTRL_MODE_POS)
#define MCHP_WDT_CTRL_MODE_RESET (0ul << MCHP_WDT_CTRL_MODE_POS)
#define MCHP_WDT_CTRL_MODE_IRQ (1ul << MCHP_WDT_CTRL_MODE_POS)
/* WDT Kick register. Write any value to reload counter */
#define MCHP_WDT_KICK_OFS 0x08ul
#define MCHP_WDT_KICK_REG_OFS 0x08ul
#define MCHP_WDT_KICK_REG_MASK 0xFFul
#define MCHP_WDT_KICK_VAL 0
/* WDT Count register. Read only */
#define MCHP_WDT_CNT_RO_OFS 0x0Cul
#define MCHP_WDT_CNT_RO_MASK 0xFFFFul
#define MCHP_WDT_CNT_RO_REG_OFS 0x0Cul
#define MCHP_WDT_CNT_RO_REG_MASK 0xFFFFul
/*
* If this bit is set when the WDT counts down it will clear this
* bit, fire an interrupt if IEN is enabled, and start counting up.
* Once it reaches maximum count it actives its reset output.
* This feature allows WDT ISR time to take action before WDT asserts
* its reset signal.
* If this bit is clear WDT will immediately assert its reset signal
* when counter counts down to 0.
*/
#define WDT_CTRL_INH1_POS 9u
#define WDT_CTRL_INH1_MASK (1u1 << (WDT_CTRL_INH1_POS))
#define WDT_CTRL_INH1_EN (1u1 << (WDT_CTRL_INH1_POS))
/* Status Register */
#define MCHP_WDT_STS_REG_OFS 0x10ul
#define MCHP_WDT_STS_REG_MASK 0x01ul
#define MCHP_WDT_STS_EVENT_IRQ_POS 0u
#define MCHP_WDT_STS_EVENT_IRQ (1ul << MCHP_WDT_STS_EVENT_IRQ_POS)
/* Interrupt Enable Register */
#define WDT_IEN_MASK 0x01ul
#define WDT_IEN_EVENT_IRQ_POS 0u
#define WDT_IEN_EVENT_IRQ_MASK (1ul << (WDT_IEN_EVENT_IRQ_POS))
#define WDT_IEN_EVENT_IRQ_EN (1ul << (WDT_IEN_EVENT_IRQ_POS))
#define MCHP_WDT_IEN_REG_OFS 0x14ul
#define MCHP_WDT_IEN_REG_MASK 0x01ul
#define MCHP_WDT_IEN_EVENT_IRQ_POS 0u
#define MCHP_WDT_IEN_EVENT_IRQ_MASK (1ul << (MCHP_WDT_IEN_EVENT_IRQ_POS))
#define MCHP_WDT_IEN_EVENT_IRQ_EN (1ul << (MCHP_WDT_IEN_EVENT_IRQ_POS))
/* Register access */
#define MCHP_WDT_LOAD_REG_ADDR (MCHP_WDT_BASE_ADDR + MCHP_WDT_LOAD_REG_OFS)
#define MCHP_WDT_CTRL_REG_ADDR (MCHP_WDT_BASE_ADDR + MCHP_WDT_CTRL_REG_OFS)
#define MCHP_WDT_KICK_REG_ADDR (MCHP_WDT_BASE_ADDR + MCHP_WDT_KICK_REG_OFS)
#define MCHP_WDT_STS_REG_ADDR (MCHP_WDT_BASE_ADDR + MCHP_WDT_STS_REG_OFS)
#define MCHP_WDT_IEN_REG_ADDR (MCHP_WDT_BASE_ADDR + MCHP_WDT_IEN_REG_OFS)
#define MCHP_WDT_LOAD() REG16(MCHP_WDT_LOAD_REG_ADDR)
#define MCHP_WDT_CTRL() REG16(MCHP_WDT_CTRL_REG_ADDR)
#define MCHP_WDT_KICK() REG8(MCHP_WDT_KICK_REG_ADDR)
#define MCHP_WDT_CNT() REG16(MCHP_WDT_CNT_REG_ADDR)
#define MCHP_WDT_STS() REG8(MCHP_WDT_STS_REG_ADDR)
#define MCHP_WDT_IEN() REG8(MCHP_WDT_IEN_REG_ADDR)
/**
* @brief Watch Dog Timer (WDT)
*/
typedef struct wdt_regs
{
typedef struct wdt_regs {
__IOM uint16_t LOAD; /*!< (@ 0x00000000) WDT Load */
uint8_t RSVD1[2];
__IOM uint16_t CTRL; /*!< (@ 0x00000004) WDT Control */
@ -99,7 +140,7 @@ typedef struct wdt_regs
uint8_t RSVD4[2];
__IOM uint16_t STS; /*!< (@ 0x00000010) WDT Status */
uint8_t RSVD5[2];
__IOM uint8_t IEN; /*!< (@ 0x00000010) WDT Interrupt Enable */
__IOM uint8_t IEN; /*!< (@ 0x00000014) WDT Interrupt Enable */
} WDT_Type;
#endif /* #ifndef _WDT_H */