Merge remote-tracking branches 'asoc/fix/topology' and 'asoc/fix/wm8998' into asoc...
[sfrench/cifs-2.6.git] / include / drm / drm_of.h
1 #ifndef __DRM_OF_H__
2 #define __DRM_OF_H__
3
4 #include <linux/of_graph.h>
5
6 struct component_master_ops;
7 struct component_match;
8 struct device;
9 struct drm_device;
10 struct drm_encoder;
11 struct drm_panel;
12 struct drm_bridge;
13 struct device_node;
14
15 #ifdef CONFIG_OF
16 uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
17                                     struct device_node *port);
18 void drm_of_component_match_add(struct device *master,
19                                 struct component_match **matchptr,
20                                 int (*compare)(struct device *, void *),
21                                 struct device_node *node);
22 int drm_of_component_probe(struct device *dev,
23                            int (*compare_of)(struct device *, void *),
24                            const struct component_master_ops *m_ops);
25 int drm_of_encoder_active_endpoint(struct device_node *node,
26                                    struct drm_encoder *encoder,
27                                    struct of_endpoint *endpoint);
28 int drm_of_find_panel_or_bridge(const struct device_node *np,
29                                 int port, int endpoint,
30                                 struct drm_panel **panel,
31                                 struct drm_bridge **bridge);
32 #else
33 static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
34                                                   struct device_node *port)
35 {
36         return 0;
37 }
38
39 static inline void
40 drm_of_component_match_add(struct device *master,
41                            struct component_match **matchptr,
42                            int (*compare)(struct device *, void *),
43                            struct device_node *node)
44 {
45 }
46
47 static inline int
48 drm_of_component_probe(struct device *dev,
49                        int (*compare_of)(struct device *, void *),
50                        const struct component_master_ops *m_ops)
51 {
52         return -EINVAL;
53 }
54
55 static inline int drm_of_encoder_active_endpoint(struct device_node *node,
56                                                  struct drm_encoder *encoder,
57                                                  struct of_endpoint *endpoint)
58 {
59         return -EINVAL;
60 }
61 static inline int drm_of_find_panel_or_bridge(const struct device_node *np,
62                                               int port, int endpoint,
63                                               struct drm_panel **panel,
64                                               struct drm_bridge **bridge)
65 {
66         return -EINVAL;
67 }
68 #endif
69
70 static inline int drm_of_encoder_active_endpoint_id(struct device_node *node,
71                                                     struct drm_encoder *encoder)
72 {
73         struct of_endpoint endpoint;
74         int ret = drm_of_encoder_active_endpoint(node, encoder,
75                                                  &endpoint);
76
77         return ret ?: endpoint.id;
78 }
79
80 static inline int drm_of_encoder_active_port_id(struct device_node *node,
81                                                 struct drm_encoder *encoder)
82 {
83         struct of_endpoint endpoint;
84         int ret = drm_of_encoder_active_endpoint(node, encoder,
85                                                  &endpoint);
86
87         return ret ?: endpoint.port;
88 }
89
90 #endif /* __DRM_OF_H__ */