#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/mfd/core.h>
#include <linux/pm_runtime.h>
#include <linux/module.h>
#include <linux/irqdomain.h>
#include <linux/regulator/consumer.h>
static struct device_type mfd_dev_type = {
int mfd_cell_enable(struct platform_device *pdev)
const struct mfd_cell *cell = mfd_get_cell(pdev);
if (atomic_inc_return(cell->usage_count) == 1)
err = cell->enable(pdev);
atomic_dec(cell->usage_count);
EXPORT_SYMBOL(mfd_cell_enable);
int mfd_cell_disable(struct platform_device *pdev)
const struct mfd_cell *cell = mfd_get_cell(pdev);
if (atomic_dec_return(cell->usage_count) == 0)
err = cell->disable(pdev);
atomic_inc(cell->usage_count);
WARN_ON(atomic_read(cell->usage_count) < 0);