13d0407baSopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
23d0407baSopenharmony_ci/*
33d0407baSopenharmony_ci * Register definitions for Rockchip's RK808/RK818 PMIC
43d0407baSopenharmony_ci *
53d0407baSopenharmony_ci * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
63d0407baSopenharmony_ci *
73d0407baSopenharmony_ci * Author: Chris Zhong <zyw@rock-chips.com>
83d0407baSopenharmony_ci * Author: Zhang Qing <zhangqing@rock-chips.com>
93d0407baSopenharmony_ci *
103d0407baSopenharmony_ci * Copyright (C) 2016 PHYTEC Messtechnik GmbH
113d0407baSopenharmony_ci *
123d0407baSopenharmony_ci * Author: Wadim Egorov <w.egorov@phytec.de>
133d0407baSopenharmony_ci */
143d0407baSopenharmony_ci
153d0407baSopenharmony_ci#ifndef __LINUX_REGULATOR_RK808_H
163d0407baSopenharmony_ci#define __LINUX_REGULATOR_RK808_H
173d0407baSopenharmony_ci
183d0407baSopenharmony_ci#include <linux/regulator/machine.h>
193d0407baSopenharmony_ci#include <linux/regmap.h>
203d0407baSopenharmony_ci
213d0407baSopenharmony_ci/*
223d0407baSopenharmony_ci * rk808 Global Register Map.
233d0407baSopenharmony_ci */
243d0407baSopenharmony_ci
253d0407baSopenharmony_ci#define RK808_DCDC1 0 /* (0+RK808_START) */
263d0407baSopenharmony_ci#define RK808_LDO1 4  /* (4+RK808_START) */
273d0407baSopenharmony_ci#define RK808_NUM_REGULATORS 14
283d0407baSopenharmony_ci
293d0407baSopenharmony_cienum rk808_reg {
303d0407baSopenharmony_ci    RK808_ID_DCDC1,
313d0407baSopenharmony_ci    RK808_ID_DCDC2,
323d0407baSopenharmony_ci    RK808_ID_DCDC3,
333d0407baSopenharmony_ci    RK808_ID_DCDC4,
343d0407baSopenharmony_ci    RK808_ID_LDO1,
353d0407baSopenharmony_ci    RK808_ID_LDO2,
363d0407baSopenharmony_ci    RK808_ID_LDO3,
373d0407baSopenharmony_ci    RK808_ID_LDO4,
383d0407baSopenharmony_ci    RK808_ID_LDO5,
393d0407baSopenharmony_ci    RK808_ID_LDO6,
403d0407baSopenharmony_ci    RK808_ID_LDO7,
413d0407baSopenharmony_ci    RK808_ID_LDO8,
423d0407baSopenharmony_ci    RK808_ID_SWITCH1,
433d0407baSopenharmony_ci    RK808_ID_SWITCH2,
443d0407baSopenharmony_ci};
453d0407baSopenharmony_ci
463d0407baSopenharmony_ci#define RK808_SECONDS_REG 0x00
473d0407baSopenharmony_ci#define RK808_MINUTES_REG 0x01
483d0407baSopenharmony_ci#define RK808_HOURS_REG 0x02
493d0407baSopenharmony_ci#define RK808_DAYS_REG 0x03
503d0407baSopenharmony_ci#define RK808_MONTHS_REG 0x04
513d0407baSopenharmony_ci#define RK808_YEARS_REG 0x05
523d0407baSopenharmony_ci#define RK808_WEEKS_REG 0x06
533d0407baSopenharmony_ci#define RK808_ALARM_SECONDS_REG 0x08
543d0407baSopenharmony_ci#define RK808_ALARM_MINUTES_REG 0x09
553d0407baSopenharmony_ci#define RK808_ALARM_HOURS_REG 0x0a
563d0407baSopenharmony_ci#define RK808_ALARM_DAYS_REG 0x0b
573d0407baSopenharmony_ci#define RK808_ALARM_MONTHS_REG 0x0c
583d0407baSopenharmony_ci#define RK808_ALARM_YEARS_REG 0x0d
593d0407baSopenharmony_ci#define RK808_RTC_CTRL_REG 0x10
603d0407baSopenharmony_ci#define RK808_RTC_STATUS_REG 0x11
613d0407baSopenharmony_ci#define RK808_RTC_INT_REG 0x12
623d0407baSopenharmony_ci#define RK808_RTC_COMP_LSB_REG 0x13
633d0407baSopenharmony_ci#define RK808_RTC_COMP_MSB_REG 0x14
643d0407baSopenharmony_ci#define RK808_ID_MSB 0x17
653d0407baSopenharmony_ci#define RK808_ID_LSB 0x18
663d0407baSopenharmony_ci#define RK808_CLK32OUT_REG 0x20
673d0407baSopenharmony_ci#define RK808_VB_MON_REG 0x21
683d0407baSopenharmony_ci#define RK808_THERMAL_REG 0x22
693d0407baSopenharmony_ci#define RK808_DCDC_EN_REG 0x23
703d0407baSopenharmony_ci#define RK808_LDO_EN_REG 0x24
713d0407baSopenharmony_ci#define RK808_SLEEP_SET_OFF_REG1 0x25
723d0407baSopenharmony_ci#define RK808_SLEEP_SET_OFF_REG2 0x26
733d0407baSopenharmony_ci#define RK808_DCDC_UV_STS_REG 0x27
743d0407baSopenharmony_ci#define RK808_DCDC_UV_ACT_REG 0x28
753d0407baSopenharmony_ci#define RK808_LDO_UV_STS_REG 0x29
763d0407baSopenharmony_ci#define RK808_LDO_UV_ACT_REG 0x2a
773d0407baSopenharmony_ci#define RK808_DCDC_PG_REG 0x2b
783d0407baSopenharmony_ci#define RK808_LDO_PG_REG 0x2c
793d0407baSopenharmony_ci#define RK808_VOUT_MON_TDB_REG 0x2d
803d0407baSopenharmony_ci#define RK808_BUCK1_CONFIG_REG 0x2e
813d0407baSopenharmony_ci#define RK808_BUCK1_ON_VSEL_REG 0x2f
823d0407baSopenharmony_ci#define RK808_BUCK1_SLP_VSEL_REG 0x30
833d0407baSopenharmony_ci#define RK808_BUCK1_DVS_VSEL_REG 0x31
843d0407baSopenharmony_ci#define RK808_BUCK2_CONFIG_REG 0x32
853d0407baSopenharmony_ci#define RK808_BUCK2_ON_VSEL_REG 0x33
863d0407baSopenharmony_ci#define RK808_BUCK2_SLP_VSEL_REG 0x34
873d0407baSopenharmony_ci#define RK808_BUCK2_DVS_VSEL_REG 0x35
883d0407baSopenharmony_ci#define RK808_BUCK3_CONFIG_REG 0x36
893d0407baSopenharmony_ci#define RK808_BUCK4_CONFIG_REG 0x37
903d0407baSopenharmony_ci#define RK808_BUCK4_ON_VSEL_REG 0x38
913d0407baSopenharmony_ci#define RK808_BUCK4_SLP_VSEL_REG 0x39
923d0407baSopenharmony_ci#define RK808_BOOST_CONFIG_REG 0x3a
933d0407baSopenharmony_ci#define RK808_LDO1_ON_VSEL_REG 0x3b
943d0407baSopenharmony_ci#define RK808_LDO1_SLP_VSEL_REG 0x3c
953d0407baSopenharmony_ci#define RK808_LDO2_ON_VSEL_REG 0x3d
963d0407baSopenharmony_ci#define RK808_LDO2_SLP_VSEL_REG 0x3e
973d0407baSopenharmony_ci#define RK808_LDO3_ON_VSEL_REG 0x3f
983d0407baSopenharmony_ci#define RK808_LDO3_SLP_VSEL_REG 0x40
993d0407baSopenharmony_ci#define RK808_LDO4_ON_VSEL_REG 0x41
1003d0407baSopenharmony_ci#define RK808_LDO4_SLP_VSEL_REG 0x42
1013d0407baSopenharmony_ci#define RK808_LDO5_ON_VSEL_REG 0x43
1023d0407baSopenharmony_ci#define RK808_LDO5_SLP_VSEL_REG 0x44
1033d0407baSopenharmony_ci#define RK808_LDO6_ON_VSEL_REG 0x45
1043d0407baSopenharmony_ci#define RK808_LDO6_SLP_VSEL_REG 0x46
1053d0407baSopenharmony_ci#define RK808_LDO7_ON_VSEL_REG 0x47
1063d0407baSopenharmony_ci#define RK808_LDO7_SLP_VSEL_REG 0x48
1073d0407baSopenharmony_ci#define RK808_LDO8_ON_VSEL_REG 0x49
1083d0407baSopenharmony_ci#define RK808_LDO8_SLP_VSEL_REG 0x4a
1093d0407baSopenharmony_ci#define RK808_DEVCTRL_REG 0x4b
1103d0407baSopenharmony_ci#define RK808_INT_STS_REG1 0x4c
1113d0407baSopenharmony_ci#define RK808_INT_STS_MSK_REG1 0x4d
1123d0407baSopenharmony_ci#define RK808_INT_STS_REG2 0x4e
1133d0407baSopenharmony_ci#define RK808_INT_STS_MSK_REG2 0x4f
1143d0407baSopenharmony_ci#define RK808_IO_POL_REG 0x50
1153d0407baSopenharmony_ci
1163d0407baSopenharmony_ci/* RK816 */
1173d0407baSopenharmony_cienum rk816_reg {
1183d0407baSopenharmony_ci    RK816_ID_DCDC1,
1193d0407baSopenharmony_ci    RK816_ID_DCDC2,
1203d0407baSopenharmony_ci    RK816_ID_DCDC3,
1213d0407baSopenharmony_ci    RK816_ID_DCDC4,
1223d0407baSopenharmony_ci    RK816_ID_LDO1,
1233d0407baSopenharmony_ci    RK816_ID_LDO2,
1243d0407baSopenharmony_ci    RK816_ID_LDO3,
1253d0407baSopenharmony_ci    RK816_ID_LDO4,
1263d0407baSopenharmony_ci    RK816_ID_LDO5,
1273d0407baSopenharmony_ci    RK816_ID_LDO6,
1283d0407baSopenharmony_ci};
1293d0407baSopenharmony_ci
1303d0407baSopenharmony_ci/* VERSION REGISTER */
1313d0407baSopenharmony_ci#define RK816_CHIP_NAME_REG 0x17
1323d0407baSopenharmony_ci#define RK816_CHIP_VER_REG 0x18
1333d0407baSopenharmony_ci#define RK816_OTP_VER_REG 0x19
1343d0407baSopenharmony_ci#define RK816_NUM_REGULATORS 10
1353d0407baSopenharmony_ci
1363d0407baSopenharmony_ci/* POWER ON/OFF REGISTER */
1373d0407baSopenharmony_ci#define RK816_VB_MON_REG 0x21
1383d0407baSopenharmony_ci#define RK816_THERMAL_REG 0x22
1393d0407baSopenharmony_ci#define RK816_PWRON_LP_INT_TIME_REG 0x47
1403d0407baSopenharmony_ci#define RK816_PWRON_DB_REG 0x48
1413d0407baSopenharmony_ci#define RK816_DEV_CTRL_REG 0x4B
1423d0407baSopenharmony_ci#define RK816_ON_SOURCE_REG 0xAE
1433d0407baSopenharmony_ci#define RK816_OFF_SOURCE_REG 0xAF
1443d0407baSopenharmony_ci
1453d0407baSopenharmony_ci/* POWER CHANNELS ENABLE REGISTER */
1463d0407baSopenharmony_ci#define RK816_DCDC_EN_REG1 0x23
1473d0407baSopenharmony_ci#define RK816_DCDC_EN_REG2 0x24
1483d0407baSopenharmony_ci#define RK816_SLP_DCDC_EN_REG 0x25
1493d0407baSopenharmony_ci#define RK816_SLP_LDO_EN_REG 0x26
1503d0407baSopenharmony_ci#define RK816_LDO_EN_REG1 0x27
1513d0407baSopenharmony_ci#define RK816_LDO_EN_REG2 0x28
1523d0407baSopenharmony_ci
1533d0407baSopenharmony_ci/* BUCK AND LDO CONFIG REGISTER */
1543d0407baSopenharmony_ci#define RK816_BUCK1_CONFIG_REG 0x2E
1553d0407baSopenharmony_ci#define RK816_BUCK1_ON_VSEL_REG 0x2F
1563d0407baSopenharmony_ci#define RK816_BUCK1_SLP_VSEL_REG 0x30
1573d0407baSopenharmony_ci#define RK816_BUCK2_CONFIG_REG 0x32
1583d0407baSopenharmony_ci#define RK816_BUCK2_ON_VSEL_REG 0x33
1593d0407baSopenharmony_ci#define RK816_BUCK2_SLP_VSEL_REG 0x34
1603d0407baSopenharmony_ci#define RK816_BUCK3_CONFIG_REG 0x36
1613d0407baSopenharmony_ci#define RK816_BUCK4_CONFIG_REG 0x37
1623d0407baSopenharmony_ci#define RK816_BUCK4_ON_VSEL_REG 0x38
1633d0407baSopenharmony_ci#define RK816_BUCK4_SLP_VSEL_REG 0x39
1643d0407baSopenharmony_ci#define RK816_LDO1_ON_VSEL_REG 0x3B
1653d0407baSopenharmony_ci#define RK816_LDO1_SLP_VSEL_REG 0x3C
1663d0407baSopenharmony_ci#define RK816_LDO2_ON_VSEL_REG 0x3D
1673d0407baSopenharmony_ci#define RK816_LDO2_SLP_VSEL_REG 0x3E
1683d0407baSopenharmony_ci#define RK816_LDO3_ON_VSEL_REG 0x3F
1693d0407baSopenharmony_ci#define RK816_LDO3_SLP_VSEL_REG 0x40
1703d0407baSopenharmony_ci#define RK816_LDO4_ON_VSEL_REG 0x41
1713d0407baSopenharmony_ci#define RK816_LDO4_SLP_VSEL_REG 0x42
1723d0407baSopenharmony_ci#define RK816_LDO5_ON_VSEL_REG 0x43
1733d0407baSopenharmony_ci#define RK816_LDO5_SLP_VSEL_REG 0x44
1743d0407baSopenharmony_ci#define RK816_LDO6_ON_VSEL_REG 0x45
1753d0407baSopenharmony_ci#define RK816_LDO6_SLP_VSEL_REG 0x46
1763d0407baSopenharmony_ci#define RK816_GPIO_IO_POL_REG 0x50
1773d0407baSopenharmony_ci
1783d0407baSopenharmony_ci/* CHARGER BOOST AND OTG REGISTER */
1793d0407baSopenharmony_ci#define RK816_OTG_BUCK_LDO_CONFIG_REG 0x2A
1803d0407baSopenharmony_ci#define RK816_CHRG_CONFIG_REG 0x2B
1813d0407baSopenharmony_ci#define RK816_BOOST_ON_VESL_REG 0x54
1823d0407baSopenharmony_ci#define RK816_BOOST_SLP_VSEL_REG 0x55
1833d0407baSopenharmony_ci#define RK816_CHRG_BOOST_CONFIG_REG 0x9A
1843d0407baSopenharmony_ci#define RK816_SUP_STS_REG 0xA0
1853d0407baSopenharmony_ci#define RK816_USB_CTRL_REG 0xA1
1863d0407baSopenharmony_ci#define RK816_CHRG_CTRL_REG1 0xA3
1873d0407baSopenharmony_ci#define RK816_CHRG_CTRL_REG2 0xA4
1883d0407baSopenharmony_ci#define RK816_CHRG_CTRL_REG3 0xA5
1893d0407baSopenharmony_ci#define RK816_BAT_CTRL_REG 0xA6
1903d0407baSopenharmony_ci#define RK816_BAT_HTS_TS_REG 0xA8
1913d0407baSopenharmony_ci#define RK816_BAT_LTS_TS_REG 0xA9
1923d0407baSopenharmony_ci
1933d0407baSopenharmony_ci#define RK816_TS_CTRL_REG 0xAC
1943d0407baSopenharmony_ci#define RK816_ADC_CTRL_REG 0xAD
1953d0407baSopenharmony_ci#define RK816_GGCON_REG 0xB0
1963d0407baSopenharmony_ci#define RK816_GGSTS_REG 0xB1
1973d0407baSopenharmony_ci#define RK816_ZERO_CUR_ADC_REGH 0xB2
1983d0407baSopenharmony_ci#define RK816_ZERO_CUR_ADC_REGL 0xB3
1993d0407baSopenharmony_ci#define RK816_GASCNT_CAL_REG3 0xB4
2003d0407baSopenharmony_ci#define RK816_GASCNT_CAL_REG2 0xB5
2013d0407baSopenharmony_ci#define RK816_GASCNT_CAL_REG1 0xB6
2023d0407baSopenharmony_ci#define RK816_GASCNT_CAL_REG0 0xB7
2033d0407baSopenharmony_ci#define RK816_GASCNT_REG3 0xB8
2043d0407baSopenharmony_ci#define RK816_GASCNT_REG2 0xB9
2053d0407baSopenharmony_ci#define RK816_GASCNT_REG1 0xBA
2063d0407baSopenharmony_ci#define RK816_GASCNT_REG0 0xBB
2073d0407baSopenharmony_ci#define RK816_BAT_CUR_AVG_REGH 0xBC
2083d0407baSopenharmony_ci#define RK816_BAT_CUR_AVG_REGL 0xBD
2093d0407baSopenharmony_ci#define RK816_TS_ADC_REGH 0xBE
2103d0407baSopenharmony_ci#define RK816_TS_ADC_REGL 0xBF
2113d0407baSopenharmony_ci#define RK816_USB_ADC_REGH 0xC0
2123d0407baSopenharmony_ci#define RK816_USB_ADC_REGL 0xC1
2133d0407baSopenharmony_ci#define RK816_BAT_OCV_REGH 0xC2
2143d0407baSopenharmony_ci#define RK816_BAT_OCV_REGL 0xC3
2153d0407baSopenharmony_ci#define RK816_BAT_VOL_REGH 0xC4
2163d0407baSopenharmony_ci#define RK816_BAT_VOL_REGL 0xC5
2173d0407baSopenharmony_ci#define RK816_RELAX_ENTRY_THRES_REGH 0xC6
2183d0407baSopenharmony_ci#define RK816_RELAX_ENTRY_THRES_REGL 0xC7
2193d0407baSopenharmony_ci#define RK816_RELAX_EXIT_THRES_REGH 0xC8
2203d0407baSopenharmony_ci#define RK816_RELAX_EXIT_THRES_REGL 0xC9
2213d0407baSopenharmony_ci#define RK816_RELAX_VOL1_REGH 0xCA
2223d0407baSopenharmony_ci#define RK816_RELAX_VOL1_REGL 0xCB
2233d0407baSopenharmony_ci#define RK816_RELAX_VOL2_REGH 0xCC
2243d0407baSopenharmony_ci#define RK816_RELAX_VOL2_REGL 0xCD
2253d0407baSopenharmony_ci#define RK816_RELAX_CUR1_REGH 0xCE
2263d0407baSopenharmony_ci#define RK816_RELAX_CUR1_REGL 0xCF
2273d0407baSopenharmony_ci#define RK816_RELAX_CUR2_REGH 0xD0
2283d0407baSopenharmony_ci#define RK816_RELAX_CUR2_REGL 0xD1
2293d0407baSopenharmony_ci#define RK816_CAL_OFFSET_REGH 0xD2
2303d0407baSopenharmony_ci#define RK816_CAL_OFFSET_REGL 0xD3
2313d0407baSopenharmony_ci#define RK816_NON_ACT_TIMER_CNT_REG 0xD4
2323d0407baSopenharmony_ci#define RK816_VCALIB0_REGH 0xD5
2333d0407baSopenharmony_ci#define RK816_VCALIB0_REGL 0xD6
2343d0407baSopenharmony_ci#define RK816_VCALIB1_REGH 0xD7
2353d0407baSopenharmony_ci#define RK816_VCALIB1_REGL 0xD8
2363d0407baSopenharmony_ci#define RK816_FCC_GASCNT_REG3 0xD9
2373d0407baSopenharmony_ci#define RK816_FCC_GASCNT_REG2 0xDA
2383d0407baSopenharmony_ci#define RK816_FCC_GASCNT_REG1 0xDB
2393d0407baSopenharmony_ci#define RK816_FCC_GASCNT_REG0 0xDC
2403d0407baSopenharmony_ci#define RK816_IOFFSET_REGH 0xDD
2413d0407baSopenharmony_ci#define RK816_IOFFSET_REGL 0xDE
2423d0407baSopenharmony_ci#define RK816_SLEEP_CON_SAMP_CUR_REG 0xDF
2433d0407baSopenharmony_ci
2443d0407baSopenharmony_ci/* DATA REGISTER */
2453d0407baSopenharmony_ci#define RK816_SOC_REG 0xE0
2463d0407baSopenharmony_ci#define RK816_REMAIN_CAP_REG3 0xE1
2473d0407baSopenharmony_ci#define RK816_REMAIN_CAP_REG2 0xE2
2483d0407baSopenharmony_ci#define RK816_REMAIN_CAP_REG1 0xE3
2493d0407baSopenharmony_ci#define RK816_REMAIN_CAP_REG0 0xE4
2503d0407baSopenharmony_ci#define RK816_UPDATE_LEVE_REG 0xE5
2513d0407baSopenharmony_ci#define RK816_NEW_FCC_REG3 0xE6
2523d0407baSopenharmony_ci#define RK816_NEW_FCC_REG2 0xE7
2533d0407baSopenharmony_ci#define RK816_NEW_FCC_REG1 0xE8
2543d0407baSopenharmony_ci#define RK816_NEW_FCC_REG0 0xE9
2553d0407baSopenharmony_ci#define RK816_NON_ACT_TIMER_CNT_REG_SAVE 0xEA
2563d0407baSopenharmony_ci#define RK816_OCV_VOL_VALID_REG 0xEB
2573d0407baSopenharmony_ci#define RK816_REBOOT_CNT_REG 0xEC
2583d0407baSopenharmony_ci#define RK816_PCB_IOFFSET_REG 0xED
2593d0407baSopenharmony_ci#define RK816_MISC_MARK_REG 0xEE
2603d0407baSopenharmony_ci#define RK816_HALT_CNT_REG 0xEF
2613d0407baSopenharmony_ci#define RK816_CALC_REST_REGH 0xF0
2623d0407baSopenharmony_ci#define RK816_CALC_REST_REGL 0xF1
2633d0407baSopenharmony_ci#define DATA18_REG 0xF2
2643d0407baSopenharmony_ci
2653d0407baSopenharmony_ci/* INTERRUPT REGISTER */
2663d0407baSopenharmony_ci#define RK816_INT_STS_REG1 0x49
2673d0407baSopenharmony_ci#define RK816_INT_STS_MSK_REG1 0x4A
2683d0407baSopenharmony_ci#define RK816_INT_STS_REG2 0x4C
2693d0407baSopenharmony_ci#define RK816_INT_STS_MSK_REG2 0x4D
2703d0407baSopenharmony_ci#define RK816_INT_STS_REG3 0x4E
2713d0407baSopenharmony_ci#define RK816_INT_STS_MSK_REG3 0x4F
2723d0407baSopenharmony_ci#define RK816_GPIO_IO_POL_REG 0x50
2733d0407baSopenharmony_ci
2743d0407baSopenharmony_ci#define RK816_DATA18_REG 0xF2
2753d0407baSopenharmony_ci
2763d0407baSopenharmony_ci/* IRQ Definitions */
2773d0407baSopenharmony_ci#define RK816_IRQ_PWRON_FALL 0
2783d0407baSopenharmony_ci#define RK816_IRQ_PWRON_RISE 1
2793d0407baSopenharmony_ci#define RK816_IRQ_VB_LOW 2
2803d0407baSopenharmony_ci#define RK816_IRQ_PWRON 3
2813d0407baSopenharmony_ci#define RK816_IRQ_PWRON_LP 4
2823d0407baSopenharmony_ci#define RK816_IRQ_HOTDIE 5
2833d0407baSopenharmony_ci#define RK816_IRQ_RTC_ALARM 6
2843d0407baSopenharmony_ci#define RK816_IRQ_RTC_PERIOD 7
2853d0407baSopenharmony_ci#define RK816_IRQ_USB_OV 8
2863d0407baSopenharmony_ci#define RK816_IRQ_PLUG_IN 9
2873d0407baSopenharmony_ci#define RK816_IRQ_PLUG_OUT 10
2883d0407baSopenharmony_ci#define RK816_IRQ_CHG_OK 11
2893d0407baSopenharmony_ci#define RK816_IRQ_CHG_TE 12
2903d0407baSopenharmony_ci#define RK816_IRQ_CHG_TS 13
2913d0407baSopenharmony_ci#define RK816_IRQ_CHG_CVTLIM 14
2923d0407baSopenharmony_ci#define RK816_IRQ_DISCHG_ILIM 15
2933d0407baSopenharmony_ci
2943d0407baSopenharmony_ci#define RK816_IRQ_PWRON_FALL_MSK BIT(5)
2953d0407baSopenharmony_ci#define RK816_IRQ_PWRON_RISE_MSK BIT(6)
2963d0407baSopenharmony_ci#define RK816_IRQ_VB_LOW_MSK BIT(1)
2973d0407baSopenharmony_ci#define RK816_IRQ_PWRON_MSK BIT(2)
2983d0407baSopenharmony_ci#define RK816_IRQ_PWRON_LP_MSK BIT(3)
2993d0407baSopenharmony_ci#define RK816_IRQ_HOTDIE_MSK BIT(4)
3003d0407baSopenharmony_ci#define RK816_IRQ_RTC_ALARM_MSK BIT(5)
3013d0407baSopenharmony_ci#define RK816_IRQ_RTC_PERIOD_MSK BIT(6)
3023d0407baSopenharmony_ci#define RK816_IRQ_USB_OV_MSK BIT(7)
3033d0407baSopenharmony_ci#define RK816_IRQ_PLUG_IN_MSK BIT(0)
3043d0407baSopenharmony_ci#define RK816_IRQ_PLUG_OUT_MSK BIT(1)
3053d0407baSopenharmony_ci#define RK816_IRQ_CHG_OK_MSK BIT(2)
3063d0407baSopenharmony_ci#define RK816_IRQ_CHG_TE_MSK BIT(3)
3073d0407baSopenharmony_ci#define RK816_IRQ_CHG_TS_MSK BIT(4)
3083d0407baSopenharmony_ci#define RK816_IRQ_CHG_CVTLIM_MSK BIT(6)
3093d0407baSopenharmony_ci#define RK816_IRQ_DISCHG_ILIM_MSK BIT(7)
3103d0407baSopenharmony_ci
3113d0407baSopenharmony_ci#define RK816_VBAT_LOW_2V8 0x00
3123d0407baSopenharmony_ci#define RK816_VBAT_LOW_2V9 0x01
3133d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V0 0x02
3143d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V1 0x03
3153d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V2 0x04
3163d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V3 0x05
3173d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V4 0x06
3183d0407baSopenharmony_ci#define RK816_VBAT_LOW_3V5 0x07
3193d0407baSopenharmony_ci#define RK816_PWR_FALL_INT_STATUS (0x1 << 5)
3203d0407baSopenharmony_ci#define RK816_PWR_RISE_INT_STATUS (0x1 << 6)
3213d0407baSopenharmony_ci#define RK816_ALARM_INT_STATUS (0x1 << 5)
3223d0407baSopenharmony_ci#define EN_VBAT_LOW_IRQ (0x1 << 4)
3233d0407baSopenharmony_ci#define VBAT_LOW_ACT_MASK (0x1 << 4)
3243d0407baSopenharmony_ci#define RTC_TIMER_ALARM_INT_MSK (0x3 << 2)
3253d0407baSopenharmony_ci#define RTC_TIMER_ALARM_INT_DIS (0x0 << 2)
3263d0407baSopenharmony_ci#define RTC_PERIOD_ALARM_INT_MSK (0x3 << 5)
3273d0407baSopenharmony_ci#define RTC_PERIOD_ALARM_INT_ST (0x3 << 5)
3283d0407baSopenharmony_ci#define RTC_PERIOD_ALARM_INT_DIS (0x3 << 5)
3293d0407baSopenharmony_ci#define RTC_PERIOD_ALARM_INT_EN (0x9f)
3303d0407baSopenharmony_ci#define REG_WRITE_MSK 0xff
3313d0407baSopenharmony_ci#define BUCK4_MAX_ILIMIT 0x2c
3323d0407baSopenharmony_ci#define BUCK_RATE_MSK (0x3 << 3)
3333d0407baSopenharmony_ci#define BUCK_RATE_12_5MV_US (0x2 << 3)
3343d0407baSopenharmony_ci#define ALL_INT_FLAGS_ST 0xff
3353d0407baSopenharmony_ci#define PLUGIN_OUT_INT_EN 0xfc
3363d0407baSopenharmony_ci#define RK816_PWRON_FALL_RISE_INT_EN 0x9f
3373d0407baSopenharmony_ci#define BUCK1_2_IMAX_MAX (0x3 << 6)
3383d0407baSopenharmony_ci#define BUCK3_4_IMAX_MAX (0x3 << 3)
3393d0407baSopenharmony_ci#define BOOST_DISABLE ((0x1 << 5) | (0x0 << 1))
3403d0407baSopenharmony_ci#define BUCK4_VRP_3PERCENT 0xc0
3413d0407baSopenharmony_ci#define RK816_BUCK_DVS_CONFIRM (0x1 << 7)
3423d0407baSopenharmony_ci#define RK816_TYPE_ES2 0x05
3433d0407baSopenharmony_ci#define RK816_CHIP_VERSION_MASK 0x0f
3443d0407baSopenharmony_ci
3453d0407baSopenharmony_ci/* RK818 */
3463d0407baSopenharmony_ci#define RK818_DCDC1 0
3473d0407baSopenharmony_ci#define RK818_LDO1 4
3483d0407baSopenharmony_ci#define RK818_NUM_REGULATORS 17
3493d0407baSopenharmony_ci
3503d0407baSopenharmony_cienum rk818_reg {
3513d0407baSopenharmony_ci    RK818_ID_DCDC1,
3523d0407baSopenharmony_ci    RK818_ID_DCDC2,
3533d0407baSopenharmony_ci    RK818_ID_DCDC3,
3543d0407baSopenharmony_ci    RK818_ID_DCDC4,
3553d0407baSopenharmony_ci    RK818_ID_BOOST,
3563d0407baSopenharmony_ci    RK818_ID_LDO1,
3573d0407baSopenharmony_ci    RK818_ID_LDO2,
3583d0407baSopenharmony_ci    RK818_ID_LDO3,
3593d0407baSopenharmony_ci    RK818_ID_LDO4,
3603d0407baSopenharmony_ci    RK818_ID_LDO5,
3613d0407baSopenharmony_ci    RK818_ID_LDO6,
3623d0407baSopenharmony_ci    RK818_ID_LDO7,
3633d0407baSopenharmony_ci    RK818_ID_LDO8,
3643d0407baSopenharmony_ci    RK818_ID_LDO9,
3653d0407baSopenharmony_ci    RK818_ID_SWITCH,
3663d0407baSopenharmony_ci    RK818_ID_HDMI_SWITCH,
3673d0407baSopenharmony_ci    RK818_ID_OTG_SWITCH,
3683d0407baSopenharmony_ci};
3693d0407baSopenharmony_ci
3703d0407baSopenharmony_ci#define RK818_VB_MON_REG 0x21
3713d0407baSopenharmony_ci#define RK818_THERMAL_REG 0x22
3723d0407baSopenharmony_ci#define RK818_DCDC_EN_REG 0x23
3733d0407baSopenharmony_ci#define RK818_LDO_EN_REG 0x24
3743d0407baSopenharmony_ci#define RK818_SLEEP_SET_OFF_REG1 0x25
3753d0407baSopenharmony_ci#define RK818_SLEEP_SET_OFF_REG2 0x26
3763d0407baSopenharmony_ci#define RK818_DCDC_UV_STS_REG 0x27
3773d0407baSopenharmony_ci#define RK818_DCDC_UV_ACT_REG 0x28
3783d0407baSopenharmony_ci#define RK818_LDO_UV_STS_REG 0x29
3793d0407baSopenharmony_ci#define RK818_LDO_UV_ACT_REG 0x2a
3803d0407baSopenharmony_ci#define RK818_DCDC_PG_REG 0x2b
3813d0407baSopenharmony_ci#define RK818_LDO_PG_REG 0x2c
3823d0407baSopenharmony_ci#define RK818_VOUT_MON_TDB_REG 0x2d
3833d0407baSopenharmony_ci#define RK818_BUCK1_CONFIG_REG 0x2e
3843d0407baSopenharmony_ci#define RK818_BUCK1_ON_VSEL_REG 0x2f
3853d0407baSopenharmony_ci#define RK818_BUCK1_SLP_VSEL_REG 0x30
3863d0407baSopenharmony_ci#define RK818_BUCK2_CONFIG_REG 0x32
3873d0407baSopenharmony_ci#define RK818_BUCK2_ON_VSEL_REG 0x33
3883d0407baSopenharmony_ci#define RK818_BUCK2_SLP_VSEL_REG 0x34
3893d0407baSopenharmony_ci#define RK818_BUCK3_CONFIG_REG 0x36
3903d0407baSopenharmony_ci#define RK818_BUCK4_CONFIG_REG 0x37
3913d0407baSopenharmony_ci#define RK818_BUCK4_ON_VSEL_REG 0x38
3923d0407baSopenharmony_ci#define RK818_BUCK4_SLP_VSEL_REG 0x39
3933d0407baSopenharmony_ci#define RK818_BOOST_CONFIG_REG 0x3a
3943d0407baSopenharmony_ci#define RK818_LDO1_ON_VSEL_REG 0x3b
3953d0407baSopenharmony_ci#define RK818_LDO1_SLP_VSEL_REG 0x3c
3963d0407baSopenharmony_ci#define RK818_LDO2_ON_VSEL_REG 0x3d
3973d0407baSopenharmony_ci#define RK818_LDO2_SLP_VSEL_REG 0x3e
3983d0407baSopenharmony_ci#define RK818_LDO3_ON_VSEL_REG 0x3f
3993d0407baSopenharmony_ci#define RK818_LDO3_SLP_VSEL_REG 0x40
4003d0407baSopenharmony_ci#define RK818_LDO4_ON_VSEL_REG 0x41
4013d0407baSopenharmony_ci#define RK818_LDO4_SLP_VSEL_REG 0x42
4023d0407baSopenharmony_ci#define RK818_LDO5_ON_VSEL_REG 0x43
4033d0407baSopenharmony_ci#define RK818_LDO5_SLP_VSEL_REG 0x44
4043d0407baSopenharmony_ci#define RK818_LDO6_ON_VSEL_REG 0x45
4053d0407baSopenharmony_ci#define RK818_LDO6_SLP_VSEL_REG 0x46
4063d0407baSopenharmony_ci#define RK818_LDO7_ON_VSEL_REG 0x47
4073d0407baSopenharmony_ci#define RK818_LDO7_SLP_VSEL_REG 0x48
4083d0407baSopenharmony_ci#define RK818_LDO8_ON_VSEL_REG 0x49
4093d0407baSopenharmony_ci#define RK818_LDO8_SLP_VSEL_REG 0x4a
4103d0407baSopenharmony_ci#define RK818_BOOST_LDO9_ON_VSEL_REG 0x54
4113d0407baSopenharmony_ci#define RK818_BOOST_LDO9_SLP_VSEL_REG 0x55
4123d0407baSopenharmony_ci#define RK818_DEVCTRL_REG 0x4b
4133d0407baSopenharmony_ci#define RK818_INT_STS_REG1 0X4c
4143d0407baSopenharmony_ci#define RK818_INT_STS_MSK_REG1 0x4d
4153d0407baSopenharmony_ci#define RK818_INT_STS_REG2 0x4e
4163d0407baSopenharmony_ci#define RK818_INT_STS_MSK_REG2 0x4f
4173d0407baSopenharmony_ci#define RK818_IO_POL_REG 0x50
4183d0407baSopenharmony_ci#define RK818_H5V_EN_REG 0x52
4193d0407baSopenharmony_ci#define RK818_SLEEP_SET_OFF_REG3 0x53
4203d0407baSopenharmony_ci#define RK818_BOOST_LDO9_ON_VSEL_REG 0x54
4213d0407baSopenharmony_ci#define RK818_BOOST_LDO9_SLP_VSEL_REG 0x55
4223d0407baSopenharmony_ci#define RK818_BOOST_CTRL_REG 0x56
4233d0407baSopenharmony_ci#define RK818_DCDC_ILMAX 0x90
4243d0407baSopenharmony_ci#define RK818_CHRG_COMP_REG 0x9a
4253d0407baSopenharmony_ci#define RK818_SUP_STS_REG 0xa0
4263d0407baSopenharmony_ci#define RK818_USB_CTRL_REG 0xa1
4273d0407baSopenharmony_ci#define RK818_CHRG_CTRL_REG1 0xa3
4283d0407baSopenharmony_ci#define RK818_CHRG_CTRL_REG2 0xa4
4293d0407baSopenharmony_ci#define RK818_CHRG_CTRL_REG3 0xa5
4303d0407baSopenharmony_ci#define RK818_BAT_CTRL_REG 0xa6
4313d0407baSopenharmony_ci#define RK818_BAT_HTS_TS1_REG 0xa8
4323d0407baSopenharmony_ci#define RK818_BAT_LTS_TS1_REG 0xa9
4333d0407baSopenharmony_ci#define RK818_BAT_HTS_TS2_REG 0xaa
4343d0407baSopenharmony_ci#define RK818_BAT_LTS_TS2_REG 0xab
4353d0407baSopenharmony_ci#define RK818_TS_CTRL_REG 0xac
4363d0407baSopenharmony_ci#define RK818_ADC_CTRL_REG 0xad
4373d0407baSopenharmony_ci#define RK818_ON_SOURCE_REG 0xae
4383d0407baSopenharmony_ci#define RK818_OFF_SOURCE_REG 0xaf
4393d0407baSopenharmony_ci#define RK818_GGCON_REG 0xb0
4403d0407baSopenharmony_ci#define RK818_GGSTS_REG 0xb1
4413d0407baSopenharmony_ci#define RK818_FRAME_SMP_INTERV_REG 0xb2
4423d0407baSopenharmony_ci#define RK818_AUTO_SLP_CUR_THR_REG 0xb3
4433d0407baSopenharmony_ci#define RK818_GASCNT_CAL_REG3 0xb4
4443d0407baSopenharmony_ci#define RK818_GASCNT_CAL_REG2 0xb5
4453d0407baSopenharmony_ci#define RK818_GASCNT_CAL_REG1 0xb6
4463d0407baSopenharmony_ci#define RK818_GASCNT_CAL_REG0 0xb7
4473d0407baSopenharmony_ci#define RK818_GASCNT3_REG 0xb8
4483d0407baSopenharmony_ci#define RK818_GASCNT2_REG 0xb9
4493d0407baSopenharmony_ci#define RK818_GASCNT1_REG 0xba
4503d0407baSopenharmony_ci#define RK818_GASCNT0_REG 0xbb
4513d0407baSopenharmony_ci#define RK818_BAT_CUR_AVG_REGH 0xbc
4523d0407baSopenharmony_ci#define RK818_BAT_CUR_AVG_REGL 0xbd
4533d0407baSopenharmony_ci#define RK818_TS1_ADC_REGH 0xbe
4543d0407baSopenharmony_ci#define RK818_TS1_ADC_REGL 0xbf
4553d0407baSopenharmony_ci#define RK818_TS2_ADC_REGH 0xc0
4563d0407baSopenharmony_ci#define RK818_TS2_ADC_REGL 0xc1
4573d0407baSopenharmony_ci#define RK818_BAT_OCV_REGH 0xc2
4583d0407baSopenharmony_ci#define RK818_BAT_OCV_REGL 0xc3
4593d0407baSopenharmony_ci#define RK818_BAT_VOL_REGH 0xc4
4603d0407baSopenharmony_ci#define RK818_BAT_VOL_REGL 0xc5
4613d0407baSopenharmony_ci#define RK818_RELAX_ENTRY_THRES_REGH 0xc6
4623d0407baSopenharmony_ci#define RK818_RELAX_ENTRY_THRES_REGL 0xc7
4633d0407baSopenharmony_ci#define RK818_RELAX_EXIT_THRES_REGH 0xc8
4643d0407baSopenharmony_ci#define RK818_RELAX_EXIT_THRES_REGL 0xc9
4653d0407baSopenharmony_ci#define RK818_RELAX_VOL1_REGH 0xca
4663d0407baSopenharmony_ci#define RK818_RELAX_VOL1_REGL 0xcb
4673d0407baSopenharmony_ci#define RK818_RELAX_VOL2_REGH 0xcc
4683d0407baSopenharmony_ci#define RK818_RELAX_VOL2_REGL 0xcd
4693d0407baSopenharmony_ci#define RK818_BAT_CUR_R_CALC_REGH 0xce
4703d0407baSopenharmony_ci#define RK818_BAT_CUR_R_CALC_REGL 0xcf
4713d0407baSopenharmony_ci#define RK818_BAT_VOL_R_CALC_REGH 0xd0
4723d0407baSopenharmony_ci#define RK818_BAT_VOL_R_CALC_REGL 0xd1
4733d0407baSopenharmony_ci#define RK818_CAL_OFFSET_REGH 0xd2
4743d0407baSopenharmony_ci#define RK818_CAL_OFFSET_REGL 0xd3
4753d0407baSopenharmony_ci#define RK818_NON_ACT_TIMER_CNT_REG 0xd4
4763d0407baSopenharmony_ci#define RK818_VCALIB0_REGH 0xd5
4773d0407baSopenharmony_ci#define RK818_VCALIB0_REGL 0xd6
4783d0407baSopenharmony_ci#define RK818_VCALIB1_REGH 0xd7
4793d0407baSopenharmony_ci#define RK818_VCALIB1_REGL 0xd8
4803d0407baSopenharmony_ci#define RK818_IOFFSET_REGH 0xdd
4813d0407baSopenharmony_ci#define RK818_IOFFSET_REGL 0xde
4823d0407baSopenharmony_ci#define RK818_SOC_REG 0xe0
4833d0407baSopenharmony_ci#define RK818_REMAIN_CAP_REG3 0xe1
4843d0407baSopenharmony_ci#define RK818_REMAIN_CAP_REG2 0xe2
4853d0407baSopenharmony_ci#define RK818_REMAIN_CAP_REG1 0xe3
4863d0407baSopenharmony_ci#define RK818_REMAIN_CAP_REG0 0xe4
4873d0407baSopenharmony_ci#define RK818_UPDAT_LEVE_REG 0xe5
4883d0407baSopenharmony_ci#define RK818_NEW_FCC_REG3 0xe6
4893d0407baSopenharmony_ci#define RK818_NEW_FCC_REG2 0xe7
4903d0407baSopenharmony_ci#define RK818_NEW_FCC_REG1 0xe8
4913d0407baSopenharmony_ci#define RK818_NEW_FCC_REG0 0xe9
4923d0407baSopenharmony_ci#define RK818_NON_ACT_TIMER_CNT_SAVE_REG 0xea
4933d0407baSopenharmony_ci#define RK818_OCV_VOL_VALID_REG 0xeb
4943d0407baSopenharmony_ci#define RK818_REBOOT_CNT_REG 0xec
4953d0407baSopenharmony_ci#define RK818_POFFSET_REG 0xed
4963d0407baSopenharmony_ci#define RK818_MISC_MARK_REG 0xee
4973d0407baSopenharmony_ci#define RK818_HALT_CNT_REG 0xef
4983d0407baSopenharmony_ci#define RK818_CALC_REST_REGH 0xf0
4993d0407baSopenharmony_ci#define RK818_CALC_REST_REGL 0xf1
5003d0407baSopenharmony_ci#define RK818_SAVE_DATA19 0xf2
5013d0407baSopenharmony_ci#define RK818_NUM_REGULATOR 17
5023d0407baSopenharmony_ci
5033d0407baSopenharmony_ci#define RK818_H5V_EN BIT(0)
5043d0407baSopenharmony_ci#define RK818_REF_RDY_CTRL BIT(1)
5053d0407baSopenharmony_ci#define RK818_USB_ILIM_SEL_MASK 0xf
5063d0407baSopenharmony_ci#define RK818_USB_ILMIN_2000MA 0x7
5073d0407baSopenharmony_ci#define RK818_USB_CHG_SD_VSEL_MASK 0x70
5083d0407baSopenharmony_ci
5093d0407baSopenharmony_ci/* RK805 */
5103d0407baSopenharmony_cienum rk805_reg {
5113d0407baSopenharmony_ci    RK805_ID_DCDC1,
5123d0407baSopenharmony_ci    RK805_ID_DCDC2,
5133d0407baSopenharmony_ci    RK805_ID_DCDC3,
5143d0407baSopenharmony_ci    RK805_ID_DCDC4,
5153d0407baSopenharmony_ci    RK805_ID_LDO1,
5163d0407baSopenharmony_ci    RK805_ID_LDO2,
5173d0407baSopenharmony_ci    RK805_ID_LDO3,
5183d0407baSopenharmony_ci};
5193d0407baSopenharmony_ci
5203d0407baSopenharmony_ci/* CONFIG REGISTER */
5213d0407baSopenharmony_ci#define RK805_VB_MON_REG 0x21
5223d0407baSopenharmony_ci#define RK805_THERMAL_REG 0x22
5233d0407baSopenharmony_ci
5243d0407baSopenharmony_ci/* POWER CHANNELS ENABLE REGISTER */
5253d0407baSopenharmony_ci#define RK805_DCDC_EN_REG 0x23
5263d0407baSopenharmony_ci#define RK805_SLP_DCDC_EN_REG 0x25
5273d0407baSopenharmony_ci#define RK805_SLP_LDO_EN_REG 0x26
5283d0407baSopenharmony_ci#define RK805_LDO_EN_REG 0x27
5293d0407baSopenharmony_ci
5303d0407baSopenharmony_ci/* BUCK AND LDO CONFIG REGISTER */
5313d0407baSopenharmony_ci#define RK805_BUCK_LDO_SLP_LP_EN_REG 0x2A
5323d0407baSopenharmony_ci#define RK805_BUCK1_CONFIG_REG 0x2E
5333d0407baSopenharmony_ci#define RK805_BUCK1_ON_VSEL_REG 0x2F
5343d0407baSopenharmony_ci#define RK805_BUCK1_SLP_VSEL_REG 0x30
5353d0407baSopenharmony_ci#define RK805_BUCK2_CONFIG_REG 0x32
5363d0407baSopenharmony_ci#define RK805_BUCK2_ON_VSEL_REG 0x33
5373d0407baSopenharmony_ci#define RK805_BUCK2_SLP_VSEL_REG 0x34
5383d0407baSopenharmony_ci#define RK805_BUCK3_CONFIG_REG 0x36
5393d0407baSopenharmony_ci#define RK805_BUCK4_CONFIG_REG 0x37
5403d0407baSopenharmony_ci#define RK805_BUCK4_ON_VSEL_REG 0x38
5413d0407baSopenharmony_ci#define RK805_BUCK4_SLP_VSEL_REG 0x39
5423d0407baSopenharmony_ci#define RK805_LDO1_ON_VSEL_REG 0x3B
5433d0407baSopenharmony_ci#define RK805_LDO1_SLP_VSEL_REG 0x3C
5443d0407baSopenharmony_ci#define RK805_LDO2_ON_VSEL_REG 0x3D
5453d0407baSopenharmony_ci#define RK805_LDO2_SLP_VSEL_REG 0x3E
5463d0407baSopenharmony_ci#define RK805_LDO3_ON_VSEL_REG 0x3F
5473d0407baSopenharmony_ci#define RK805_LDO3_SLP_VSEL_REG 0x40
5483d0407baSopenharmony_ci
5493d0407baSopenharmony_ci/* INTERRUPT REGISTER */
5503d0407baSopenharmony_ci#define RK805_PWRON_LP_INT_TIME_REG 0x47
5513d0407baSopenharmony_ci#define RK805_PWRON_DB_REG 0x48
5523d0407baSopenharmony_ci#define RK805_DEV_CTRL_REG 0x4B
5533d0407baSopenharmony_ci#define RK805_INT_STS_REG 0x4C
5543d0407baSopenharmony_ci#define RK805_INT_STS_MSK_REG 0x4D
5553d0407baSopenharmony_ci#define RK805_GPIO_IO_POL_REG 0x50
5563d0407baSopenharmony_ci#define RK805_OUT_REG 0x52
5573d0407baSopenharmony_ci#define RK805_ON_SOURCE_REG 0xAE
5583d0407baSopenharmony_ci#define RK805_OFF_SOURCE_REG 0xAF
5593d0407baSopenharmony_ci
5603d0407baSopenharmony_ci#define RK805_NUM_REGULATORS 7
5613d0407baSopenharmony_ci
5623d0407baSopenharmony_ci#define RK805_PWRON_FALL_RISE_INT_EN 0x0
5633d0407baSopenharmony_ci#define RK805_PWRON_FALL_RISE_INT_MSK 0x81
5643d0407baSopenharmony_ci
5653d0407baSopenharmony_ci/* RK805 IRQ Definitions */
5663d0407baSopenharmony_ci#define RK805_IRQ_VB_LOW 1
5673d0407baSopenharmony_ci#define RK805_IRQ_PWRON 2
5683d0407baSopenharmony_ci#define RK805_IRQ_PWRON_LP 3
5693d0407baSopenharmony_ci#define RK805_IRQ_HOTDIE 4
5703d0407baSopenharmony_ci#define RK805_IRQ_RTC_ALARM 5
5713d0407baSopenharmony_ci#define RK805_IRQ_RTC_PERIOD 6
5723d0407baSopenharmony_ci
5733d0407baSopenharmony_ci/*
5743d0407baSopenharmony_ci * When PMIC irq occurs, regmap-irq.c will traverse all PMIC child
5753d0407baSopenharmony_ci * interrupts from low index 0 to high index, we give fall interrupt
5763d0407baSopenharmony_ci * high priority to be called earlier than rise, so that it can be
5773d0407baSopenharmony_ci * override by late rise event. This can helps to solve key release
5783d0407baSopenharmony_ci * glitch which make a wrongly fall event immediately after rise.
5793d0407baSopenharmony_ci */
5803d0407baSopenharmony_ci#define RK805_IRQ_PWRON_FALL 0
5813d0407baSopenharmony_ci#define RK805_IRQ_PWRON_RISE 7
5823d0407baSopenharmony_ci
5833d0407baSopenharmony_ci#define RK805_IRQ_PWRON_RISE_MSK BIT(0)
5843d0407baSopenharmony_ci#define RK805_IRQ_VB_LOW_MSK BIT(1)
5853d0407baSopenharmony_ci#define RK805_IRQ_PWRON_MSK BIT(2)
5863d0407baSopenharmony_ci#define RK805_IRQ_PWRON_LP_MSK BIT(3)
5873d0407baSopenharmony_ci#define RK805_IRQ_HOTDIE_MSK BIT(4)
5883d0407baSopenharmony_ci#define RK805_IRQ_RTC_ALARM_MSK BIT(5)
5893d0407baSopenharmony_ci#define RK805_IRQ_RTC_PERIOD_MSK BIT(6)
5903d0407baSopenharmony_ci#define RK805_IRQ_PWRON_FALL_MSK BIT(7)
5913d0407baSopenharmony_ci
5923d0407baSopenharmony_ci#define RK805_PWR_RISE_INT_STATUS BIT(0)
5933d0407baSopenharmony_ci#define RK805_VB_LOW_INT_STATUS BIT(1)
5943d0407baSopenharmony_ci#define RK805_PWRON_INT_STATUS BIT(2)
5953d0407baSopenharmony_ci#define RK805_PWRON_LP_INT_STATUS BIT(3)
5963d0407baSopenharmony_ci#define RK805_HOTDIE_INT_STATUS BIT(4)
5973d0407baSopenharmony_ci#define RK805_ALARM_INT_STATUS BIT(5)
5983d0407baSopenharmony_ci#define RK805_PERIOD_INT_STATUS BIT(6)
5993d0407baSopenharmony_ci#define RK805_PWR_FALL_INT_STATUS BIT(7)
6003d0407baSopenharmony_ci
6013d0407baSopenharmony_ci#define RK805_BUCK1_2_ILMAX_MASK (3 << 6)
6023d0407baSopenharmony_ci#define RK805_BUCK3_4_ILMAX_MASK (3 << 3)
6033d0407baSopenharmony_ci#define RK805_RTC_PERIOD_INT_MASK (1 << 6)
6043d0407baSopenharmony_ci#define RK805_RTC_ALARM_INT_MASK (1 << 5)
6053d0407baSopenharmony_ci#define RK805_INT_ALARM_EN (1 << 3)
6063d0407baSopenharmony_ci#define RK805_INT_TIMER_EN (1 << 2)
6073d0407baSopenharmony_ci
6083d0407baSopenharmony_ci#define RK805_SLP_LDO_EN_OFFSET (-1)
6093d0407baSopenharmony_ci#define RK805_SLP_DCDC_EN_OFFSET 2
6103d0407baSopenharmony_ci
6113d0407baSopenharmony_ci#define RK805_RAMP_RATE_OFFSET 3
6123d0407baSopenharmony_ci#define RK805_RAMP_RATE_MASK (3 << RK805_RAMP_RATE_OFFSET)
6133d0407baSopenharmony_ci#define RK805_RAMP_RATE_3MV_PER_US (0 << RK805_RAMP_RATE_OFFSET)
6143d0407baSopenharmony_ci#define RK805_RAMP_RATE_6MV_PER_US (1 << RK805_RAMP_RATE_OFFSET)
6153d0407baSopenharmony_ci#define RK805_RAMP_RATE_12_5MV_PER_US (2 << RK805_RAMP_RATE_OFFSET)
6163d0407baSopenharmony_ci#define RK805_RAMP_RATE_25MV_PER_US (3 << RK805_RAMP_RATE_OFFSET)
6173d0407baSopenharmony_ci
6183d0407baSopenharmony_ci/* RK808 IRQ Definitions */
6193d0407baSopenharmony_ci#define RK808_IRQ_VOUT_LO 0
6203d0407baSopenharmony_ci#define RK808_IRQ_VB_LO 1
6213d0407baSopenharmony_ci#define RK808_IRQ_PWRON 2
6223d0407baSopenharmony_ci#define RK808_IRQ_PWRON_LP 3
6233d0407baSopenharmony_ci#define RK808_IRQ_HOTDIE 4
6243d0407baSopenharmony_ci#define RK808_IRQ_RTC_ALARM 5
6253d0407baSopenharmony_ci#define RK808_IRQ_RTC_PERIOD 6
6263d0407baSopenharmony_ci#define RK808_IRQ_PLUG_IN_INT 7
6273d0407baSopenharmony_ci#define RK808_IRQ_PLUG_OUT_INT 8
6283d0407baSopenharmony_ci#define RK808_NUM_IRQ 9
6293d0407baSopenharmony_ci
6303d0407baSopenharmony_ci#define RK808_IRQ_VOUT_LO_MSK BIT(0)
6313d0407baSopenharmony_ci#define RK808_IRQ_VB_LO_MSK BIT(1)
6323d0407baSopenharmony_ci#define RK808_IRQ_PWRON_MSK BIT(2)
6333d0407baSopenharmony_ci#define RK808_IRQ_PWRON_LP_MSK BIT(3)
6343d0407baSopenharmony_ci#define RK808_IRQ_HOTDIE_MSK BIT(4)
6353d0407baSopenharmony_ci#define RK808_IRQ_RTC_ALARM_MSK BIT(5)
6363d0407baSopenharmony_ci#define RK808_IRQ_RTC_PERIOD_MSK BIT(6)
6373d0407baSopenharmony_ci#define RK808_IRQ_PLUG_IN_INT_MSK BIT(0)
6383d0407baSopenharmony_ci#define RK808_IRQ_PLUG_OUT_INT_MSK BIT(1)
6393d0407baSopenharmony_ci
6403d0407baSopenharmony_ci/* RK818 IRQ Definitions */
6413d0407baSopenharmony_ci#define RK818_IRQ_VOUT_LO 0
6423d0407baSopenharmony_ci#define RK818_IRQ_VB_LO 1
6433d0407baSopenharmony_ci#define RK818_IRQ_PWRON 2
6443d0407baSopenharmony_ci#define RK818_IRQ_PWRON_LP 3
6453d0407baSopenharmony_ci#define RK818_IRQ_HOTDIE 4
6463d0407baSopenharmony_ci#define RK818_IRQ_RTC_ALARM 5
6473d0407baSopenharmony_ci#define RK818_IRQ_RTC_PERIOD 6
6483d0407baSopenharmony_ci#define RK818_IRQ_USB_OV 7
6493d0407baSopenharmony_ci#define RK818_IRQ_PLUG_IN 8
6503d0407baSopenharmony_ci#define RK818_IRQ_PLUG_OUT 9
6513d0407baSopenharmony_ci#define RK818_IRQ_CHG_OK 10
6523d0407baSopenharmony_ci#define RK818_IRQ_CHG_TE 11
6533d0407baSopenharmony_ci#define RK818_IRQ_CHG_TS1 12
6543d0407baSopenharmony_ci#define RK818_IRQ_TS2 13
6553d0407baSopenharmony_ci#define RK818_IRQ_CHG_CVTLIM 14
6563d0407baSopenharmony_ci#define RK818_IRQ_DISCHG_ILIM 15
6573d0407baSopenharmony_ci
6583d0407baSopenharmony_ci#define RK818_IRQ_VOUT_LO_MSK BIT(0)
6593d0407baSopenharmony_ci#define RK818_IRQ_VB_LO_MSK BIT(1)
6603d0407baSopenharmony_ci#define RK818_IRQ_PWRON_MSK BIT(2)
6613d0407baSopenharmony_ci#define RK818_IRQ_PWRON_LP_MSK BIT(3)
6623d0407baSopenharmony_ci#define RK818_IRQ_HOTDIE_MSK BIT(4)
6633d0407baSopenharmony_ci#define RK818_IRQ_RTC_ALARM_MSK BIT(5)
6643d0407baSopenharmony_ci#define RK818_IRQ_RTC_PERIOD_MSK BIT(6)
6653d0407baSopenharmony_ci#define RK818_IRQ_USB_OV_MSK BIT(7)
6663d0407baSopenharmony_ci#define RK818_IRQ_PLUG_IN_MSK BIT(0)
6673d0407baSopenharmony_ci#define RK818_IRQ_PLUG_OUT_MSK BIT(1)
6683d0407baSopenharmony_ci#define RK818_IRQ_CHG_OK_MSK BIT(2)
6693d0407baSopenharmony_ci#define RK818_IRQ_CHG_TE_MSK BIT(3)
6703d0407baSopenharmony_ci#define RK818_IRQ_CHG_TS1_MSK BIT(4)
6713d0407baSopenharmony_ci#define RK818_IRQ_TS2_MSK BIT(5)
6723d0407baSopenharmony_ci#define RK818_IRQ_CHG_CVTLIM_MSK BIT(6)
6733d0407baSopenharmony_ci#define RK818_IRQ_DISCHG_ILIM_MSK BIT(7)
6743d0407baSopenharmony_ci
6753d0407baSopenharmony_ci#define RK818_NUM_IRQ 16
6763d0407baSopenharmony_ci
6773d0407baSopenharmony_ci/* RK818_DCDC_EN_REG */
6783d0407baSopenharmony_ci#define BUCK1_EN_MASK BIT(0)
6793d0407baSopenharmony_ci#define BUCK2_EN_MASK BIT(1)
6803d0407baSopenharmony_ci#define BUCK3_EN_MASK BIT(2)
6813d0407baSopenharmony_ci#define BUCK4_EN_MASK BIT(3)
6823d0407baSopenharmony_ci#define BOOST_EN_MASK BIT(4)
6833d0407baSopenharmony_ci#define LDO9_EN_MASK BIT(5)
6843d0407baSopenharmony_ci#define SWITCH_EN_MASK BIT(6)
6853d0407baSopenharmony_ci#define OTG_EN_MASK BIT(7)
6863d0407baSopenharmony_ci
6873d0407baSopenharmony_ci#define BUCK1_EN_ENABLE BIT(0)
6883d0407baSopenharmony_ci#define BUCK2_EN_ENABLE BIT(1)
6893d0407baSopenharmony_ci#define BUCK3_EN_ENABLE BIT(2)
6903d0407baSopenharmony_ci#define BUCK4_EN_ENABLE BIT(3)
6913d0407baSopenharmony_ci#define BOOST_EN_ENABLE BIT(4)
6923d0407baSopenharmony_ci#define LDO9_EN_ENABLE BIT(5)
6933d0407baSopenharmony_ci#define SWITCH_EN_ENABLE BIT(6)
6943d0407baSopenharmony_ci#define OTG_EN_ENABLE BIT(7)
6953d0407baSopenharmony_ci
6963d0407baSopenharmony_ci#define BUCK1_SLP_SET_MASK BIT(0)
6973d0407baSopenharmony_ci#define BUCK2_SLP_SET_MASK BIT(1)
6983d0407baSopenharmony_ci#define BUCK3_SLP_SET_MASK BIT(2)
6993d0407baSopenharmony_ci#define BUCK4_SLP_SET_MASK BIT(3)
7003d0407baSopenharmony_ci#define BOOST_SLP_SET_MASK BIT(4)
7013d0407baSopenharmony_ci#define LDO9_SLP_SET_MASK BIT(5)
7023d0407baSopenharmony_ci#define SWITCH_SLP_SET_MASK BIT(6)
7033d0407baSopenharmony_ci#define OTG_SLP_SET_MASK BIT(7)
7043d0407baSopenharmony_ci
7053d0407baSopenharmony_ci#define BUCK1_SLP_SET_OFF BIT(0)
7063d0407baSopenharmony_ci#define BUCK2_SLP_SET_OFF BIT(1)
7073d0407baSopenharmony_ci#define BUCK3_SLP_SET_OFF BIT(2)
7083d0407baSopenharmony_ci#define BUCK4_SLP_SET_OFF BIT(3)
7093d0407baSopenharmony_ci#define BOOST_SLP_SET_OFF BIT(4)
7103d0407baSopenharmony_ci#define LDO9_SLP_SET_OFF BIT(5)
7113d0407baSopenharmony_ci#define SWITCH_SLP_SET_OFF BIT(6)
7123d0407baSopenharmony_ci#define OTG_SLP_SET_OFF BIT(7)
7133d0407baSopenharmony_ci#define OTG_BOOST_SLP_OFF (BOOST_SLP_SET_OFF | OTG_SLP_SET_OFF)
7143d0407baSopenharmony_ci
7153d0407baSopenharmony_ci#define BUCK1_SLP_SET_ON BIT(0)
7163d0407baSopenharmony_ci#define BUCK2_SLP_SET_ON BIT(1)
7173d0407baSopenharmony_ci#define BUCK3_SLP_SET_ON BIT(2)
7183d0407baSopenharmony_ci#define BUCK4_SLP_SET_ON BIT(3)
7193d0407baSopenharmony_ci#define BOOST_SLP_SET_ON BIT(4)
7203d0407baSopenharmony_ci#define LDO9_SLP_SET_ON BIT(5)
7213d0407baSopenharmony_ci#define SWITCH_SLP_SET_ON BIT(6)
7223d0407baSopenharmony_ci#define OTG_SLP_SET_ON BIT(7)
7233d0407baSopenharmony_ci
7243d0407baSopenharmony_ci#define VOUT_LO_MASK BIT(0)
7253d0407baSopenharmony_ci#define VB_LO_MASK BIT(1)
7263d0407baSopenharmony_ci#define PWRON_MASK BIT(2)
7273d0407baSopenharmony_ci#define PWRON_LP_MASK BIT(3)
7283d0407baSopenharmony_ci#define HOTDIE_MASK BIT(4)
7293d0407baSopenharmony_ci#define RTC_ALARM_MASK BIT(5)
7303d0407baSopenharmony_ci#define RTC_PERIOD_MASK BIT(6)
7313d0407baSopenharmony_ci#define USB_OV_MASK BIT(7)
7323d0407baSopenharmony_ci
7333d0407baSopenharmony_ci#define VOUT_LO_DISABLE BIT(0)
7343d0407baSopenharmony_ci#define VB_LO_DISABLE BIT(1)
7353d0407baSopenharmony_ci#define PWRON_DISABLE BIT(2)
7363d0407baSopenharmony_ci#define PWRON_LP_DISABLE BIT(3)
7373d0407baSopenharmony_ci#define HOTDIE_DISABLE BIT(4)
7383d0407baSopenharmony_ci#define RTC_ALARM_DISABLE BIT(5)
7393d0407baSopenharmony_ci#define RTC_PERIOD_DISABLE BIT(6)
7403d0407baSopenharmony_ci#define USB_OV_INT_DISABLE BIT(7)
7413d0407baSopenharmony_ci
7423d0407baSopenharmony_ci#define VOUT_LO_ENABLE (0 << 0)
7433d0407baSopenharmony_ci#define VB_LO_ENABLE (0 << 1)
7443d0407baSopenharmony_ci#define PWRON_ENABLE (0 << 2)
7453d0407baSopenharmony_ci#define PWRON_LP_ENABLE (0 << 3)
7463d0407baSopenharmony_ci#define HOTDIE_ENABLE (0 << 4)
7473d0407baSopenharmony_ci#define RTC_ALARM_ENABLE (0 << 5)
7483d0407baSopenharmony_ci#define RTC_PERIOD_ENABLE (0 << 6)
7493d0407baSopenharmony_ci#define USB_OV_INT_ENABLE (0 << 7)
7503d0407baSopenharmony_ci
7513d0407baSopenharmony_ci#define PLUG_IN_MASK BIT(0)
7523d0407baSopenharmony_ci#define PLUG_OUT_MASK BIT(1)
7533d0407baSopenharmony_ci#define CHGOK_MASK BIT(2)
7543d0407baSopenharmony_ci#define CHGTE_MASK BIT(3)
7553d0407baSopenharmony_ci#define CHGTS1_MASK BIT(4)
7563d0407baSopenharmony_ci#define TS2_MASK BIT(5)
7573d0407baSopenharmony_ci#define CHG_CVTLIM_MASK BIT(6)
7583d0407baSopenharmony_ci#define DISCHG_ILIM_MASK BIT(7)
7593d0407baSopenharmony_ci
7603d0407baSopenharmony_ci#define PLUG_IN_DISABLE BIT(0)
7613d0407baSopenharmony_ci#define PLUG_OUT_DISABLE BIT(1)
7623d0407baSopenharmony_ci#define CHGOK_DISABLE BIT(2)
7633d0407baSopenharmony_ci#define CHGTE_DISABLE BIT(3)
7643d0407baSopenharmony_ci#define CHGTS1_DISABLE BIT(4)
7653d0407baSopenharmony_ci#define TS2_DISABLE BIT(5)
7663d0407baSopenharmony_ci#define CHG_CVTLIM_DISABLE BIT(6)
7673d0407baSopenharmony_ci#define DISCHG_ILIM_DISABLE BIT(7)
7683d0407baSopenharmony_ci
7693d0407baSopenharmony_ci#define PLUG_IN_ENABLE BIT(0)
7703d0407baSopenharmony_ci#define PLUG_OUT_ENABLE BIT(1)
7713d0407baSopenharmony_ci#define CHGOK_ENABLE BIT(2)
7723d0407baSopenharmony_ci#define CHGTE_ENABLE BIT(3)
7733d0407baSopenharmony_ci#define CHGTS1_ENABLE BIT(4)
7743d0407baSopenharmony_ci#define TS2_ENABLE BIT(5)
7753d0407baSopenharmony_ci#define CHG_CVTLIM_ENABLE BIT(6)
7763d0407baSopenharmony_ci#define DISCHG_ILIM_ENABLE BIT(7)
7773d0407baSopenharmony_ci
7783d0407baSopenharmony_ci#define RK808_VBAT_LOW_2V8 0x00
7793d0407baSopenharmony_ci#define RK808_VBAT_LOW_2V9 0x01
7803d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V0 0x02
7813d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V1 0x03
7823d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V2 0x04
7833d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V3 0x05
7843d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V4 0x06
7853d0407baSopenharmony_ci#define RK808_VBAT_LOW_3V5 0x07
7863d0407baSopenharmony_ci#define VBAT_LOW_VOL_MASK (0x07 << 0)
7873d0407baSopenharmony_ci#define EN_VABT_LOW_SHUT_DOWN (0x00 << 4)
7883d0407baSopenharmony_ci#define EN_VBAT_LOW_IRQ (0x1 << 4)
7893d0407baSopenharmony_ci#define VBAT_LOW_ACT_MASK (0x1 << 4)
7903d0407baSopenharmony_ci
7913d0407baSopenharmony_ci#define BUCK_ILMIN_MASK (7 << 0)
7923d0407baSopenharmony_ci#define BOOST_ILMIN_MASK (7 << 0)
7933d0407baSopenharmony_ci#define BUCK1_RATE_MASK (3 << 3)
7943d0407baSopenharmony_ci#define BUCK2_RATE_MASK (3 << 3)
7953d0407baSopenharmony_ci#define MASK_ALL 0xff
7963d0407baSopenharmony_ci
7973d0407baSopenharmony_ci#define BUCK_UV_ACT_MASK 0x0f
7983d0407baSopenharmony_ci#define BUCK_UV_ACT_DISABLE 0
7993d0407baSopenharmony_ci
8003d0407baSopenharmony_ci#define SWITCH2_EN BIT(6)
8013d0407baSopenharmony_ci#define SWITCH1_EN BIT(5)
8023d0407baSopenharmony_ci#define DEV_OFF_RST BIT(3)
8033d0407baSopenharmony_ci#define DEV_OFF BIT(0)
8043d0407baSopenharmony_ci#define RTC_STOP BIT(0)
8053d0407baSopenharmony_ci
8063d0407baSopenharmony_ci#define VB_LO_ACT BIT(4)
8073d0407baSopenharmony_ci#define VB_LO_SEL_3500MV (7 << 0)
8083d0407baSopenharmony_ci
8093d0407baSopenharmony_ci#define VOUT_LO_INT BIT(0)
8103d0407baSopenharmony_ci#define CLK32KOUT2_EN BIT(0)
8113d0407baSopenharmony_ci#define CLK32KOUT2_FUNC (0 << 1)
8123d0407baSopenharmony_ci#define CLK32KOUT2_FUNC_MASK BIT(1)
8133d0407baSopenharmony_ci
8143d0407baSopenharmony_ci#define TEMP105C 0x08
8153d0407baSopenharmony_ci#define TEMP115C 0x0c
8163d0407baSopenharmony_ci#define TEMP_HOTDIE_MSK 0x0c
8173d0407baSopenharmony_ci#define SLP_SD_MSK (0x3 << 2)
8183d0407baSopenharmony_ci#define SHUTDOWN_FUN (0x2 << 2)
8193d0407baSopenharmony_ci#define SLEEP_FUN (0x1 << 2)
8203d0407baSopenharmony_ci#define RK8XX_ID_MSK 0xfff0
8213d0407baSopenharmony_ci#define PWM_MODE_MSK BIT(7)
8223d0407baSopenharmony_ci#define FPWM_MODE BIT(7)
8233d0407baSopenharmony_ci#define AUTO_PWM_MODE 0
8243d0407baSopenharmony_ci#define REGS_WMSK 0xf0
8253d0407baSopenharmony_ci
8263d0407baSopenharmony_cienum rk817_reg_id {
8273d0407baSopenharmony_ci    RK817_ID_DCDC1 = 0,
8283d0407baSopenharmony_ci    RK817_ID_DCDC2,
8293d0407baSopenharmony_ci    RK817_ID_DCDC3,
8303d0407baSopenharmony_ci    RK817_ID_DCDC4,
8313d0407baSopenharmony_ci    RK817_ID_LDO1,
8323d0407baSopenharmony_ci    RK817_ID_LDO2,
8333d0407baSopenharmony_ci    RK817_ID_LDO3,
8343d0407baSopenharmony_ci    RK817_ID_LDO4,
8353d0407baSopenharmony_ci    RK817_ID_LDO5,
8363d0407baSopenharmony_ci    RK817_ID_LDO6,
8373d0407baSopenharmony_ci    RK817_ID_LDO7,
8383d0407baSopenharmony_ci    RK817_ID_LDO8,
8393d0407baSopenharmony_ci    RK817_ID_LDO9,
8403d0407baSopenharmony_ci    RK817_ID_BOOST,
8413d0407baSopenharmony_ci    RK817_ID_BOOST_OTG_SW,
8423d0407baSopenharmony_ci    RK817_NUM_REGULATORS
8433d0407baSopenharmony_ci};
8443d0407baSopenharmony_ci
8453d0407baSopenharmony_cienum rk809_reg_id { RK809_ID_DCDC5 = RK817_ID_BOOST, RK809_ID_SW1, RK809_ID_SW2, RK809_NUM_REGULATORS };
8463d0407baSopenharmony_ci
8473d0407baSopenharmony_ci#define RK817_SECONDS_REG 0x00
8483d0407baSopenharmony_ci#define RK817_MINUTES_REG 0x01
8493d0407baSopenharmony_ci#define RK817_HOURS_REG 0x02
8503d0407baSopenharmony_ci#define RK817_DAYS_REG 0x03
8513d0407baSopenharmony_ci#define RK817_MONTHS_REG 0x04
8523d0407baSopenharmony_ci#define RK817_YEARS_REG 0x05
8533d0407baSopenharmony_ci#define RK817_WEEKS_REG 0x06
8543d0407baSopenharmony_ci#define RK817_ALARM_SECONDS_REG 0x07
8553d0407baSopenharmony_ci#define RK817_ALARM_MINUTES_REG 0x08
8563d0407baSopenharmony_ci#define RK817_ALARM_HOURS_REG 0x09
8573d0407baSopenharmony_ci#define RK817_ALARM_DAYS_REG 0x0a
8583d0407baSopenharmony_ci#define RK817_ALARM_MONTHS_REG 0x0b
8593d0407baSopenharmony_ci#define RK817_ALARM_YEARS_REG 0x0c
8603d0407baSopenharmony_ci#define RK817_RTC_CTRL_REG 0xd
8613d0407baSopenharmony_ci#define RK817_RTC_STATUS_REG 0xe
8623d0407baSopenharmony_ci#define RK817_RTC_INT_REG 0xf
8633d0407baSopenharmony_ci#define RK817_RTC_COMP_LSB_REG 0x10
8643d0407baSopenharmony_ci#define RK817_RTC_COMP_MSB_REG 0x11
8653d0407baSopenharmony_ci#define RK817_ADC_CONFIG0 0x50
8663d0407baSopenharmony_ci#define RK817_CURE_ADC_K0 0xb0
8673d0407baSopenharmony_ci#define RK817_POWER_EN_SAVE0 0x99
8683d0407baSopenharmony_ci#define RK817_POWER_EN_SAVE1 0xa4
8693d0407baSopenharmony_ci
8703d0407baSopenharmony_ci#define RK817_POWER_EN_REG(i) (0xb1 + (i))
8713d0407baSopenharmony_ci#define RK817_POWER_SLP_EN_REG(i) (0xb5 + (i))
8723d0407baSopenharmony_ci
8733d0407baSopenharmony_ci#define RK817_POWER_CONFIG (0xb9)
8743d0407baSopenharmony_ci
8753d0407baSopenharmony_ci#define RK817_BUCK_CONFIG_REG(i) (0xba + (i)*3)
8763d0407baSopenharmony_ci
8773d0407baSopenharmony_ci#define RK817_BUCK1_ON_VSEL_REG 0xBB
8783d0407baSopenharmony_ci#define RK817_BUCK1_SLP_VSEL_REG 0xBC
8793d0407baSopenharmony_ci
8803d0407baSopenharmony_ci#define RK817_BUCK2_CONFIG_REG 0xBD
8813d0407baSopenharmony_ci#define RK817_BUCK2_ON_VSEL_REG 0xBE
8823d0407baSopenharmony_ci#define RK817_BUCK2_SLP_VSEL_REG 0xBF
8833d0407baSopenharmony_ci
8843d0407baSopenharmony_ci#define RK817_BUCK3_CONFIG_REG 0xC0
8853d0407baSopenharmony_ci#define RK817_BUCK3_ON_VSEL_REG 0xC1
8863d0407baSopenharmony_ci#define RK817_BUCK3_SLP_VSEL_REG 0xC2
8873d0407baSopenharmony_ci
8883d0407baSopenharmony_ci#define RK817_BUCK4_CONFIG_REG 0xC3
8893d0407baSopenharmony_ci#define RK817_BUCK4_ON_VSEL_REG 0xC4
8903d0407baSopenharmony_ci#define RK817_BUCK4_SLP_VSEL_REG 0xC5
8913d0407baSopenharmony_ci
8923d0407baSopenharmony_ci#define RK817_LDO_ON_VSEL_REG(idx) (0xcc + (idx)*2)
8933d0407baSopenharmony_ci#define RK817_BOOST_OTG_CFG (0xde)
8943d0407baSopenharmony_ci
8953d0407baSopenharmony_ci#define RK817_CHRG_OUT 0xe4
8963d0407baSopenharmony_ci#define RK817_CHRG_IN 0xe5
8973d0407baSopenharmony_ci#define RK817_CHRG_STS 0xeb
8983d0407baSopenharmony_ci#define RK817_ID_MSB 0xed
8993d0407baSopenharmony_ci#define RK817_ID_LSB 0xee
9003d0407baSopenharmony_ci
9013d0407baSopenharmony_ci#define RK817_SYS_STS 0xf0
9023d0407baSopenharmony_ci#define RK817_SYS_CFG(i) (0xf1 + (i))
9033d0407baSopenharmony_ci
9043d0407baSopenharmony_ci#define RK817_ON_SOURCE_REG 0xf5
9053d0407baSopenharmony_ci#define RK817_OFF_SOURCE_REG 0xf6
9063d0407baSopenharmony_ci
9073d0407baSopenharmony_ci/* INTERRUPT REGISTER */
9083d0407baSopenharmony_ci#define RK817_INT_STS_REG0 0xf8
9093d0407baSopenharmony_ci#define RK817_INT_STS_MSK_REG0 0xf9
9103d0407baSopenharmony_ci#define RK817_INT_STS_REG1 0xfa
9113d0407baSopenharmony_ci#define RK817_INT_STS_MSK_REG1 0xfb
9123d0407baSopenharmony_ci#define RK817_INT_STS_REG2 0xfc
9133d0407baSopenharmony_ci#define RK817_INT_STS_MSK_REG2 0xfd
9143d0407baSopenharmony_ci#define RK817_GPIO_INT_CFG 0xfe
9153d0407baSopenharmony_ci
9163d0407baSopenharmony_ci/* IRQ Definitions */
9173d0407baSopenharmony_ci#define RK817_IRQ_PWRON_FALL 0
9183d0407baSopenharmony_ci#define RK817_IRQ_PWRON_RISE 1
9193d0407baSopenharmony_ci#define RK817_IRQ_PWRON 2
9203d0407baSopenharmony_ci#define RK817_IRQ_PWMON_LP 3
9213d0407baSopenharmony_ci#define RK817_IRQ_HOTDIE 4
9223d0407baSopenharmony_ci#define RK817_IRQ_RTC_ALARM 5
9233d0407baSopenharmony_ci#define RK817_IRQ_RTC_PERIOD 6
9243d0407baSopenharmony_ci#define RK817_IRQ_VB_LO 7
9253d0407baSopenharmony_ci#define RK817_IRQ_PLUG_IN 8
9263d0407baSopenharmony_ci#define RK817_IRQ_PLUG_OUT 9
9273d0407baSopenharmony_ci#define RK817_IRQ_CHRG_TERM 10
9283d0407baSopenharmony_ci#define RK817_IRQ_CHRG_TIME 11
9293d0407baSopenharmony_ci#define RK817_IRQ_CHRG_TS 12
9303d0407baSopenharmony_ci#define RK817_IRQ_USB_OV 13
9313d0407baSopenharmony_ci#define RK817_IRQ_CHRG_IN_CLMP 14
9323d0407baSopenharmony_ci#define RK817_IRQ_BAT_DIS_ILIM 15
9333d0407baSopenharmony_ci#define RK817_IRQ_GATE_GPIO 16
9343d0407baSopenharmony_ci#define RK817_IRQ_TS_GPIO 17
9353d0407baSopenharmony_ci#define RK817_IRQ_CODEC_PD 18
9363d0407baSopenharmony_ci#define RK817_IRQ_CODEC_PO 19
9373d0407baSopenharmony_ci#define RK817_IRQ_CLASSD_MUTE_DONE 20
9383d0407baSopenharmony_ci#define RK817_IRQ_CLASSD_OCP 21
9393d0407baSopenharmony_ci#define RK817_IRQ_BAT_OVP 22
9403d0407baSopenharmony_ci#define RK817_IRQ_CHRG_BAT_HI 23
9413d0407baSopenharmony_ci#define RK817_IRQ_END (RK817_IRQ_CHRG_BAT_HI + 1)
9423d0407baSopenharmony_ci
9433d0407baSopenharmony_ci/*
9443d0407baSopenharmony_ci * rtc_ctrl 0xd
9453d0407baSopenharmony_ci * same as 808, except bit4
9463d0407baSopenharmony_ci */
9473d0407baSopenharmony_ci#define RK817_RTC_CTRL_RSV4 BIT(4)
9483d0407baSopenharmony_ci
9493d0407baSopenharmony_ci/* power config 0xb9 */
9503d0407baSopenharmony_ci#define RK817_BUCK3_FB_RES_MSK BIT(6)
9513d0407baSopenharmony_ci#define RK817_BUCK3_FB_RES_INTER BIT(6)
9523d0407baSopenharmony_ci#define RK817_BUCK3_FB_RES_EXT 0
9533d0407baSopenharmony_ci
9543d0407baSopenharmony_ci/* buck config 0xba */
9553d0407baSopenharmony_ci#define RK817_RAMP_RATE_OFFSET 6
9563d0407baSopenharmony_ci#define RK817_RAMP_RATE_MASK (0x3 << RK817_RAMP_RATE_OFFSET)
9573d0407baSopenharmony_ci#define RK817_RAMP_RATE_3MV_PER_US (0x0 << RK817_RAMP_RATE_OFFSET)
9583d0407baSopenharmony_ci#define RK817_RAMP_RATE_6_3MV_PER_US (0x1 << RK817_RAMP_RATE_OFFSET)
9593d0407baSopenharmony_ci#define RK817_RAMP_RATE_12_5MV_PER_US (0x2 << RK817_RAMP_RATE_OFFSET)
9603d0407baSopenharmony_ci#define RK817_RAMP_RATE_25MV_PER_US (0x3 << RK817_RAMP_RATE_OFFSET)
9613d0407baSopenharmony_ci
9623d0407baSopenharmony_ci/* sys_cfg1 0xf2 */
9633d0407baSopenharmony_ci#define RK817_HOTDIE_TEMP_MSK (0x3 << 4)
9643d0407baSopenharmony_ci#define RK817_HOTDIE_85 (0x0 << 4)
9653d0407baSopenharmony_ci#define RK817_HOTDIE_95 (0x1 << 4)
9663d0407baSopenharmony_ci#define RK817_HOTDIE_105 (0x2 << 4)
9673d0407baSopenharmony_ci#define RK817_HOTDIE_115 (0x3 << 4)
9683d0407baSopenharmony_ci
9693d0407baSopenharmony_ci#define RK817_TSD_TEMP_MSK BIT(6)
9703d0407baSopenharmony_ci#define RK817_TSD_140 0
9713d0407baSopenharmony_ci#define RK817_TSD_160 BIT(6)
9723d0407baSopenharmony_ci
9733d0407baSopenharmony_ci#define RK817_CLK32KOUT2_EN BIT(7)
9743d0407baSopenharmony_ci
9753d0407baSopenharmony_ci/* sys_cfg3 0xf4 */
9763d0407baSopenharmony_ci#define RK817_SLPPIN_FUNC_MSK (0x3 << 3)
9773d0407baSopenharmony_ci#define SLPPIN_NULL_FUN (0x0 << 3)
9783d0407baSopenharmony_ci#define SLPPIN_SLP_FUN (0x1 << 3)
9793d0407baSopenharmony_ci#define SLPPIN_DN_FUN (0x2 << 3)
9803d0407baSopenharmony_ci#define SLPPIN_RST_FUN (0x3 << 3)
9813d0407baSopenharmony_ci
9823d0407baSopenharmony_ci#define RK817_RST_FUNC_MSK (0x3 << 6)
9833d0407baSopenharmony_ci#define RK817_RST_FUNC_SFT (6)
9843d0407baSopenharmony_ci#define RK817_RST_FUNC_CNT (3)
9853d0407baSopenharmony_ci#define RK817_RST_FUNC_DEV (0)        /* reset the dev */
9863d0407baSopenharmony_ci#define RK817_RST_FUNC_REG (0x1 << 6) /* reset the reg only */
9873d0407baSopenharmony_ci
9883d0407baSopenharmony_ci#define RK817_SLPPOL_MSK BIT(5)
9893d0407baSopenharmony_ci#define RK817_SLPPOL_H BIT(5)
9903d0407baSopenharmony_ci#define RK817_SLPPOL_L (0)
9913d0407baSopenharmony_ci
9923d0407baSopenharmony_ci/* gpio&int 0xfe */
9933d0407baSopenharmony_ci#define RK817_INT_POL_MSK BIT(1)
9943d0407baSopenharmony_ci#define RK817_INT_POL_H BIT(1)
9953d0407baSopenharmony_ci#define RK817_INT_POL_L 0
9963d0407baSopenharmony_ci#define RK809_BUCK5_CONFIG(i) (RK817_BOOST_OTG_CFG + (i)*1)
9973d0407baSopenharmony_ci
9983d0407baSopenharmony_ci#define RK_REG_BITS 8
9993d0407baSopenharmony_ci#define RK_VAL_BITS 8
10003d0407baSopenharmony_ci#define RK_REG_VAL_ZERO 0
10013d0407baSopenharmony_ci#define RK_REG_VAL_THREE 3
10023d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_ZERO 0
10033d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_ONE 1
10043d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_TWO 2
10053d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_THREE 3
10063d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_FOUR 4
10073d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_FIVE 5
10083d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_SIX 6
10093d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_SEVEN 7
10103d0407baSopenharmony_ci#define RK_REG_SHIFT_MASK_EIGHT 8
10113d0407baSopenharmony_ci#define RK_DELAY_COUNT_TWO_MS 2
10123d0407baSopenharmony_ci#define RK_DELAY_COUNT_TEN_MS 10
10133d0407baSopenharmony_ci#define RK_SSCAN_RET_RESULT_ONE 1
10143d0407baSopenharmony_ci#define RK_SSCAN_RET_RESULT_TWO 2
10153d0407baSopenharmony_ci#define RK_SSCAN_RET_RESULT_THREE 3
10163d0407baSopenharmony_ci#define RK_INPUT_MASK 0xff
10173d0407baSopenharmony_ci#define RK_BYTE_HIGH_FOUR_BIT_MASK 0xf0
10183d0407baSopenharmony_ci#define RK_BYTE_LOW_FOUR_BIT_MASK 0x0f
10193d0407baSopenharmony_ci#define RK_BYTE_FOUR_BIT_SHIFT_MASK 4
10203d0407baSopenharmony_ci#define RK_POWER_EN_REG_VALUE_ZERO 0
10213d0407baSopenharmony_ci#define RK_POWER_EN_REG_VALUE_ONE 1
10223d0407baSopenharmony_ci#define RK_POWER_EN_REG_VALUE_TWO 2
10233d0407baSopenharmony_ci#define RK_POWER_EN_REG_VALUE_THREE 3
10243d0407baSopenharmony_ci
10253d0407baSopenharmony_cienum {
10263d0407baSopenharmony_ci    BUCK_ILMIN_50MA,
10273d0407baSopenharmony_ci    BUCK_ILMIN_100MA,
10283d0407baSopenharmony_ci    BUCK_ILMIN_150MA,
10293d0407baSopenharmony_ci    BUCK_ILMIN_200MA,
10303d0407baSopenharmony_ci    BUCK_ILMIN_250MA,
10313d0407baSopenharmony_ci    BUCK_ILMIN_300MA,
10323d0407baSopenharmony_ci    BUCK_ILMIN_350MA,
10333d0407baSopenharmony_ci    BUCK_ILMIN_400MA,
10343d0407baSopenharmony_ci};
10353d0407baSopenharmony_ci
10363d0407baSopenharmony_cienum {
10373d0407baSopenharmony_ci    BOOST_ILMIN_75MA,
10383d0407baSopenharmony_ci    BOOST_ILMIN_100MA,
10393d0407baSopenharmony_ci    BOOST_ILMIN_125MA,
10403d0407baSopenharmony_ci    BOOST_ILMIN_150MA,
10413d0407baSopenharmony_ci    BOOST_ILMIN_175MA,
10423d0407baSopenharmony_ci    BOOST_ILMIN_200MA,
10433d0407baSopenharmony_ci    BOOST_ILMIN_225MA,
10443d0407baSopenharmony_ci    BOOST_ILMIN_250MA,
10453d0407baSopenharmony_ci};
10463d0407baSopenharmony_ci
10473d0407baSopenharmony_cienum {
10483d0407baSopenharmony_ci    RK805_BUCK1_2_ILMAX_2500MA,
10493d0407baSopenharmony_ci    RK805_BUCK1_2_ILMAX_3000MA,
10503d0407baSopenharmony_ci    RK805_BUCK1_2_ILMAX_3500MA,
10513d0407baSopenharmony_ci    RK805_BUCK1_2_ILMAX_4000MA,
10523d0407baSopenharmony_ci};
10533d0407baSopenharmony_ci
10543d0407baSopenharmony_cienum {
10553d0407baSopenharmony_ci    RK805_BUCK3_ILMAX_1500MA,
10563d0407baSopenharmony_ci    RK805_BUCK3_ILMAX_2000MA,
10573d0407baSopenharmony_ci    RK805_BUCK3_ILMAX_2500MA,
10583d0407baSopenharmony_ci    RK805_BUCK3_ILMAX_3000MA,
10593d0407baSopenharmony_ci};
10603d0407baSopenharmony_ci
10613d0407baSopenharmony_cienum {
10623d0407baSopenharmony_ci    RK805_BUCK4_ILMAX_2000MA,
10633d0407baSopenharmony_ci    RK805_BUCK4_ILMAX_2500MA,
10643d0407baSopenharmony_ci    RK805_BUCK4_ILMAX_3000MA,
10653d0407baSopenharmony_ci    RK805_BUCK4_ILMAX_3500MA,
10663d0407baSopenharmony_ci};
10673d0407baSopenharmony_ci
10683d0407baSopenharmony_cienum {
10693d0407baSopenharmony_ci    RK805_ID = 0x8050,
10703d0407baSopenharmony_ci    RK808_ID = 0x0000,
10713d0407baSopenharmony_ci    RK809_ID = 0x8090,
10723d0407baSopenharmony_ci    RK816_ID = 0x8160,
10733d0407baSopenharmony_ci    RK817_ID = 0x8170,
10743d0407baSopenharmony_ci    RK818_ID = 0x8180,
10753d0407baSopenharmony_ci};
10763d0407baSopenharmony_ci
10773d0407baSopenharmony_cistruct rk808_pin_info {
10783d0407baSopenharmony_ci    struct pinctrl *p;
10793d0407baSopenharmony_ci    struct pinctrl_state *reset;
10803d0407baSopenharmony_ci    struct pinctrl_state *power_off;
10813d0407baSopenharmony_ci    struct pinctrl_state *sleep;
10823d0407baSopenharmony_ci};
10833d0407baSopenharmony_ci
10843d0407baSopenharmony_cistruct rk808 {
10853d0407baSopenharmony_ci    struct i2c_client *i2c;
10863d0407baSopenharmony_ci    struct regmap_irq_chip_data *irq_data;
10873d0407baSopenharmony_ci    struct regmap_irq_chip_data *battery_irq_data;
10883d0407baSopenharmony_ci    struct regmap *regmap;
10893d0407baSopenharmony_ci    long variant;
10903d0407baSopenharmony_ci    const struct regmap_config *regmap_cfg;
10913d0407baSopenharmony_ci    const struct regmap_irq_chip *regmap_irq_chip;
10923d0407baSopenharmony_ci    void (*pm_pwroff_prep_fn)(void);
10933d0407baSopenharmony_ci    struct rk808_pin_info *pins;
10943d0407baSopenharmony_ci};
10953d0407baSopenharmony_ci#endif /* __LINUX_REGULATOR_RK808_H */
1096