blob: 3c681f0168b99d15aacd9d64076ea30a2844c160 [file] [log] [blame]
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001/*
2 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#ifndef __MFD_PM8XXX_MISC_H__
15#define __MFD_PM8XXX_MISC_H__
16
17#include <linux/err.h>
18
19#define PM8XXX_MISC_DEV_NAME "pm8xxx-misc"
20
21/**
22 * struct pm8xxx_misc_platform_data - PM8xxx misc driver platform data
23 * @priority: PMIC prority level in a multi-PMIC system. Lower value means
24 * greater priority. Actions are performed from highest to lowest
25 * priority PMIC.
26 */
27struct pm8xxx_misc_platform_data {
28 int priority;
29};
30
Anirudh Ghayal5213eb82011-10-24 14:44:58 +053031enum pm8xxx_uart_path_sel {
32 UART_NONE,
33 UART_TX1_RX1,
34 UART_TX2_RX2,
35 UART_TX3_RX3,
36};
37
Anirudh Ghayal7b382292011-11-01 14:08:34 +053038enum pm8xxx_coincell_chg_voltage {
39 PM8XXX_COINCELL_VOLTAGE_3p2V = 1,
40 PM8XXX_COINCELL_VOLTAGE_3p1V,
41 PM8XXX_COINCELL_VOLTAGE_3p0V,
42 PM8XXX_COINCELL_VOLTAGE_2p5V = 16
43};
44
45enum pm8xxx_coincell_chg_resistor {
46 PM8XXX_COINCELL_RESISTOR_2100_OHMS,
47 PM8XXX_COINCELL_RESISTOR_1700_OHMS,
48 PM8XXX_COINCELL_RESISTOR_1200_OHMS,
49 PM8XXX_COINCELL_RESISTOR_800_OHMS
50};
51
52enum pm8xxx_coincell_chg_state {
53 PM8XXX_COINCELL_CHG_DISABLE,
54 PM8XXX_COINCELL_CHG_ENABLE
55};
56
57struct pm8xxx_coincell_chg {
58 enum pm8xxx_coincell_chg_state state;
59 enum pm8xxx_coincell_chg_voltage voltage;
60 enum pm8xxx_coincell_chg_resistor resistor;
61};
62
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070063#if defined(CONFIG_MFD_PM8XXX_MISC) || defined(CONFIG_MFD_PM8XXX_MISC_MODULE)
64
65/**
66 * pm8xxx_reset_pwr_off - switch all PM8XXX PMIC chips attached to the system to
67 * either reset or shutdown when they are turned off
68 * @reset: 0 = shudown the PMICs, 1 = shutdown and then restart the PMICs
69 *
70 * RETURNS: an appropriate -ERRNO error value on error, or zero for success.
71 */
72int pm8xxx_reset_pwr_off(int reset);
73
Anirudh Ghayal5213eb82011-10-24 14:44:58 +053074int pm8xxx_uart_gpio_mux_ctrl(enum pm8xxx_uart_path_sel uart_path_sel);
75
Anirudh Ghayal7b382292011-11-01 14:08:34 +053076/**
77 * pm8xxx_coincell_chg_config - Disables or enables the coincell charger, and
78 * configures its voltage and resistor settings.
79 * @chg_config: Holds both voltage and resistor values, and a
80 * switch to change the state of charger.
81 * If state is to disable the charger then
82 * both voltage and resistor are disregarded.
83 *
84 * RETURNS: an appropriate -ERRNO error value on error, or zero for success.
85 */
86int pm8xxx_coincell_chg_config(struct pm8xxx_coincell_chg *chg_config);
87
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -070088#else
89
90static inline int pm8xxx_reset_pwr_off(int reset)
91{
92 return -ENODEV;
93}
Anirudh Ghayal5213eb82011-10-24 14:44:58 +053094static inline int
95pm8xxx_uart_gpio_mux_ctrl(enum pm8xxx_uart_path_sel uart_path_sel)
96{
97 return -ENODEV;
98}
Anirudh Ghayal7b382292011-11-01 14:08:34 +053099static inline int
100pm8xxx_coincell_chg_config(struct pm8xxx_coincell_chg *chg_config)
101{
102 return -ENODEV;
103}
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -0700104#endif
105
106#endif