MLK-16290 drm: Add drm_of_component_probe_with_match() helper
A component master may have both OF based and non-OF based components to be
bound with. This patch adds a helper drm_of_component_probe_with_match()
similar to drm_of_component_probe() so that the new helper may get an
additional provided match pointer(contains match entries for non-OF based
components) to support this case.
Tested-by: Meng Mingming <mingming.meng@nxp.com>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
(cherry picked from commit c3cad72234
)
This commit is contained in:
parent
9b995437fe
commit
36b8a992d5
|
@ -100,8 +100,10 @@ void drm_of_component_match_add(struct device *master,
|
|||
EXPORT_SYMBOL_GPL(drm_of_component_match_add);
|
||||
|
||||
/**
|
||||
* drm_of_component_probe - Generic probe function for a component based master
|
||||
* drm_of_component_probe_with_match - Generic probe function with match
|
||||
* entries for a component based master
|
||||
* @dev: master device containing the OF node
|
||||
* @match: component match pointer provided to store matches
|
||||
* @compare_of: compare function used for matching components
|
||||
* @m_ops: component master ops to be used
|
||||
*
|
||||
|
@ -112,12 +114,12 @@ EXPORT_SYMBOL_GPL(drm_of_component_match_add);
|
|||
*
|
||||
* Returns zero if successful, or one of the standard error codes if it fails.
|
||||
*/
|
||||
int drm_of_component_probe(struct device *dev,
|
||||
int drm_of_component_probe_with_match(struct device *dev,
|
||||
struct component_match *match,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
const struct component_master_ops *m_ops)
|
||||
{
|
||||
struct device_node *ep, *port, *remote;
|
||||
struct component_match *match = NULL;
|
||||
int i;
|
||||
|
||||
if (!dev->of_node)
|
||||
|
@ -183,6 +185,29 @@ int drm_of_component_probe(struct device *dev,
|
|||
|
||||
return component_master_add_with_match(dev, m_ops, match);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_of_component_probe_with_match);
|
||||
|
||||
/**
|
||||
* drm_of_component_probe - Generic probe function for a component based master
|
||||
* @dev: master device containing the OF node
|
||||
* @compare_of: compare function used for matching components
|
||||
* @master_ops: component master ops to be used
|
||||
*
|
||||
* Parse the platform device OF node and bind all the components associated
|
||||
* with the master. Interface ports are added before the encoders in order to
|
||||
* satisfy their .bind requirements
|
||||
* See Documentation/devicetree/bindings/graph.txt for the bindings.
|
||||
*
|
||||
* Returns zero if successful, or one of the standard error codes if it fails.
|
||||
*/
|
||||
int drm_of_component_probe(struct device *dev,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
const struct component_master_ops *m_ops)
|
||||
{
|
||||
struct component_match *match = NULL;
|
||||
|
||||
return drm_of_component_probe_with_match(dev, match, compare_of, m_ops);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_of_component_probe);
|
||||
|
||||
/*
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <drm/drm_bridge.h>
|
||||
#endif
|
||||
|
||||
struct component_match;
|
||||
struct component_master_ops;
|
||||
struct component_match;
|
||||
struct device;
|
||||
|
@ -25,6 +26,10 @@ void drm_of_component_match_add(struct device *master,
|
|||
struct component_match **matchptr,
|
||||
int (*compare)(struct device *, void *),
|
||||
struct device_node *node);
|
||||
extern int drm_of_component_probe_with_match(struct device *dev,
|
||||
struct component_match *match,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
const struct component_master_ops *m_ops);
|
||||
int drm_of_component_probe(struct device *dev,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
const struct component_master_ops *m_ops);
|
||||
|
@ -56,6 +61,14 @@ drm_of_component_match_add(struct device *master,
|
|||
{
|
||||
}
|
||||
|
||||
static int drm_of_component_probe_with_match(struct device *dev,
|
||||
struct component_match *match,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
const struct component_master_ops *m_ops)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int
|
||||
drm_of_component_probe(struct device *dev,
|
||||
int (*compare_of)(struct device *, void *),
|
||||
|
|
Loading…
Reference in New Issue