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