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