todc.h
来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 468 行 · 第 1/2 页
H
468 行
/* * include/asm-ppc/todc.h * * Definitions for the M48Txx and mc146818 series of Time of day/Real Time * Clock chips. * * Author: Mark A. Greer * mgreer@mvista.com * * 2001 (c) MontaVista, Software, Inc. This file is licensed under * the terms of the GNU General Public License version 2. This program * is licensed "as is" without any warranty of any kind, whether express * or implied. *//* * Support for the M48T37/M48T59/.../mc146818 Real Time Clock chips. * Purpose is to make one generic file that handles all of these chips instead * of every platform implementing the same code over & over again. */#ifndef __PPC_KERNEL_TODC_H#define __PPC_KERNEL_TODC_Htypedef struct { uint rtc_type; /* your particular chip */ /* * Following are the addresses of the AS0, AS1, and DATA registers * of these chips. Note that these are board-specific. */ unsigned int nvram_as0; unsigned int nvram_as1; unsigned int nvram_data; /* * Define bits to stop external set of regs from changing so * the chip can be read/written reliably. */ unsigned char enable_read; unsigned char enable_write; /* * Following is the number of AS0 address bits. This is normally * 8 but some bad hardware routes address lines incorrectly. */ int as0_bits; int nvram_size; /* Size of NVRAM on chip */ int sw_flags; /* Software control flags */ /* Following are the register offsets for the particular chip */ int year; int month; int day_of_month; int day_of_week; int hours; int minutes; int seconds; int control_b; int control_a; int watchdog; int interrupts; int alarm_date; int alarm_hour; int alarm_minutes; int alarm_seconds; int century; int flags; /* * Some RTC chips have their NVRAM buried behind a addr/data pair of * regs on the first level/clock registers. The following fields * are the addresses for those addr/data regs. */ int nvram_addr_reg; int nvram_data_reg;} todc_info_t;/* * Define the types of TODC/RTC variants that are supported in * arch/ppc/kernel/todc_time.c * Make a new one of these for any chip somehow differs from what's already * defined. That way, if you ever need to put in code to touch those * bits/registers in todc_time.c, you can put it inside an * 'if (todc_info->rtc_type == TODC_TYPE_XXX)' so you won't break * anyone else. */#define TODC_TYPE_MK48T35 1#define TODC_TYPE_MK48T37 2#define TODC_TYPE_MK48T59 3#define TODC_TYPE_DS1693 4 /* Dallas DS1693 RTC */#define TODC_TYPE_DS1743 5 /* Dallas DS1743 RTC */#define TODC_TYPE_DS1746 6 /* Dallas DS1746 RTC */#define TODC_TYPE_DS1747 7 /* Dallas DS1747 RTC */#define TODC_TYPE_DS1501 8 /* Dallas DS1501 RTC */#define TODC_TYPE_DS1643 9 /* Dallas DS1643 RTC */#define TODC_TYPE_PC97307 10 /* PC97307 internal RTC */#define TODC_TYPE_DS1557 11 /* Dallas DS1557 RTC */#define TODC_TYPE_DS17285 12 /* Dallas DS17285 RTC */#define TODC_TYPE_MC146818 100 /* Leave room for m48txx's *//* * Bit to clear/set to enable reads/writes to the chip */#define TODC_MK48TXX_CNTL_A_R 0x40#define TODC_MK48TXX_CNTL_A_W 0x80#define TODC_MK48TXX_DAY_CB 0x80#define TODC_DS1501_CNTL_B_TE 0x80/* * Define flag bits used by todc routines. */#define TODC_FLAG_2_LEVEL_NVRAM 0x00000001/* * Define the values for the various RTC's that should to into the todc_info * table. * Note: The XXX_NVRAM_SIZE, XXX_NVRAM_ADDR_REG, and XXX_NVRAM_DATA_REG only * matter if XXX_SW_FLAGS has TODC_FLAG_2_LEVEL_NVRAM set. */#define TODC_TYPE_MK48T35_NVRAM_SIZE 0x7ff8#define TODC_TYPE_MK48T35_SW_FLAGS 0#define TODC_TYPE_MK48T35_YEAR 0x7fff#define TODC_TYPE_MK48T35_MONTH 0x7ffe#define TODC_TYPE_MK48T35_DOM 0x7ffd /* Day of Month */#define TODC_TYPE_MK48T35_DOW 0x7ffc /* Day of Week */#define TODC_TYPE_MK48T35_HOURS 0x7ffb#define TODC_TYPE_MK48T35_MINUTES 0x7ffa#define TODC_TYPE_MK48T35_SECONDS 0x7ff9#define TODC_TYPE_MK48T35_CNTL_B 0x7ff9#define TODC_TYPE_MK48T35_CNTL_A 0x7ff8#define TODC_TYPE_MK48T35_WATCHDOG 0x0000#define TODC_TYPE_MK48T35_INTERRUPTS 0x0000#define TODC_TYPE_MK48T35_ALARM_DATE 0x0000#define TODC_TYPE_MK48T35_ALARM_HOUR 0x0000#define TODC_TYPE_MK48T35_ALARM_MINUTES 0x0000#define TODC_TYPE_MK48T35_ALARM_SECONDS 0x0000#define TODC_TYPE_MK48T35_CENTURY 0x0000#define TODC_TYPE_MK48T35_FLAGS 0x0000#define TODC_TYPE_MK48T35_NVRAM_ADDR_REG 0#define TODC_TYPE_MK48T35_NVRAM_DATA_REG 0#define TODC_TYPE_MK48T37_NVRAM_SIZE 0x7ff0#define TODC_TYPE_MK48T37_SW_FLAGS 0#define TODC_TYPE_MK48T37_YEAR 0x7fff#define TODC_TYPE_MK48T37_MONTH 0x7ffe#define TODC_TYPE_MK48T37_DOM 0x7ffd /* Day of Month */#define TODC_TYPE_MK48T37_DOW 0x7ffc /* Day of Week */#define TODC_TYPE_MK48T37_HOURS 0x7ffb#define TODC_TYPE_MK48T37_MINUTES 0x7ffa#define TODC_TYPE_MK48T37_SECONDS 0x7ff9#define TODC_TYPE_MK48T37_CNTL_B 0x7ff9#define TODC_TYPE_MK48T37_CNTL_A 0x7ff8#define TODC_TYPE_MK48T37_WATCHDOG 0x7ff7#define TODC_TYPE_MK48T37_INTERRUPTS 0x7ff6#define TODC_TYPE_MK48T37_ALARM_DATE 0x7ff5#define TODC_TYPE_MK48T37_ALARM_HOUR 0x7ff4#define TODC_TYPE_MK48T37_ALARM_MINUTES 0x7ff3#define TODC_TYPE_MK48T37_ALARM_SECONDS 0x7ff2#define TODC_TYPE_MK48T37_CENTURY 0x7ff1#define TODC_TYPE_MK48T37_FLAGS 0x7ff0#define TODC_TYPE_MK48T37_NVRAM_ADDR_REG 0#define TODC_TYPE_MK48T37_NVRAM_DATA_REG 0#define TODC_TYPE_MK48T59_NVRAM_SIZE 0x1ff0#define TODC_TYPE_MK48T59_SW_FLAGS 0#define TODC_TYPE_MK48T59_YEAR 0x1fff#define TODC_TYPE_MK48T59_MONTH 0x1ffe#define TODC_TYPE_MK48T59_DOM 0x1ffd /* Day of Month */#define TODC_TYPE_MK48T59_DOW 0x1ffc /* Day of Week */#define TODC_TYPE_MK48T59_HOURS 0x1ffb#define TODC_TYPE_MK48T59_MINUTES 0x1ffa#define TODC_TYPE_MK48T59_SECONDS 0x1ff9#define TODC_TYPE_MK48T59_CNTL_B 0x1ff9#define TODC_TYPE_MK48T59_CNTL_A 0x1ff8#define TODC_TYPE_MK48T59_WATCHDOG 0x1fff#define TODC_TYPE_MK48T59_INTERRUPTS 0x1fff#define TODC_TYPE_MK48T59_ALARM_DATE 0x1fff#define TODC_TYPE_MK48T59_ALARM_HOUR 0x1fff#define TODC_TYPE_MK48T59_ALARM_MINUTES 0x1fff#define TODC_TYPE_MK48T59_ALARM_SECONDS 0x1fff#define TODC_TYPE_MK48T59_CENTURY 0x1fff#define TODC_TYPE_MK48T59_FLAGS 0x1fff#define TODC_TYPE_MK48T59_NVRAM_ADDR_REG 0#define TODC_TYPE_MK48T59_NVRAM_DATA_REG 0#define TODC_TYPE_DS1501_NVRAM_SIZE 0x100#define TODC_TYPE_DS1501_SW_FLAGS TODC_FLAG_2_LEVEL_NVRAM#define TODC_TYPE_DS1501_YEAR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x06)#define TODC_TYPE_DS1501_MONTH (TODC_TYPE_DS1501_NVRAM_SIZE + 0x05)#define TODC_TYPE_DS1501_DOM (TODC_TYPE_DS1501_NVRAM_SIZE + 0x04)#define TODC_TYPE_DS1501_DOW (TODC_TYPE_DS1501_NVRAM_SIZE + 0x03)#define TODC_TYPE_DS1501_HOURS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x02)#define TODC_TYPE_DS1501_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x01)#define TODC_TYPE_DS1501_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x00)#define TODC_TYPE_DS1501_CNTL_B (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)#define TODC_TYPE_DS1501_CNTL_A (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)#define TODC_TYPE_DS1501_WATCHDOG (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)#define TODC_TYPE_DS1501_INTERRUPTS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)#define TODC_TYPE_DS1501_ALARM_DATE (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0b)#define TODC_TYPE_DS1501_ALARM_HOUR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0a)#define TODC_TYPE_DS1501_ALARM_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x09)#define TODC_TYPE_DS1501_ALARM_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x08)#define TODC_TYPE_DS1501_CENTURY (TODC_TYPE_DS1501_NVRAM_SIZE + 0x07)#define TODC_TYPE_DS1501_FLAGS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)#define TODC_TYPE_DS1501_NVRAM_ADDR_REG 0x10#define TODC_TYPE_DS1501_NVRAM_DATA_REG 0x13#define TODC_TYPE_DS1557_NVRAM_SIZE 0x7fff0#define TODC_TYPE_DS1557_SW_FLAGS 0#define TODC_TYPE_DS1557_YEAR 0x7ffff#define TODC_TYPE_DS1557_MONTH 0x7fffe#define TODC_TYPE_DS1557_DOM 0x7fffd /* Day of Month */#define TODC_TYPE_DS1557_DOW 0x7fffc /* Day of Week */#define TODC_TYPE_DS1557_HOURS 0x7fffb#define TODC_TYPE_DS1557_MINUTES 0x7fffa#define TODC_TYPE_DS1557_SECONDS 0x7fff9#define TODC_TYPE_DS1557_CNTL_B 0x7fff9#define TODC_TYPE_DS1557_CNTL_A 0x7fff8 /* control_a R/W regs */#define TODC_TYPE_DS1557_WATCHDOG 0x7fff7#define TODC_TYPE_DS1557_INTERRUPTS 0x7fff6#define TODC_TYPE_DS1557_ALARM_DATE 0x7fff5#define TODC_TYPE_DS1557_ALARM_HOUR 0x7fff4#define TODC_TYPE_DS1557_ALARM_MINUTES 0x7fff3#define TODC_TYPE_DS1557_ALARM_SECONDS 0x7fff2#define TODC_TYPE_DS1557_CENTURY 0x7fff8#define TODC_TYPE_DS1557_FLAGS 0x7fff0#define TODC_TYPE_DS1557_NVRAM_ADDR_REG 0#define TODC_TYPE_DS1557_NVRAM_DATA_REG 0#define TODC_TYPE_DS1643_NVRAM_SIZE 0x1ff8#define TODC_TYPE_DS1643_SW_FLAGS 0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?