1b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/****************************************************************************** 2b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 3b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Copyright (C) 2001-2012 Broadcom Corporation 4b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 5b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Licensed under the Apache License, Version 2.0 (the "License"); 6b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * you may not use this file except in compliance with the License. 7b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * You may obtain a copy of the License at: 8b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 9b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * http://www.apache.org/licenses/LICENSE-2.0 10b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 11b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Unless required by applicable law or agreed to in writing, software 12b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * distributed under the License is distributed on an "AS IS" BASIS, 13b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * See the License for the specific language governing permissions and 15b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * limitations under the License. 16b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 17b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/ 18b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu 19b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/****************************************************************************** 20b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 21b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * This file contains timer definitions from WIDCOMM's Universal Embedded 22b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Drivers API. 23b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 24b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/ 2545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 2645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifndef UTIMER_H 2745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_H 2845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 2945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************* 3045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Timer APIs 3145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/ 3245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 3345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer IDs ****/ 3445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 3545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_1 0 3645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_2 1 3745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_3 2 3845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_4 3 3945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 4045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_NUM_TIMERS 4 /* Number of timers supported */ 4145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 4245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_ID; 4345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 4445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer types ****/ 4545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 4645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_TYPE_PERIODIC 0 4745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_TYPE_ONESHOT 1 4845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 4945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_TYPE; 5045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 5145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 5245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer time ****/ 5345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 5445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT32 tUTIMER_TIME; 5545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 5645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 5745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer configuration ****/ 5845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 59e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chutypedef struct 6045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{ 6145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu tUTIMER_TIME period; 6245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu tUTIMER_TYPE type; 6345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUTIMER_CFG; 6445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 6545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 6645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer feature types ****/ 6745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_1 0 6845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_2 1 6945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_3 2 7045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_4 3 7145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_TYPE_PERIODIC 4 7245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_TYPE_ONESHOT 5 7345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 7445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_FEATURE; 7545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 7645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 7745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Callback for timer expiration ****/ 7845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef void (tUTIMER_CBACK)(tUTIMER_ID); 7945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 8045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 8145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************* 8245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function Prototypes 8345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/ 8445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus 8545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chuextern "C" { 8645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif 8745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 8845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void UTIMER_Init(void *); 8945faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void UTIMER_Start(tUTIMER_ID, tUTIMER_CFG *, tUTIMER_CBACK *); 9045faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void UTIMER_Read(tUTIMER_ID, tUTIMER_TIME *); 9145faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void UTIMER_Stop(tUTIMER_ID); 9245faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern BOOLEAN UTIMER_Feature(tUTIMER_FEATURE); 9345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 9445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus 9545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} 9645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif 9745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu 9845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif /* UTIMER_H */ 99