hc
2023-11-22 9ca5fbcb63a8dcaee0527f96afb91dc4b4bd8fa9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
 * Platform configuration options for DA9063
 *
 * Copyright 2012 Dialog Semiconductor Ltd.
 *
 * Author: Michal Hajduk, Dialog Semiconductor
 * Author: Krystian Garbaciak, Dialog Semiconductor
 *
 *  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 and DA9063L 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 on both DA9063 and DA9063L */
   DA9063_ID_LDO3,
   DA9063_ID_LDO7,
   DA9063_ID_LDO8,
   DA9063_ID_LDO9,
   DA9063_ID_LDO11,
 
   /* DA9063-only LDOs */
   DA9063_ID_LDO1,
   DA9063_ID_LDO2,
   DA9063_ID_LDO4,
   DA9063_ID_LDO5,
   DA9063_ID_LDO6,
   DA9063_ID_LDO10,
};
 
/* 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;
   bool                key_power;
   unsigned            flags;
   struct da9063_regulators_pdata    *regulators_pdata;
   struct led_platform_data    *leds_pdata;
};
 
#endif    /* __MFD_DA9063_PDATA_H__ */