/* * This file is part of the libopencm3 project. * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . */ #ifndef LIBOPENCM3_TIMER_H #define LIBOPENCM3_TIMER_H #include /* efm32lg specific registers */ /* TIMER_CCx_CTRL */ #define TIMER_CC_CTRL_PRSSEL_SHIFT (16) #define TIMER_CC_CTRL_PRSSEL_MASK (0xF << TIMER_CC_CTRL_PRSSEL_SHIFT) #define TIMER_CC_CTRL_PRSSEL(v) \ (((v) << TIMER_CC_CTRL_PRSSEL_SHIFT) & TIMER_CC_CTRL_PRSSEL_MASK) #define TIMER_CC_CTRL_PRSSEL_PRSCHx(x) TIMER_CC_CTRL_PRSSEL(x) #define TIMER_CC_CTRL_PRSSEL_PRSCH0 TIMER_CC_CTRL_PRSSEL_PRSCHx(0) #define TIMER_CC_CTRL_PRSSEL_PRSCH1 TIMER_CC_CTRL_PRSSEL_PRSCHx(1) #define TIMER_CC_CTRL_PRSSEL_PRSCH2 TIMER_CC_CTRL_PRSSEL_PRSCHx(2) #define TIMER_CC_CTRL_PRSSEL_PRSCH3 TIMER_CC_CTRL_PRSSEL_PRSCHx(3) #define TIMER_CC_CTRL_PRSSEL_PRSCH4 TIMER_CC_CTRL_PRSSEL_PRSCHx(4) #define TIMER_CC_CTRL_PRSSEL_PRSCH5 TIMER_CC_CTRL_PRSSEL_PRSCHx(5) #define TIMER_CC_CTRL_PRSSEL_PRSCH6 TIMER_CC_CTRL_PRSSEL_PRSCHx(6) #define TIMER_CC_CTRL_PRSSEL_PRSCH7 TIMER_CC_CTRL_PRSSEL_PRSCHx(7) #define TIMER_CC_CTRL_PRSSEL_PRSCH8 TIMER_CC_CTRL_PRSSEL_PRSCHx(8) #define TIMER_CC_CTRL_PRSSEL_PRSCH9 TIMER_CC_CTRL_PRSSEL_PRSCHx(9) #define TIMER_CC_CTRL_PRSSEL_PRSCH10 TIMER_CC_CTRL_PRSSEL_PRSCHx(10) #define TIMER_CC_CTRL_PRSSEL_PRSCH11 TIMER_CC_CTRL_PRSSEL_PRSCHx(11) /* TIMER_DTCTRL */ #define TIMER_DTCTRL_DTPRSSEL_SHIFT (4) #define TIMER_DTCTRL_DTPRSSEL_MASK (0xF << TIMER_DTCTRL_DTPRSSEL_SHIFT) #define TIMER_DTCTRL_DTPRSSEL(v) \ (((v) << TIMER_DTCTRL_DTPRSSEL_SHIFT) & TIMER_DTCTRL_DTPRSSEL_MASK) #define TIMER_DTCTRL_DTPRSSEL_PRSCHx(x) TIMER_DTCTRL_DTPRSSEL(x) #define TIMER_DTCTRL_DTPRSSEL_PRSCH0 TIMER_DTCTRL_DTPRSSEL_PRSCHx(0) #define TIMER_DTCTRL_DTPRSSEL_PRSCH1 TIMER_DTCTRL_DTPRSSEL_PRSCHx(1) #define TIMER_DTCTRL_DTPRSSEL_PRSCH2 TIMER_DTCTRL_DTPRSSEL_PRSCHx(2) #define TIMER_DTCTRL_DTPRSSEL_PRSCH3 TIMER_DTCTRL_DTPRSSEL_PRSCHx(3) #define TIMER_DTCTRL_DTPRSSEL_PRSCH4 TIMER_DTCTRL_DTPRSSEL_PRSCHx(4) #define TIMER_DTCTRL_DTPRSSEL_PRSCH5 TIMER_DTCTRL_DTPRSSEL_PRSCHx(5) #define TIMER_DTCTRL_DTPRSSEL_PRSCH6 TIMER_DTCTRL_DTPRSSEL_PRSCHx(6) #define TIMER_DTCTRL_DTPRSSEL_PRSCH7 TIMER_DTCTRL_DTPRSSEL_PRSCHx(7) #define TIMER_DTCTRL_DTPRSSEL_PRSCH8 TIMER_DTCTRL_DTPRSSEL_PRSCHx(8) #define TIMER_DTCTRL_DTPRSSEL_PRSCH9 TIMER_DTCTRL_DTPRSSEL_PRSCHx(9) #define TIMER_DTCTRL_DTPRSSEL_PRSCH10 TIMER_DTCTRL_DTPRSSEL_PRSCHx(10) #define TIMER_DTCTRL_DTPRSSEL_PRSCH11 TIMER_DTCTRL_DTPRSSEL_PRSCHx(11) /* TIMER3 */ #define TIMER3 TIMER3_BASE #define TIMER3_CTRL TIMER_CTRL(TIMER3) #define TIMER3_CMD TIMER_CMD(TIMER3) #define TIMER3_STATUS TIMER_STATUS(TIMER3) #define TIMER3_IEN TIMER_IEN(TIMER3) #define TIMER3_IF TIMER_IF(TIMER3) #define TIMER3_IFS TIMER_IFS(TIMER3) #define TIMER3_IFC TIMER_IFC(TIMER3) #define TIMER3_TOP TIMER_TOP(TIMER3) #define TIMER3_TOPB TIMER_TOPB(TIMER3) #define TIMER3_CNT TIMER_CNT(TIMER3) #define TIMER3_ROUTE TIMER_ROUTE(TIMER3) #define TIMER3_CC0_CTRL TIMER_CC0_CTRL(TIMER3) #define TIMER3_CC0_CCV TIMER_CC0_CCV(TIMER3) #define TIMER3_CC0_CCVP TIMER_CC0_CCVP(TIMER3) #define TIMER3_CC0_CCVB TIMER_CC0_CCVB(TIMER3) #define TIMER3_CC1_CTRL TIMER_CC1_CTRL(TIMER3) #define TIMER3_CC1_CCV TIMER_CC1_CCV(TIMER3) #define TIMER3_CC1_CCVP TIMER_CC1_CCVP(TIMER3) #define TIMER3_CC1_CCVB TIMER_CC1_CCVB(TIMER3) #define TIMER3_CC2_CTRL TIMER_CC2_CTRL(TIMER3) #define TIMER3_CC2_CCV TIMER_CC2_CCV(TIMER3) #define TIMER3_CC2_CCVP TIMER_CC2_CCVP(TIMER3) #define TIMER3_CC2_CCVB TIMER_CC2_CCVB(TIMER3) #endif