Commit | Line | Data |
---|---|---|
aa613de6 DB |
1 | /* |
2 | * drivers/mfd/mfd-core.h | |
3 | * | |
4 | * core MFD support | |
5 | * Copyright (c) 2006 Ian Molton | |
6 | * Copyright (c) 2007 Dmitry Baryshkov | |
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 version 2 as | |
10 | * published by the Free Software Foundation. | |
11 | * | |
12 | */ | |
13 | ||
7f71ac93 BD |
14 | #ifndef MFD_CORE_H |
15 | #define MFD_CORE_H | |
16 | ||
aa613de6 DB |
17 | #include <linux/platform_device.h> |
18 | ||
19 | /* | |
20 | * This struct describes the MFD part ("cell"). | |
21 | * After registration the copy of this structure will become the platform data | |
22 | * of the resulting platform_device | |
23 | */ | |
24 | struct mfd_cell { | |
25 | const char *name; | |
3bed6e41 | 26 | int id; |
aa613de6 DB |
27 | |
28 | int (*enable)(struct platform_device *dev); | |
29 | int (*disable)(struct platform_device *dev); | |
30 | int (*suspend)(struct platform_device *dev); | |
31 | int (*resume)(struct platform_device *dev); | |
32 | ||
56edb58b MR |
33 | /* driver-specific data for MFD-aware "cell" drivers */ |
34 | void *driver_data; | |
35 | ||
36 | /* platform_data can be used to either pass data to "generic" | |
37 | driver or as a hook to mfd_cell for the "cell" drivers */ | |
38 | void *platform_data; | |
39 | size_t data_size; | |
aa613de6 DB |
40 | |
41 | /* | |
b595076a | 42 | * This resources can be specified relatively to the parent device. |
aa613de6 DB |
43 | * For accessing device you should use resources from device |
44 | */ | |
45 | int num_resources; | |
46 | const struct resource *resources; | |
5f2545fa DD |
47 | |
48 | /* don't check for resource conflicts */ | |
49 | bool ignore_resource_conflicts; | |
4c90aa94 MB |
50 | |
51 | /* | |
52 | * Disable runtime PM callbacks for this subdevice - see | |
53 | * pm_runtime_no_callbacks(). | |
54 | */ | |
55 | bool pm_runtime_no_callbacks; | |
aa613de6 DB |
56 | }; |
57 | ||
424f525a | 58 | extern int mfd_add_devices(struct device *parent, int id, |
7f71ac93 BD |
59 | const struct mfd_cell *cells, int n_devs, |
60 | struct resource *mem_base, | |
61 | int irq_base); | |
aa613de6 | 62 | |
424f525a | 63 | extern void mfd_remove_devices(struct device *parent); |
aa613de6 DB |
64 | |
65 | #endif |