mod_regs_cpg.h

来自「eCos操作系统源码」· C头文件 代码 · 共 223 行

H
223
字号
//=============================================================================////      mod_regs_cpg.h////      CPG (clock pulse generator) Module register definitions////=============================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos 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 General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.// at http://sources.redhat.com/ecos/ecos-license/// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s):   jskov// Contributors:jskov// Date:        2000-10-30//              //####DESCRIPTIONEND####////=============================================================================//--------------------------------------------------------------------------// Oscillator control registers#define CYGARC_REG_FRQCR                0xffffff80#define CYGARC_REG_WTCNT                0xffffff84 // read 8bit, write 16bit#define CYGARC_REG_WTCSR                0xffffff86 // read 8bit, write 16bit#define CYGARC_REG_WTCNT_WRITE          0x5a00     // top 8bit value for write#define CYGARC_REG_WTCSR_WRITE          0xa500     // top 8bit value for write#define CYGARC_REG_WTCSR_TME            0x80       // timer enable#define CYGARC_REG_WTCSR_WT_IT          0x40       // watchdog(1)/interval(0)#define CYGARC_REG_WTCSR_RSTS           0x20       // manual(1)/poweron(0)#define CYGARC_REG_WTCSR_WOVF           0x10       // watchdog overflow#define CYGARC_REG_WTCSR_IOVF           0x08       // interval overflow#define CYGARC_REG_WTCSR_CKS2           0x04       // clock select 2#define CYGARC_REG_WTCSR_CKS1           0x02       // clock select 1#define CYGARC_REG_WTCSR_CKS0           0x01       // clock select 0#define CYGARC_REG_WTCSR_CKSx_MASK      0x07       // clock select mask// This is the period (in us) between watchdog reset and overflow.// Note: We use max timeout delay for now.#define CYGARC_REG_WTCSR_CKSx_SETTING   0x07       // max delay#define CYGARC_REG_WTCSR_PERIOD         ((1000000000/(CYGHWR_HAL_SH_ONCHIP_PERIPHERAL_SPEED/4096))*256)// Translate various CDL clock configurations to register equivalents// for the various CPG versions#if   (CYGARC_SH_MOD_CPG == 1) // ---------------------------- V1// PLL1#if   (CYGHWR_HAL_SH_OOC_PLL_1 == 0) || (CYGHWR_HAL_SH_OOC_PLL_1 == 1)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0000#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 2)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0010#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 4)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0020#else# error "Unsupported PLL1 setting"#endif// Divider1#if   (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0004#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0008#else# error "Unsupported Divider1 setting"#endif// Divider2#if   (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0001#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0002#else# error "Unsupported Divider1 setting"#endif// CKOEN - set in all modes but 7#if (CYGHWR_HAL_SH_OOC_CLOCK_MODE != 7)# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0100#else# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0000#endif#elif (CYGARC_SH_MOD_CPG == 2) // ---------------------------- V2// PLL1#if   (CYGHWR_HAL_SH_OOC_PLL_1 == 0) || (CYGHWR_HAL_SH_OOC_PLL_1 == 1)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0000#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 2)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0010#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 4)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0020#else# error "Unsupported PLL1 setting"#endif// Divider1#if   (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0004#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0008#else# error "Unsupported Divider1 setting"#endif// Divider2#if   (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0001#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0002#else# error "Unsupported Divider1 setting"#endif// CKOEN - set in all modes but 2#if (CYGHWR_HAL_SH_OOC_CLOCK_MODE != 2)# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0100#else# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0000#endif#elif (CYGARC_SH_MOD_CPG == 3) // ---------------------------- V3// PLL1#if   (CYGHWR_HAL_SH_OOC_PLL_1 == 0) || (CYGHWR_HAL_SH_OOC_PLL_1 == 1)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0000#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 2)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0010#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 3)# define CYGARC_REG_FRQCR_INIT_PLL1 0x8000#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 4)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0020#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 6)# define CYGARC_REG_FRQCR_INIT_PLL1 0x8010#elif (CYGHWR_HAL_SH_OOC_PLL_1 == 8)# define CYGARC_REG_FRQCR_INIT_PLL1 0x0030#else# error "Unsupported PLL1 setting"#endif// Divider1#if   (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0004#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 3)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x4000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_1 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER1 0x0008#else# error "Unsupported Divider1 setting"#endif// Divider2#if   (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 1)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 2)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0001#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 3)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x2000#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 4)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x0002#elif (CYGHWR_HAL_SH_OOC_DIVIDER_2 == 6)# define CYGARC_REG_FRQCR_INIT_DIVIDER2 0x2001#else# error "Unsupported Divider2 setting"#endif// CKOEN - set in modes 0-2#if (CYGHWR_HAL_SH_OOC_CLOCK_MODE <= 2)# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0100#else# define CYGARC_REG_FRQCR_INIT_CKOEN 0x0000#endif#else# error "Unsupported CPG version"#endif// Init value#define CYGARC_REG_FRQCR_INIT (CYGARC_REG_FRQCR_INIT_PLL1|CYGARC_REG_FRQCR_INIT_DIVIDER1|CYGARC_REG_FRQCR_INIT_DIVIDER2|CYGARC_REG_FRQCR_INIT_CKOEN)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?