183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi/* 283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * max77693-private.h - Voltage regulator driver for the Maxim 77693 383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * 483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * Copyright (C) 2012 Samsung Electrnoics 583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * SangYoung Son <hello.son@samsung.com> 683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * 783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * This program is not provided / owned by Maxim Integrated Products. 883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * 983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * This program is free software; you can redistribute it and/or modify 1083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * it under the terms of the GNU General Public License as published by 1183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * the Free Software Foundation; either version 2 of the License, or 1283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * (at your option) any later version. 1383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * 1483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * This program is distributed in the hope that it will be useful, 1583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * but WITHOUT ANY WARRANTY; without even the implied warranty of 1683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * GNU General Public License for more details. 1883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * 1983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * You should have received a copy of the GNU General Public License 2083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * along with this program; if not, write to the Free Software 2183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 2283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi */ 2383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 2483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#ifndef __LINUX_MFD_MAX77693_PRIV_H 2583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#define __LINUX_MFD_MAX77693_PRIV_H 2683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 2783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#include <linux/i2c.h> 2883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 2983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#define MAX77693_NUM_IRQ_MUIC_REGS 3 3083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#define MAX77693_REG_INVALID (0xff) 3183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 3283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi/* Slave addr = 0xCC: PMIC, Charger, Flash LED */ 3383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_pmic_reg { 3483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_IFLASH1 = 0x00, 3583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_IFLASH2 = 0x01, 3683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_ITORCH = 0x02, 3783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_ITORCHTIMER = 0x03, 3883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_FLASH_TIMER = 0x04, 3983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_FLASH_EN = 0x05, 4083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_MAX_FLASH1 = 0x06, 4183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_MAX_FLASH2 = 0x07, 4283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_MAX_FLASH3 = 0x08, 4383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_MAX_FLASH4 = 0x09, 4483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_VOUT_CNTL = 0x0A, 4583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_VOUT_FLASH1 = 0x0B, 4683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_VOUT_FLASH2 = 0x0C, 4783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_FLASH_INT = 0x0E, 4883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_REG_FLASH_INT_MASK = 0x0F, 494b5c1f1e080f79c3c226596047a20ccd1c8a9486Jacek Anaszewski MAX77693_LED_REG_FLASH_STATUS = 0x10, 5083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 5183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_PMIC_ID1 = 0x20, 5283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_PMIC_ID2 = 0x21, 5383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_INTSRC = 0x22, 5483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_INTSRC_MASK = 0x23, 5583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_TOPSYS_INT = 0x24, 5683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_TOPSYS_INT_MASK = 0x26, 5783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_TOPSYS_STAT = 0x28, 5883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_MAINCTRL1 = 0x2A, 5983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_LSCNFG = 0x2B, 6083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 6183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_INT = 0xB0, 6283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_INT_MASK = 0xB1, 6383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_INT_OK = 0xB2, 6483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_DETAILS_00 = 0xB3, 6583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_DETAILS_01 = 0xB4, 6683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_DETAILS_02 = 0xB5, 6783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_DETAILS_03 = 0xB6, 6883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_00 = 0xB7, 6983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_01 = 0xB8, 7083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_02 = 0xB9, 7183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_03 = 0xBA, 7283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_04 = 0xBB, 7383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_05 = 0xBC, 7483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_06 = 0xBD, 7583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_07 = 0xBE, 7683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_08 = 0xBF, 7783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_09 = 0xC0, 7883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_10 = 0xC1, 7983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_11 = 0xC2, 8083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_12 = 0xC3, 8183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_13 = 0xC4, 8283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_CHG_CNFG_14 = 0xC5, 8383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_REG_SAFEOUT_CTRL = 0xC6, 8483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 8583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_PMIC_REG_END, 8683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 8783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 88a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 ITORCH register */ 89a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_IOUT1_SHIFT 0 90a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_IOUT2_SHIFT 4 91a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_IOUT_MIN 15625 92a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_IOUT_MAX 250000 93a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_IOUT_STEP 15625 94a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 95a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 IFLASH1 and IFLASH2 registers */ 96a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_IOUT_MIN 15625 97a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_IOUT_MAX_1LED 1000000 98a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_IOUT_MAX_2LEDS 625000 99a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_IOUT_STEP 15625 100a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 101a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 TORCH_TIMER register */ 102a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_TMR_NO_TIMER 0x40 103a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_TIMEOUT_MIN 262000 104a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_TIMEOUT_MAX 15728000 105a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 106a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 FLASH_TIMER register */ 107a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_TMR_LEVEL 0x80 108a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_TIMEOUT_MIN 62500 109a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_TIMEOUT_MAX 1000000 110a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_TIMEOUT_STEP 62500 111a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 112a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 FLASH_EN register */ 113a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_EN_OFF 0x0 114a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_EN_FLASH 0x1 115a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_EN_TORCH 0x2 116a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_EN_ON 0x3 117a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_EN_SHIFT(x) (6 - ((x) - 1) * 2) 118a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define TORCH_EN_SHIFT(x) (2 - ((x) - 1) * 2) 119a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 120a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 MAX_FLASH1 register */ 121a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define MAX_FLASH1_MAX_FL_EN 0x80 122a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define MAX_FLASH1_VSYS_MIN 2400 123a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define MAX_FLASH1_VSYS_MAX 3400 124a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define MAX_FLASH1_VSYS_STEP 33 125a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 126a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 VOUT_CNTL register */ 127a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_BOOST_FIXED 0x04 128a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_BOOST_LEDNUM_2 0x80 129a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 130a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 VOUT_FLASH1 register */ 131a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_VOUT_MIN 3300 132a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_VOUT_MAX 5500 133a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_VOUT_STEP 25 134a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_VOUT_RMIN 0x0c 135a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 136a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 FLASH_STATUS register */ 137a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_STATUS_FLASH_ON BIT(3) 138a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_STATUS_TORCH_ON BIT(2) 139a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 140a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski/* MAX77693 FLASH_INT register */ 141a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_INT_FLED2_OPEN BIT(0) 142a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_INT_FLED2_SHORT BIT(1) 143a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_INT_FLED1_OPEN BIT(2) 144a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_INT_FLED1_SHORT BIT(3) 145a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski#define FLASH_INT_OVER_CURRENT BIT(4) 146a0bc607208e295f70d0355fa4e632a0c8c27533bJacek Anaszewski 14780b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee/* MAX77693 CHG_CNFG_00 register */ 14880b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define CHG_CNFG_00_CHG_MASK 0x1 14980b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define CHG_CNFG_00_BUCK_MASK 0x4 15080b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee 15180b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee/* MAX77693 CHG_CNFG_09 Register */ 15280b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define CHG_CNFG_09_CHGIN_ILIM_MASK 0x7F 15380b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee 15480b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee/* MAX77693 CHG_CTRL Register */ 15580b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define SAFEOUT_CTRL_SAFEOUT1_MASK 0x3 15680b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define SAFEOUT_CTRL_SAFEOUT2_MASK 0xC 15780b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define SAFEOUT_CTRL_ENSAFEOUT1_MASK 0x40 15880b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee#define SAFEOUT_CTRL_ENSAFEOUT2_MASK 0x80 15980b022e29bfdffb6c9ac0a283bcad3e1030c4c7eJonghwa Lee 16083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi/* Slave addr = 0x4A: MUIC */ 16183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_muic_reg { 16283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_ID = 0x00, 16383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INT1 = 0x01, 16483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INT2 = 0x02, 16583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INT3 = 0x03, 16683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_STATUS1 = 0x04, 16783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_STATUS2 = 0x05, 16883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_STATUS3 = 0x06, 16983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INTMASK1 = 0x07, 17083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INTMASK2 = 0x08, 17183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_INTMASK3 = 0x09, 17283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_CDETCTRL1 = 0x0A, 17383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_CDETCTRL2 = 0x0B, 17483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_CTRL1 = 0x0C, 17583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_CTRL2 = 0x0D, 17683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_CTRL3 = 0x0E, 17783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 17883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_REG_END, 17983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 18083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 1810ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi/* MAX77693 INTMASK1~2 Register */ 1820ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADC1K_SHIFT 3 1830ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADCERR_SHIFT 2 1840ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADCLOW_SHIFT 1 1850ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADC_SHIFT 0 1860ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADC1K_MASK (1 << INTMASK1_ADC1K_SHIFT) 1870ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADCERR_MASK (1 << INTMASK1_ADCERR_SHIFT) 1880ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADCLOW_MASK (1 << INTMASK1_ADCLOW_SHIFT) 1890ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK1_ADC_MASK (1 << INTMASK1_ADC_SHIFT) 1900ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi 1910ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_VIDRM_SHIFT 5 1920ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_VBVOLT_SHIFT 4 1930ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_DXOVP_SHIFT 3 1940ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_DCDTMR_SHIFT 2 1950ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_CHGDETRUN_SHIFT 1 1960ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_CHGTYP_SHIFT 0 1970ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_VIDRM_MASK (1 << INTMASK2_VIDRM_SHIFT) 1980ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_VBVOLT_MASK (1 << INTMASK2_VBVOLT_SHIFT) 1990ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_DXOVP_MASK (1 << INTMASK2_DXOVP_SHIFT) 2000ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_DCDTMR_MASK (1 << INTMASK2_DCDTMR_SHIFT) 2010ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_CHGDETRUN_MASK (1 << INTMASK2_CHGDETRUN_SHIFT) 2020ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi#define INTMASK2_CHGTYP_MASK (1 << INTMASK2_CHGTYP_SHIFT) 2030ec83bd2460ed6aed0e7f29f9e0633b054621c02Chanwoo Choi 204154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi/* MAX77693 MUIC - STATUS1~3 Register */ 205154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADC_SHIFT (0) 206154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADCLOW_SHIFT (5) 207154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADCERR_SHIFT (6) 208154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADC1K_SHIFT (7) 209154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADC_MASK (0x1f << STATUS1_ADC_SHIFT) 210154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADCLOW_MASK (0x1 << STATUS1_ADCLOW_SHIFT) 211154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADCERR_MASK (0x1 << STATUS1_ADCERR_SHIFT) 212154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS1_ADC1K_MASK (0x1 << STATUS1_ADC1K_SHIFT) 213154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 214154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_CHGTYP_SHIFT (0) 215154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_CHGDETRUN_SHIFT (3) 216154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_DCDTMR_SHIFT (4) 217154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_DXOVP_SHIFT (5) 218154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_VBVOLT_SHIFT (6) 219154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_VIDRM_SHIFT (7) 220154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_CHGTYP_MASK (0x7 << STATUS2_CHGTYP_SHIFT) 221154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_CHGDETRUN_MASK (0x1 << STATUS2_CHGDETRUN_SHIFT) 222154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_DCDTMR_MASK (0x1 << STATUS2_DCDTMR_SHIFT) 223154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_DXOVP_MASK (0x1 << STATUS2_DXOVP_SHIFT) 224154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_VBVOLT_MASK (0x1 << STATUS2_VBVOLT_SHIFT) 225154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS2_VIDRM_MASK (0x1 << STATUS2_VIDRM_SHIFT) 226154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 227154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS3_OVP_SHIFT (2) 228154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define STATUS3_OVP_MASK (0x1 << STATUS3_OVP_SHIFT) 229154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 230154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi/* MAX77693 CDETCTRL1~2 register */ 231154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CHGDETEN_SHIFT (0) 232154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CHGTYPMAN_SHIFT (1) 233154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCDEN_SHIFT (2) 234154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCD2SCT_SHIFT (3) 235154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CDDELAY_SHIFT (4) 236154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCDCPL_SHIFT (5) 237154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CDPDET_SHIFT (7) 238154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CHGDETEN_MASK (0x1 << CDETCTRL1_CHGDETEN_SHIFT) 239154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CHGTYPMAN_MASK (0x1 << CDETCTRL1_CHGTYPMAN_SHIFT) 240154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCDEN_MASK (0x1 << CDETCTRL1_DCDEN_SHIFT) 241154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCD2SCT_MASK (0x1 << CDETCTRL1_DCD2SCT_SHIFT) 242154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CDDELAY_MASK (0x1 << CDETCTRL1_CDDELAY_SHIFT) 243154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_DCDCPL_MASK (0x1 << CDETCTRL1_DCDCPL_SHIFT) 244154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL1_CDPDET_MASK (0x1 << CDETCTRL1_CDPDET_SHIFT) 245154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 246154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL2_VIDRMEN_SHIFT (1) 247154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL2_DXOVPEN_SHIFT (3) 248154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL2_VIDRMEN_MASK (0x1 << CDETCTRL2_VIDRMEN_SHIFT) 249154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CDETCTRL2_DXOVPEN_MASK (0x1 << CDETCTRL2_DXOVPEN_SHIFT) 250154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 251154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi/* MAX77693 MUIC - CONTROL1~3 register */ 252154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define COMN1SW_SHIFT (0) 253154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define COMP2SW_SHIFT (3) 254154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define COMN1SW_MASK (0x7 << COMN1SW_SHIFT) 255154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define COMP2SW_MASK (0x7 << COMP2SW_SHIFT) 256154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define COMP_SW_MASK (COMP2SW_MASK | COMN1SW_MASK) 257154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL1_SW_USB ((1 << COMP2SW_SHIFT) \ 258154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi | (1 << COMN1SW_SHIFT)) 259154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL1_SW_AUDIO ((2 << COMP2SW_SHIFT) \ 260154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi | (2 << COMN1SW_SHIFT)) 261154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL1_SW_UART ((3 << COMP2SW_SHIFT) \ 262154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi | (3 << COMN1SW_SHIFT)) 263154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL1_SW_OPEN ((0 << COMP2SW_SHIFT) \ 264154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi | (0 << COMN1SW_SHIFT)) 265154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 266154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_LOWPWR_SHIFT (0) 267154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_ADCEN_SHIFT (1) 268154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_CPEN_SHIFT (2) 269154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_SFOUTASRT_SHIFT (3) 270154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_SFOUTORD_SHIFT (4) 271154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_ACCDET_SHIFT (5) 272154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_USBCPINT_SHIFT (6) 273154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_RCPS_SHIFT (7) 274154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_LOWPWR_MASK (0x1 << CONTROL2_LOWPWR_SHIFT) 275154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_ADCEN_MASK (0x1 << CONTROL2_ADCEN_SHIFT) 276154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_CPEN_MASK (0x1 << CONTROL2_CPEN_SHIFT) 277154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_SFOUTASRT_MASK (0x1 << CONTROL2_SFOUTASRT_SHIFT) 278154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_SFOUTORD_MASK (0x1 << CONTROL2_SFOUTORD_SHIFT) 279154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_ACCDET_MASK (0x1 << CONTROL2_ACCDET_SHIFT) 280154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_USBCPINT_MASK (0x1 << CONTROL2_USBCPINT_SHIFT) 281154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL2_RCPS_MASK (0x1 << CONTROL2_RCPS_SHIFT) 282154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 283154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_JIGSET_SHIFT (0) 284154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_BTLDSET_SHIFT (2) 285154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_ADCDBSET_SHIFT (4) 286154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_JIGSET_MASK (0x3 << CONTROL3_JIGSET_SHIFT) 287154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_BTLDSET_MASK (0x3 << CONTROL3_BTLDSET_SHIFT) 288154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi#define CONTROL3_ADCDBSET_MASK (0x3 << CONTROL3_ADCDBSET_SHIFT) 289154f757fd315270e42bd17f4a68d84bd070e5758Chanwoo Choi 29083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi/* Slave addr = 0x90: Haptic */ 29183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_haptic_reg { 29283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_STATUS = 0x00, 29383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG1 = 0x01, 29483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG2 = 0x02, 29583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_CHNL = 0x03, 29683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFG_CYC1 = 0x04, 29783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFG_CYC2 = 0x05, 29883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PER1 = 0x06, 29983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PER2 = 0x07, 30083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PER3 = 0x08, 30183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PER4 = 0x09, 30283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_DUTY1 = 0x0A, 30383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_DUTY2 = 0x0B, 30483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PWM1 = 0x0C, 30583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PWM2 = 0x0D, 30683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PWM3 = 0x0E, 30783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_CONFIG_PWM4 = 0x0F, 30883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_REV = 0x10, 30983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 31083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_HAPTIC_REG_END, 31183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 31283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 313a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim/* max77693-pmic LSCNFG configuraton register */ 314a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim#define MAX77693_PMIC_LOW_SYS_MASK 0x80 315a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim#define MAX77693_PMIC_LOW_SYS_SHIFT 7 316a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim 317a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim/* max77693-haptic configuration register */ 318a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim#define MAX77693_CONFIG2_MODE 7 319a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim#define MAX77693_CONFIG2_MEN 6 320a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim#define MAX77693_CONFIG2_HTYP 5 321a3b3ca753cdc92c7d5f57404afed3115b3b79cc6Jaewon Kim 32283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_irq_source { 32383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi LED_INT = 0, 32483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi TOPSYS_INT, 32583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi CHG_INT, 32683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MUIC_INT1, 32783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MUIC_INT2, 32883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MUIC_INT3, 32983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 33083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_IRQ_GROUP_NR, 33183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 33283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 333c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski#define SRC_IRQ_CHARGER BIT(0) 334c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski#define SRC_IRQ_TOP BIT(1) 335c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski#define SRC_IRQ_FLASH BIT(2) 336c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski#define SRC_IRQ_MUIC BIT(3) 337c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski#define SRC_IRQ_ALL (SRC_IRQ_CHARGER | SRC_IRQ_TOP \ 338c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski | SRC_IRQ_FLASH | SRC_IRQ_MUIC) 339c0acb8144bd6d8d88aee1dab33364b7353e9a903Krzysztof Kozlowski 340342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define LED_IRQ_FLED2_OPEN BIT(0) 341342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define LED_IRQ_FLED2_SHORT BIT(1) 342342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define LED_IRQ_FLED1_OPEN BIT(2) 343342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define LED_IRQ_FLED1_SHORT BIT(3) 344342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define LED_IRQ_MAX_FLASH BIT(4) 345342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 346342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define TOPSYS_IRQ_T120C_INT BIT(0) 347342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define TOPSYS_IRQ_T140C_INT BIT(1) 348342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define TOPSYS_IRQ_LOWSYS_INT BIT(3) 349342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 350342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define CHG_IRQ_BYP_I BIT(0) 351342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define CHG_IRQ_THM_I BIT(2) 352342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define CHG_IRQ_BAT_I BIT(3) 353342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define CHG_IRQ_CHG_I BIT(4) 354342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define CHG_IRQ_CHGIN_I BIT(6) 355342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 356342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT1_ADC BIT(0) 357342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT1_ADC_LOW BIT(1) 358342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT1_ADC_ERR BIT(2) 359342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT1_ADC1K BIT(3) 360342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 361342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_CHGTYP BIT(0) 362342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_CHGDETREUN BIT(1) 363342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_DCDTMR BIT(2) 364342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_DXOVP BIT(3) 365342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_VBVOLT BIT(4) 366342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT2_VIDRM BIT(5) 367342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 368342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_EOC BIT(0) 369342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_CGMBC BIT(1) 370342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_OVP BIT(2) 371342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_MBCCHG_ERR BIT(3) 372342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_CHG_ENABLED BIT(4) 373342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga#define MUIC_IRQ_INT3_BAT_DET BIT(5) 374342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 37583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_irq { 37683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* PMIC - FLASH */ 37783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_IRQ_FLED2_OPEN, 37883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_IRQ_FLED2_SHORT, 37983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_IRQ_FLED1_OPEN, 38083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_IRQ_FLED1_SHORT, 38183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_LED_IRQ_MAX_FLASH, 38283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 38383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* PMIC - TOPSYS */ 38483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_TOPSYS_IRQ_T120C_INT, 38583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_TOPSYS_IRQ_T140C_INT, 38683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_TOPSYS_IRQ_LOWSYS_INT, 38783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 38883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* PMIC - Charger */ 38983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_IRQ_BYP_I, 39083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_IRQ_THM_I, 39183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_IRQ_BAT_I, 39283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_IRQ_CHG_I, 39383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_CHG_IRQ_CHGIN_I, 39483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 395342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga MAX77693_IRQ_NR, 396342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga}; 397342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga 398342d669c1ee421323f552a62729d3a3d0065093cRobert Baldygaenum max77693_irq_muic { 39983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* MUIC INT1 */ 40083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT1_ADC, 40183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT1_ADC_LOW, 40283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT1_ADC_ERR, 40383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT1_ADC1K, 40483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 40583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* MUIC INT2 */ 40683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_CHGTYP, 40783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_CHGDETREUN, 40883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_DCDTMR, 40983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_DXOVP, 41083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_VBVOLT, 41183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT2_VIDRM, 41283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 41383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi /* MUIC INT3 */ 41483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_EOC, 41583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_CGMBC, 41683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_OVP, 41783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_MBCCHG_ERR, 41883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_CHG_ENABLED, 41983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi MAX77693_MUIC_IRQ_INT3_BAT_DET, 42083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 421342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga MAX77693_MUIC_IRQ_NR, 42283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 42383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 42483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choistruct max77693_dev { 42583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct device *dev; 42683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */ 42783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct i2c_client *muic; /* 0x4A , MUIC */ 42883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct i2c_client *haptic; /* 0x90 , Haptic */ 42983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 43083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi int type; 43183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 43283871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct regmap *regmap; 43383871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct regmap *regmap_muic; 43483871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi struct regmap *regmap_haptic; 43583871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 436342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga struct regmap_irq_chip_data *irq_data_led; 437342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga struct regmap_irq_chip_data *irq_data_topsys; 438342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga struct regmap_irq_chip_data *irq_data_charger; 439342d669c1ee421323f552a62729d3a3d0065093cRobert Baldyga struct regmap_irq_chip_data *irq_data_muic; 44078302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz 44183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi int irq; 44278302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz int irq_gpio; 44378302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz struct mutex irqlock; 44478302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz int irq_masks_cur[MAX77693_IRQ_GROUP_NR]; 44578302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz int irq_masks_cache[MAX77693_IRQ_GROUP_NR]; 44683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 44783871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 44883871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choienum max77693_types { 44983871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi TYPE_MAX77693, 45083871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi}; 45183871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi 45278302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortizextern int max77693_irq_init(struct max77693_dev *max77686); 45378302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortizextern void max77693_irq_exit(struct max77693_dev *max77686); 45478302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortizextern int max77693_irq_resume(struct max77693_dev *max77686); 45578302a194c0ddf4438e50e3f9b327a6dce6bc8fcSamuel Ortiz 45683871c00bb43f41d85dd15aba56a83bbb191eabcChanwoo Choi#endif /* __LINUX_MFD_MAX77693_PRIV_H */ 457