/*
 * s2mps14.h
 *
 * Copyright (c) 2014 Samsung Electronics Co., Ltd
 *              http://www.samsung.com
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

#ifndef __LINUX_MFD_S2MPS14_H
#define __LINUX_MFD_S2MPS14_H

/* S2MPS14 registers */
enum s2mps14_reg {
	S2MPS14_REG_ID,
	S2MPS14_REG_INT1,
	S2MPS14_REG_INT2,
	S2MPS14_REG_INT3,
	S2MPS14_REG_INT1M,
	S2MPS14_REG_INT2M,
	S2MPS14_REG_INT3M,
	S2MPS14_REG_ST1,
	S2MPS14_REG_ST2,
	S2MPS14_REG_PWRONSRC,
	S2MPS14_REG_OFFSRC,
	S2MPS14_REG_BU_CHG,
	S2MPS14_REG_RTCCTRL,
	S2MPS14_REG_CTRL1,
	S2MPS14_REG_CTRL2,
	S2MPS14_REG_RSVD1,
	S2MPS14_REG_RSVD2,
	S2MPS14_REG_RSVD3,
	S2MPS14_REG_RSVD4,
	S2MPS14_REG_RSVD5,
	S2MPS14_REG_RSVD6,
	S2MPS14_REG_CTRL3,
	S2MPS14_REG_RSVD7,
	S2MPS14_REG_RSVD8,
	S2MPS14_REG_WRSTBI,
	S2MPS14_REG_B1CTRL1,
	S2MPS14_REG_B1CTRL2,
	S2MPS14_REG_B2CTRL1,
	S2MPS14_REG_B2CTRL2,
	S2MPS14_REG_B3CTRL1,
	S2MPS14_REG_B3CTRL2,
	S2MPS14_REG_B4CTRL1,
	S2MPS14_REG_B4CTRL2,
	S2MPS14_REG_B5CTRL1,
	S2MPS14_REG_B5CTRL2,
	S2MPS14_REG_L1CTRL,
	S2MPS14_REG_L2CTRL,
	S2MPS14_REG_L3CTRL,
	S2MPS14_REG_L4CTRL,
	S2MPS14_REG_L5CTRL,
	S2MPS14_REG_L6CTRL,
	S2MPS14_REG_L7CTRL,
	S2MPS14_REG_L8CTRL,
	S2MPS14_REG_L9CTRL,
	S2MPS14_REG_L10CTRL,
	S2MPS14_REG_L11CTRL,
	S2MPS14_REG_L12CTRL,
	S2MPS14_REG_L13CTRL,
	S2MPS14_REG_L14CTRL,
	S2MPS14_REG_L15CTRL,
	S2MPS14_REG_L16CTRL,
	S2MPS14_REG_L17CTRL,
	S2MPS14_REG_L18CTRL,
	S2MPS14_REG_L19CTRL,
	S2MPS14_REG_L20CTRL,
	S2MPS14_REG_L21CTRL,
	S2MPS14_REG_L22CTRL,
	S2MPS14_REG_L23CTRL,
	S2MPS14_REG_L24CTRL,
	S2MPS14_REG_L25CTRL,
	S2MPS14_REG_LDODSCH1,
	S2MPS14_REG_LDODSCH2,
	S2MPS14_REG_LDODSCH3,
};

/* S2MPS14 regulator ids */
enum s2mps14_regulators {
	S2MPS14_LDO1,
	S2MPS14_LDO2,
	S2MPS14_LDO3,
	S2MPS14_LDO4,
	S2MPS14_LDO5,
	S2MPS14_LDO6,
	S2MPS14_LDO7,
	S2MPS14_LDO8,
	S2MPS14_LDO9,
	S2MPS14_LDO10,
	S2MPS14_LDO11,
	S2MPS14_LDO12,
	S2MPS14_LDO13,
	S2MPS14_LDO14,
	S2MPS14_LDO15,
	S2MPS14_LDO16,
	S2MPS14_LDO17,
	S2MPS14_LDO18,
	S2MPS14_LDO19,
	S2MPS14_LDO20,
	S2MPS14_LDO21,
	S2MPS14_LDO22,
	S2MPS14_LDO23,
	S2MPS14_LDO24,
	S2MPS14_LDO25,
	S2MPS14_BUCK1,
	S2MPS14_BUCK2,
	S2MPS14_BUCK3,
	S2MPS14_BUCK4,
	S2MPS14_BUCK5,

	S2MPS14_REGULATOR_MAX,
};

/* Regulator constraints for BUCKx */
#define S2MPS14_BUCK1235_START_SEL	0x20
#define S2MPS14_BUCK4_START_SEL		0x40
/*
 * Default ramp delay in uv/us. Datasheet says that ramp delay can be
 * controlled however it does not specify which register is used for that.
 * Let's assume that default value will be set.
 */
#define S2MPS14_BUCK_RAMP_DELAY		12500

#define S2MPS14_LDO_VSEL_MASK		0x3F
#define S2MPS14_BUCK_VSEL_MASK		0xFF
#define S2MPS14_ENABLE_MASK		(0x03 << S2MPS14_ENABLE_SHIFT)
#define S2MPS14_ENABLE_SHIFT		6
/* On/Off controlled by PWREN */
#define S2MPS14_ENABLE_SUSPEND		(0x01 << S2MPS14_ENABLE_SHIFT)
/* On/Off controlled by LDO10EN or EMMCEN */
#define S2MPS14_ENABLE_EXT_CONTROL	(0x00 << S2MPS14_ENABLE_SHIFT)
#define S2MPS14_LDO_N_VOLTAGES		(S2MPS14_LDO_VSEL_MASK + 1)
#define S2MPS14_BUCK_N_VOLTAGES		(S2MPS14_BUCK_VSEL_MASK + 1)

#endif /*  __LINUX_MFD_S2MPS14_H */
