linux/include/linux/mfd/max14577.h
<<
>>
Prefs
   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 */
  25enum max14577_regulators {
  26        MAX14577_SAFEOUT = 0,
  27        MAX14577_CHARGER,
  28
  29        MAX14577_REGULATOR_NUM,
  30};
  31
  32/* MAX77836 regulator IDs */
  33enum max77836_regulators {
  34        MAX77836_SAFEOUT = 0,
  35        MAX77836_CHARGER,
  36        MAX77836_LDO1,
  37        MAX77836_LDO2,
  38
  39        MAX77836_REGULATOR_NUM,
  40};
  41
  42struct max14577_regulator_platform_data {
  43        int id;
  44        struct regulator_init_data *initdata;
  45        struct device_node *of_node;
  46};
  47
  48struct 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 */
  58struct 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 */
  80struct 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
  94extern const struct maxim_charger_current maxim_charger_currents[];
  95extern 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__ */
  99