/* * Copyright (C) 2012 Apple Inc. All rights reserved. * * This document is the property of Apple Inc. * It is considered confidential and proprietary. * * This document may not be reproduced or transmitted in any form, * in whole or in part, without the express written permission of * Apple Inc. */ // Specs at Aria: Specification and Data-sheet from Vendor (Dialog) #ifndef __DIALOG_D2257_H #define __DIALOG_D2257_H #define PMU_HAS_SWI 0 #define PMU_HAS_DWI 0 #define PMU_HAS_SPI 1 // TODO: use single register alias (and a value alias) for HAS_SWI,HAS_DWI,HAS_SPI #define PMU_HAS_LCM_LDO 0 // TODO: add BIST ADC #define PMU_HAS_BIST_ADC 0 #define PMU_HAS_CHG_ABCC_FLAG 0 #define PMU_HAS_VIB 0 #define PMU_HAS_RAM 1 // TODO: enable wled #define PMU_HAS_WLED 1 #define PMU_HAS_32K_RTC 1 // TODO: enable accumulators #define PMU_HAS_ACCUMULATORS 0 #define PMU_HAS_GPIO_CONF 1 #define PMU_HAS_SYS 1 #define PMU_HAS_SCRATCH 1 #define PMU_HAS_CHARGER 1 #define PMU_HAS_PERF_STATES 1 #define PMU_DRV_NEW_DRIVER 1 enum { kDIALOG_ADDR_R = 0x79, kDIALOG_ADDR_W = 0x78, kDIALOG_REG_BYTES = 2, }; enum { kDIALOG_FAULTLOG_COUNT = 2, // @0x0100 (read only the first 2) kDIALOG_EVENT_COUNT = 0x1f, // @0x0140 kDIALOG_STATUS_COUNT = 0x1f, // @0x0180 kDIALOG_CHIPID_COUNT = 4, // @0x0000 kDIALOG_GPIO_COUNT = 22, }; #include "dCommon.h" enum { // --------------------------------- // Faultlog (virtual) // --------------------------------- kDIALOG_FAULT_LOG_A = 0x0100, // ... // kDIALOG_FAULT_LOG_R // --------------------------------- // Event, Status ,IRQ Mask (Virtual) // --------------------------------- kD2255_V_EVENT_AA = 0x0140, // 0 kD2255_V_EVENT_AB = 0x0141, // 1 kD2255_V_EVENT_AC = 0x0142, // 2 kD2255_V_EVENT_AD = 0x0143, // 3 kD2255_V_EVENT_AE = 0x0144, // 4 kD2255_V_EVENT_AF = 0x0145, // 5 BTNs kD2255_V_EVENT_AG = 0x0146, // 6 GPIO1-8 kD2255_V_EVENT_AH = 0x0147, // 7 GPIO9-16 kD2255_V_EVENT_AI = 0x0148, // 8 GPIO17-22 kD2255_V_EVENT_AJ = 0x0149, // 9 VBUS/VCENTER kD2255_V_EVENT_AK = 0x014a, // 10 kD2255_V_EVENT_AL = 0x014b, // 11 kD2255_V_EVENT_AM = 0x014c, // 12 kD2255_V_EVENT_AN = 0x014d, // 13 kD2255_V_EVENT_AO = 0x014e, // 14 kD2255_V_EVENT_AP = 0x014f, // 15 kD2255_V_EVENT_AQ = 0x0150, // 16 kD2255_V_EVENT_AR = 0x0151, // 17 kD2255_V_EVENT_AS = 0x0152, // 18 kD2255_V_EVENT_AT = 0x0153, // 19 kD2255_V_EVENT_AU = 0x0154, // 20 kD2255_V_EVENT_AV = 0x0155, // 21 kD2255_V_EVENT_AW = 0x0156, // 22 kD2255_V_EVENT_AX = 0x0157, // 23 EOMC kD2255_V_EVENT_AY = 0x0158, // 24 kD2255_V_EVENT_AZ, kD2255_V_EVENT_BA, kD2255_V_EVENT_BB, kD2255_V_EVENT_BC, kD2255_V_EVENT_BD, kD2255_V_EVENT_BE, kD2255_V_STATUS_AA = 0x0180, // .... V_STATUS_Y kD2255_V_STATUS_BE = 0x019e, kD2255_V_IRQ_MASK_AA = 0x01c0, // .... V_IRQ_MASK_Y kD2255_V_IRQ_MASK_BE = 0x01de, kD2255_V_FAULTLOG_COUNT = 0x12, kD2255_V_EVENT_COUNT = 0x1f, kD2255_V_STATUS_COUNT = 0x1f, kDIALOG_EVENT_A = kD2255_V_EVENT_AA, kDIALOG_STATUS_A = kD2255_V_STATUS_AA, kDIALOG_IRQ_MASK_A = kD2255_V_IRQ_MASK_AA, }; // --------------------------------- // Chip Identification // --------------------------------- enum { kDIALOG_MASK_REV_CODE = 0x0200, kDIALOG_TRIM_REL_CODE = 0x0201, kDIALOG_PLATFORM_ID = 0x0202, kDIALOG_DEVICE_ID1 = 0x0204, kDIALOG_DEVICE_ID2 = 0x0205, kDIALOG_DEVICE_ID3 = 0x0206, kDIALOG_DEVICE_ID4 = 0x0207, kDIALOG_DEVICE_ID5 = 0x0208, kDIALOG_DEVICE_ID6 = 0x0209, kDIALOG_DEVICE_ID7 = 0x020a, kDIALOG_CHIP_ID = kDIALOG_MASK_REV_CODE, }; // --------------------------------- // System Control And Status // --------------------------------- enum { kD2257_APP_TMUX = 0x0212, }; // --------------------------------- // System Configuration // --------------------------------- enum { kD2257_SYSCTL_PRE_UVLO_CONF = 0x026b, }; // --------------------------------- // Faultlog // --------------------------------- enum { kD2257_FAULT_LOG1 = 0x02c0, kD2257_FAULT_LOG2 = 0x02c1, kDIALOG_FAULT_LOG = kD2257_FAULT_LOG1, kDIALOG_FAULT_LOG2 = kD2257_FAULT_LOG2, }; // --------------------------------- // Events. Status and IRQ Control // --------------------------------- enum { kD2257_SYSCTL_EVENT = 0x02d2, kD2257_SYSCTL_STATUS = 0x02d3, kD2257_SYSCTL_IRQ_MASK = 0x02d4, }; // --------------------------------- // Power Supply Control // Active,Standby,Hibernate are now encoded here, need TestAccess // --------------------------------- enum { kD2257_PWRONOFF_BUCK0_EN = 0x0300, kD2257_PWRONOFF_BUCK1_EN = 0x0301, kD2257_PWRONOFF_BUCK2_EN = 0x0302, kD2257_PWRONOFF_BUCK3_EN = 0x0303, kD2257_PWRONOFF_BUCK4_EN = 0x0304, kD2257_PWRONOFF_BUCK5_EN = 0x0305, kD2257_PWRONOFF_BUCK6_EN = 0x0306, kD2257_PWRONOFF_BUCK7_EN = 0x0307, kD2257_PWRONOFF_BUCK8_EN = 0x0308, kD2257_PWRONOFF_WLEDA_EN = 0x0309, kD2257_PWRONOFF_WLEDB_EN = 0x030A, kD2257_PWRONOFF_LDO1_EN = 0x030b, kD2257_PWRONOFF_LDO2_EN = 0x030c, kD2257_PWRONOFF_LDO3_EN = 0x030d, kD2257_PWRONOFF_LDO4_EN = 0x030e, kD2257_PWRONOFF_LDO5_EN = 0x030f, kD2257_PWRONOFF_LDO6_EN = 0x0310, kD2257_PWRONOFF_LDO7_EN = 0x0311, kD2257_PWRONOFF_LDO8_EN = 0x0312, kD2257_PWRONOFF_LDO9_EN = 0x0313, kD2257_PWRONOFF_LDO10_EN = 0x0314, kD2257_PWRONOFF_LDO11_EN = 0x0315, kD2257_PWRONOFF_LDO13_EN = 0x0316, kD2257_PWRONOFF_LDO14_EN = 0x0317, kD2257_PWRONOFF_LDO15_EN = 0x0318, kD2257_PWRONOFF_LDO16_EN = 0x0319, kD2257_PWRONOFF_LCM_BST_SW_EN = 0x031a, kD2257_PWRONOFF_LCM_BST_EN = 0x031b, kD2257_PWRONOFF_LCM_LDO1_EN = 0x031c, kD2257_PWRONOFF_LCM_LDO2_EN = 0x031d, kD2257_PWRONOFF_CP_EN = 0x031e, kD2257_PWRONOFF_BUCK3_SW1_EN = 0x031f, kD2257_PWRONOFF_BUCK3_SW2_EN = 0x0320, kD2257_PWRONOFF_BUCK3_SW3_EN = 0x0321, kD2257_PWRONOFF_BUCK4_SW1_EN = 0x0322, kD2257_PWRONOFF_BUCK4_SW2_EN = 0x0323, kD2257_PWRONOFF_GPIO_32K_EN = 0x0324, kD2257_PWRONOFF_OUT_32K_EN = 0x0325, kD2257_PWRONOFF_SLEEP_32K_EN = 0x0326, kD2257_PWRONOFF_NRESET_EN = 0x0327, kD2257_PWRONOFF_SYS_ALIVE_EN = 0x0328, kD2257_PWRONOFF_PRE_UVLO_EN = 0x0329, kDIALOG_PWRONOFF_WLEDA_EN = kD2257_PWRONOFF_WLEDA_EN, kDIALOG_PWRONOFF_WLEDB_EN = kD2257_PWRONOFF_WLEDB_EN }; // --------------------------------- // Main FSM, MFSM Events // --------------------------------- enum { kD2257_MFSM_CTRL = 0x0400, kD2257_ACT_TO_SLEEP3_DLY = 0x0401, kD2257_ACT_TO_OFF_DLY = 0x0402, kD2257_OFF_TIMER_DLY = 0x0403, kD2257_SLEEP3_TIMER_DLY = 0x0404, kD2257_MFSM_CONF1 = 0x0460, kD2257_MFSM_CTRL_PERF_FLOOR_OFF = (0<<2), kD2257_MFSM_CTRL_PERF_FLOOR_SLEEP3 = (1<<2), kD2257_MFSM_CTRL_PERF_FLOOR_SLEEP2 = (2<<2), kD2257_MFSM_CTRL_PERF_FLOOR_ACTIVE = (3<<2), kD2257_MFSM_CTRL_FORCE_SLEEP3 = (1<<1), kD2257_MFSM_CTRL_FORCE_OFF = (1<<0), kDIALOG_SYS_CONTROL_PERF_FLOOR_OFF = kD2257_MFSM_CTRL_PERF_FLOOR_OFF, kDIALOG_SYS_CONTROL_PERF_FLOOR_SLEEP3 = kD2257_MFSM_CTRL_PERF_FLOOR_SLEEP3, kDIALOG_SYS_CONTROL_PERF_FLOOR_SLEEP2 = kD2257_MFSM_CTRL_PERF_FLOOR_SLEEP2, kDIALOG_SYS_CONTROL_PERF_FLOOR_ACTIVE = kD2257_MFSM_CTRL_PERF_FLOOR_ACTIVE, kDIALOG_SYS_CONTROL_PERF_FLOOR_MASK = (0x3<<2), kDIALOG_SYS_CONTROL_HIBERNATE = kD2257_MFSM_CTRL_FORCE_SLEEP3, kDIALOG_SYS_CONTROL_STANDBY = kD2257_MFSM_CTRL_FORCE_OFF, // TODO: verify this kDIALOG_SYS_CONTROL_HIBERNATE_ALWAYS = kDIALOG_SYS_CONTROL_HIBERNATE, kDIALOG_SYS_CONTROL = kD2257_MFSM_CTRL, }; // --------------------------------- // RTC Calendar and Clock, Events // --------------------------------- enum { kDIALOG_RTC_CONTROL = 0x0500, kDIALOG_RTC_TIMEZONE = 0x0501, kDIALOG_RTC_SUB_SECOND_A = 0x0502, kDIALOG_RTC_SUB_SECOND_B = 0x0503, kDIALOG_RTC_SECOND_A = 0x0504, kDIALOG_RTC_SECOND_B = 0x0505, kDIALOG_RTC_SECOND_C = 0x0506, kDIALOG_RTC_SECOND_D = 0x0507, kDIALOG_RTC_ALARM_A = 0x0508, kDIALOG_RTC_ALARM_B = 0x0509, kDIALOG_RTC_ALARM_C = 0x050a, kDIALOG_RTC_ALARM_D = 0x050b, // Events. Status. Mask in Virtual // kD2255_RTC_EVENT = 0x05c0, // kD2255_RTC_STATUS = 0x05c1, // kD2255_RTC_IRQ_MASK = 0x05c2, }; // --------------------------------- // SPI Interface // --------------------------------- enum { kD2257_SPI_CTRL = 0x0600, // global enable kD2257_EN_CMD0 = 0x0601, // buck#_spi_en kD2257_EN_CMD1 = 0x0602, kD2257_EN_CMD2 = 0x0603, // wled spi access enable kD2257_EN_CMD3 = 0x0604, // buck#_spi_dis_master kD2257_EN_CMD4 = 0x0605, kD2257_SPI_CONFIG = 0x0660, // set when PMU_HAS_SPI kDIALOG_SPI_CONTROL = kD2257_SPI_CTRL, kDIALOG_SPI_CONTROL_SPI_EN = 1, }; // --------------------------------- // Clock Generation // --------------------------------- enum { kD2257_SYS_CTRL_CONF0 = 0x0700, kD2257_SYS_CTRL_CONF1 = 0x0760, kD2257_RTC_CTRL0 = 0x0761, kD2257_RTC_CTRL1 = 0x0762, kD2257_RTC_CTRL2 = 0x0763, kD2257_OSC_CTRL0 = 0x0764, kD2257_INT_OSC_TRIM = 0x0765, kD2257_CLK_REQ_FRC = 0x0766, kD2257_BG_CTRL = 0x0767, kD2257_CKLGEN_EVENT = 0x07c0, kD2257_CKLGEN_STATUS = 0x07c1, kD2257_CKLGEN_IRQ_MASK = 0x07c2, }; // --------------------------------- // WLED // --------------------------------- enum { kD2257_WLED_ISET_LSB = 0x0b00, kD2257_WLED_ISET_MSB = 0x0b01, kD2257_WLED_PWM_LSB = 0x0b02, kD2257_WLED_PWM_MSB = 0x0b03, kD2257_WLED_CTRL1 = 0x0b04, kD2257_WLED_CTRL2 = 0x0b05, kD2257_WLED_CTRL3 = 0x0b06, kD2257_WLED_CTRL4 = 0x0b07, kD2257_WLED_CTRL4A = 0x0b08, kD2257_WLED_CTRL5 = 0x0b09, kD2257_WLED_CTRL6 = 0x0b0a, kDIALOG_WLED_ISET = kD2257_WLED_ISET_MSB, kDIALOG_WLED_ISET2 = kD2257_WLED_ISET_LSB, kDIALOG_WLED_CONTROL = kD2257_WLED_CTRL1, kDIALOG_WLED_CONTROL1 = kD2257_WLED_CTRL1, kDIALOG_WLED_CONTROL2 = kD2257_WLED_CTRL2, kDIALOG_WLED_DWI_CONTROL= kD2257_WLED_CTRL2, kDIALOG_WLED_OPTIONS = kD2257_WLED_CTRL2, }; enum { kDIALOG_WLED_CONTROL_WLED_ENABLE1 = (1 << 0), kDIALOG_WLED_CONTROL_WLED_ENABLE2 = (1 << 1), kDIALOG_WLED_CONTROL_WLED_ENABLE3 = (1 << 2), kDIALOG_WLED_CONTROL_WLED_ENABLE4 = (1 << 3), kDIALOG_WLED_CONTROL_WLED_ENABLE5 = (1 << 4), kDIALOG_WLED_CONTROL_WLED_ENABLE6 = (1 << 5), }; enum { kDIALOG_WLED_CONTROL2_WLED_DITH_RAMP_EN = (1 << 3), kDIALOG_WLED_CONTROL2_WLED_DITH_EN = (1 << 2), kDIALOG_WLED_CONTROL2_WLED_DWI_EN = (1 << 1), kDIALOG_WLED_CONTROL2_WLED_RAMP_EN = (1 << 0), kDIALOG_WLED_CONTROL_WLED_DWI_EN = kDIALOG_WLED_CONTROL2_WLED_DWI_EN, kDIALOG_WLED_OPTIONS_DEFAULT = kDIALOG_WLED_CONTROL2_WLED_DITH_EN, kDIALOG_WLED_OPTIONS_xWI_EN = kDIALOG_WLED_CONTROL2_WLED_DWI_EN, kDIALOG_WLED_OPTIONS_MASK = (kDIALOG_WLED_CONTROL2_WLED_RAMP_EN| kDIALOG_WLED_CONTROL2_WLED_DITH_EN| kDIALOG_WLED_CONTROL2_WLED_DITH_RAMP_EN), }; #define WLED_ISET_BITS 11 // --------------------------------- // GPIO configuration // --------------------------------- enum { kD2257_GPIO1_CONF1 = 0x0900, kD2257_GPIO1_CONF2 = 0x0901, kD2257_GPIO2_CONF1, kD2257_GPIO2_CONF2, kD2257_GPIO3_CONF1, kD2257_GPIO3_CONF2, kD2257_GPIO4_CONF1, kD2257_GPIO4_CONF2, kD2257_GPIO5_CONF1, kD2257_GPIO5_CONF2, kD2257_GPIO6_CONF1, kD2257_GPIO6_CONF2, kD2257_GPIO7_CONF1, kD2257_GPIO7_CONF2, kD2257_GPIO8_CONF1, kD2257_GPIO8_CONF2, kD2257_GPIO9_CONF1, kD2257_GPIO9_CONF2, kD2257_GPIO10_CONF1, kD2257_GPIO10_CONF2, kD2257_GPIO11_CONF1, kD2257_GPIO11_CONF2, kD2257_GPIO12_CONF1, kD2257_GPIO12_CONF2, kD2257_GPIO13_CONF1, kD2257_GPIO13_CONF2, kD2257_GPIO14_CONF1, kD2257_GPIO14_CONF2, kD2257_GPIO15_CONF1, kD2257_GPIO15_CONF2, kD2257_GPIO16_CONF1, kD2257_GPIO16_CONF2, kD2257_GPIO17_CONF1, kD2257_GPIO17_CONF2, kD2257_GPIO18_CONF1, kD2257_GPIO18_CONF2, kD2257_GPIO19_CONF1_SLP1 = 0x0924, kD2257_GPIO19_CONF1_SLP2, kD2257_GPIO19_CONF1_SLP3, kD2257_GPIO19_CONF1_OFF, kD2257_GPIO19_CONF1, kD2257_GPIO19_CONF2, kD2257_GPIO20_CONF1_SLP1 = 0x092A, kD2257_GPIO20_CONF1_SLP2, kD2257_GPIO20_CONF1_SLP3, kD2257_GPIO20_CONF1_OFF, kD2257_GPIO20_CONF1, kD2257_GPIO20_CONF2, kD2257_GPIO21_CONF1_SLP1 = 0x0930, kD2257_GPIO21_CONF1_SLP2, kD2257_GPIO21_CONF1_SLP3, kD2257_GPIO21_CONF1_OFF, kD2257_GPIO21_CONF1, kD2257_GPIO21_CONF2, kD2257_GPIO22_CONF1_SLP1 = 0x0936, kD2257_GPIO22_CONF1_SLP2, kD2257_GPIO22_CONF1_SLP3, kD2257_GPIO22_CONF1_OFF, kD2257_GPIO22_CONF1, kD2257_GPIO22_CONF2, kDIALOG_SYS_GPIO_REG_START = kD2257_GPIO1_CONF1, // until GPIO21_CONF1, GPIO21_CONF2 ... kDIALOG_GPIO_COUNT gpios kD2257_OUT_32K = 0x093c, kD2257_SLEEP_32K = 0x093d, kD2257_ACTIVE_RDY = 0x093e, kD2257_SLEEP1_RDY = 0x093f, // GPI Control kD2257_BUTTON1_CONF = 0x0960, kD2257_BUTTON2_CONF = 0x0961, kD2257_BUTTON3_CONF = 0x0962, kD2257_BUTTON4_CONF = 0x0963, kD2257_BUTTON_DBL = 0x0964, kD2257_BUTTON_WAKE = 0x0965, kD2257_RESET_IN1_CONF1 = 0x0966, kD2257_RESET_IN1_CONF2 = 0x0967, kD2257_RESET_IN2_CONF1 = 0x0968, kD2257_RESET_IN2_CONF2 = 0x0969, kD2257_RESET_IN3_CONF1 = 0x096a, kD2257_RESET_IN3_CONF2 = 0x096b, kDIALOG_BUTTON_DBL = kD2257_BUTTON_DBL, }; // --------------------------------- // Event,Status,IRQ Control // --------------------------------- enum { kD2257_IO_EVENT_A = 0x09c0, kD2257_IO_EVENT_B = 0x09c1, kD2257_IO_EVENT_C = 0x09c2, kD2257_IO_EVENT_D = 0x09c3, kD2257_IO_STATUS_A = 0x09c4, kD2257_IO_STATUS_B = 0x09c5, kD2257_IO_STATUS_C = 0x09c6, kD2257_IO_STATUS_D = 0x09c7, kD2257_IO_IRQ_MASK_A = 0x09c8, kD2257_IO_IRQ_MASK_B = 0x09c9, kD2257_IO_IRQ_MASK_C = 0x09ca, kD2257_IO_IRQ_MASK_D = 0x09cb, }; // --------------------------------- // Charger / Charging Control // --------------------------------- enum { kD2257_CHG_CONTROL = 0xa00, kD2257_SYS_CONF_B = 0xa01, kD2257_SYS_CONF_D = 0xa02, kD2257_ISET_BUCK = 0x0a03, kD2257_ISET_BUCK_SHADOW = 0x0a04, kD2257_ISET_BUCK_ABSMAX = 0x0a05, kD2257_ISET_BUCK_ACTUAL = 0x0a06, kD2257_ISET_BUCK_ALT = 0x0a07, kD2257_ICHG_BAT = 0x0a08, kD2257_CHG_CTRL_A = 0x0a0a, kD2257_CHG_CTRL_B = 0x0a0b, kD2257_CHG_CTRL_C = 0x0a0c, kD2257_CHG_CTRL_D = 0x0a0d, kD2257_CHG_CTRL_E = 0x0a0e, kD2257_CHG_CTRL_F = 0x0a0f, kD2257_CHG_CTRL_G = 0x0a10, kD2257_CHG_CTRL_H = 0x0a11, kD2257_CHG_TIME = 0x0a12, kD2257_CHG_TIME_PRE = 0x0a13, kD2257_CHG_STAT = 0x0a14, // kD2207_CHG_VSET_TRIM = 0x04d0, // kD2207_IBUS_GAIN_TRIM = 0x04d2, // kD2207_IBUS100_OFS_TRIM = 0x04d3, // kD2207_IBUS500_OFS_TRIM = 0x04d4, // kD2207_IBUS1500_GAIN_TRIM= 0x04d5, // kD2207_IBUS1500_OFS_TRIM= 0x04d6, kDIALOG_SYS_CONTROL_BAT_PWR_SUSPEND = (1 << 1), kDIALOG_SYS_CONTROL_BUS_PWR_SUSPEND = (1 << 0), kDIALOG_SYS_CONTROL_CHRG_CONTROLS = kDIALOG_SYS_CONTROL_BAT_PWR_SUSPEND | kDIALOG_SYS_CONTROL_BUS_PWR_SUSPEND, kDIALOG_CHARGE_BUCK_CONTROL = kD2257_ISET_BUCK, kDIALOG_CHARGE_BUCK_STATUS = kD2257_ISET_BUCK_ACTUAL, kDIALOG_CHARGE_STATUS = kD2257_CHG_STAT, kDIALOG_CHARGE_CONTROL_ICHG_BAT = kD2257_ICHG_BAT, kDIALOG_CHARGE_CONTROL_HIB = kD2257_CHG_CTRL_B, kDIALOG_CHARGE_CONTROL_TIME = kD2257_CHG_CTRL_D, kDIALOG_CHARGE_CONTROL_EN = kD2257_CHG_CTRL_G, kDIALOG_OTP_ISET_BAT = kD2257_CHG_CTRL_C, }; // --------------------------------- // IPEAK // --------------------------------- enum { kD2257_IPK_UV_BUCK1_IPEAK_ANA_CONF_2 = 0x0f87, kD2257_IPK_UV_BUCK1_UV_DIG_CONF_1 = 0x0f8a, kD2257_IPK_UV_BUCK1_UV_EN_THR = 0x0f8c, kD2257_IPK_UV_BUCK1_UV_ANA_CONF_1 = 0x0f8d, kD2257_IPK_UV_BUCK1_UV_OFFSET = 0x0f8e, }; // --------------------------------- // Buck control // --------------------------------- enum { kD2257_BUCK0_FAST_VSEL = 0x1000, kD2257_BUCK0_VSEL = 0x1001, kD2257_BUCK0_FAST_VSEL_EN = 0x1002, kD2257_BUCK0_VSEL_ACTUAL = 0x1005, kD2257_BUCK0_VSEL_LOCK = 0x1006, kD2257_BUCK0_MINV, kD2257_BUCK0_MAXV, kD2257_BUCK0_OFS_V, kD2257_BUCK0_MODE = 0x100a, kD2257_BUCK0_FSM_TRIM6 = 0x1067, kD2257_BUCK0_FSM_TRIM7 = 0x1068, kD2257_BUCK1_FAST_VSEL = 0x1100, kD2257_BUCK1_VSEL = 0x1101, kD2257_BUCK1_FSM_TRIM6 = 0x1167, kD2257_BUCK1_FSM_TRIM7 = 0x1168, kD2257_BUCK2_FAST_VSEL = 0x1200, kD2257_BUCK2_VSEL = 0x1201, kD2257_BUCK2_FSM_TRIM6 = 0x1267, kD2257_BUCK2_FSM_TRIM7 = 0x1268, kD2257_BUCK3_FAST_VSEL = 0x1300, kD2257_BUCK3_VSEL = 0x1301, kD2257_BUCK3_FSM_TRIM6 = 0x1367, kD2257_BUCK3_FSM_TRIM7 = 0x1368, kD2257_BUCK4_FAST_VSEL = 0x1400, kD2257_BUCK4_VSEL = 0x1401, kD2257_BUCK4_FSM_TRIM6 = 0x1467, kD2257_BUCK4_FSM_TRIM7 = 0x1468, kD2257_BUCK5_FAST_VSEL = 0x1500, kD2257_BUCK5_VSEL = 0x1501, kD2257_BUCK5_FSM_TRIM6 = 0x1567, kD2257_BUCK5_FSM_TRIM7 = 0x1568, kD2257_BUCK6_FAST_VSEL = 0x1600, kD2257_BUCK6_VSEL = 0x1601, kD2257_BUCK6_FSM_TRIM6 = 0x1667, kD2257_BUCK6_FSM_TRIM7 = 0x1668, kD2257_BUCK7_FAST_VSEL = 0x1700, kD2257_BUCK7_VSEL = 0x1701, kD2257_BUCK7_FSM_TRIM6 = 0x1767, kD2257_BUCK7_FSM_TRIM7 = 0x1768, kD2257_BUCK8_FAST_VSEL = 0x1800, kD2257_BUCK8_VSEL = 0x1801, kD2257_BUCK8_FSM_TRIM6 = 0x1867, kD2257_BUCK8_FSM_TRIM7 = 0x1868, // LDO control... kD2257_LDO1_VSEL = 0x2100, kD2257_LDO1_VSEL_ACTUAL = 0x2101, kD2257_LDO1_MINV = 0x2160, kD2257_LDO1_MAXV = 0x2161, kD2257_LDO1_UOV_LIM_EN_VOUT_PD= 0x2163, kD2257_LDO2_VSEL = 0x2200, kD2257_LDO2_VSEL_ACTUAL = 0x2201, kD2257_LDO2_BYPASS = 0x2202, kD2257_LDO2_MINV = 0x2260, kD2257_LDO2_MAXV = 0x2261, kD2257_LDO3_VSEL = 0x2300, kD2257_LDO3_VSEL_ACTUAL = 0x2301, kD2257_LDO3_MINV = 0x2360, kD2257_LDO3_MAXV = 0x2361, kD2257_LDO4_VSEL = 0x2400, kD2257_LDO4_VSEL_ACTUAL = 0x2401, kD2257_LDO4_MINV = 0x2460, kD2257_LDO4_MAXV = 0x2461, kD2257_LDO5_VSEL = 0x2500, kD2257_LDO5_VSEL_ACTUAL = 0x2501, kD2257_LDO5_MINV = 0x2560, kD2257_LDO5_MAXV = 0x2561, kD2257_LDO6_VSEL = 0x2600, kD2257_LDO6_VSEL_ACTUAL = 0x2601, kD2257_LDO6_BYPASS = 0x2602, kD2257_LDO6_MINV = 0x2660, kD2257_LDO6_MAXV = 0x2661, kD2257_LDO7_VSEL = 0x2700, kD2257_LDO7_VSEL_ACTUAL = 0x2701, kD2257_LDO7_MINV = 0x2760, kD2257_LDO7_MAXV = 0x2761, kD2257_LDO7_SOFT_STARTUP = 0x2764, kD2257_LDO8_VSEL = 0x2800, kD2257_LDO8_VSEL_ACTUAL = 0x2801, kD2257_LDO8_MINV = 0x2860, kD2257_LDO8_MAXV = 0x2861, kD2257_LDO9_VSEL = 0x2900, kD2257_LDO9_VSEL_ACTUAL = 0x2901, kD2257_LDO9_MINV = 0x2960, kD2257_LDO9_MAXV = 0x2961, kD2257_LDO9_TRIM = 0x2962, kD2257_LDO10_VSEL = 0x2A00, kD2257_LDO10_VSEL_ACTUAL = 0x2A01, kD2257_LDO10_MINV = 0x2A60, kD2257_LDO10_MAXV = 0x2A61, kD2257_LDO10_TRIM = 0x2A62, kD2257_LDO11_VSEL = 0x2B00, kD2257_LDO11_VSEL_ACTUAL = 0x2B01, kD2257_LDO11_MINV = 0x2B60, kD2257_LDO11_MAXV = 0x2B61, kD2257_LDO11_TRIM = 0x2B62, kD2257_LDO12_TRIM = 0x2C62, kD2257_LDO13_VSEL = 0x2D00, kD2257_LDO13_VSEL_ACTUAL = 0x2D01, kD2257_LDO13_MINV = 0x2D60, kD2257_LDO13_MAXV = 0x2D61, kD2257_LDO13_TRIM = 0x2D62, kD2257_LDO14_VSEL = 0x2E00, kD2257_LDO14_VSEL_ACTUAL = 0x2E01, kD2257_LDO14_MINV = 0x2E60, kD2257_LDO14_MAXV = 0x2E61, kD2257_LDO14_TRIM = 0x2E62, kD2257_LDO15_VSEL = 0x2F00, kD2257_LDO15_VSEL_ACTUAL = 0x2F01, kD2257_LDO15_BYPASS = 0x2F02, kD2257_LDO15_MINV = 0x2F60, kD2257_LDO15_MAXV = 0x2F61, kD2257_LDO15_TRIM = 0x2F62, kD2257_LDO16_VSEL = 0x3000, kD2257_LDO16_VSEL_ACTUAL = 0x3001, kD2257_LDO16_MINV = 0x3060, kD2257_LDO16_MAXV = 0x3061, kD2257_LDO16_TRIM = 0x3062, kD2257_LDO_LCM_LDO1_VSEL = 0x3200, kD2257_LDO_LCM_LDO1_VSEL_ACTUAL = 0x3201, kD2257_LDO_LCM_LDO2_VSEL = 0x3300, kD2257_LDO_LCM_LDO2_VSEL_ACTUAL = 0x3301, kD2257_LDO_LCM_BOOST_VSEL = 0x3700, kD2257_LDO_LCM_BOOST_VSEL_ACTUAL = 0x3701, kD2257_LDO_LCM_BOOST_VSEL_MINV = 0x3760, kD2257_LDO_LCM_BOOST_VSEL_MAXV = 0x3761, kD2257_LDO_LCM_BOOST_CONF = 0x3762, kD2257_LDO_EVENT = 0x3FC0, kD2257_LDO_STATUS = 0x3FC1, kD2257_LDO_IRQ_MASK = 0x3FC2, kDIALOG_BYPASS_EN = 1, kDIALOG_BYPASS_DIS = 0, }; // --------------------------------- // GPADC control // --------------------------------- enum { kD2257_GPADC_MAN_CTRL1 = 0x4000, // Channel 0..253 (0xfd) kD2257_GPADC_MAN_CTRL1_MASK = 0xff, kD2257_GPADC_MAN1_RES_LSB = 0x4001, kD2257_GPADC_MAN1_RES_MSB = 0x4002, kD2257_GPADC_MAN_CTRL2 = 0x4004, // Channel 0..127 (0x7f) kD2257_GPADC_MAN_CTRL2_MASK = 0x7F, kD2257_GPADC_MAN2_RES_LSB = 0x4005, kD2257_GPADC_MAN2_RES_MSB = 0x4006, kD2257_GPADC_ICHG_AVG = 0x40f8, // mapped on (kADC_AVG|kD2257_ADC_CONTROL_MUX_SEL_ICH_ADC_CH) known as kDIALOG_ICHG_AVG kD2257_GPADC_TDIE1_RISE = 0x413c, // .. kD2257_GPADC_TDIE9_RISE = 0x4147, kDIALOG_T_OFFSET_MSB = 0x4148, kDIALOG_T_OFFSET_LSB = 0x4149, // [0-3] kD2257_GPADC_EVENT0 = 0x4180, kD2257_GPADC_EVENT1 = 0x4181, kD2257_GPADC_STATUS0 = 0x4187, kD2257_GPADC_STATUS1 = 0x4188, }; enum { kDIALOG_APP_TMUX = kD2257_APP_TMUX, #if 0 kDIALOG_BIST_ADC_CTRL = 0x0541, kDIALOG_BIST_ADC_LSB = 0x0542, kDIALOG_BIST_ADC_MSB = 0x0543, kD2186_BIST_ADC_TRIM1 = 0x0545, kD2186_BIST_ADC_ANA_TRIM0 = 0x0546, kD2186_SPARE_RW0 = 0x0680, kD2186_SPARE_RW_LAST = 0x0687, kD2186_SPARE_RWTOTP0 = 0x06a0, kD2186_SPARE_RWTOTP_LAST = 0x06a7, kD2186_SPARE_RWOTP0 = 0x06c0, kD2186_SPARE_RWOTP1 = 0x06c1, #endif }; // --------------------------------- // RAM/TEST/SCRATCH // --------------------------------- enum { // Legacy Scratch Pads kDIALOG_MEMBYTE0 = 0x5000, kDIALOG_MEMBYTE_LAST = 0x5027, kDIALOG_TEST_ACCESS = 0x7000, kDIALOG_TEST_ACCESS_ENA = 0x1D, kDIALOG_TEST_ACCESS_DIS = 0x00, // Scratch Pad RAM kDIALOG_RAM0 = 0x8000, kDIALOG_RAM_LAST = 0x87ff, kDIALOG_EXT_MEM_CAL0_SIZE = 64, kDIALOG_GAP_SCRATCH8_SIZE = 8, // ex diags, free now kDIALOG_EXT_MEM_CAL1_SIZE = 336, kDIALOG_VOLTAGE_KNOBS_SIZE = 32, kDIALOG_EXT_MEM_CAL2_SIZE = 400, // // ... kDIALOG_DIAG_SCRATCH_SIZE = 32, kDIALOG_EXT_MEM_CAL0 = kDIALOG_RAM0, kDIALOG_EXT_MEM_CAL1 = kDIALOG_EXT_MEM_CAL0+kDIALOG_EXT_MEM_CAL0_SIZE+kDIALOG_GAP_SCRATCH8_SIZE, kDIALOG_VOLTAGE_KNOBS = kDIALOG_EXT_MEM_CAL1+kDIALOG_EXT_MEM_CAL1_SIZE, kDIALOG_EXT_MEM_CAL2 = kDIALOG_VOLTAGE_KNOBS+kDIALOG_VOLTAGE_KNOBS_SIZE, // reserved, future kDIALOG_DIAG_SCRATCH = 0x87e0, // handy kDIALOG_EXT_MEM_CAL_SIZE = kDIALOG_EXT_MEM_CAL0_SIZE+kDIALOG_EXT_MEM_CAL1_SIZE+kDIALOG_EXT_MEM_CAL2_SIZE, }; #if 0 // TODO: Synthetic Accumulator Registers enum { kDIALOG_ACCUMULATOR_SEL_COUNT = 2, kDIALOG_IBUS_ACCUMULATOR = 0, kDIALOG_VBUS_ACCUMULATOR = 1, }; #endif enum { // Event Registers // 0: SYSCTL_EVENT kD2257_EVENT_HIGH_TEMP_WARNING = (1 << 0), // 1: MFSM_EVENT // 2: RTC_EVENT kD2257_EVENT_ALARM = (1 << 0), // 3: SPI_EVENT // 4: CLKGEN_EVENT // 5: IO_EVENT_A kD2257_EVENT_A_BUTTON4_DBL = (1 << 7), kD2257_EVENT_A_BUTTON3_DBL = (1 << 6), kD2257_EVENT_A_BUTTON2_DBL = (1 << 5), kD2257_EVENT_A_BUTTON1_DBL = (1 << 4), kD2257_EVENT_A_BUTTON4 = (1 << 3), kD2257_EVENT_A_BUTTON3 = (1 << 2), kD2257_EVENT_A_BUTTON2 = (1 << 1), kD2257_EVENT_A_BUTTON1 = (1 << 0), // 6: IO_EVENT_B kD2257_EVENT_B_GPIO8 = (1 << 7), kD2257_EVENT_B_GPIO7 = (1 << 6), kD2257_EVENT_B_GPIO6 = (1 << 5), kD2257_EVENT_B_GPIO5 = (1 << 4), kD2257_EVENT_B_GPIO4 = (1 << 3), kD2257_EVENT_B_GPIO3 = (1 << 2), kD2257_EVENT_B_GPIO2 = (1 << 1), kD2257_EVENT_B_GPIO1 = (1 << 0), // 7: IO_EVENT_C kD2257_EVENT_C_GPIO16 = (1 << 7), kD2257_EVENT_C_GPIO15 = (1 << 6), kD2257_EVENT_C_GPIO14 = (1 << 5), kD2257_EVENT_C_GPIO13 = (1 << 4), kD2257_EVENT_C_GPIO12 = (1 << 3), kD2257_EVENT_C_GPIO11 = (1 << 2), kD2257_EVENT_C_GPIO10 = (1 << 1), kD2257_EVENT_C_GPIO9 = (1 << 0), // 8: IO_EVENT_D kD2257_EVENT_D_GPIO22 = (1 << 5), kD2257_EVENT_D_GPIO21 = (1 << 4), kD2257_EVENT_D_GPIO20 = (1 << 3), kD2257_EVENT_D_GPIO19 = (1 << 2), kD2257_EVENT_D_GPIO18 = (1 << 1), kD2257_EVENT_D_GPIO17 = (1 << 0), // 9: CHG_EVENT_T1 kD2257_EVENT_CHG1_VBUS_OV = (1 << 6), kD2257_EVENT_CHG1_VBUS_OC = (1 << 5), kD2257_EVENT_CHG1_VBUS_EXT_REM = (1 << 4), kD2257_EVENT_CHG1_CHG_HV_ATT = (1 << 3), kD2257_EVENT_CHG1_VBUS_EXT_DET = (1 << 1), kD2257_EVENT_CHG1_VCENTER_DET = (1 << 0), // 0xa: CHG_EVENT_T2 kD2257_EVENT_CHG2_BUCK_FLG = (1<<6), kD2257_EVENT_CHG2_ABCC_ACT = (1<<5), kD2257_EVENT_CHG2_TIMEOUT = (1<<4), kD2257_EVENT_CHG2_PRECHG_TIMEOUT= (1<<3), kD2257_EVENT_CHG2_CHG_END = (1<<2), kD2257_EVENT_CHG2_CHG_FAST = (1<<1), kD2257_EVENT_CHG2_CHG_PRE = (1<<0), // 0x17, GPADC_EVENT0 kD2257_EVENT_EOMC2 = (1<<1), kD2257_EVENT_EOMC1 = (1<<0), // 0x18: GPADC_EVENT1 kD2257_EVENT_VDDLOW = (1<<7), kD2257_EVENT_TBAT = (1<<6), }; enum { kDIALOG_EVENT_HOLD_BUTTON_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON2), kDIALOG_EVENT_MENU_BUTTON_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON1), kDIALOG_EVENT_RINGER_BUTTON_MASK= EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON3), kDIALOG_EVENT_BUTTON4_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON4), kDIALOG_EVENT_BUTTONS = (kD2257_EVENT_A_BUTTON4 | kD2257_EVENT_A_BUTTON3 | kD2257_EVENT_A_BUTTON2 | kD2257_EVENT_A_BUTTON1), kDIALOG_EVENT_BUTTONS_MASK = EVENT_FLAG_MAKE(5, kDIALOG_EVENT_BUTTONS), kDIALOG_EVENT_PWR_BUTTON_MASK = kDIALOG_EVENT_HOLD_BUTTON_MASK, kDIALOG_EVENT_ALARM_MASK = EVENT_FLAG_MAKE(2, kD2257_EVENT_ALARM), kDIALOG_EVENT_ACC_DET_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_EVENT_VBUS_DET_MASK = EVENT_FLAG_MAKE(9, kD2257_EVENT_CHG1_VBUS_EXT_DET), kDIALOG_EVENT_VBUS_EXT_REM_MASK = EVENT_FLAG_MAKE(9, kD2257_EVENT_CHG1_VBUS_EXT_REM), // FIXME: forcing ADC1 kDIALOG_EVENT_EOMC_MASK = EVENT_FLAG_MAKE(0x17, kD2257_EVENT_EOMC1), kDIALOG_EVENT_HIB_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_EVENT_ABCC_MASK = EVENT_FLAG_MAKE(0xa, kD2257_EVENT_CHG2_ABCC_ACT), kDIALOG_EVENT_CHG_END_MASK = EVENT_FLAG_MAKE(0xa, kD2257_EVENT_CHG2_CHG_END), kDIALOG_EVENT_TBAT_MASK = EVENT_FLAG_MAKE(0x18, kD2257_EVENT_TBAT), kDIALOG_EVENT_GPIO1_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO1), kDIALOG_EVENT_GPIO2_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO2), kDIALOG_EVENT_GPIO3_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO3), kDIALOG_EVENT_GPIO4_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO4), kDIALOG_EVENT_GPIO5_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO5), kDIALOG_EVENT_GPIO6_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO6), kDIALOG_EVENT_GPIO7_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO7), kDIALOG_EVENT_GPIO8_MASK = EVENT_FLAG_MAKE(6, kD2257_EVENT_B_GPIO8), kDIALOG_EVENT_GPIO9_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO9), kDIALOG_EVENT_GPIO10_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO10), kDIALOG_EVENT_GPIO11_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO11), kDIALOG_EVENT_GPIO12_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO12), kDIALOG_EVENT_GPIO13_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO13), kDIALOG_EVENT_GPIO14_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO14), kDIALOG_EVENT_GPIO15_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO15), kDIALOG_EVENT_GPIO16_MASK = EVENT_FLAG_MAKE(7, kD2257_EVENT_C_GPIO16), kDIALOG_EVENT_GPIO17_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO17), kDIALOG_EVENT_GPIO18_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO18), kDIALOG_EVENT_GPIO19_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO19), kDIALOG_EVENT_GPIO20_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO20), kDIALOG_EVENT_GPIO21_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO21), kDIALOG_EVENT_GPIO22_MASK = EVENT_FLAG_MAKE(8, kD2257_EVENT_D_GPIO22), kDIALOG_EVENT_RINGER_DBL_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON3_DBL), kDIALOG_EVENT_HOLD_DBL_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON2_DBL), kDIALOG_EVENT_MENU_DBL_MASK = EVENT_FLAG_MAKE(5, kD2257_EVENT_A_BUTTON1_DBL), kDIALOG_EVENT_VHP_DET_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_EVENT_ON_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_EVENT_LDO2_EN_MASK = kDIALOG_NOTEXIST_MASK, // FIXME }; enum { kDIALOG_STATUS_USB_MASK = STATUS_FLAG_MAKE(9, kD2257_EVENT_CHG1_VCENTER_DET), kDIALOG_STATUS_VBUS_MASK = STATUS_FLAG_MAKE(9, kD2257_EVENT_CHG1_VBUS_EXT_DET), kDIALOG_STATUS_FW_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_STATUS_ACC_DET_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_STATUS_CHARGING_MASK = kDIALOG_NOTEXIST_MASK, // FIXME kDIALOG_STATUS_CHG_TO_MASK = STATUS_FLAG_MAKE(0xa, kD2257_EVENT_CHG2_TIMEOUT), kDIALOG_STATUS_CHG_END_MASK = STATUS_FLAG_MAKE(0xa, kD2257_EVENT_CHG2_CHG_END), kDIALOG_STATUS_TBAT_MASK = STATUS_FLAG_MAKE(0x18, kD2257_EVENT_TBAT), kDIALOG_STATUS_CHG_ATT_MASK = kDIALOG_NOTEXIST_MASK, kDIALOG_STATUS_ABCC_MASK = STATUS_FLAG_MAKE(0xa, kD2257_EVENT_CHG2_ABCC_ACT), }; static const statusRegisters kDialogStatusFWMask = { }; enum { kD2257_EVENT_AA_WAKEMASK = 0, kD2257_EVENT_AB_WAKEMASK = 0, kD2257_EVENT_AC_WAKEMASK = kD2257_EVENT_ALARM, kD2257_EVENT_AD_WAKEMASK = 0, kD2257_EVENT_AE_WAKEMASK = 0, kD2257_EVENT_AF_WAKEMASK = kDIALOG_EVENT_BUTTONS, kD2257_EVENT_AG_WAKEMASK = 0, kD2257_EVENT_AH_WAKEMASK = 0, kD2257_EVENT_AI_WAKEMASK = 0, kD2257_EVENT_AJ_WAKEMASK = kD2257_EVENT_CHG1_VBUS_EXT_DET | kD2257_EVENT_CHG1_VCENTER_DET, // FIXME (kD2186_EVENT_A_ACC_DET) kD2257_EVENT_AK_WAKEMASK = kD2257_EVENT_CHG2_ABCC_ACT, kD2257_EVENT_AL_WAKEMASK = 0, kD2257_EVENT_AM_WAKEMASK = 0, kD2257_EVENT_AN_WAKEMASK = 0, kD2257_EVENT_AO_WAKEMASK = 0, kD2257_EVENT_AP_WAKEMASK = 0, kD2257_EVENT_AQ_WAKEMASK = 0, kD2257_EVENT_AR_WAKEMASK = 0, kD2257_EVENT_AS_WAKEMASK = 0, kD2257_EVENT_AT_WAKEMASK = 0, kD2257_EVENT_AU_WAKEMASK = 0, kD2257_EVENT_AV_WAKEMASK = 0, kD2257_EVENT_AW_WAKEMASK = 0, kD2257_EVENT_AX_WAKEMASK = 0, kD2257_EVENT_AY_WAKEMASK = 0, kD2257_EVENT_AZ_WAKEMASK = 0, kD2257_EVENT_BA_WAKEMASK = 0, kD2257_EVENT_BB_WAKEMASK = 0, kD2257_EVENT_BC_WAKEMASK = 0, kD2257_EVENT_BD_WAKEMASK = 0, kD2257_EVENT_BE_WAKEMASK = 0, }; // All events that are masked during shutdown - inverse of the wake mask, // events that wake up the system static const eventRegisters kDialogEventIntMasks = { ~kD2257_EVENT_AA_WAKEMASK, ~kD2257_EVENT_AB_WAKEMASK, ~kD2257_EVENT_AC_WAKEMASK, ~kD2257_EVENT_AD_WAKEMASK, ~kD2257_EVENT_AE_WAKEMASK, ~kD2257_EVENT_AF_WAKEMASK, ~kD2257_EVENT_AG_WAKEMASK, ~kD2257_EVENT_AH_WAKEMASK, ~kD2257_EVENT_AI_WAKEMASK, ~kD2257_EVENT_AJ_WAKEMASK, ~kD2257_EVENT_AK_WAKEMASK, ~kD2257_EVENT_AL_WAKEMASK, ~kD2257_EVENT_AM_WAKEMASK, ~kD2257_EVENT_AN_WAKEMASK, ~kD2257_EVENT_AO_WAKEMASK, ~kD2257_EVENT_AP_WAKEMASK, ~kD2257_EVENT_AQ_WAKEMASK, ~kD2257_EVENT_AR_WAKEMASK, ~kD2257_EVENT_AS_WAKEMASK, ~kD2257_EVENT_AT_WAKEMASK, ~kD2257_EVENT_AU_WAKEMASK, ~kD2257_EVENT_AV_WAKEMASK, ~kD2257_EVENT_AW_WAKEMASK, ~kD2257_EVENT_AX_WAKEMASK, ~kD2257_EVENT_AY_WAKEMASK, ~kD2257_EVENT_AZ_WAKEMASK, ~kD2257_EVENT_BA_WAKEMASK, ~kD2257_EVENT_BB_WAKEMASK, ~kD2257_EVENT_BC_WAKEMASK, ~kD2257_EVENT_BD_WAKEMASK, ~kD2257_EVENT_BE_WAKEMASK, }; // All wake events without the buttons static const eventRegisters kDialogEventNotButtonMasks = { kD2257_EVENT_AA_WAKEMASK, kD2257_EVENT_AB_WAKEMASK, kD2257_EVENT_AC_WAKEMASK, kD2257_EVENT_AD_WAKEMASK, kD2257_EVENT_AE_WAKEMASK, kD2257_EVENT_AF_WAKEMASK & ~kDIALOG_EVENT_BUTTONS , kD2257_EVENT_AG_WAKEMASK, kD2257_EVENT_AH_WAKEMASK, kD2257_EVENT_AI_WAKEMASK, kD2257_EVENT_AJ_WAKEMASK, kD2257_EVENT_AK_WAKEMASK, kD2257_EVENT_AL_WAKEMASK, kD2257_EVENT_AM_WAKEMASK, kD2257_EVENT_AN_WAKEMASK, kD2257_EVENT_AO_WAKEMASK, kD2257_EVENT_AP_WAKEMASK, kD2257_EVENT_AQ_WAKEMASK, kD2257_EVENT_AR_WAKEMASK, kD2257_EVENT_AS_WAKEMASK, kD2257_EVENT_AT_WAKEMASK, kD2257_EVENT_AU_WAKEMASK, kD2257_EVENT_AV_WAKEMASK, kD2257_EVENT_AW_WAKEMASK, kD2257_EVENT_AX_WAKEMASK, kD2257_EVENT_AY_WAKEMASK, kD2257_EVENT_AZ_WAKEMASK, kD2257_EVENT_BA_WAKEMASK, kD2257_EVENT_BB_WAKEMASK, kD2257_EVENT_BC_WAKEMASK, kD2257_EVENT_BD_WAKEMASK, kD2257_EVENT_BE_WAKEMASK, }; // All events indicating external power supply static const eventRegisters kDialogEventPwrsupplyMask = { 0, 0, 0, 0, 0, 0, 0, 0, 0, kD2257_EVENT_CHG1_VCENTER_DET | kD2257_EVENT_CHG1_VBUS_EXT_DET, kD2257_EVENT_CHG2_ABCC_ACT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; // should I use *_VBUS_DET_REM static const eventRegisters kDialogEventUSBMask = { 0, // EVENT_AA 0, // EVENT_AB 0, // EVENT_AC 0, // EVENT_AD 0, // EVENT_AE 0, // EVENT_AF 0, // EVENT_AG 0, // EVENT_AH 0, // EVENT_AI kD2257_EVENT_CHG1_VCENTER_DET | kD2257_EVENT_CHG1_VBUS_EXT_DET, kD2257_EVENT_CHG2_ABCC_ACT, 0, // EVENT_AL 0, // EVENT_AM 0, // EVENT_AN 0, // EVENT_AO 0, // EVENT_AP 0, // EVENT_AQ 0, // EVENT_AR 0, // EVENT_AS 0, // EVENT_AT 0, // EVENT_AU 0, // EVENT_AV 0, // EVENT_AW 0, // EVENT_AX 0, // EVENT_AY 0, // EVENT_AZ 0, // EVENT_BA 0, // EVENT_BB 0, // EVENT_BC 0, // EVENT_BD 0, // EVENT_BE }; static const eventRegisters kDialogEventFWMask = { 0, }; static const statusRegisters kDialogStatusChargingMask = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, kD2257_EVENT_CHG2_CHG_FAST | kD2257_EVENT_CHG2_CHG_PRE, }; enum { kDialogEventPwrsupplyCount = 2, kDialogEventUSBCount = 2, kDialogEventFWCount = 0, }; enum { // FAULT_LOG_A (SYSCTL_FAULT_LOG1) kDIALOG_FAULT_LOG_WDOG = FAULTLOG_FLAG_MAKE(0, (1 << 7)), kDIALOG_FAULT_LOG_RESET_IN_3 = FAULTLOG_FLAG_MAKE(0, (1 << 6)), kDIALOG_FAULT_LOG_RESET_IN_2 = FAULTLOG_FLAG_MAKE(0, (1 << 5)), kDIALOG_FAULT_LOG_RESET_IN_1 = FAULTLOG_FLAG_MAKE(0, (1 << 4)), kDIALOG_FAULT_LOG_RST = FAULTLOG_FLAG_MAKE(0, (1 << 3)), kDIALOG_FAULT_LOG_POR = FAULTLOG_FLAG_MAKE(0, (1 << 2)), kDIALOG_FAULT_LOG_OVER_TEMP = FAULTLOG_FLAG_MAKE(0, (1 << 1)), kDIALOG_FAULT_LOG_VDD_UNDER = FAULTLOG_FLAG_MAKE(0, (1 << 0)), // FAULT_LOG_B (SYSCTL_FAULT_LOG2) kDIALOG_FAULT_LOG_BTN_SHUTDOWN = FAULTLOG_FLAG_MAKE(1, (1 << 2)), kDIALOG_FAULT_LOG_TWO_FINGER_RESET = FAULTLOG_FLAG_MAKE(1, (1 << 1)), kDIALOG_FAULT_LOG_NTC_SHDN = FAULTLOG_FLAG_MAKE(1, (1 << 0)), }; // --------------------------------------------------------------------------- // GPADC // --------------------------------------------------------------------------- enum { kD2257_ADC_CONTROL_MUX_SEL_VDD_MAIN = 0, kD2257_ADC_CONTROL_MUX_SEL_BRICK_ID = 1, kD2257_ADC_CONTROL_MUX_SEL_SPARE0 = 2, kD2257_ADC_CONTROL_MUX_SEL_APP_MUX_A = 3, kD2257_ADC_CONTROL_MUX_SEL_APP_MUX_B = 4, // ... kD2257_ADC_CONTROL_MUX_SEL_VLDO1 = 18, kD2257_ADC_CONTROL_MUX_SEL_ILDO1 = 19, kD2257_ADC_CONTROL_MUX_SEL_VLDO2, kD2257_ADC_CONTROL_MUX_SEL_ILDO2, kD2257_ADC_CONTROL_MUX_SEL_VLDO3, kD2257_ADC_CONTROL_MUX_SEL_ILDO3, kD2257_ADC_CONTROL_MUX_SEL_VLDO4, kD2257_ADC_CONTROL_MUX_SEL_ILDO4, kD2257_ADC_CONTROL_MUX_SEL_VLDO5, kD2257_ADC_CONTROL_MUX_SEL_ILDO5, kD2257_ADC_CONTROL_MUX_SEL_VLDO6, kD2257_ADC_CONTROL_MUX_SEL_ILDO6, kD2257_ADC_CONTROL_MUX_SEL_VLDO7, kD2257_ADC_CONTROL_MUX_SEL_ILDO7, kD2257_ADC_CONTROL_MUX_SEL_VLDO8, kD2257_ADC_CONTROL_MUX_SEL_ILDO8, kD2257_ADC_CONTROL_MUX_SEL_VLDO9, kD2257_ADC_CONTROL_MUX_SEL_ILDO9, kD2257_ADC_CONTROL_MUX_SEL_VLDO10, kD2257_ADC_CONTROL_MUX_SEL_ILDO10, kD2257_ADC_CONTROL_MUX_SEL_VLDO11, kD2257_ADC_CONTROL_MUX_SEL_ILDO11, kD2257_ADC_CONTROL_MUX_SEL_VBUF_ON, kD2257_ADC_CONTROL_MUX_SEL_ION_BUF, // no papi, no12 kD2257_ADC_CONTROL_MUX_SEL_VLDO13 = 42, kD2257_ADC_CONTROL_MUX_SEL_ILDO13 = 43, kD2257_ADC_CONTROL_MUX_SEL_VLDO14 = 44, kD2257_ADC_CONTROL_MUX_SEL_ILDO14 = 45, kD2257_ADC_CONTROL_MUX_SEL_VLDO15 = 46, kD2257_ADC_CONTROL_MUX_SEL_ILDO15 = 47, kD2257_ADC_CONTROL_MUX_SEL_VLDO16 = 48, kD2257_ADC_CONTROL_MUX_SEL_ILDO16 = 49, // ReatlimeClock kD2257_ADC_CONTROL_MUX_SEL_VRTC = 50, kD2257_ADC_CONTROL_MUX_SEL_IRTC = 51, // high impedance external input kD2257_ADC_CONTROL_MUX_SEL_ADC_IN7 = 82, // Junction kD2257_ADC_CONTROL_MUX_SEL_TJNCT = 88, // NTCs kD2257_ADC_CONTROL_MUX_SEL_TCAL = 89, // NTC0 kD2257_ADC_CONTROL_MUX_SEL_TDEV1 = 90, kD2257_ADC_CONTROL_MUX_SEL_TDEV2 = 91, kD2257_ADC_CONTROL_MUX_SEL_TDEV3 = 92, kD2257_ADC_CONTROL_MUX_SEL_TDEV4 = 93, kD2257_ADC_CONTROL_MUX_SEL_TDEV5, kD2257_ADC_CONTROL_MUX_SEL_TDEV6, kD2257_ADC_CONTROL_MUX_SEL_TDEV7, kD2257_ADC_CONTROL_MUX_SEL_TDEV8, // .. kD2257_ADC_CONTROL_MUX_SEL_TBAT = 108, // TINT, measure TDIE (TDIE1,TDIE9) kD2257_ADC_CONTROL_MUX_SEL_LDO10_TEMP = 112, kD2257_ADC_CONTROL_MUX_SEL_LDO5CHGBUCKA_TEMP = 113, kD2257_ADC_CONTROL_MUX_SEL_CHGBUCKB_TEMP = 114, kD2257_ADC_CONTROL_MUX_SEL_BUCK6_TEMP = 115, kD2257_ADC_CONTROL_MUX_SEL_BUCK0_TEMP = 116, kD2257_ADC_CONTROL_MUX_SEL_BUCK28_TEMP, kD2257_ADC_CONTROL_MUX_SEL_BUCK74_TEMP, kD2257_ADC_CONTROL_MUX_SEL_BUCK1_TEMP, kD2257_ADC_CONTROL_MUX_SEL_BUCK35_TEMP, kD2257_ADC_CONTROL_MUX_SEL_VBUCK0 = 144, kD2257_ADC_CONTROL_MUX_SEL_VBUCK1, kD2257_ADC_CONTROL_MUX_SEL_VBUCK2, kD2257_ADC_CONTROL_MUX_SEL_VBUCK3, kD2257_ADC_CONTROL_MUX_SEL_VBUCK4, kD2257_ADC_CONTROL_MUX_SEL_VBUCK5, kD2257_ADC_CONTROL_MUX_SEL_VBUCK6, kD2257_ADC_CONTROL_MUX_SEL_VBUCK7, kD2257_ADC_CONTROL_MUX_SEL_VBUCK8 = 152, kD2257_ADC_CONTROL_MUX_SEL_VBAT = 157, kD2257_ADC_CONTROL_MUX_SEL_VBUS = 158, kD2257_ADC_CONTROL_MUX_SEL_ADC_IN31 = 159, // Legacy GPADC based iBuck meas kD2257_ADC_CONTROL_MUX_SEL_IBUCK0 = 176, kD2257_ADC_CONTROL_MUX_SEL_IBUCK1, kD2257_ADC_CONTROL_MUX_SEL_IBUCK2, kD2257_ADC_CONTROL_MUX_SEL_IBUCK3, kD2257_ADC_CONTROL_MUX_SEL_IBUCK4, kD2257_ADC_CONTROL_MUX_SEL_IBUCK5 = 181, // no iBuck6 kD2257_ADC_CONTROL_MUX_SEL_IBUCK7 = 183, kD2257_ADC_CONTROL_MUX_SEL_IBUCK8 = 184, // SAR based IPBuck meas // - see BUCKn_ANA_TRIM4 to select power (default) or current measurement // - see IBUCK_CONFIG_C[IBUCKn_SAR_IMEAS_TYPE] for digital offset cancellation kD2257_ADC_CONTROL_MUX_SEL_SAR_IBUCK0 = 185, // SAR Filtered based IPBuck meas // - see BUCKn_ANA_TRIM4 to select power (default) or current measurement // - see IBUCK_CONFIG_C[IBUCKn_SAR_IMEAS_TYPE] for digital offset cancellation // - use IBUCKn_SAR_FILTER_TC to select the filter constant kD2257_ADC_CONTROL_MUX_SEL_SAR_FILT_IBUCK0 = 186, kD2257_ADC_CONTROL_MUX_SEL_SAR_IBUCK1, kD2257_ADC_CONTROL_MUX_SEL_SAR_FILT_IBUCK1, kD2257_ADC_CONTROL_MUX_SEL_SAR_IBUCK2, kD2257_ADC_CONTROL_MUX_SEL_SAR_FILT_IBUCK2, kD2257_ADC_CONTROL_MUX_SEL_ICH_ADC_CH = 201, kD2257_ADC_CONTROL_MUX_SEL_IBUS_IN_LG_ADC_CH = 202, kD2257_ADC_CONTROL_MUX_SEL_IBUS_IN_HG_ADC_CH = 203, // cannot use this when IBUCK_CORR_N is set (default) kD2257_ADC_CONTROL_MUX_SEL_IBUCK0_OFF = 208, // offset kD2257_ADC_CONTROL_MUX_SEL_IBUCK1_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK2_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK3_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK4_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK5_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK6_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK7_OFF, kD2257_ADC_CONTROL_MUX_SEL_IBUCK8_OFF = 216, kD2257_ADC_CONTROL_MUX_SEL_VBUCK3_SW1 = 240, kD2257_ADC_CONTROL_MUX_SEL_VBUCK3_SW2, kD2257_ADC_CONTROL_MUX_SEL_VBUCK3_SW3, kD2257_ADC_CONTROL_MUX_SEL_VBUCK4_SW1 = 243, kD2257_ADC_CONTROL_MUX_SEL_VBUCK4_SW2 = 244, // ------------------------------------------------ kDIALOG_ADC_CONTROL_MUX_SEL_VDD_OUT = kD2257_ADC_CONTROL_MUX_SEL_VDD_MAIN, kDIALOG_ADC_CONTROL_MUX_SEL_BRICK_ID = kD2257_ADC_CONTROL_MUX_SEL_BRICK_ID, kDIALOG_ADC_CONTROL_MUX_SEL_ACC_ID = kD2257_ADC_CONTROL_MUX_SEL_ADC_IN7, kDIALOG_ADC_CONTROL_MUX_SEL_NTC0 = kD2257_ADC_CONTROL_MUX_SEL_TCAL, kDIALOG_ADC_CONTROL_MUX_NUM_NTC = 8, kDIALOG_ADC_CONTROL_MUX_SEL_TINT_START = kD2257_ADC_CONTROL_MUX_SEL_LDO10_TEMP, kDIALOG_ADC_CONTROL_MUX_SEL_TINT_END = kD2257_ADC_CONTROL_MUX_SEL_BUCK35_TEMP, kDIALOG_ADC_CONTROL_MUX_SEL_TJUNC = kD2257_ADC_CONTROL_MUX_SEL_TJNCT, kDIALOG_ADC_CONTROL_MUX_SEL_TBAT = kD2257_ADC_CONTROL_MUX_SEL_TBAT, kDIALOG_ADC_CONTROL_MUX_SEL_VBAT = kD2257_ADC_CONTROL_MUX_SEL_VBAT, kDIALOG_ADC_CONTROL_MUX_SEL_ICH = kD2257_ADC_CONTROL_MUX_SEL_ICH_ADC_CH, // TODO: verify BRICK_ID_OFFSET_MV kDIALOG_ADC_BRICK_ID_OFFSET_MV = 40, }; enum { // kDIALOG_ADC_CONTROL_DEFAULTS = 0, // kDIALOG_ADC_CONTROL2_DEFAULTS = 0, // kDIALOG_ADC_CONTROL_ADC_REF_EN = 0, kDIALOG_ADC_LSB_MANADC_ERROR = (1 << 7), // MAN1_INVALID kDIALOG_ADC_LSB_ADC_OVL = (1 << 6), // Overflow kDIALOG_ADC_MAN_CTL = kD2257_GPADC_MAN_CTRL1, kDIALOG_ADC_CONTROL_MUX_SEL_MASK = kD2257_GPADC_MAN_CTRL1_MASK, kDIALOG_ADC_LSB = kD2257_GPADC_MAN1_RES_LSB, kDIALOG_ADC_FULL_SCALE_MV = 2500, kDIALOG_ADC_RESOLUTION_BITS = 12, }; // ------------------------------------------------ // GPIO // ------------------------------------------------ enum { kDIALOG_RTC_CONTROL_MONITOR = (1 << 0), kDIALOG_RTC_CONTROL_ALARM_EN = (1 << 6), }; enum { kD2257_GPIO_IO_CONFIG_IN = (0<<6), kD2257_GPIO_IO_CONFIG_OUT_OD = (1<<6), kD2257_GPIO_IO_CONFIG_OUT_PP = (2<<6), // NOTE: Once a GPIO is set to a safe spare configuration, the safe spare setting must // be changed before any changes to the associated GPIO_x_IO_TYPE, GPIOx_PUPD and // GPIOx_WAKE_LVL register fields can be done. kD2257_GPIO_IO_CONFIG_SAFE_SPARE = (3<<6), kD2257_GPIO_IO_TYPE_OUT_LVL = (0<<3), kD2257_GPIO_IO_TYPE_OUT_32K = (1<<3), kD2257_GPIO_IO_TYPE_OUT_nRST = (2<<3), kD2257_GPIO_IO_TYPE_OUT_TEMP = (3<<3), kD2257_GPIO_IO_TYPE_OUT_LVL2 = (4<<3), kD2257_GPIO_IO_TYPE_IN_LEVEL_HIGH = (0<<3), kD2257_GPIO_IO_TYPE_IN_LEVEL_LOW = (1<<3), kD2257_GPIO_IO_TYPE_IN_EDGE_RISING = (2<<3), kD2257_GPIO_IO_TYPE_IN_EDGE_FALLING = (3<<3), kD2257_GPIO_IO_TYPE_IN_EDGE_ANY = (4<<3), kDIALOG_SYS_GPIO_CONFIG_MASK = (0x3<<6), kDIALOG_SYS_GPIO_DIRECTION_MASK = (0x3<<3), kDIALOG_SYS_GPIO_VALUE_MASK = (1<<0), kDIALOG_SYS_GPIO_DIRECTION_OUT = kD2257_GPIO_IO_TYPE_OUT_LVL, kDIALOG_SYS_GPIO_DIRECTION_OUT_32KHZ = kD2257_GPIO_IO_TYPE_OUT_32K, kDIALOG_SYS_GPIO_DIRECTION_IN_LEVEL_HIGH = kD2257_GPIO_IO_TYPE_IN_LEVEL_HIGH, kDIALOG_SYS_GPIO_DIRECTION_IN_LEVEL_LOW = kD2257_GPIO_IO_TYPE_IN_LEVEL_LOW, kDIALOG_SYS_GPIO_OUTPUT_LEVEL_LOW = (0 << 0), kDIALOG_SYS_GPIO_OUTPUT_LEVEL_HIGH = (1 << 0), kDIALOG_SYS_GPIO_INPUT_WAKE = (1 << 0), }; // NOTE: it doesn't work with SAFESPARE #define IS_GPIO_OUTPUT(gpio) \ (((gpio)&kDIALOG_SYS_GPIO_CONFIG_MASK)!=kD2257_GPIO_IO_CONFIG_IN ) #define kDIALOG_STATUS_GPIO_MASK(gpio) \ STATUS_FLAG_MAKE(6 + ((gpio)/8), (1 << ((gpio) % 8)) ) // ---------------------------------------------------------------------------- // LDOS // ---------------------------------------------------------------------------- #define NUM_LDOS 0x23 static const struct ldo_params ldo_D2257[NUM_LDOS] = { { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO1_VSEL, kD2257_PWRONOFF_LDO1_EN, 1 }, // 00 - LDO1 = { 1200, 5, 0xff, 0xff, 2, kD2257_LDO2_VSEL, kD2257_PWRONOFF_LDO2_EN, 1 }, // 01 - LDO2 = bypass { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO3_VSEL, kD2257_PWRONOFF_LDO3_EN, 1 }, // 02 - LDO3 = { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO4_VSEL, kD2257_PWRONOFF_LDO4_EN, 1 }, // 03 - LDO4 = { 2400, 5, 0xff, 0xff, 0x00, kD2257_LDO5_VSEL, kD2257_PWRONOFF_LDO5_EN, 1 }, // 04 - LDO5 = { 2500, 25, 0x7f, 0x7f, 2, kD2257_LDO6_VSEL, kD2257_PWRONOFF_LDO6_EN, 1 }, // 05 - LDO6 = bypass { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO7_VSEL, kD2257_PWRONOFF_LDO7_EN, 1 }, // 06 - LDO7 = { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO8_VSEL, kD2257_PWRONOFF_LDO8_EN, 1 }, // 07 - LDO8 = { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO9_VSEL, kD2257_PWRONOFF_LDO9_EN, 1 }, // 08 - LDO9 = { 600, 5, 0xff, 0xff, 0x00, kD2257_LDO10_VSEL, kD2257_PWRONOFF_LDO10_EN, 1 }, // 09 - LDO10 - { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO11_VSEL, kD2257_PWRONOFF_LDO11_EN, 1 }, // 0a - LDO11 = { 1800, 0, 0, 0, 0x00, 0, 0, 0 }, // 0b - there is no LDO12 (PP1V8_ALWAYS) { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO13_VSEL, kD2257_PWRONOFF_LDO13_EN, 1 }, // 0c - LDO13 = { 600, 5, 0xff, 0xff, 0x00, kD2257_LDO14_VSEL, kD2257_PWRONOFF_LDO14_EN, 1 }, // 0d - LDO14 = { 600, 5, 0xff, 0xff, 0x00, kD2257_LDO15_VSEL, kD2257_PWRONOFF_LDO15_EN, 1 }, // 0e - LDO15 = { 1200, 5, 0xff, 0xff, 0x00, kD2257_LDO16_VSEL, kD2257_PWRONOFF_LDO16_EN, 1 }, // 0f - LDO16 = { 450, 5, 0, 0, 0x00, kD2257_BUCK0_VSEL, kD2257_PWRONOFF_BUCK0_EN, 1 }, // 10 - POWER_RAIL_CPU { 450, 5, 0, 0, 0x00, kD2257_BUCK1_VSEL, kD2257_PWRONOFF_BUCK1_EN, 1 }, // 11 - POWER_RAIL_GPU { 600, 5, 0, 0, 0x00, kD2257_BUCK2_VSEL, kD2257_PWRONOFF_BUCK2_EN, 1 }, // 12 - POWER_RAIL_SOC { 1100, 5, 0, 0, 0x00, kD2257_BUCK3_VSEL, kD2257_PWRONOFF_BUCK3_EN, 1 }, // 13 { 600, 5, 0, 0, 0x00, kD2257_BUCK4_VSEL, kD2257_PWRONOFF_BUCK4_EN, 1 }, // 14 { 600, 5, 0, 0, 0x00, kD2257_BUCK5_VSEL, kD2257_PWRONOFF_BUCK5_EN, 1 }, // 15 - POWER_RAIL_VDD_FIXED // NOTE: here bypass is the OFFSET of the bypass register from VSEL { 1800, 5, 0, 0, 0x00, kD2257_BUCK6_VSEL, kD2257_PWRONOFF_BUCK6_EN, 1 }, // 16 - BUCK6 (Byp) { 600, 5, 0, 0, 0x00, kD2257_BUCK7_VSEL, kD2257_PWRONOFF_BUCK7_EN, 1 }, // 17 - POWER_RAIL_CPU_RAM { 600, 5, 0, 0, 0x00, kD2257_BUCK8_VSEL, kD2257_PWRONOFF_BUCK8_EN, 1 }, // 18 - POWER_RAIL_GPU_RAM { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_BUCK3_SW1_EN, 1 }, // 19 { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_BUCK3_SW2_EN, 1 }, // 1a { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_BUCK3_SW3_EN, 1 }, // 1b { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_BUCK4_SW1_EN, 1 }, // 1c { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_BUCK4_SW2_EN, 1 }, // 1d { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_LCM_BST_SW_EN, 1 }, // 1e { 5000, 50, 0x1f, 0x1f, 0x00, kD2257_LDO_LCM_BOOST_VSEL, kD2257_PWRONOFF_LCM_BST_EN, 1 }, // 1f { 5000, 50, 0x1f, 0x1f, 0x00, kD2257_LDO_LCM_LDO1_VSEL, kD2257_PWRONOFF_LCM_LDO1_EN, 1 }, // 20 { 5000, 50, 0x1f, 0x1f, 0x00, kD2257_LDO_LCM_LDO2_VSEL, kD2257_PWRONOFF_LCM_LDO2_EN, 1 }, // 21 { 0, 0, 0, 0, 0x00, 0, kD2257_PWRONOFF_LDO6_EN, 7<<1 }, // 22 LDO36 acc_sleep_pwr }; #define LDOP ldo_D2257 // ---------------------------------------------------------------------------- // Charge control // ---------------------------------------------------------------------------- // TODO: verify these GUYS enum { kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_MIN = 0x00, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_100 = 0x02, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_200 = 0x0a, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_300 = 0x12, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_400 = 0x1a, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_500 = 0x22, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_600 = 0x2a, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_700 = 0x32, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_900 = 0x42, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_975 = 0x48, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_1000 = 0x4a, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_1450 = 0x6e, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_1500 = 0x72, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_1900 = 0x92, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_2000 = 0x9a, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_2100 = 0xa2, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_2300 = 0xb2, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_MAX = 0xff, kDIALOG_CHARGE_BUCK_CONTROL_ISET_BUCK_MASK = 0xff, }; enum { kDIALOG_CHARGE_BUCK_CONTROL_MIN = 75, kDIALOG_CHARGE_BUCK_CONTROL_STEP_PER_100MA = 8, kDIALOG_CHARGE_BUCK_CONTROL_MAX = 3262, }; enum { kDIALOG_CHARGE_CONTROL_A_ISET_BAT_MASK = 0x3f, kDIALOG_CHARGE_CONTROL_A_ISET_BAT_SHIFT = 0, kDIALOG_OTP_ISET_BAT_SHIFT = kDIALOG_CHARGE_CONTROL_A_ISET_BAT_SHIFT, kDIALOG_CHARGE_CONTROL_B_CHG_SUSP = (1 << 6), kDIALOG_CHARGE_CONTROL_B_CHG_HIB = (1 << 7), kDIALOG_CHARGE_CONTROL_CHG_HIB = kDIALOG_CHARGE_CONTROL_B_CHG_HIB, }; enum { kDIALOG_CHARGE_CONTROL_STEP = 50, kDIALOG_CHARGE_CONTROL_MAX = 3150, }; enum { // CHG_CTRL_G kDIALOG_CHARGE_CONTROL_ALT_USB_DIS = (1 << 6), kDIALOG_CHARGE_CONTROL_CHG_BUCK_EN = (1 << 7), }; enum { kDIALOG_CHARGE_CONTROL_TIME_TCTR_MASK = 0xF0, kDIALOG_CHARGE_CONTROL_TIME_TCTR_DISABLED = 0x00, kDIALOG_CHARGE_CONTROL_TIME_PCTR_MASK = 0x07, kDIALOG_CHARGE_CONTROL_TIME_PCTR_DISABLED = 0x00, }; // ---------------------------------------------------------------------------- // Buttons // ---------------------------------------------------------------------------- enum { kDIALOG_BUTTON_DBL_CLICK_RATE_MASK = (7 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_10MS = (0 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_20MS = (1 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_50MS = (2 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_60MS = (3 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_100MS = (4 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_200MS = (5 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_300MS = (6 << 0), kDIALOG_BUTTON_DBL_CLICK_RATE_400MS = (7 << 0), kD2255_BUTTON_DBL_BTN1_DBL_EN = (1 << 3), kD2255_BUTTON_DBL_BTN2_DBL_EN = (1 << 4), kD2255_BUTTON_DBL_BTN3_DBL_EN = (1 << 5), kD2255_BUTTON_DBL_BTN4_DBL_EN = (1 << 6), // TODO: verify this! kDIALOG_BUTTON_DBL_HOLD_DBL_EN = kD2255_BUTTON_DBL_BTN2_DBL_EN, kDIALOG_BUTTON_DBL_MENU_DBL_EN = kD2255_BUTTON_DBL_BTN1_DBL_EN, kDIALOG_BUTTON_DBL_RINGER_DBL_EN = kD2255_BUTTON_DBL_BTN3_DBL_EN, }; #endif /* __DIALOG_D2257_H */