root/include/linux/mfd/max14577.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 /*
   3  * max14577.h - Driver for the Maxim 14577/77836
   4  *
   5  * Copyright (C) 2014 Samsung Electrnoics
   6  * Chanwoo Choi <cw00.choi@samsung.com>
   7  * Krzysztof Kozlowski <krzk@kernel.org>
   8  *
   9  * This driver is based on max8997.h
  10  *
  11  * MAX14577 has MUIC, Charger devices.
  12  * The devices share the same I2C bus and interrupt line
  13  * included in this mfd driver.
  14  *
  15  * MAX77836 has additional PMIC and Fuel-Gauge on different I2C slave
  16  * addresses.
  17  */
  18 
  19 #ifndef __MAX14577_H__
  20 #define __MAX14577_H__
  21 
  22 #include <linux/regulator/consumer.h>
  23 
  24 /* MAX14577 regulator IDs */
  25 enum max14577_regulators {
  26         MAX14577_SAFEOUT = 0,
  27         MAX14577_CHARGER,
  28 
  29         MAX14577_REGULATOR_NUM,
  30 };
  31 
  32 /* MAX77836 regulator IDs */
  33 enum max77836_regulators {
  34         MAX77836_SAFEOUT = 0,
  35         MAX77836_CHARGER,
  36         MAX77836_LDO1,
  37         MAX77836_LDO2,
  38 
  39         MAX77836_REGULATOR_NUM,
  40 };
  41 
  42 struct max14577_regulator_platform_data {
  43         int id;
  44         struct regulator_init_data *initdata;
  45         struct device_node *of_node;
  46 };
  47 
  48 struct max14577_charger_platform_data {
  49         u32 constant_uvolt;
  50         u32 fast_charge_uamp;
  51         u32 eoc_uamp;
  52         u32 ovp_uvolt;
  53 };
  54 
  55 /*
  56  * MAX14577 MFD platform data
  57  */
  58 struct max14577_platform_data {
  59         /* IRQ */
  60         int irq_base;
  61 
  62         /* current control GPIOs */
  63         int gpio_pogo_vbatt_en;
  64         int gpio_pogo_vbus_en;
  65 
  66         /* current control GPIO control function */
  67         int (*set_gpio_pogo_vbatt_en) (int gpio_val);
  68         int (*set_gpio_pogo_vbus_en) (int gpio_val);
  69 
  70         int (*set_gpio_pogo_cb) (int new_dev);
  71 
  72         struct max14577_regulator_platform_data *regulators;
  73 };
  74 
  75 /*
  76  * Valid limits of current for max14577 and max77836 chargers.
  77  * They must correspond to MBCICHWRCL and MBCICHWRCH fields in CHGCTRL4
  78  * register for given chipset.
  79  */
  80 struct maxim_charger_current {
  81         /* Minimal current, set in CHGCTRL4/MBCICHWRCL, uA */
  82         unsigned int min;
  83         /*
  84          * Minimal current when high setting is active,
  85          * set in CHGCTRL4/MBCICHWRCH, uA
  86          */
  87         unsigned int high_start;
  88         /* Value of one step in high setting, uA */
  89         unsigned int high_step;
  90         /* Maximum current of high setting, uA */
  91         unsigned int max;
  92 };
  93 
  94 extern const struct maxim_charger_current maxim_charger_currents[];
  95 extern int maxim_charger_calc_reg_current(const struct maxim_charger_current *limits,
  96                 unsigned int min_ua, unsigned int max_ua, u8 *dst);
  97 
  98 #endif /* __MAX14577_H__ */

/* [<][>][^][v][top][bottom][index][help] */