From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:50572 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754518AbeDWJ12 (ORCPT ); Mon, 23 Apr 2018 05:27:28 -0400 From: Laurent Pinchart To: Jacopo Mondi Cc: architt@codeaurora.org, a.hajda@samsung.com, airlied@linux.ie, daniel@ffwll.ch, peda@axentia.se, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/8] drm: bridge: Add support for static image formats Date: Mon, 23 Apr 2018 12:27:39 +0300 Message-ID: <3108314.q4SV6s3NXE@avalon> In-Reply-To: <1524130269-32688-2-git-send-email-jacopo+renesas@jmondi.org> References: <1524130269-32688-1-git-send-email-jacopo+renesas@jmondi.org> <1524130269-32688-2-git-send-email-jacopo+renesas@jmondi.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Jacopo, Thank you for the patch. On Thursday, 19 April 2018 12:31:02 EEST Jacopo Mondi wrote: > Add support for storing image format information in DRM bridges with > associated helper function. > > This patch replicates for bridges what 'drm_display_info_set_bus_formats()' > is for connectors. > > Signed-off-by: Jacopo Mondi > --- > drivers/gpu/drm/drm_bridge.c | 30 ++++++++++++++++++++++++++++++ > include/drm/drm_bridge.h | 8 ++++++++ > 2 files changed, 38 insertions(+) > > diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c > index 1638bfe..e2ad098 100644 > --- a/drivers/gpu/drm/drm_bridge.c > +++ b/drivers/gpu/drm/drm_bridge.c > @@ -157,6 +157,36 @@ void drm_bridge_detach(struct drm_bridge *bridge) > } > > /** > + * drm_bridge_set_bus_formats() - set bridge supported image formats > + * @bridge: the bridge to set image formats in > + * @formats: array of MEDIA_BUS_FMT\_ supported image formats Why the \ (here and below) ? > + * @num_formats: number of elements in the @formats array > + * > + * Store a list of supported image formats in a bridge. > + * See MEDIA_BUS_FMT_* definitions in include/uapi/linux/media-bus-format.h > for > + * a full list of available formats. > + */ > +int drm_bridge_set_bus_formats(struct drm_bridge *bridge, const u32 > *formats, > + unsigned int num_formats) > +{ > + u32 *fmts; > + > + if (!formats || !num_formats) > + return -EINVAL; > + > + fmts = kmemdup(formats, sizeof(*formats) * num_formats, GFP_KERNEL); This memory will be leaked when the bridge is destroyed. > + if (!fmts) > + return -ENOMEM; > + > + kfree(bridge->bus_formats); > + bridge->bus_formats = fmts; > + bridge->num_bus_formats = num_formats; > + > + return 0; > +} > +EXPORT_SYMBOL(drm_bridge_set_bus_formats); > + > +/** > * DOC: bridge callbacks > * > * The &drm_bridge_funcs ops are populated by the bridge driver. The DRM > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > index 3270fec..6b3648c 100644 > --- a/include/drm/drm_bridge.h > +++ b/include/drm/drm_bridge.h > @@ -258,6 +258,9 @@ struct drm_bridge_timings { > * @encoder: encoder to which this bridge is connected > * @next: the next bridge in the encoder chain > * @of_node: device node pointer to the bridge > + * @bus_formats: wire image formats. Array of @num_bus_formats > MEDIA_BUS_FMT\_ > + * elements > + * @num_bus_formats: size of @bus_formats array > * @list: to keep track of all added bridges > * @timings: the timing specification for the bridge, if any (may > * be NULL) > @@ -271,6 +274,9 @@ struct drm_bridge { > #ifdef CONFIG_OF > struct device_node *of_node; > #endif > + const u32 *bus_formats; > + unsigned int num_bus_formats; > + > struct list_head list; > const struct drm_bridge_timings *timings; > > @@ -296,6 +302,8 @@ void drm_bridge_mode_set(struct drm_bridge *bridge, > struct drm_display_mode *adjusted_mode); > void drm_bridge_pre_enable(struct drm_bridge *bridge); > void drm_bridge_enable(struct drm_bridge *bridge); > +int drm_bridge_set_bus_formats(struct drm_bridge *bridge, const u32 *fmts, > + unsigned int num_fmts); > > #ifdef CONFIG_DRM_PANEL_BRIDGE > struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel, -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 1/8] drm: bridge: Add support for static image formats Date: Mon, 23 Apr 2018 12:27:39 +0300 Message-ID: <3108314.q4SV6s3NXE@avalon> References: <1524130269-32688-1-git-send-email-jacopo+renesas@jmondi.org> <1524130269-32688-2-git-send-email-jacopo+renesas@jmondi.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1524130269-32688-2-git-send-email-jacopo+renesas@jmondi.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jacopo Mondi Cc: devicetree@vger.kernel.org, airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, peda@axentia.se, linux-media@vger.kernel.org List-Id: devicetree@vger.kernel.org SGkgSmFjb3BvLAoKVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCgpPbiBUaHVyc2RheSwgMTkgQXBy aWwgMjAxOCAxMjozMTowMiBFRVNUIEphY29wbyBNb25kaSB3cm90ZToKPiBBZGQgc3VwcG9ydCBm b3Igc3RvcmluZyBpbWFnZSBmb3JtYXQgaW5mb3JtYXRpb24gaW4gRFJNIGJyaWRnZXMgd2l0aAo+ IGFzc29jaWF0ZWQgaGVscGVyIGZ1bmN0aW9uLgo+IAo+IFRoaXMgcGF0Y2ggcmVwbGljYXRlcyBm b3IgYnJpZGdlcyB3aGF0ICdkcm1fZGlzcGxheV9pbmZvX3NldF9idXNfZm9ybWF0cygpJwo+IGlz IGZvciBjb25uZWN0b3JzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEphY29wbyBNb25kaSA8amFjb3Bv K3JlbmVzYXNAam1vbmRpLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2Uu YyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1f YnJpZGdlLmggICAgIHwgIDggKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRp b25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gaW5kZXggMTYzOGJmZS4uZTJhZDA5OCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9icmlkZ2UuYwo+IEBAIC0xNTcsNiArMTU3LDM2IEBAIHZvaWQgZHJtX2JyaWRn ZV9kZXRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAgfQo+IAo+ICAvKioKPiArICog ZHJtX2JyaWRnZV9zZXRfYnVzX2Zvcm1hdHMoKSAtIHNldCBicmlkZ2Ugc3VwcG9ydGVkIGltYWdl IGZvcm1hdHMKPiArICogQGJyaWRnZTogdGhlIGJyaWRnZSB0byBzZXQgaW1hZ2UgZm9ybWF0cyBp bgo+ICsgKiBAZm9ybWF0czogYXJyYXkgb2YgTUVESUFfQlVTX0ZNVFxfIHN1cHBvcnRlZCBpbWFn ZSBmb3JtYXRzCgpXaHkgdGhlIFwgKGhlcmUgYW5kIGJlbG93KSA/Cgo+ICsgKiBAbnVtX2Zvcm1h dHM6IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgQGZvcm1hdHMgYXJyYXkKPiArICoKPiArICog U3RvcmUgYSBsaXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzIGluIGEgYnJpZGdlLgo+ICsg KiBTZWUgTUVESUFfQlVTX0ZNVF8qIGRlZmluaXRpb25zIGluIGluY2x1ZGUvdWFwaS9saW51eC9t ZWRpYS1idXMtZm9ybWF0LmgKPiBmb3IKPiArICogYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIGZv cm1hdHMuCj4gKyAqLwo+ICtpbnQgZHJtX2JyaWRnZV9zZXRfYnVzX2Zvcm1hdHMoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwgY29uc3QgdTMyCj4gKmZvcm1hdHMsCj4gKwkJCSAgICAgICB1bnNp Z25lZCBpbnQgbnVtX2Zvcm1hdHMpCj4gK3sKPiArCXUzMiAqZm10czsKPiArCj4gKwlpZiAoIWZv cm1hdHMgfHwgIW51bV9mb3JtYXRzKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZtdHMg PSBrbWVtZHVwKGZvcm1hdHMsIHNpemVvZigqZm9ybWF0cykgKiBudW1fZm9ybWF0cywgR0ZQX0tF Uk5FTCk7CgpUaGlzIG1lbW9yeSB3aWxsIGJlIGxlYWtlZCB3aGVuIHRoZSBicmlkZ2UgaXMgZGVz dHJveWVkLgoKPiArCWlmICghZm10cykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlrZnJl ZShicmlkZ2UtPmJ1c19mb3JtYXRzKTsKPiArCWJyaWRnZS0+YnVzX2Zvcm1hdHMgPSBmbXRzOwo+ ICsJYnJpZGdlLT5udW1fYnVzX2Zvcm1hdHMgPSBudW1fZm9ybWF0czsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9icmlkZ2Vfc2V0X2J1c19mb3JtYXRzKTsKPiAr Cj4gKy8qKgo+ICAgKiBET0M6IGJyaWRnZSBjYWxsYmFja3MKPiAgICoKPiAgICogVGhlICZkcm1f YnJpZGdlX2Z1bmNzIG9wcyBhcmUgcG9wdWxhdGVkIGJ5IHRoZSBicmlkZ2UgZHJpdmVyLiBUaGUg RFJNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCBiL2luY2x1ZGUvZHJt L2RybV9icmlkZ2UuaAo+IGluZGV4IDMyNzBmZWMuLjZiMzY0OGMgMTAwNjQ0Cj4gLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4g QEAgLTI1OCw2ICsyNTgsOSBAQCBzdHJ1Y3QgZHJtX2JyaWRnZV90aW1pbmdzIHsKPiAgICogQGVu Y29kZXI6IGVuY29kZXIgdG8gd2hpY2ggdGhpcyBicmlkZ2UgaXMgY29ubmVjdGVkCj4gICAqIEBu ZXh0OiB0aGUgbmV4dCBicmlkZ2UgaW4gdGhlIGVuY29kZXIgY2hhaW4KPiAgICogQG9mX25vZGU6 IGRldmljZSBub2RlIHBvaW50ZXIgdG8gdGhlIGJyaWRnZQo+ICsgKiBAYnVzX2Zvcm1hdHM6IHdp cmUgaW1hZ2UgZm9ybWF0cy4gQXJyYXkgb2YgQG51bV9idXNfZm9ybWF0cwo+IE1FRElBX0JVU19G TVRcXwo+ICsgKiBlbGVtZW50cwo+ICsgKiBAbnVtX2J1c19mb3JtYXRzOiBzaXplIG9mIEBidXNf Zm9ybWF0cyBhcnJheQo+ICAgKiBAbGlzdDogdG8ga2VlcCB0cmFjayBvZiBhbGwgYWRkZWQgYnJp ZGdlcwo+ICAgKiBAdGltaW5nczogdGhlIHRpbWluZyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgYnJp ZGdlLCBpZiBhbnkgKG1heQo+ICAgKiBiZSBOVUxMKQo+IEBAIC0yNzEsNiArMjc0LDkgQEAgc3Ry dWN0IGRybV9icmlkZ2Ugewo+ICAjaWZkZWYgQ09ORklHX09GCj4gIAlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm9mX25vZGU7Cj4gICNlbmRpZgo+ICsJY29uc3QgdTMyICpidXNfZm9ybWF0czsKPiArCXVu c2lnbmVkIGludCBudW1fYnVzX2Zvcm1hdHM7Cj4gKwo+ICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0 Owo+ICAJY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfdGltaW5ncyAqdGltaW5nczsKPiAKPiBAQCAt Mjk2LDYgKzMwMiw4IEBAIHZvaWQgZHJtX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlLAo+ICAJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSk7 Cj4gIHZvaWQgZHJtX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Owo+ICB2b2lkIGRybV9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ ICtpbnQgZHJtX2JyaWRnZV9zZXRfYnVzX2Zvcm1hdHMoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRn ZSwgY29uc3QgdTMyICpmbXRzLAo+ICsJCQkgICAgICAgdW5zaWduZWQgaW50IG51bV9mbXRzKTsK PiAKPiAgI2lmZGVmIENPTkZJR19EUk1fUEFORUxfQlJJREdFCj4gIHN0cnVjdCBkcm1fYnJpZGdl ICpkcm1fcGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKCi0tIApSZWdh cmRzLAoKTGF1cmVudCBQaW5jaGFydAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK