Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #ifndef _LINUX_OF_DEVICE_H 3 : : #define _LINUX_OF_DEVICE_H 4 : : 5 : : #include <linux/cpu.h> 6 : : #include <linux/platform_device.h> 7 : : #include <linux/of_platform.h> /* temporary until merge */ 8 : : 9 : : #include <linux/of.h> 10 : : #include <linux/mod_devicetable.h> 11 : : 12 : : struct device; 13 : : 14 : : #ifdef CONFIG_OF 15 : : extern const struct of_device_id *of_match_device( 16 : : const struct of_device_id *matches, const struct device *dev); 17 : : 18 : : /** 19 : : * of_driver_match_device - Tell if a driver's of_match_table matches a device. 20 : : * @drv: the device_driver structure to test 21 : : * @dev: the device structure to match against 22 : : */ 23 : : static inline int of_driver_match_device(struct device *dev, 24 : : const struct device_driver *drv) 25 : : { 26 : 3 : return of_match_device(drv->of_match_table, dev) != NULL; 27 : : } 28 : : 29 : : extern struct platform_device *of_dev_get(struct platform_device *dev); 30 : : extern void of_dev_put(struct platform_device *dev); 31 : : 32 : : extern int of_device_add(struct platform_device *pdev); 33 : : extern int of_device_register(struct platform_device *ofdev); 34 : : extern void of_device_unregister(struct platform_device *ofdev); 35 : : 36 : : extern const void *of_device_get_match_data(const struct device *dev); 37 : : 38 : : extern ssize_t of_device_modalias(struct device *dev, char *str, ssize_t len); 39 : : extern int of_device_request_module(struct device *dev); 40 : : 41 : : extern void of_device_uevent(struct device *dev, struct kobj_uevent_env *env); 42 : : extern int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env); 43 : : 44 : : static inline void of_device_node_put(struct device *dev) 45 : : { 46 : 0 : of_node_put(dev->of_node); 47 : : } 48 : : 49 : 3 : static inline struct device_node *of_cpu_device_node_get(int cpu) 50 : : { 51 : : struct device *cpu_dev; 52 : 3 : cpu_dev = get_cpu_device(cpu); 53 : 3 : if (!cpu_dev) 54 : 0 : return of_get_cpu_node(cpu, NULL); 55 : 3 : return of_node_get(cpu_dev->of_node); 56 : : } 57 : : 58 : : int of_dma_configure(struct device *dev, 59 : : struct device_node *np, 60 : : bool force_dma); 61 : : #else /* CONFIG_OF */ 62 : : 63 : : static inline int of_driver_match_device(struct device *dev, 64 : : const struct device_driver *drv) 65 : : { 66 : : return 0; 67 : : } 68 : : 69 : : static inline void of_device_uevent(struct device *dev, 70 : : struct kobj_uevent_env *env) { } 71 : : 72 : : static inline const void *of_device_get_match_data(const struct device *dev) 73 : : { 74 : : return NULL; 75 : : } 76 : : 77 : : static inline int of_device_modalias(struct device *dev, 78 : : char *str, ssize_t len) 79 : : { 80 : : return -ENODEV; 81 : : } 82 : : 83 : : static inline int of_device_request_module(struct device *dev) 84 : : { 85 : : return -ENODEV; 86 : : } 87 : : 88 : : static inline int of_device_uevent_modalias(struct device *dev, 89 : : struct kobj_uevent_env *env) 90 : : { 91 : : return -ENODEV; 92 : : } 93 : : 94 : : static inline void of_device_node_put(struct device *dev) { } 95 : : 96 : : static inline const struct of_device_id *__of_match_device( 97 : : const struct of_device_id *matches, const struct device *dev) 98 : : { 99 : : return NULL; 100 : : } 101 : : #define of_match_device(matches, dev) \ 102 : : __of_match_device(of_match_ptr(matches), (dev)) 103 : : 104 : : static inline struct device_node *of_cpu_device_node_get(int cpu) 105 : : { 106 : : return NULL; 107 : : } 108 : : 109 : : static inline int of_dma_configure(struct device *dev, 110 : : struct device_node *np, 111 : : bool force_dma) 112 : : { 113 : : return 0; 114 : : } 115 : : #endif /* CONFIG_OF */ 116 : : 117 : : #endif /* _LINUX_OF_DEVICE_H */