1/*
2 * Platform configuration options for DA9063
3 *
4 * Copyright 2012 Dialog Semiconductor Ltd.
5 *
6 * Author: Michal Hajduk <michal.hajduk@diasemi.com>
7 * Author: Krystian Garbaciak <krystian.garbaciak@diasemi.com>
8 *
9 *  This program is free software; you can redistribute  it and/or modify it
10 *  under  the terms of  the GNU General  Public License as published by the
11 *  Free Software Foundation;  either version 2 of the  License, or (at your
12 *  option) any later version.
13 *
14 */
15
16#ifndef __MFD_DA9063_PDATA_H__
17#define __MFD_DA9063_PDATA_H__
18
19#include <linux/regulator/machine.h>
20
21/*
22 * Regulator configuration
23 */
24/* DA9063 regulator IDs */
25enum {
26	/* BUCKs */
27	DA9063_ID_BCORE1,
28	DA9063_ID_BCORE2,
29	DA9063_ID_BPRO,
30	DA9063_ID_BMEM,
31	DA9063_ID_BIO,
32	DA9063_ID_BPERI,
33
34	/* BCORE1 and BCORE2 in merged mode */
35	DA9063_ID_BCORES_MERGED,
36	/* BMEM and BIO in merged mode */
37	DA9063_ID_BMEM_BIO_MERGED,
38	/* When two BUCKs are merged, they cannot be reused separately */
39
40	/* LDOs */
41	DA9063_ID_LDO1,
42	DA9063_ID_LDO2,
43	DA9063_ID_LDO3,
44	DA9063_ID_LDO4,
45	DA9063_ID_LDO5,
46	DA9063_ID_LDO6,
47	DA9063_ID_LDO7,
48	DA9063_ID_LDO8,
49	DA9063_ID_LDO9,
50	DA9063_ID_LDO10,
51	DA9063_ID_LDO11,
52};
53
54/* Regulators platform data */
55struct da9063_regulator_data {
56	int				id;
57	struct regulator_init_data	*initdata;
58};
59
60struct da9063_regulators_pdata {
61	unsigned			n_regulators;
62	struct da9063_regulator_data	*regulator_data;
63};
64
65
66/*
67 * RGB LED configuration
68 */
69/* LED IDs for flags in struct led_info. */
70enum {
71	DA9063_GPIO11_LED,
72	DA9063_GPIO14_LED,
73	DA9063_GPIO15_LED,
74
75	DA9063_LED_NUM
76};
77#define DA9063_LED_ID_MASK		0x3
78
79/* LED polarity for flags in struct led_info. */
80#define DA9063_LED_HIGH_LEVEL_ACTIVE	0x0
81#define DA9063_LED_LOW_LEVEL_ACTIVE	0x4
82
83
84/*
85 * General PMIC configuration
86 */
87/* HWMON ADC channels configuration */
88#define DA9063_FLG_FORCE_IN0_MANUAL_MODE	0x0010
89#define DA9063_FLG_FORCE_IN0_AUTO_MODE		0x0020
90#define DA9063_FLG_FORCE_IN1_MANUAL_MODE	0x0040
91#define DA9063_FLG_FORCE_IN1_AUTO_MODE		0x0080
92#define DA9063_FLG_FORCE_IN2_MANUAL_MODE	0x0100
93#define DA9063_FLG_FORCE_IN2_AUTO_MODE		0x0200
94#define DA9063_FLG_FORCE_IN3_MANUAL_MODE	0x0400
95#define DA9063_FLG_FORCE_IN3_AUTO_MODE		0x0800
96
97/* Disable register caching. */
98#define DA9063_FLG_NO_CACHE			0x0008
99
100struct da9063;
101
102/* DA9063 platform data */
103struct da9063_pdata {
104	int				(*init)(struct da9063 *da9063);
105	int				irq_base;
106	unsigned			flags;
107	struct da9063_regulators_pdata	*regulators_pdata;
108	struct led_platform_data	*leds_pdata;
109};
110
111#endif	/* __MFD_DA9063_PDATA_H__ */
112