linux/include/linux/mfd/max14577.h
<<
>>
Prefs
   1/*
   2 * max14577.h - Driver for the Maxim 14577/77836
   3 *
   4 * Copyright (C) 2014 Samsung Electrnoics
   5 * Chanwoo Choi <cw00.choi@samsung.com>
   6 * Krzysztof Kozlowski <k.kozlowski@samsung.com>
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License as published by
  10 * the Free Software Foundation; either version 2 of the License, or
  11 * (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 *
  18 * This driver is based on max8997.h
  19 *
  20 * MAX14577 has MUIC, Charger devices.
  21 * The devices share the same I2C bus and interrupt line
  22 * included in this mfd driver.
  23 *
  24 * MAX77836 has additional PMIC and Fuel-Gauge on different I2C slave
  25 * addresses.
  26 */
  27
  28#ifndef __MAX14577_H__
  29#define __MAX14577_H__
  30
  31#include <linux/regulator/consumer.h>
  32
  33/* MAX14577 regulator IDs */
  34enum max14577_regulators {
  35        MAX14577_SAFEOUT = 0,
  36        MAX14577_CHARGER,
  37
  38        MAX14577_REGULATOR_NUM,
  39};
  40
  41/* MAX77836 regulator IDs */
  42enum max77836_regulators {
  43        MAX77836_SAFEOUT = 0,
  44        MAX77836_CHARGER,
  45        MAX77836_LDO1,
  46        MAX77836_LDO2,
  47
  48        MAX77836_REGULATOR_NUM,
  49};
  50
  51struct max14577_regulator_platform_data {
  52        int id;
  53        struct regulator_init_data *initdata;
  54        struct device_node *of_node;
  55};
  56
  57struct max14577_charger_platform_data {
  58        u32 constant_uvolt;
  59        u32 fast_charge_uamp;
  60        u32 eoc_uamp;
  61        u32 ovp_uvolt;
  62};
  63
  64/*
  65 * MAX14577 MFD platform data
  66 */
  67struct max14577_platform_data {
  68        /* IRQ */
  69        int irq_base;
  70
  71        /* current control GPIOs */
  72        int gpio_pogo_vbatt_en;
  73        int gpio_pogo_vbus_en;
  74
  75        /* current control GPIO control function */
  76        int (*set_gpio_pogo_vbatt_en) (int gpio_val);
  77        int (*set_gpio_pogo_vbus_en) (int gpio_val);
  78
  79        int (*set_gpio_pogo_cb) (int new_dev);
  80
  81        struct max14577_regulator_platform_data *regulators;
  82};
  83
  84/*
  85 * Valid limits of current for max14577 and max77836 chargers.
  86 * They must correspond to MBCICHWRCL and MBCICHWRCH fields in CHGCTRL4
  87 * register for given chipset.
  88 */
  89struct maxim_charger_current {
  90        /* Minimal current, set in CHGCTRL4/MBCICHWRCL, uA */
  91        unsigned int min;
  92        /*
  93         * Minimal current when high setting is active,
  94         * set in CHGCTRL4/MBCICHWRCH, uA
  95         */
  96        unsigned int high_start;
  97        /* Value of one step in high setting, uA */
  98        unsigned int high_step;
  99        /* Maximum current of high setting, uA */
 100        unsigned int max;
 101};
 102
 103extern const struct maxim_charger_current maxim_charger_currents[];
 104extern int maxim_charger_calc_reg_current(const struct maxim_charger_current *limits,
 105                unsigned int min_ua, unsigned int max_ua, u8 *dst);
 106
 107#endif /* __MAX14577_H__ */
 108