blob: dd3546a13c84a2fd849f9550d86624473e523548 [file] [log] [blame]
/*
* This file is part of the coreboot project.
*
* Copyright 2015 MediaTek Inc.
*
* This program 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; version 2 of the License.
*
* This program 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.
*/
#ifndef SOC_MEDIATEK_MT8173_RTC_H
#define SOC_MEDIATEK_MT8173_RTC_H
#include <stdint.h>
#include "mt6391.h"
/*
* Default values for RTC initialization
* Year (YEA) : 1970 ~ 2037
* Month (MTH) : 1 ~ 12
* Day of Month (DOM): 1 ~ 31
*/
enum {
RTC_DEFAULT_YEA = 2010,
RTC_DEFAULT_MTH = 1,
RTC_DEFAULT_DOM = 1,
RTC_DEFAULT_DOW = 5
};
enum {
RTC_2SEC_REBOOT_ENABLE = 1,
RTC_2SEC_MODE = 2
};
/* RTC registers */
enum {
RTC_BBPU = 0xE000,
RTC_IRQ_STA = 0xE002,
RTC_IRQ_EN = 0xE004,
RTC_CII_EN = 0xE006
};
enum {
RTC_TC_SEC = 0xE00A,
RTC_TC_MIN = 0xE00C,
RTC_TC_HOU = 0xE00E,
RTC_TC_DOM = 0xE010,
RTC_TC_DOW = 0xE012,
RTC_TC_MTH = 0xE014,
RTC_TC_YEA = 0xE016
};
enum {
RTC_AL_SEC = 0xE018,
RTC_AL_MIN = 0xE01A,
RTC_AL_HOU = 0xE01C,
RTC_AL_DOM = 0xE01E,
RTC_AL_DOW = 0xE020,
RTC_AL_MTH = 0xE022,
RTC_AL_YEA = 0xE024,
RTC_AL_MASK = 0xE008
};
enum {
RTC_OSC32CON = 0xE026,
RTC_CON = 0xE03E,
RTC_WRTGR = 0xE03C
};
enum {
RTC_POWERKEY1 = 0xE028,
RTC_POWERKEY2 = 0xE02A
};
enum {
RTC_PDN1 = 0xE02C,
RTC_PDN2 = 0xE02E,
RTC_SPAR0 = 0xE030,
RTC_SPAR1 = 0xE032,
RTC_PROT = 0xE036,
RTC_DIFF = 0xE038,
RTC_CALI = 0xE03A
};
enum {
RTC_OSC32CON_UNLOCK1 = 0x1A57,
RTC_OSC32CON_UNLOCK2 = 0x2B68
};
enum {
RTC_PROT_UNLOCK1 = 0x586A,
RTC_PROT_UNLOCK2 = 0x9136
};
enum {
RTC_BBPU_PWREN = 1U << 0,
RTC_BBPU_BBPU = 1U << 2,
RTC_BBPU_AUTO = 1U << 3,
RTC_BBPU_CLRPKY = 1U << 4,
RTC_BBPU_RELOAD = 1U << 5,
RTC_BBPU_CBUSY = 1U << 6,
RTC_CBUSY_TIMEOUT_US = 800
};
enum {
RTC_BBPU_KEY = 0x43 << 8
};
enum {
RTC_IRQ_STA_AL = 1U << 0,
RTC_IRQ_STA_TC = 1U << 1,
RTC_IRQ_STA_LP = 1U << 3
};
enum {
RTC_IRQ_EN_AL = 1U << 0,
RTC_IRQ_EN_TC = 1U << 1,
RTC_IRQ_EN_ONESHOT = 1U << 2,
RTC_IRQ_EN_LP = 1U << 3,
RTC_IRQ_EN_ONESHOT_AL = RTC_IRQ_EN_ONESHOT | RTC_IRQ_EN_AL
};
enum {
RTC_OSC32CON_AMPEN = 1U << 8,
RTC_OSC32CON_LNBUFEN = 1U << 11
};
enum {
RTC_POWERKEY1_KEY = 0xa357,
RTC_POWERKEY2_KEY = 0x67d2
};
enum {
RTC_CON_LPEN = 1U << 2,
RTC_CON_LPRST = 1U << 3,
RTC_CON_CDBO = 1U << 4,
RTC_CON_F32KOB = 1U << 5,
RTC_CON_GPO = 1U << 6,
RTC_CON_GOE = 1U << 7,
RTC_CON_GSR = 1U << 8,
RTC_CON_GSMT = 1U << 9,
RTC_CON_GPEN = 1U << 10,
RTC_CON_GPU = 1U << 11,
RTC_CON_GE4 = 1U << 12,
RTC_CON_GE8 = 1U << 13,
RTC_CON_GPI = 1U << 14,
RTC_CON_LPSTA_RAW = 1U << 15
};
enum {
RTC_CALI_BBPU_2SEC_EN = 1U << 8,
RTC_CALI_BBPU_2SEC_MODE_SHIFT = 9,
RTC_CALI_BBPU_2SEC_MODE_MSK = 3U << RTC_CALI_BBPU_2SEC_MODE_SHIFT,
RTC_CALI_BBPU_2SEC_STAT = 1U << 11
};
enum {
RTC_SPAR0_32K_LESS = 1U << 6
};
enum {
RTC_MIN_YEAR = 1968,
RTC_BASE_YEAR = 1900,
RTC_MIN_YEAR_OFFSET = RTC_MIN_YEAR - RTC_BASE_YEAR,
RTC_NUM_YEARS = 128
};
enum {
RTC_STATE_REBOOT = 0,
RTC_STATE_RECOVER = 1,
RTC_STATE_INIT = 2
};
void rtc_boot(void);
#endif /* SOC_MEDIATEK_MT8173_RTC_H */