/*
 * Platform configuration options for DA9063
 *
 * Copyright 2012 Dialog Semiconductor Ltd.
 *
 * Author: Michal Hajduk <michal.hajduk@diasemi.com>
 * Author: Krystian Garbaciak <krystian.garbaciak@diasemi.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.
 *
 */

#ifndef __MFD_DA9063_PDATA_H__
#define __MFD_DA9063_PDATA_H__

#include <linux/regulator/machine.h>

/*
 * Regulator configuration
 */
/* DA9063 regulator IDs */
enum {
	/* BUCKs */
	DA9063_ID_BCORE1,
	DA9063_ID_BCORE2,
	DA9063_ID_BPRO,
	DA9063_ID_BMEM,
	DA9063_ID_BIO,
	DA9063_ID_BPERI,

	/* BCORE1 and BCORE2 in merged mode */
	DA9063_ID_BCORES_MERGED,
	/* BMEM and BIO in merged mode */
	DA9063_ID_BMEM_BIO_MERGED,
	/* When two BUCKs are merged, they cannot be reused separately */

	/* LDOs */
	DA9063_ID_LDO1,
	DA9063_ID_LDO2,
	DA9063_ID_LDO3,
	DA9063_ID_LDO4,
	DA9063_ID_LDO5,
	DA9063_ID_LDO6,
	DA9063_ID_LDO7,
	DA9063_ID_LDO8,
	DA9063_ID_LDO9,
	DA9063_ID_LDO10,
	DA9063_ID_LDO11,
};

/* Regulators platform data */
struct da9063_regulator_data {
	int				id;
	struct regulator_init_data	*initdata;
};

struct da9063_regulators_pdata {
	unsigned			n_regulators;
	struct da9063_regulator_data	*regulator_data;
};


/*
 * RGB LED configuration
 */
/* LED IDs for flags in struct led_info. */
enum {
	DA9063_GPIO11_LED,
	DA9063_GPIO14_LED,
	DA9063_GPIO15_LED,

	DA9063_LED_NUM
};
#define DA9063_LED_ID_MASK		0x3

/* LED polarity for flags in struct led_info. */
#define DA9063_LED_HIGH_LEVEL_ACTIVE	0x0
#define DA9063_LED_LOW_LEVEL_ACTIVE	0x4


/*
 * General PMIC configuration
 */
/* HWMON ADC channels configuration */
#define DA9063_FLG_FORCE_IN0_MANUAL_MODE	0x0010
#define DA9063_FLG_FORCE_IN0_AUTO_MODE		0x0020
#define DA9063_FLG_FORCE_IN1_MANUAL_MODE	0x0040
#define DA9063_FLG_FORCE_IN1_AUTO_MODE		0x0080
#define DA9063_FLG_FORCE_IN2_MANUAL_MODE	0x0100
#define DA9063_FLG_FORCE_IN2_AUTO_MODE		0x0200
#define DA9063_FLG_FORCE_IN3_MANUAL_MODE	0x0400
#define DA9063_FLG_FORCE_IN3_AUTO_MODE		0x0800

/* Disable register caching. */
#define DA9063_FLG_NO_CACHE			0x0008

struct da9063;

/* DA9063 platform data */
struct da9063_pdata {
	int				(*init)(struct da9063 *da9063);
	int				irq_base;
	unsigned			flags;
	struct da9063_regulators_pdata	*regulators_pdata;
	struct led_platform_data	*leds_pdata;
};

#endif	/* __MFD_DA9063_PDATA_H__ */
