diff options
author | Werner Zeh <werner.zeh@siemens.com> | 2016-07-13 08:21:22 +0200 |
---|---|---|
committer | Werner Zeh <werner.zeh@siemens.com> | 2016-07-14 07:04:04 +0200 |
commit | 3cad2de6124623169af1f84e88f2ff66b59130fc (patch) | |
tree | 17c8c5aee598e61f072efebfdd9506832b078cb1 /src/drivers/i2c/pcf8523/pcf8523.h | |
parent | 7804790226276dce0bf9c659bba061d46b5a184a (diff) | |
download | coreboot-3cad2de6124623169af1f84e88f2ff66b59130fc.tar.xz |
drivers/i2c: Add new driver for RTC type PCF8523
This driver enables the usage of an external RTC chip PCF8523 which is
connected to the I2C bus. The I2C address of this device is fixed.
One can change parameters in device tree so that the used setup can be
adapted in device tree to match the configuration of the device on the
mainboard.
Change-Id: I2d7e161c9e12b720ec4925f1acfd1dd8ee6ee5f5
Signed-off-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-on: https://review.coreboot.org/15641
Tested-by: build bot (Jenkins)
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Diffstat (limited to 'src/drivers/i2c/pcf8523/pcf8523.h')
-rw-r--r-- | src/drivers/i2c/pcf8523/pcf8523.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/drivers/i2c/pcf8523/pcf8523.h b/src/drivers/i2c/pcf8523/pcf8523.h new file mode 100644 index 0000000000..3d863844e2 --- /dev/null +++ b/src/drivers/i2c/pcf8523/pcf8523.h @@ -0,0 +1,97 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2016 Siemens AG + * + * 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 _I2C_PCF8523_H_ +#define _I2C_PCF8523_H_ + +/* The address of this RTC is fixed. */ +#define PCF8523_SLAVE_ADR 0x68 + +/* Register layout */ +#define CTRL_REG_1 0x00 +#define STOP_BIT (1 << 5) +#define CAP_SEL (1 << 7) +#define CTRL_REG_2 0x01 +#define CTRL_REG_3 0x02 +#define PM_MASK (7 << 5) +#define SECOND_REG 0x03 +#define OS_BIT (1 << 7) +#define MINUTE_REG 0x04 +#define HOUR_REG 0x05 +#define DAY_REG 0x06 +#define WEEKDAY_REG 0x07 +#define MONTH_REG 0x08 +#define YEAR_REG 0x09 +#define ALARM_MINUTE_REG 0x0A +#define ALARM_HOUR_REG 0x0B +#define ALARM_DAY_REG 0x0C +#define ALARM_WEEKDAY_REG 0x0D +#define OFFSET_REG 0x0E +#define TMR_CLKOUT_REG 0x0F +#define COF_MASK 0x38 +#define TMR_A_FREQ_REG 0x10 +#define TMR_A_REG 0x11 +#define TMR_B_FREQ_REG 0x12 +#define TMR_B_REG 0x13 + +/* Define used capacitor modes */ +/* Valid for parameter cap_sel */ +#define CAP_SEL_7_PF 0x00 +#define CAP_SEL_12_PF 0x01 + +/* Define supported power modes */ +/* Valid for parameter power_mode */ +#define PM_BAT_SW_STD_LOW_DETECT 0x00 +#define PM_BAT_SW_DIRECT_LOW_DETECT 0x01 +#define PM_BAT_SW_OFF_LOW_DETECT 0x02 +#define PM_BAT_SW_STD_LOW_DETECT_OFF 0x04 +#define PM_BAT_SW_DIRECT_LOW_DETECT_OFF 0x05 +#define PM_BAT_SW_OFF_LOW_DETECT_OFF 0x07 + +/* Define CLKOUT frequency divider values */ +/* Valid for parameter cof_selection */ +#define COF_32768_HZ 0x00 +#define COF_16384_HZ 0x01 +#define COF_8192_HZ 0x02 +#define COF_4096_HZ 0x03 +#define COF_1024_HZ 0x04 +#define COF_32_HZ 0x05 +#define COF_1_HZ 0x06 +#define COF_OFF 0x07 + +/* Define timer A & B set up values */ +/* Valid for parameter tmrA_prescaler and tmrB_prescaler */ +#define TMR_CLK_4096_HZ 0x00 +#define TMR_CLK_64_HZ 0x01 +#define TMR_CLK_1_HZ 0x02 +#define TMR_CLK_1_60_HZ 0x03 +#define TMR_CLK_1_3600_HZ 0x07 + +/* Valid for parameter tmrA_mode and tmrB_mode */ +#define TMR_DISABLED 0x00 +#define TMR_A_MODE_COUNTDOWN 0x01 +#define TMR_A_MODE_WATCHDOG 0x02 +#define TMR_B_MODE_ENABLED 0x01 + +/* Valid for parameter tmrB_pulse_cfg */ +#define TMR_B_PULSE_WIDTH_46_MS 0x00 +#define TMR_B_PULSE_WIDTH_62_MS 0x01 +#define TMR_B_PULSE_WIDTH_78_MS 0x02 +#define TMR_B_PULSE_WIDTH_93_MS 0x03 +#define TMR_B_PULSE_WIDTH_125_MS 0x04 +#define TMR_B_PULSE_WIDTH_156_MS 0x05 +#define TMR_B_PULSE_WIDTH_187_MS 0x06 +#define TMR_B_PULSE_WIDTH_218_MS 0x07 + +#endif /* _I2C_PCF8523_H_ */ |