drm/bridge: Move devm_drm_of_get_bridge to bridge/panel.c
By depending on devm_drm_panel_bridge_add(), devm_drm_of_get_bridge()
introduces a circular dependency between the modules drm (where
devm_drm_of_get_bridge() ends up) and drm_kms_helper (where
devm_drm_panel_bridge_add() is).
Fix this by moving devm_drm_of_get_bridge() to bridge/panel.c and thus
drm_kms_helper.
Fixes: 87ea95808d ("drm/bridge: Add a function to abstract away panels")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20210917180925.2602266-1-maxime@cerno.tech
			
			
This commit is contained in:
		
							parent
							
								
									56cd47b470
								
							
						
					
					
						commit
						d4ae66f10c
					
				| @ -9,6 +9,7 @@ | ||||
| #include <drm/drm_connector.h> | ||||
| #include <drm/drm_encoder.h> | ||||
| #include <drm/drm_modeset_helper_vtables.h> | ||||
| #include <drm/drm_of.h> | ||||
| #include <drm/drm_panel.h> | ||||
| #include <drm/drm_print.h> | ||||
| #include <drm/drm_probe_helper.h> | ||||
| @ -332,3 +333,39 @@ struct drm_connector *drm_panel_bridge_connector(struct drm_bridge *bridge) | ||||
| 	return &panel_bridge->connector; | ||||
| } | ||||
| EXPORT_SYMBOL(drm_panel_bridge_connector); | ||||
| 
 | ||||
| #ifdef CONFIG_OF | ||||
| /**
 | ||||
|  * devm_drm_of_get_bridge - Return next bridge in the chain | ||||
|  * @dev: device to tie the bridge lifetime to | ||||
|  * @np: device tree node containing encoder output ports | ||||
|  * @port: port in the device tree node | ||||
|  * @endpoint: endpoint in the device tree node | ||||
|  * | ||||
|  * Given a DT node's port and endpoint number, finds the connected node | ||||
|  * and returns the associated bridge if any, or creates and returns a | ||||
|  * drm panel bridge instance if a panel is connected. | ||||
|  * | ||||
|  * Returns a pointer to the bridge if successful, or an error pointer | ||||
|  * otherwise. | ||||
|  */ | ||||
| struct drm_bridge *devm_drm_of_get_bridge(struct device *dev, | ||||
| 					  struct device_node *np, | ||||
| 					  u32 port, u32 endpoint) | ||||
| { | ||||
| 	struct drm_bridge *bridge; | ||||
| 	struct drm_panel *panel; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	ret = drm_of_find_panel_or_bridge(np, port, endpoint, | ||||
| 					  &panel, &bridge); | ||||
| 	if (ret) | ||||
| 		return ERR_PTR(ret); | ||||
| 
 | ||||
| 	if (panel) | ||||
| 		bridge = devm_drm_panel_bridge_add(dev, panel); | ||||
| 
 | ||||
| 	return bridge; | ||||
| } | ||||
| EXPORT_SYMBOL(devm_drm_of_get_bridge); | ||||
| #endif | ||||
|  | ||||
| @ -1232,40 +1232,6 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np) | ||||
| 	return NULL; | ||||
| } | ||||
| EXPORT_SYMBOL(of_drm_find_bridge); | ||||
| 
 | ||||
| /**
 | ||||
|  * devm_drm_of_get_bridge - Return next bridge in the chain | ||||
|  * @dev: device to tie the bridge lifetime to | ||||
|  * @np: device tree node containing encoder output ports | ||||
|  * @port: port in the device tree node | ||||
|  * @endpoint: endpoint in the device tree node | ||||
|  * | ||||
|  * Given a DT node's port and endpoint number, finds the connected node | ||||
|  * and returns the associated bridge if any, or creates and returns a | ||||
|  * drm panel bridge instance if a panel is connected. | ||||
|  * | ||||
|  * Returns a pointer to the bridge if successful, or an error pointer | ||||
|  * otherwise. | ||||
|  */ | ||||
| struct drm_bridge *devm_drm_of_get_bridge(struct device *dev, | ||||
| 					  struct device_node *np, | ||||
| 					  u32 port, u32 endpoint) | ||||
| { | ||||
| 	struct drm_bridge *bridge; | ||||
| 	struct drm_panel *panel; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	ret = drm_of_find_panel_or_bridge(np, port, endpoint, | ||||
| 					  &panel, &bridge); | ||||
| 	if (ret) | ||||
| 		return ERR_PTR(ret); | ||||
| 
 | ||||
| 	if (panel) | ||||
| 		bridge = devm_drm_panel_bridge_add(dev, panel); | ||||
| 
 | ||||
| 	return bridge; | ||||
| } | ||||
| EXPORT_SYMBOL(devm_drm_of_get_bridge); | ||||
| #endif | ||||
| 
 | ||||
| MODULE_AUTHOR("Ajay Kumar <ajaykumar.rs@samsung.com>"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user