From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752328AbdF2Jay (ORCPT ); Thu, 29 Jun 2017 05:30:54 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:19587 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751565AbdF2Jar (ORCPT ); Thu, 29 Jun 2017 05:30:47 -0400 X-AuditID: cbfec7f2-f797e6d000004438-e9-5954c8c42fca Subject: Re: [PATCH 4/8] drm/bridge: Add a devm_ allocator for panel bridge. To: Eric Anholt , dri-devel@lists.freedesktop.org, Archit Taneja , Laurent Pinchart , Thierry Reding Cc: linux-kernel@vger.kernel.org From: Andrzej Hajda Message-id: <4421363a-db3d-b724-012c-ecef8dc969f5@samsung.com> Date: Thu, 29 Jun 2017 11:30:42 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-version: 1.0 In-reply-to: <20170627195839.3338-5-eric@anholt.net> Content-type: text/plain; charset=utf-8 Content-transfer-encoding: 7bit Content-language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNKsWRmVeSWpSXmKPExsWy7djP87pHToREGqy+JmnR1PGW1eLK1/ds FgcaLzNadE5cwm5xedccNoufu+axOLB5NL0/xuZxua+XyWPnrLvsHrM7ZrJ63O8+zuTxeZNc AFsUl01Kak5mWWqRvl0CV8aLU2vYCxqEK+Z3vGJvYNzC38XIySEhYCJx/M8PRghbTOLCvfVs XYxcHEICSxklrk08wgrhfGaUeH23jxGmo2HyMhaIxDJGie23PjBDOM8YJRZvWA5WJSzgI/H6 xjJ2kISIwEVGiYk3J7KDJJgFFCR+3dvECmKzCWhK/N18kw3E5hWwk5j7+RFYM4uAqsSuO5fA bFGBCIlFkyB6eQUEJX5MvscCYnMCnTF14X1miJmaEi++TGKBsOUlNq95CxUXl2huvQl2qoTA JnaJidtmAC3jAHJkJTYdYIYwXSTutntDfCYs8er4FnYIW0ais+MgE0RrN6PEp/4T7BDOFEaJ fx9mMENUWUscPn6RFWIZn8SkbdOhhvJKdLQJQZR4SMy+NpsVwnaUOHnjPzToNjJKHOx8xDqB UWEWkt9mIflnFpJ/ZiH5ZwEjyypGkdTS4tz01GJjveLE3OLSvHS95PzcTYzAJHT63/FPOxi/ nrA6xCjAwajEw8uwNjhSiDWxrLgy9xCjBAezkgive0NIpBBvSmJlVWpRfnxRaU5q8SFGaQ4W JXFerlPXIoQE0hNLUrNTUwtSi2CyTBycUg2MqhdCagu31L3c1FrZ3RmYnrDz/9HIWYdD3R80 +l8+pnAz4NdNF6u//ix5HT17tur/8T278rHMdslNe481ip+uerKn8UnDeumg+y/0fj3RUdO6 eqDxDMfxEE+WVqEOR4FrW+vfJcz6eNvRf8Zzps2GbgblayrsOa+XN5s0NV+zWTldpftG2pcg JZbijERDLeai4kQA7KanvT4DAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRmVeSWpSXmKPExsVy+t/xa7pHToREGrhZNHW8ZbW48vU9m8WB xsuMFp0Tl7BbXN41h83i5655LA5sHk3vj7F5XO7rZfLYOesuu8fsjpmsHve7jzN5fN4kF8AW 5WaTkZqYklqkkJqXnJ+SmZduqxQa4qZroaSQl5ibaqsUoesbEqSkUJaYUwrkGRmgAQfnAPdg JX27BLeMF6fWsBc0CFfM73jF3sC4hb+LkZNDQsBEomHyMhYIW0ziwr31bCC2kMASRon2qxFd jFxA9jNGiR/Pd7KDJIQFfCRe31gGZosIXGSUOPPPFsRmFlCQ+HVvEytEw0ZGia/9s1lBEmwC mhJ/N98Em8orYCcx9/MjRhCbRUBVYtedS2C2qECExK7rB1ghagQlfky+B3YRJ9B1UxfeZ+5i 5ABaoC4xZUouxC55ic1r3jJD2OISza03WSYwCs5C0j0LoWMWko5ZSDoWMLKsYhRJLS3OTc8t NtQrTswtLs1L10vOz93ECIzCbcd+bt7BeGlj8CFGAQ5GJR7eFauCI4VYE8uKK3MPMUpwMCuJ 8Lo3hEQK8aYkVlalFuXHF5XmpBYfYjQFem0is5Rocj4wQeSVxBuaGJpbGhoZW1iYGxkpifOW fLgSLiSQnliSmp2aWpBaBNPHxMEp1cA4661Yyc/XF4+93bk3Z9EalsbgGUv3ar07961m63PG D19Yr6w6/54t78qOxcJHyng6lgV7BHXqd3VYCFySv7JS9Su3i2vxrHnih/xktUsE9t+Ku3Lp mveHk417KhvOXXTJ/TJx3jT2jqxjO/ljPxtuPj+F4ahX9MdNUVc9Qj/Kr98cpaA4OW29lRJL cUaioRZzUXEiAOLeEdnYAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170629093044eucas1p13824c21722580d42dc4731c45d3223b4 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170627195846epcas2p39103f3b777c061c3756723ce06118ab3 X-RootMTR: 20170627195846epcas2p39103f3b777c061c3756723ce06118ab3 References: <20170627195839.3338-1-eric@anholt.net> <20170627195839.3338-5-eric@anholt.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27.06.2017 21:58, Eric Anholt wrote: > This will let drivers reduce the error cleanup they need, in > particular the "is_panel_bridge" flag. > > Signed-off-by: Eric Anholt > --- > drivers/gpu/drm/bridge/panel.c | 30 ++++++++++++++++++++++++++++++ > include/drm/drm_bridge.h | 3 +++ > 2 files changed, 33 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c > index 67fe19e5a9c6..cdf367d2653a 100644 > --- a/drivers/gpu/drm/bridge/panel.c > +++ b/drivers/gpu/drm/bridge/panel.c > @@ -198,3 +198,33 @@ void drm_panel_bridge_remove(struct drm_bridge *bridge) > devm_kfree(panel_bridge->panel->dev, bridge); > } > EXPORT_SYMBOL(drm_panel_bridge_remove); > + > +static void devm_drm_panel_bridge_release(struct device *dev, void *res) > +{ > + struct drm_bridge *bridge = *(struct drm_bridge **)res; > + > + drm_panel_bridge_remove(bridge); I guess more elegant would be: struct drm_bridge **bridge = res; drm_panel_bridge_remove(*bridge); I am still not convinced to the idea of this panel_bridge stuff, but this is different issue :) Anyway: Reviewed-by: Andrzej Hajda -- Regards Andrzej > +} > + > +struct drm_bridge *devm_drm_panel_bridge_add(struct device *dev, > + struct drm_panel *panel, > + u32 connector_type) > +{ > + struct drm_bridge **ptr, *bridge; > + > + ptr = devres_alloc(devm_drm_panel_bridge_release, sizeof(*ptr), > + GFP_KERNEL); > + if (!ptr) > + return ERR_PTR(-ENOMEM); > + > + bridge = drm_panel_bridge_add(panel, connector_type); > + if (!IS_ERR(bridge)) { > + *ptr = bridge; > + devres_add(dev, ptr); > + } else { > + devres_free(ptr); > + } > + > + return bridge; > +} > +EXPORT_SYMBOL(devm_drm_panel_bridge_add); > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > index 1dc94d5392e2..6522d4cbc9d9 100644 > --- a/include/drm/drm_bridge.h > +++ b/include/drm/drm_bridge.h > @@ -268,6 +268,9 @@ void drm_bridge_enable(struct drm_bridge *bridge); > struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel, > u32 connector_type); > void drm_panel_bridge_remove(struct drm_bridge *bridge); > +struct drm_bridge *devm_drm_panel_bridge_add(struct device *dev, > + struct drm_panel *panel, > + u32 connector_type); > #endif > > #endif