/* * drivers/mfd/mfd-core.h * * core MFD support * Copyright (c) 2006 Ian Molton * Copyright (c) 2007 Dmitry Baryshkov * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */ #ifndef MFD_CORE_H #define MFD_CORE_H #include struct mfd_cell { const char *name; int id; atomic_t *usage_count; int (*enable)(struct platform_device *dev); int (*disable)(struct platform_device *dev); int (*suspend)(struct platform_device *dev); int (*resume)(struct platform_device *dev); void *platform_data; size_t pdata_size; int num_resources; const struct resource *resources; bool ignore_resource_conflicts; bool pm_runtime_no_callbacks; }; extern int mfd_cell_enable(struct platform_device *pdev); extern int mfd_cell_disable(struct platform_device *pdev); extern int mfd_clone_cell(const char *cell, const char **clones, size_t n_clones); static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev) { return pdev->mfd_cell; } extern int mfd_add_devices(struct device *parent, int id, struct mfd_cell *cells, int n_devs, struct resource *mem_base, int irq_base); extern void mfd_remove_devices(struct device *parent); #endif