mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
drm/mxsfb/lcdif: simplify ep pointer management using __free
Putting the ep device_node reference requires a of_node_put(ep) in many return points. Use a cleanup action to simplify the code. Reviewed-by: Liu Ying <victor.liu@nxp.com> Link: https://patch.msgid.link/20260407-drm-lcdif-dbanc-v4-2-247a16e61ef9@bootlin.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
parent
1bff813f88
commit
23bc92902e
|
|
@ -49,7 +49,7 @@ static const struct drm_encoder_funcs lcdif_encoder_funcs = {
|
|||
static int lcdif_attach_bridge(struct lcdif_drm_private *lcdif)
|
||||
{
|
||||
struct device *dev = lcdif->drm->dev;
|
||||
struct device_node *ep;
|
||||
struct device_node *ep __free(device_node) = NULL;
|
||||
struct drm_bridge *bridge;
|
||||
int ret;
|
||||
|
||||
|
|
@ -65,23 +65,19 @@ static int lcdif_attach_bridge(struct lcdif_drm_private *lcdif)
|
|||
ret = of_graph_parse_endpoint(ep, &of_ep);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to parse endpoint %pOF\n", ep);
|
||||
of_node_put(ep);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, of_ep.id);
|
||||
if (IS_ERR(bridge)) {
|
||||
of_node_put(ep);
|
||||
if (IS_ERR(bridge))
|
||||
return dev_err_probe(dev, PTR_ERR(bridge),
|
||||
"Failed to get bridge for endpoint%u\n",
|
||||
of_ep.id);
|
||||
}
|
||||
|
||||
encoder = devm_kzalloc(dev, sizeof(*encoder), GFP_KERNEL);
|
||||
if (!encoder) {
|
||||
dev_err(dev, "Failed to allocate encoder for endpoint%u\n",
|
||||
of_ep.id);
|
||||
of_node_put(ep);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
|
@ -91,17 +87,14 @@ static int lcdif_attach_bridge(struct lcdif_drm_private *lcdif)
|
|||
if (ret) {
|
||||
dev_err(dev, "Failed to initialize encoder for endpoint%u: %d\n",
|
||||
of_ep.id, ret);
|
||||
of_node_put(ep);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = drm_bridge_attach(encoder, bridge, NULL, 0);
|
||||
if (ret) {
|
||||
of_node_put(ep);
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret,
|
||||
"Failed to attach bridge for endpoint%u\n",
|
||||
of_ep.id);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user