13d0407baSopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 23d0407baSopenharmony_ci/* 33d0407baSopenharmony_ci * Copyright (c) 2021 Rockchip Electronics Co., Ltd. 43d0407baSopenharmony_ci */ 53d0407baSopenharmony_ci 63d0407baSopenharmony_ci#ifndef __LINUX_REGULATOR_RK806_H 73d0407baSopenharmony_ci#define __LINUX_REGULATOR_RK806_H 83d0407baSopenharmony_ci 93d0407baSopenharmony_ci#include <linux/regmap.h> 103d0407baSopenharmony_ci#include <linux/regulator/driver.h> 113d0407baSopenharmony_ci#include <linux/regulator/machine.h> 123d0407baSopenharmony_ci 133d0407baSopenharmony_ci#define RK806_POWER_EN0 0x0 143d0407baSopenharmony_ci#define RK806_POWER_EN1 0x1 153d0407baSopenharmony_ci#define RK806_POWER_EN2 0x2 163d0407baSopenharmony_ci#define RK806_POWER_EN3 0x3 173d0407baSopenharmony_ci#define RK806_POWER_EN4 0x4 183d0407baSopenharmony_ci#define RK806_POWER_EN5 0x5 193d0407baSopenharmony_ci#define RK806_POWER_SLP_EN0 0x6 203d0407baSopenharmony_ci#define RK806_POWER_SLP_EN1 0x7 213d0407baSopenharmony_ci#define RK806_POWER_SLP_EN2 0x8 223d0407baSopenharmony_ci#define RK806_POWER_DISCHRG_EN0 0x9 233d0407baSopenharmony_ci#define RK806_POWER_DISCHRG_EN1 0xA 243d0407baSopenharmony_ci#define RK806_POWER_DISCHRG_EN2 0xB 253d0407baSopenharmony_ci#define RK806_BUCK_FB_CONFIG 0xC 263d0407baSopenharmony_ci#define RK806_SLP_LP_CONFIG 0xD 273d0407baSopenharmony_ci#define RK806_POWER_FPWM_EN0 0xE 283d0407baSopenharmony_ci#define RK806_POWER_FPWM_EN1 0xF 293d0407baSopenharmony_ci#define RK806_BUCK1_CONFIG 0x10 303d0407baSopenharmony_ci#define RK806_BUCK2_CONFIG 0x11 313d0407baSopenharmony_ci#define RK806_BUCK3_CONFIG 0x12 323d0407baSopenharmony_ci#define RK806_BUCK4_CONFIG 0x13 333d0407baSopenharmony_ci#define RK806_BUCK5_CONFIG 0x14 343d0407baSopenharmony_ci#define RK806_BUCK6_CONFIG 0x15 353d0407baSopenharmony_ci#define RK806_BUCK7_CONFIG 0x16 363d0407baSopenharmony_ci#define RK806_BUCK8_CONFIG 0x17 373d0407baSopenharmony_ci#define RK806_BUCK9_CONFIG 0x18 383d0407baSopenharmony_ci#define RK806_BUCK10_CONFIG 0x19 393d0407baSopenharmony_ci#define RK806_BUCK1_ON_VSEL 0x1A 403d0407baSopenharmony_ci#define RK806_BUCK2_ON_VSEL 0x1B 413d0407baSopenharmony_ci#define RK806_BUCK3_ON_VSEL 0x1C 423d0407baSopenharmony_ci#define RK806_BUCK4_ON_VSEL 0x1D 433d0407baSopenharmony_ci#define RK806_BUCK5_ON_VSEL 0x1E 443d0407baSopenharmony_ci#define RK806_BUCK6_ON_VSEL 0x1F 453d0407baSopenharmony_ci#define RK806_BUCK7_ON_VSEL 0x20 463d0407baSopenharmony_ci#define RK806_BUCK8_ON_VSEL 0x21 473d0407baSopenharmony_ci#define RK806_BUCK9_ON_VSEL 0x22 483d0407baSopenharmony_ci#define RK806_BUCK10_ON_VSEL 0x23 493d0407baSopenharmony_ci#define RK806_BUCK1_SLP_VSEL 0x24 503d0407baSopenharmony_ci#define RK806_BUCK2_SLP_VSEL 0x25 513d0407baSopenharmony_ci#define RK806_BUCK3_SLP_VSEL 0x26 523d0407baSopenharmony_ci#define RK806_BUCK4_SLP_VSEL 0x27 533d0407baSopenharmony_ci#define RK806_BUCK5_SLP_VSEL 0x28 543d0407baSopenharmony_ci#define RK806_BUCK6_SLP_VSEL 0x29 553d0407baSopenharmony_ci#define RK806_BUCK7_SLP_VSEL 0x2A 563d0407baSopenharmony_ci#define RK806_BUCK8_SLP_VSEL 0x2B 573d0407baSopenharmony_ci#define RK806_BUCK9_SLP_VSEL 0x2D 583d0407baSopenharmony_ci#define RK806_BUCK10_SLP_VSEL 0x2E 593d0407baSopenharmony_ci#define RK806_BUCK_DEBUG1 0x30 603d0407baSopenharmony_ci#define RK806_BUCK_DEBUG2 0x31 613d0407baSopenharmony_ci#define RK806_BUCK_DEBUG3 0x32 623d0407baSopenharmony_ci#define RK806_BUCK_DEBUG4 0x33 633d0407baSopenharmony_ci#define RK806_BUCK_DEBUG5 0x34 643d0407baSopenharmony_ci#define RK806_BUCK_DEBUG6 0x35 653d0407baSopenharmony_ci#define RK806_BUCK_DEBUG7 0x36 663d0407baSopenharmony_ci#define RK806_BUCK_DEBUG8 0x37 673d0407baSopenharmony_ci#define RK806_BUCK_DEBUG9 0x38 683d0407baSopenharmony_ci#define RK806_BUCK_DEBUG10 0x39 693d0407baSopenharmony_ci#define RK806_BUCK_DEBUG11 0x3A 703d0407baSopenharmony_ci#define RK806_BUCK_DEBUG12 0x3B 713d0407baSopenharmony_ci#define RK806_BUCK_DEBUG13 0x3C 723d0407baSopenharmony_ci#define RK806_BUCK_DEBUG14 0x3D 733d0407baSopenharmony_ci#define RK806_BUCK_DEBUG15 0x3E 743d0407baSopenharmony_ci#define RK806_BUCK_DEBUG16 0x3F 753d0407baSopenharmony_ci#define RK806_BUCK_DEBUG17 0x40 763d0407baSopenharmony_ci#define RK806_BUCK_DEBUG18 0x41 773d0407baSopenharmony_ci#define RK806_NLDO_IMAX 0x42 783d0407baSopenharmony_ci#define RK806_NLDO1_ON_VSEL 0x43 793d0407baSopenharmony_ci#define RK806_NLDO2_ON_VSEL 0x44 803d0407baSopenharmony_ci#define RK806_NLDO3_ON_VSEL 0x45 813d0407baSopenharmony_ci#define RK806_NLDO4_ON_VSEL 0x46 823d0407baSopenharmony_ci#define RK806_NLDO5_ON_VSEL 0x47 833d0407baSopenharmony_ci#define RK806_NLDO1_SLP_VSEL 0x48 843d0407baSopenharmony_ci#define RK806_NLDO2_SLP_VSEL 0x49 853d0407baSopenharmony_ci#define RK806_NLDO3_SLP_VSEL 0x4A 863d0407baSopenharmony_ci#define RK806_NLDO4_SLP_VSEL 0x4B 873d0407baSopenharmony_ci#define RK806_NLDO5_SLP_VSEL 0x4C 883d0407baSopenharmony_ci#define RK806_PLDO_IMAX 0x4D 893d0407baSopenharmony_ci#define RK806_PLDO1_ON_VSEL 0x4E 903d0407baSopenharmony_ci#define RK806_PLDO2_ON_VSEL 0x4F 913d0407baSopenharmony_ci#define RK806_PLDO3_ON_VSEL 0x50 923d0407baSopenharmony_ci#define RK806_PLDO4_ON_VSEL 0x51 933d0407baSopenharmony_ci#define RK806_PLDO5_ON_VSEL 0x52 943d0407baSopenharmony_ci#define RK806_PLDO6_ON_VSEL 0x53 953d0407baSopenharmony_ci#define RK806_PLDO1_SLP_VSEL 0x54 963d0407baSopenharmony_ci#define RK806_PLDO2_SLP_VSEL 0x55 973d0407baSopenharmony_ci#define RK806_PLDO3_SLP_VSEL 0x56 983d0407baSopenharmony_ci#define RK806_PLDO4_SLP_VSEL 0x57 993d0407baSopenharmony_ci#define RK806_PLDO5_SLP_VSEL 0x58 1003d0407baSopenharmony_ci#define RK806_PLDO6_SLP_VSEL 0x59 1013d0407baSopenharmony_ci#define RK806_CHIP_NAME 0x5A 1023d0407baSopenharmony_ci#define RK806_CHIP_VER 0x5B 1033d0407baSopenharmony_ci#define RK806_OTP_VER 0x5C 1043d0407baSopenharmony_ci#define RK806_SYS_STS 0x5D 1053d0407baSopenharmony_ci#define RK806_SYS_CFG0 0x5E 1063d0407baSopenharmony_ci#define RK806_SYS_CFG1 0x5F 1073d0407baSopenharmony_ci#define RK806_SYS_OPTION 0x61 1083d0407baSopenharmony_ci#define RK806_SLEEP_CONFIG0 0x62 1093d0407baSopenharmony_ci#define RK806_SLEEP_CONFIG1 0x63 1103d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL0 0x64 1113d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL1 0x65 1123d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL2 0x66 1133d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL3 0x67 1143d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL4 0x68 1153d0407baSopenharmony_ci#define RK806_SLEEP_CTR_SEL5 0x69 1163d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL0 0x6A 1173d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL1 0x6B 1183d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL2 0x6C 1193d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL3 0x6D 1203d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL4 0x6E 1213d0407baSopenharmony_ci#define RK806_DVS_CTRL_SEL5 0x6F 1223d0407baSopenharmony_ci#define RK806_DVS_START_CTRL 0x70 1233d0407baSopenharmony_ci#define RK806_SLEEP_GPIO 0x71 1243d0407baSopenharmony_ci#define RK806_SYS_CFG3 0x72 1253d0407baSopenharmony_ci#define RK806_ON_SOURCE 0x74 1263d0407baSopenharmony_ci#define RK806_OFF_SOURCE 0x75 1273d0407baSopenharmony_ci#define RK806_PWRON_KEY 0x76 1283d0407baSopenharmony_ci#define RK806_INT_STS0 0x77 1293d0407baSopenharmony_ci#define RK806_INT_MSK0 0x78 1303d0407baSopenharmony_ci#define RK806_INT_STS1 0x79 1313d0407baSopenharmony_ci#define RK806_INT_MSK1 0x7A 1323d0407baSopenharmony_ci#define RK806_GPIO_INT_CONFIG 0x7B 1333d0407baSopenharmony_ci#define RK806_DATA_REG0 0x7C 1343d0407baSopenharmony_ci#define RK806_DATA_REG1 0x7D 1353d0407baSopenharmony_ci#define RK806_DATA_REG2 0x7E 1363d0407baSopenharmony_ci#define RK806_DATA_REG3 0x7F 1373d0407baSopenharmony_ci#define RK806_DATA_REG4 0x80 1383d0407baSopenharmony_ci#define RK806_DATA_REG5 0x81 1393d0407baSopenharmony_ci#define RK806_DATA_REG6 0x82 1403d0407baSopenharmony_ci#define RK806_DATA_REG7 0x83 1413d0407baSopenharmony_ci#define RK806_DATA_REG8 0x84 1423d0407baSopenharmony_ci#define RK806_DATA_REG9 0x85 1433d0407baSopenharmony_ci#define RK806_DATA_REG10 0x86 1443d0407baSopenharmony_ci#define RK806_DATA_REG11 0x87 1453d0407baSopenharmony_ci#define RK806_DATA_REG12 0x88 1463d0407baSopenharmony_ci#define RK806_DATA_REG13 0x89 1473d0407baSopenharmony_ci#define RK806_DATA_REG14 0x8A 1483d0407baSopenharmony_ci#define RK806_DATA_REG15 0x8B 1493d0407baSopenharmony_ci#define RK806_TM_REG 0x8C 1503d0407baSopenharmony_ci#define RK806_OTP_EN_REG 0x8D 1513d0407baSopenharmony_ci#define RK806_FUNC_OTP_EN_REG 0x8E 1523d0407baSopenharmony_ci#define RK806_TEST_REG1 0x8F 1533d0407baSopenharmony_ci#define RK806_TEST_REG2 0x90 1543d0407baSopenharmony_ci#define RK806_TEST_REG3 0x91 1553d0407baSopenharmony_ci#define RK806_TEST_REG4 0x92 1563d0407baSopenharmony_ci#define RK806_TEST_REG5 0x93 1573d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG0 0x94 1583d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG1 0x95 1593d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG2 0x96 1603d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG3 0x97 1613d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG4 0x98 1623d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG5 0x99 1633d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG6 0x9A 1643d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG7 0x9B 1653d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG8 0x9C 1663d0407baSopenharmony_ci#define RK806_BUCK_VSEL_OTP_REG9 0x9D 1673d0407baSopenharmony_ci#define RK806_NLDO1_VSEL_OTP_REG0 0x9E 1683d0407baSopenharmony_ci#define RK806_NLDO1_VSEL_OTP_REG1 0x9F 1693d0407baSopenharmony_ci#define RK806_NLDO1_VSEL_OTP_REG2 0xA0 1703d0407baSopenharmony_ci#define RK806_NLDO1_VSEL_OTP_REG3 0xA1 1713d0407baSopenharmony_ci#define RK806_NLDO1_VSEL_OTP_REG4 0xA2 1723d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG0 0xA3 1733d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG1 0xA4 1743d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG2 0xA5 1753d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG3 0xA6 1763d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG4 0xA7 1773d0407baSopenharmony_ci#define RK806_PLDO_VSEL_OTP_REG5 0xA8 1783d0407baSopenharmony_ci#define RK806_BUCK_EN_OTP_REG1 0xA9 1793d0407baSopenharmony_ci#define RK806_NLDO_EN_OTP_REG1 0xAA 1803d0407baSopenharmony_ci#define RK806_PLDO_EN_OTP_REG1 0xAB 1813d0407baSopenharmony_ci#define RK806_BUCK_FB_RES_OTP_REG1 0xAC 1823d0407baSopenharmony_ci#define RK806_OTP_RESEV_REG0 0xAD 1833d0407baSopenharmony_ci#define RK806_OTP_RESEV_REG1 0xAE 1843d0407baSopenharmony_ci#define RK806_OTP_RESEV_REG2 0xAF 1853d0407baSopenharmony_ci#define RK806_OTP_RESEV_REG3 0xB0 1863d0407baSopenharmony_ci#define RK806_OTP_RESEV_REG4 0xB1 1873d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG0 0xB2 1883d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG1 0xB3 1893d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG2 0xB4 1903d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG3 0xB5 1913d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG4 0xB6 1923d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG5 0xB7 1933d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG6 0xB8 1943d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG7 0xB9 1953d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG8 0xBA 1963d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG9 0xBB 1973d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG10 0xBC 1983d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG11 0xBD 1993d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG12 0xBE 2003d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG13 0xBF 2013d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG14 0xC0 2023d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG15 0xC1 2033d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG16 0xC2 2043d0407baSopenharmony_ci#define RK806_BUCK_SEQ_REG17 0xC3 2053d0407baSopenharmony_ci#define RK806_HK_TRIM_REG1 0xC4 2063d0407baSopenharmony_ci#define RK806_HK_TRIM_REG2 0xC5 2073d0407baSopenharmony_ci#define RK806_BUCK_REF_TRIM_REG1 0xC6 2083d0407baSopenharmony_ci#define RK806_BUCK_REF_TRIM_REG2 0xC7 2093d0407baSopenharmony_ci#define RK806_BUCK_REF_TRIM_REG3 0xC8 2103d0407baSopenharmony_ci#define RK806_BUCK_REF_TRIM_REG4 0xC9 2113d0407baSopenharmony_ci#define RK806_BUCK_REF_TRIM_REG5 0xCA 2123d0407baSopenharmony_ci#define RK806_BUCK_OSC_TRIM_REG1 0xCB 2133d0407baSopenharmony_ci#define RK806_BUCK_OSC_TRIM_REG2 0xCC 2143d0407baSopenharmony_ci#define RK806_BUCK_OSC_TRIM_REG3 0xCD 2153d0407baSopenharmony_ci#define RK806_BUCK_OSC_TRIM_REG4 0xCE 2163d0407baSopenharmony_ci#define RK806_BUCK_OSC_TRIM_REG5 0xCF 2173d0407baSopenharmony_ci#define RK806_BUCK_TRIM_ZCDIOS_REG1 0xD0 2183d0407baSopenharmony_ci#define RK806_BUCK_TRIM_ZCDIOS_REG2 0xD1 2193d0407baSopenharmony_ci#define RK806_NLDO_TRIM_REG1 0xD2 2203d0407baSopenharmony_ci#define RK806_NLDO_TRIM_REG2 0xD3 2213d0407baSopenharmony_ci#define RK806_NLDO_TRIM_REG3 0xD4 2223d0407baSopenharmony_ci#define RK806_PLDO_TRIM_REG1 0xD5 2233d0407baSopenharmony_ci#define RK806_PLDO_TRIM_REG2 0xD6 2243d0407baSopenharmony_ci#define RK806_PLDO_TRIM_REG3 0xD7 2253d0407baSopenharmony_ci#define RK806_TRIM_ICOMP_REG1 0xD8 2263d0407baSopenharmony_ci#define RK806_TRIM_ICOMP_REG2 0xD9 2273d0407baSopenharmony_ci#define RK806_EFUSE_CONTROL_REGH 0xDA 2283d0407baSopenharmony_ci#define RK806_FUSE_PROG_REG 0xDB 2293d0407baSopenharmony_ci#define RK806_MAIN_FSM_STS_REG 0xDD 2303d0407baSopenharmony_ci#define RK806_FSM_REG 0xDE 2313d0407baSopenharmony_ci#define RK806_TOP_RESEV_OFFR 0xEC 2323d0407baSopenharmony_ci#define RK806_TOP_RESEV_POR 0xED 2333d0407baSopenharmony_ci#define RK806_BUCK_VRSN_REG1 0xEE 2343d0407baSopenharmony_ci#define RK806_BUCK_VRSN_REG2 0xEF 2353d0407baSopenharmony_ci#define RK806_NLDO_RLOAD_SEL_REG1 0xF0 2363d0407baSopenharmony_ci#define RK806_PLDO_RLOAD_SEL_REG1 0xF1 2373d0407baSopenharmony_ci#define RK806_PLDO_RLOAD_SEL_REG2 0xF2 2383d0407baSopenharmony_ci#define RK806_BUCK_CMIN_MX_REG1 0xF3 2393d0407baSopenharmony_ci#define RK806_BUCK_CMIN_MX_REG2 0xF4 2403d0407baSopenharmony_ci#define RK806_BUCK_FREQ_SET_REG1 0xF5 2413d0407baSopenharmony_ci#define RK806_BUCK_FREQ_SET_REG2 0xF6 2423d0407baSopenharmony_ci#define RK806_BUCK_RS_MEABS_REG1 0xF7 2433d0407baSopenharmony_ci#define RK806_BUCK_RS_MEABS_REG2 0xF8 2443d0407baSopenharmony_ci#define RK806_BUCK_RS_ZDLEB_REG1 0xF9 2453d0407baSopenharmony_ci#define RK806_BUCK_RS_ZDLEB_REG2 0xFA 2463d0407baSopenharmony_ci#define RK806_BUCK_RSERVE_REG1 0xFB 2473d0407baSopenharmony_ci#define RK806_BUCK_RSERVE_REG2 0xFC 2483d0407baSopenharmony_ci#define RK806_BUCK_RSERVE_REG3 0xFD 2493d0407baSopenharmony_ci#define RK806_BUCK_RSERVE_REG4 0xFE 2503d0407baSopenharmony_ci#define RK806_BUCK_RSERVE_REG5 0xFF 2513d0407baSopenharmony_ci 2523d0407baSopenharmony_ci/* INT_STS Register field definitions */ 2533d0407baSopenharmony_ci#define RK806_INT_STS_PWRON_FALL BIT(0) 2543d0407baSopenharmony_ci#define RK806_INT_STS_PWRON_RISE BIT(1) 2553d0407baSopenharmony_ci#define RK806_INT_STS_PWRON BIT(2) 2563d0407baSopenharmony_ci#define RK806_INT_STS_PWRON_LP BIT(3) 2573d0407baSopenharmony_ci#define RK806_INT_STS_HOTDIE BIT(4) 2583d0407baSopenharmony_ci#define RK806_INT_STS_VDC_RISE BIT(5) 2593d0407baSopenharmony_ci#define RK806_INT_STS_VDC_FALL BIT(6) 2603d0407baSopenharmony_ci#define RK806_INT_STS_VB_LO BIT(7) 2613d0407baSopenharmony_ci#define RK806_INT_STS_REV0 BIT(0) 2623d0407baSopenharmony_ci#define RK806_INT_STS_REV1 BIT(1) 2633d0407baSopenharmony_ci#define RK806_INT_STS_REV2 BIT(2) 2643d0407baSopenharmony_ci#define RK806_INT_STS_CRC_ERROR BIT(3) 2653d0407baSopenharmony_ci#define RK806_INT_STS_SLP3_GPIO BIT(4) 2663d0407baSopenharmony_ci#define RK806_INT_STS_SLP2_GPIO BIT(5) 2673d0407baSopenharmony_ci#define RK806_INT_STS_SLP1_GPIO BIT(6) 2683d0407baSopenharmony_ci#define RK806_INT_STS_WDT BIT(7) 2693d0407baSopenharmony_ci 2703d0407baSopenharmony_ci/* spi command */ 2713d0407baSopenharmony_ci#define RK806_CMD_READ 0 2723d0407baSopenharmony_ci#define RK806_CMD_WRITE BIT(7) 2733d0407baSopenharmony_ci#define RK806_CMD_CRC_EN BIT(6) 2743d0407baSopenharmony_ci#define RK806_CMD_CRC_DIS 0 2753d0407baSopenharmony_ci#define RK806_CMD_LEN_MSK 0x0f 2763d0407baSopenharmony_ci#define RK806_REG_H 0x00 2773d0407baSopenharmony_ci 2783d0407baSopenharmony_ci#define VERSION_AB 0x01 2793d0407baSopenharmony_ci 2803d0407baSopenharmony_cienum rk806_reg_id { 2813d0407baSopenharmony_ci RK806_ID_DCDC1 = 0, 2823d0407baSopenharmony_ci RK806_ID_DCDC2, 2833d0407baSopenharmony_ci RK806_ID_DCDC3, 2843d0407baSopenharmony_ci RK806_ID_DCDC4, 2853d0407baSopenharmony_ci RK806_ID_DCDC5, 2863d0407baSopenharmony_ci RK806_ID_DCDC6, 2873d0407baSopenharmony_ci RK806_ID_DCDC7, 2883d0407baSopenharmony_ci RK806_ID_DCDC8, 2893d0407baSopenharmony_ci RK806_ID_DCDC9, 2903d0407baSopenharmony_ci RK806_ID_DCDC10, 2913d0407baSopenharmony_ci 2923d0407baSopenharmony_ci RK806_ID_NLDO1, 2933d0407baSopenharmony_ci RK806_ID_NLDO2, 2943d0407baSopenharmony_ci RK806_ID_NLDO3, 2953d0407baSopenharmony_ci RK806_ID_NLDO4, 2963d0407baSopenharmony_ci RK806_ID_NLDO5, 2973d0407baSopenharmony_ci 2983d0407baSopenharmony_ci RK806_ID_PLDO1, 2993d0407baSopenharmony_ci RK806_ID_PLDO2, 3003d0407baSopenharmony_ci RK806_ID_PLDO3, 3013d0407baSopenharmony_ci RK806_ID_PLDO4, 3023d0407baSopenharmony_ci RK806_ID_PLDO5, 3033d0407baSopenharmony_ci RK806_ID_PLDO6, 3043d0407baSopenharmony_ci RK806_ID_END, 3053d0407baSopenharmony_ci}; 3063d0407baSopenharmony_ci 3073d0407baSopenharmony_ci/* Define the rk806 IRQ numbers */ 3083d0407baSopenharmony_cienum rk806_irqs { 3093d0407baSopenharmony_ci /* INT_STS0 registers */ 3103d0407baSopenharmony_ci RK806_IRQ_PWRON_FALL, 3113d0407baSopenharmony_ci RK806_IRQ_PWRON_RISE, 3123d0407baSopenharmony_ci RK806_IRQ_PWRON, 3133d0407baSopenharmony_ci RK806_IRQ_PWRON_LP, 3143d0407baSopenharmony_ci RK806_IRQ_HOTDIE, 3153d0407baSopenharmony_ci RK806_IRQ_VDC_RISE, 3163d0407baSopenharmony_ci RK806_IRQ_VDC_FALL, 3173d0407baSopenharmony_ci RK806_IRQ_VB_LO, 3183d0407baSopenharmony_ci 3193d0407baSopenharmony_ci /* INT_STS0 registers */ 3203d0407baSopenharmony_ci RK806_IRQ_REV0, 3213d0407baSopenharmony_ci RK806_IRQ_REV1, 3223d0407baSopenharmony_ci RK806_IRQ_REV2, 3233d0407baSopenharmony_ci RK806_IRQ_CRC_ERROR, 3243d0407baSopenharmony_ci RK806_IRQ_SLP3_GPIO, 3253d0407baSopenharmony_ci RK806_IRQ_SLP2_GPIO, 3263d0407baSopenharmony_ci RK806_IRQ_SLP1_GPIO, 3273d0407baSopenharmony_ci RK806_IRQ_WDT, 3283d0407baSopenharmony_ci}; 3293d0407baSopenharmony_ci 3303d0407baSopenharmony_ci/* VCC1 low voltage threshold */ 3313d0407baSopenharmony_cienum rk806_lv_sel { 3323d0407baSopenharmony_ci VB_LO_SEL_2800, 3333d0407baSopenharmony_ci VB_LO_SEL_2900, 3343d0407baSopenharmony_ci VB_LO_SEL_3000, 3353d0407baSopenharmony_ci VB_LO_SEL_3100, 3363d0407baSopenharmony_ci VB_LO_SEL_3200, 3373d0407baSopenharmony_ci VB_LO_SEL_3300, 3383d0407baSopenharmony_ci VB_LO_SEL_3400, 3393d0407baSopenharmony_ci VB_LO_SEL_3500, 3403d0407baSopenharmony_ci}; 3413d0407baSopenharmony_ci 3423d0407baSopenharmony_ci/* system shut down voltage select */ 3433d0407baSopenharmony_cienum rk806_uv_sel { 3443d0407baSopenharmony_ci VB_UV_SEL_2700, 3453d0407baSopenharmony_ci VB_UV_SEL_2800, 3463d0407baSopenharmony_ci VB_UV_SEL_2900, 3473d0407baSopenharmony_ci VB_UV_SEL_3000, 3483d0407baSopenharmony_ci VB_UV_SEL_3100, 3493d0407baSopenharmony_ci VB_UV_SEL_3200, 3503d0407baSopenharmony_ci VB_UV_SEL_3300, 3513d0407baSopenharmony_ci VB_UV_SEL_3400, 3523d0407baSopenharmony_ci}; 3533d0407baSopenharmony_ci 3543d0407baSopenharmony_ci/* pin function */ 3553d0407baSopenharmony_cienum rk806_pwrctrl_fun { 3563d0407baSopenharmony_ci PWRCTRL_NULL_FUN, 3573d0407baSopenharmony_ci PWRCTRL_SLP_FUN, 3583d0407baSopenharmony_ci PWRCTRL_POWOFF_FUN, 3593d0407baSopenharmony_ci PWRCTRL_RST_FUN, 3603d0407baSopenharmony_ci PWRCTRL_DVS_FUN, 3613d0407baSopenharmony_ci PWRCTRL_GPIO_FUN, 3623d0407baSopenharmony_ci}; 3633d0407baSopenharmony_ci 3643d0407baSopenharmony_ci/* pin pol */ 3653d0407baSopenharmony_cienum rk806_pin_level { 3663d0407baSopenharmony_ci POL_LOW, 3673d0407baSopenharmony_ci POL_HIGH, 3683d0407baSopenharmony_ci}; 3693d0407baSopenharmony_ci 3703d0407baSopenharmony_cienum rk806_vsel_ctr_sel { 3713d0407baSopenharmony_ci CTR_BY_NO_EFFECT, 3723d0407baSopenharmony_ci CTR_BY_PWRCTRL1, 3733d0407baSopenharmony_ci CTR_BY_PWRCTRL2, 3743d0407baSopenharmony_ci CTR_BY_PWRCTRL3, 3753d0407baSopenharmony_ci}; 3763d0407baSopenharmony_ci 3773d0407baSopenharmony_cienum rk806_dvs_ctr_sel { 3783d0407baSopenharmony_ci CTR_SEL_NO_EFFECT, 3793d0407baSopenharmony_ci CTR_SEL_DVS_START1, 3803d0407baSopenharmony_ci CTR_SEL_DVS_START2, 3813d0407baSopenharmony_ci CTR_SEL_DVS_START3, 3823d0407baSopenharmony_ci}; 3833d0407baSopenharmony_ci 3843d0407baSopenharmony_cienum rk806_pin_dr_sel { 3853d0407baSopenharmony_ci RK806_PIN_INPUT, 3863d0407baSopenharmony_ci RK806_PIN_OUTPUT, 3873d0407baSopenharmony_ci}; 3883d0407baSopenharmony_ci 3893d0407baSopenharmony_cienum rk806_int_pol { 3903d0407baSopenharmony_ci RK806_INT_POL_LOW, 3913d0407baSopenharmony_ci RK806_INT_POL_HIGH, 3923d0407baSopenharmony_ci}; 3933d0407baSopenharmony_ci 3943d0407baSopenharmony_cienum rk806_int_fun { 3953d0407baSopenharmony_ci RK806_INT_ONLY, 3963d0407baSopenharmony_ci RK806_INT_ADN_WKUP, 3973d0407baSopenharmony_ci}; 3983d0407baSopenharmony_ci 3993d0407baSopenharmony_cienum rk806_dvs_mode { 4003d0407baSopenharmony_ci RK806_DVS_NOT_SUPPORT, 4013d0407baSopenharmony_ci RK806_DVS_START1, 4023d0407baSopenharmony_ci RK806_DVS_START2, 4033d0407baSopenharmony_ci RK806_DVS_START3, 4043d0407baSopenharmony_ci RK806_DVS_PWRCTRL1, 4053d0407baSopenharmony_ci RK806_DVS_PWRCTRL2, 4063d0407baSopenharmony_ci RK806_DVS_PWRCTRL3, 4073d0407baSopenharmony_ci RK806_DVS_START_PWRCTR1, 4083d0407baSopenharmony_ci RK806_DVS_START_PWRCTR2, 4093d0407baSopenharmony_ci RK806_DVS_START_PWRCTR3, 4103d0407baSopenharmony_ci RK806_DVS_END, 4113d0407baSopenharmony_ci}; 4123d0407baSopenharmony_ci 4133d0407baSopenharmony_cienum rk806_fields { 4143d0407baSopenharmony_ci CHIP_NAME_H, CHIP_NAME_L, CHIP_VER, OTP_VER, 4153d0407baSopenharmony_ci POWER_EN0, POWER_EN1, POWER_EN2, POWER_EN3, POWER_EN4, POWER_EN5, 4163d0407baSopenharmony_ci BUCK4_EN_MASK, BUCK3_EN_MASK, BUCK2_EN_MASK, BUCK1_EN_MASK, 4173d0407baSopenharmony_ci BUCK4_EN, BUCK3_EN, BUCK2_EN, BUCK1_EN, 4183d0407baSopenharmony_ci BUCK8_EN_MASK, BUCK7_EN_MASK, BUCK6_EN_MASK, BUCK5_EN_MASK, 4193d0407baSopenharmony_ci BUCK8_EN, BUCK7_EN, BUCK6_EN, BUCK5_EN, 4203d0407baSopenharmony_ci BUCK10_EN_MASK, BUCK9_EN_MASK, BUCK10_EN, BUCK9_EN, 4213d0407baSopenharmony_ci NLDO4_EN_MASK, NLDO3_EN_MASK, NLDO2_EN_MASK, NLDO1_EN_MASK, 4223d0407baSopenharmony_ci NLDO4_EN, NLDO3_EN, NLDO2_EN, NLDO1_EN, 4233d0407baSopenharmony_ci PLDO4_EN_MASK, PLDO3_EN_MASK, PLDO2_EN_MASK, PLDO1_EN_MASK, 4243d0407baSopenharmony_ci PLDO4_EN, PLDO3_EN, PLDO2_EN, PLDO1_EN, 4253d0407baSopenharmony_ci NLDO5_EN_MASK, PLDO6_EN_MASK, PLDO5_EN_MASK, 4263d0407baSopenharmony_ci NLDO5_EN, PLDO6_EN, PLDO5_EN, 4273d0407baSopenharmony_ci BUCK8_SLP_EN, BUCK7_SLP_EN, BUCK6_SLP_EN, BUCK5_SLP_EN, BUCK4_SLP_EN, 4283d0407baSopenharmony_ci BUCK3_SLP_EN, BUCK2_SLP_EN, BUCK1_SLP_EN, 4293d0407baSopenharmony_ci BUCK10_SLP_EN, BUCK9_SLP_EN, NLDO5_SLP_EN, NLDO4_SLP_EN, NLDO3_SLP_EN, 4303d0407baSopenharmony_ci NLDO2_SLP_EN, NLDO1_SLP_EN, 4313d0407baSopenharmony_ci PLDO6_SLP_EN, PLDO5_SLP_EN, PLDO4_SLP_EN, PLDO3_SLP_EN, 4323d0407baSopenharmony_ci PLDO2_SLP_EN, PLDO1_SLP_EN, 4333d0407baSopenharmony_ci BUCK1_ON_VSEL, BUCK2_ON_VSEL, BUCK3_ON_VSEL, BUCK4_ON_VSEL, BUCK5_ON_VSEL, 4343d0407baSopenharmony_ci BUCK6_ON_VSEL, BUCK7_ON_VSEL, BUCK8_ON_VSEL, BUCK9_ON_VSEL, BUCK10_ON_VSEL, 4353d0407baSopenharmony_ci BUCK1_SLP_VSEL, BUCK2_SLP_VSEL, BUCK3_SLP_VSEL, BUCK4_SLP_VSEL, BUCK5_SLP_VSEL, 4363d0407baSopenharmony_ci BUCK6_SLP_VSEL, BUCK7_SLP_VSEL, BUCK8_SLP_VSEL, BUCK9_SLP_VSEL, BUCK10_SLP_VSEL, 4373d0407baSopenharmony_ci NLDO1_ON_VSEL, NLDO2_ON_VSEL, NLDO3_ON_VSEL, NLDO4_ON_VSEL, NLDO5_ON_VSEL, 4383d0407baSopenharmony_ci NLDO1_SLP_VSEL, NLDO2_SLP_VSEL, NLDO3_SLP_VSEL, NLDO4_SLP_VSEL, NLDO5_SLP_VSEL, 4393d0407baSopenharmony_ci PLDO1_ON_VSEL, PLDO2_ON_VSEL, PLDO3_ON_VSEL, PLDO4_ON_VSEL, PLDO5_ON_VSEL, 4403d0407baSopenharmony_ci PLDO6_ON_VSEL, 4413d0407baSopenharmony_ci PLDO1_SLP_VSEL, PLDO2_SLP_VSEL, PLDO3_SLP_VSEL, PLDO4_SLP_VSEL, PLDO5_SLP_VSEL, 4423d0407baSopenharmony_ci PLDO6_SLP_VSEL, 4433d0407baSopenharmony_ci BUCK1_RATE, BUCK2_RATE, BUCK3_RATE, BUCK4_RATE, BUCK5_RATE, BUCK6_RATE, 4443d0407baSopenharmony_ci BUCK7_RATE, BUCK8_RATE, BUCK9_RATE, BUCK10_RATE, 4453d0407baSopenharmony_ci PWRON_STS, VDC_STS, VB_UV_STSS, VB_LO_STS, HOTDIE_STS, TSD_STS, VB_OV_STS, 4463d0407baSopenharmony_ci VB_UV_DLY, VB_UV_SEL, VB_LO_ACT, VB_LO_SEL, 4473d0407baSopenharmony_ci ABNORDET_EN, TSD_TEMP, HOTDIE_TMP, SYS_OV_SD_EN, SYS_OV_SD_DLY_SEL, DLY_ABN_SHORT, 4483d0407baSopenharmony_ci VCCXDET_DIS, OSC_TC, ENB2_2M, ENB_32K, 4493d0407baSopenharmony_ci PWRCTRL1_FUN, PWRCTRL2_FUN, PWRCTRL3_FUN, 4503d0407baSopenharmony_ci PWRCTRL1_POL, PWRCTRL2_POL, PWRCTRL3_POL, 4513d0407baSopenharmony_ci BUCK1_VSEL_CTR_SEL, BUCK2_VSEL_CTR_SEL, BUCK3_VSEL_CTR_SEL, BUCK4_VSEL_CTR_SEL, 4523d0407baSopenharmony_ci BUCK5_VSEL_CTR_SEL, BUCK6_VSEL_CTR_SEL, BUCK7_VSEL_CTR_SEL, BUCK8_VSEL_CTR_SEL, 4533d0407baSopenharmony_ci BUCK9_VSEL_CTR_SEL, BUCK10_VSEL_CTR_SEL, 4543d0407baSopenharmony_ci NLDO1_VSEL_CTR_SEL, NLDO2_VSEL_CTR_SEL, NLDO3_VSEL_CTR_SEL, NLDO4_VSEL_CTR_SEL, 4553d0407baSopenharmony_ci NLDO5_VSEL_CTR_SEL, 4563d0407baSopenharmony_ci PLDO1_VSEL_CTR_SEL, PLDO2_VSEL_CTR_SEL, PLDO3_VSEL_CTR_SEL, PLDO4_VSEL_CTR_SEL, 4573d0407baSopenharmony_ci PLDO5_VSEL_CTR_SEL, PLDO6_VSEL_CTR_SEL, 4583d0407baSopenharmony_ci BUCK1_DVS_CTR_SEL, BUCK2_DVS_CTR_SEL, BUCK3_DVS_CTR_SEL, BUCK4_DVS_CTR_SEL, 4593d0407baSopenharmony_ci BUCK5_DVS_CTR_SEL, BUCK6_DVS_CTR_SEL, BUCK7_DVS_CTR_SEL, BUCK8_DVS_CTR_SEL, 4603d0407baSopenharmony_ci BUCK9_DVS_CTR_SEL, BUCK10_DVS_CTR_SEL, 4613d0407baSopenharmony_ci NLDO1_DVS_CTR_SEL, NLDO2_DVS_CTR_SEL, NLDO3_DVS_CTR_SEL, NLDO4_DVS_CTR_SEL, 4623d0407baSopenharmony_ci NLDO5_DVS_CTR_SEL, 4633d0407baSopenharmony_ci PLDO1_DVS_CTR_SEL, PLDO2_DVS_CTR_SEL, PLDO3_DVS_CTR_SEL, PLDO4_DVS_CTR_SEL, 4643d0407baSopenharmony_ci PLDO5_DVS_CTR_SEL, PLDO6_DVS_CTR_SEL, 4653d0407baSopenharmony_ci DVS_START1, DVS_START2, DVS_START3, 4663d0407baSopenharmony_ci SLP3_DATA, SLP2_DATA, SLP1_DATA, SLP3_DR, SLP2_DR, SLP1_DR, 4673d0407baSopenharmony_ci 4683d0407baSopenharmony_ci RST_FUN, DEV_RST, DEV_SLP, SLAVE_RESTART_FUN, DEV_OFF, 4693d0407baSopenharmony_ci WDT_CLR, WDT_EN, WDT_SET, ON_SOURCE, OFF_SOURCE, 4703d0407baSopenharmony_ci ON_PWRON, ON_VDC, RESTART_RESETB, RESTART_PWRON_LP, RESTART_SLP, 4713d0407baSopenharmony_ci RESTART_DEV_RST, RESTART_WDT, 4723d0407baSopenharmony_ci OFF_SLP, VB_SYS_OV, OFF_TSD, OFF_DEV_OFF, OFF_PWRON_LP, OFF_VB_LO, 4733d0407baSopenharmony_ci PWRON_ON_TIME, PWRON_LP_ACT, PWRON_LP_OFF_TIME, PWRON_LP_TM_SEL, PWRON_DB_SEL, 4743d0407baSopenharmony_ci VB_LO_INT, VDC_FALL_INT, VDC_RISE_INT, HOTDIE_INT, PWRON_LP_INT, PWRON_INT, 4753d0407baSopenharmony_ci PWRON_RISE_INT, PWRON_FALL_INT, 4763d0407baSopenharmony_ci VB_LO_IM, VDC_FALL_INT_IM, VDC_RISE_IM, HOTDIE_IM, PWRON_LP_IM, 4773d0407baSopenharmony_ci PWRON_IM, PWRON_RISE_INT_IM, PWRON_FALL_INT_IM, 4783d0407baSopenharmony_ci WDT_INT, SLP1_GPIO_INT, SLP2_GPIO_INT, SLP3_GPIO_INT, 4793d0407baSopenharmony_ci WDT_INT_IM, SLP1_GPIO_IM, SLP2_GPIO_IM, SLP3_GPIO_IM, 4803d0407baSopenharmony_ci INT_FUNCTION, INT_POL, INT_FC_EN, 4813d0407baSopenharmony_ci LDO_RATE, BUCK1_RATE2, BUCK2_RATE2, BUCK3_RATE2, BUCK4_RATE2, 4823d0407baSopenharmony_ci BUCK5_RATE2, BUCK6_RATE2, BUCK7_RATE2, BUCK8_RATE2, BUCK9_RATE2, 4833d0407baSopenharmony_ci BUCK10_RATE2, 4843d0407baSopenharmony_ci F_MAX_FIELDS 4853d0407baSopenharmony_ci}; 4863d0407baSopenharmony_ci 4873d0407baSopenharmony_cistruct rk806_platform_data { 4883d0407baSopenharmony_ci int low_voltage_threshold; 4893d0407baSopenharmony_ci int shutdown_voltage_threshold; 4903d0407baSopenharmony_ci int force_shutdown_enable; 4913d0407baSopenharmony_ci int shutdown_temperture_threshold; 4923d0407baSopenharmony_ci int hotdie_temperture_threshold; 4933d0407baSopenharmony_ci}; 4943d0407baSopenharmony_ci 4953d0407baSopenharmony_cistruct rk806_pin_info { 4963d0407baSopenharmony_ci struct pinctrl *p; 4973d0407baSopenharmony_ci struct pinctrl_state *default_st; 4983d0407baSopenharmony_ci struct pinctrl_state *power_off; 4993d0407baSopenharmony_ci struct pinctrl_state *reset; 5003d0407baSopenharmony_ci struct pinctrl_state *sleep; 5013d0407baSopenharmony_ci struct pinctrl_state *dvs; 5023d0407baSopenharmony_ci}; 5033d0407baSopenharmony_ci 5043d0407baSopenharmony_ci/* 5053d0407baSopenharmony_ci * struct rk806 - state holder for the rk806 driver 5063d0407baSopenharmony_ci * 5073d0407baSopenharmony_ci * Device data may be used to access the rk806 chip 5083d0407baSopenharmony_ci */ 5093d0407baSopenharmony_cistruct rk806 { 5103d0407baSopenharmony_ci struct device *dev; 5113d0407baSopenharmony_ci struct regmap *regmap; 5123d0407baSopenharmony_ci struct regmap_field *rmap_fields[F_MAX_FIELDS]; 5133d0407baSopenharmony_ci /* IRQ Data */ 5143d0407baSopenharmony_ci int irq; 5153d0407baSopenharmony_ci struct regmap_irq_chip_data *irq_data; 5163d0407baSopenharmony_ci struct rk806_platform_data *pdata; 5173d0407baSopenharmony_ci struct rk806_pin_info *pins; 5183d0407baSopenharmony_ci int vb_lo_irq; 5193d0407baSopenharmony_ci}; 5203d0407baSopenharmony_ci 5213d0407baSopenharmony_ciextern const struct regmap_config rk806_regmap_config_spi; 5223d0407baSopenharmony_ciint rk806_device_init(struct rk806 *rk806); 5233d0407baSopenharmony_ciint rk806_device_exit(struct rk806 *rk806); 5243d0407baSopenharmony_ciint rk806_field_write(struct rk806 *rk806, 5253d0407baSopenharmony_ci enum rk806_fields field_id, 5263d0407baSopenharmony_ci unsigned int val); 5273d0407baSopenharmony_ciint rk806_field_read(struct rk806 *rk806, 5283d0407baSopenharmony_ci enum rk806_fields field_id); 5293d0407baSopenharmony_ci#endif /* __LINUX_REGULATOR_RK806_H */ 530