linux/drivers/mfd/axp20x.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * MFD core driver for the X-Powers' Power Management ICs
 *
 * AXP20x typically comprises an adaptive USB-Compatible PWM charger, BUCK DC-DC
 * converters, LDOs, multiple 12-bit ADCs of voltage, current and temperature
 * as well as configurable GPIOs.
 *
 * This file contains the interface independent core functions.
 *
 * Copyright (C) 2014 Carlo Caione
 *
 * Author: Carlo Caione <[email protected]>
 */

#include <linux/acpi.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/mfd/axp20x.h>
#include <linux/mfd/core.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/property.h>
#include <linux/reboot.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>

#define AXP20X_OFF

#define AXP806_REG_ADDR_EXT_ADDR_MASTER_MODE
#define AXP806_REG_ADDR_EXT_ADDR_SLAVE_MODE

static const char * const axp20x_model_names[] =;

static const struct regmap_range axp152_writeable_ranges[] =;

static const struct regmap_range axp152_volatile_ranges[] =;

static const struct regmap_access_table axp152_writeable_table =;

static const struct regmap_access_table axp152_volatile_table =;

static const struct regmap_range axp20x_writeable_ranges[] =;

static const struct regmap_range axp20x_volatile_ranges[] =;

static const struct regmap_access_table axp20x_writeable_table =;

static const struct regmap_access_table axp20x_volatile_table =;

static const struct regmap_range axp192_writeable_ranges[] =;

static const struct regmap_range axp192_volatile_ranges[] =;

static const struct regmap_access_table axp192_writeable_table =;

static const struct regmap_access_table axp192_volatile_table =;

/* AXP22x ranges are shared with the AXP809, as they cover the same range */
static const struct regmap_range axp22x_writeable_ranges[] =;

static const struct regmap_range axp22x_volatile_ranges[] =;

static const struct regmap_access_table axp22x_writeable_table =;

static const struct regmap_access_table axp22x_volatile_table =;

/* AXP288 ranges are shared with the AXP803, as they cover the same range */
static const struct regmap_range axp288_writeable_ranges[] =;

static const struct regmap_range axp288_volatile_ranges[] =;

static const struct regmap_access_table axp288_writeable_table =;

static const struct regmap_access_table axp288_volatile_table =;

static const struct regmap_range axp806_writeable_ranges[] =;

static const struct regmap_range axp313a_writeable_ranges[] =;

static const struct regmap_range axp313a_volatile_ranges[] =;

static const struct regmap_access_table axp313a_writeable_table =;

static const struct regmap_access_table axp313a_volatile_table =;

static const struct regmap_range axp717_writeable_ranges[] =;

static const struct regmap_range axp717_volatile_ranges[] =;

static const struct regmap_access_table axp717_writeable_table =;

static const struct regmap_access_table axp717_volatile_table =;

static const struct regmap_range axp806_volatile_ranges[] =;

static const struct regmap_access_table axp806_writeable_table =;

static const struct regmap_access_table axp806_volatile_table =;

static const struct regmap_range axp15060_writeable_ranges[] =;

static const struct regmap_range axp15060_volatile_ranges[] =;

static const struct regmap_access_table axp15060_writeable_table =;

static const struct regmap_access_table axp15060_volatile_table =;

static const struct resource axp152_pek_resources[] =;

static const struct resource axp192_ac_power_supply_resources[] =;

static const struct resource axp192_usb_power_supply_resources[] =;

static const struct resource axp20x_ac_power_supply_resources[] =;

static const struct resource axp20x_pek_resources[] =;

static const struct resource axp20x_usb_power_supply_resources[] =;

static const struct resource axp22x_usb_power_supply_resources[] =;

/* AXP803 and AXP813/AXP818 share the same interrupts */
static const struct resource axp803_usb_power_supply_resources[] =;

static const struct resource axp22x_pek_resources[] =;

static const struct resource axp288_power_button_resources[] =;

static const struct resource axp288_fuel_gauge_resources[] =;

static const struct resource axp313a_pek_resources[] =;

static const struct resource axp717_pek_resources[] =;

static const struct resource axp803_pek_resources[] =;

static const struct resource axp806_pek_resources[] =;

static const struct resource axp809_pek_resources[] =;

static const struct resource axp15060_pek_resources[] =;

static const struct regmap_config axp152_regmap_config =;

static const struct regmap_config axp192_regmap_config =;

static const struct regmap_config axp20x_regmap_config =;

static const struct regmap_config axp22x_regmap_config =;

static const struct regmap_config axp288_regmap_config =;

static const struct regmap_config axp313a_regmap_config =;

static const struct regmap_config axp717_regmap_config =;

static const struct regmap_config axp806_regmap_config =;

static const struct regmap_config axp15060_regmap_config =;

#define INIT_REGMAP_IRQ(_variant, _irq, _off, _mask)

static const struct regmap_irq axp152_regmap_irqs[] =;

static const struct regmap_irq axp192_regmap_irqs[] =;

static const struct regmap_irq axp20x_regmap_irqs[] =;

static const struct regmap_irq axp22x_regmap_irqs[] =;

/* some IRQs are compatible with axp20x models */
static const struct regmap_irq axp288_regmap_irqs[] =;

static const struct regmap_irq axp313a_regmap_irqs[] =;

static const struct regmap_irq axp717_regmap_irqs[] =;

static const struct regmap_irq axp803_regmap_irqs[] =;

static const struct regmap_irq axp806_regmap_irqs[] =;

static const struct regmap_irq axp809_regmap_irqs[] =;

static const struct regmap_irq axp15060_regmap_irqs[] =;

static const struct regmap_irq_chip axp152_regmap_irq_chip =;

static unsigned int axp192_get_irq_reg(struct regmap_irq_chip_data *data,
				       unsigned int base, int index)
{}

static const struct regmap_irq_chip axp192_regmap_irq_chip =;

static const struct regmap_irq_chip axp20x_regmap_irq_chip =;

static const struct regmap_irq_chip axp22x_regmap_irq_chip =;

static const struct regmap_irq_chip axp288_regmap_irq_chip =;

static const struct regmap_irq_chip axp313a_regmap_irq_chip =;

static const struct regmap_irq_chip axp717_regmap_irq_chip =;

static const struct regmap_irq_chip axp803_regmap_irq_chip =;

static const struct regmap_irq_chip axp806_regmap_irq_chip =;

static const struct regmap_irq_chip axp809_regmap_irq_chip =;

static const struct regmap_irq_chip axp15060_regmap_irq_chip =;

static const struct mfd_cell axp192_cells[] =;

static const struct mfd_cell axp20x_cells[] =;

static const struct mfd_cell axp221_cells[] =;

static const struct mfd_cell axp223_cells[] =;

static const struct mfd_cell axp152_cells[] =;

static struct mfd_cell axp313a_cells[] =;

static struct mfd_cell axp717_cells[] =;

static const struct resource axp288_adc_resources[] =;

static const struct resource axp288_extcon_resources[] =;

static const struct resource axp288_charger_resources[] =;

static const char * const axp288_fuel_gauge_suppliers[] =;

static const struct property_entry axp288_fuel_gauge_properties[] =;

static const struct software_node axp288_fuel_gauge_sw_node =;

static const struct mfd_cell axp288_cells[] =;

static const struct mfd_cell axp803_cells[] =;

static const struct mfd_cell axp806_self_working_cells[] =;

static const struct mfd_cell axp806_cells[] =;

static const struct mfd_cell axp809_cells[] =;

static const struct mfd_cell axp813_cells[] =;

static const struct mfd_cell axp15060_cells[] =;

/* For boards that don't have IRQ line connected to SOC. */
static const struct mfd_cell axp_regulator_only_cells[] =;

static int axp20x_power_off(struct sys_off_data *data)
{}

int axp20x_match_device(struct axp20x_dev *axp20x)
{}
EXPORT_SYMBOL();

int axp20x_device_probe(struct axp20x_dev *axp20x)
{}
EXPORT_SYMBOL();

void axp20x_device_remove(struct axp20x_dev *axp20x)
{}
EXPORT_SYMBOL();

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();