From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King - ARM Linux Date: Tue, 23 Aug 2016 07:59:50 +0000 Subject: Re: [PATCH RFC 4/5] drm/bridge: add dw-hdmi cec driver using Hans Verkil's CEC code Message-Id: <20160823075950.GC1041@n2100.armlinux.org.uk> List-Id: References: <20160812141421.GB1041@n2100.armlinux.org.uk> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Hans Verkuil Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Hans Verkuil , Tomi Valkeinen , Jean-Christophe Plagniol-Villard , linux-arm-kernel@lists.infradead.org On Tue, Aug 23, 2016 at 09:21:17AM +0200, Hans Verkuil wrote: > Hi Russell, > > On 08/12/2016 04:15 PM, Russell King wrote: > > Add a CEC driver for the dw-hdmi hardware using Hans Verkil's CEC > > implementation. > > > > Signed-off-by: Russell King > > --- > > drivers/gpu/drm/bridge/Kconfig | 7 + > > drivers/gpu/drm/bridge/Makefile | 1 + > > drivers/gpu/drm/bridge/dw-hdmi-cec.c | 344 ++++++++++++++++++++++++++++++ > > drivers/gpu/drm/bridge/dw-hdmi.c | 64 +++++- > > include/linux/platform_data/dw_hdmi-cec.h | 16 ++ > > 5 files changed, 421 insertions(+), 11 deletions(-) > > create mode 100644 drivers/gpu/drm/bridge/dw-hdmi-cec.c > > create mode 100644 include/linux/platform_data/dw_hdmi-cec.h > > > > > > > +static unsigned int parse_hdmi_addr(const struct edid *edid) > > +{ > > + if (!edid || edid->extensions = 0) > > + return (u16)~0; > > + > > + return cec_get_edid_phys_addr((u8 *)edid, > > + EDID_LENGTH * (edid->extensions + 1), NULL); > > +} > > + > > +static int dw_hdmi_cec_notify(struct notifier_block *nb, unsigned long event, > > + void *data) > > +{ > > + struct dw_hdmi_cec *cec = container_of(nb, struct dw_hdmi_cec, nb); > > + union hdmi_event *event_block = data; > > + unsigned int phys; > > + > > + dev_info(event_block->base.source, "event %lu\n", event); > > + > > + if (event_block->base.source != cec->adap->devnode.parent) > > + return NOTIFY_OK; > > + > > + switch (event) { > > + case HDMI_CONNECTED: > > + break; > > + > > + case HDMI_DISCONNECTED: > > + cec_s_phys_addr(cec->adap, CEC_PHYS_ADDR_INVALID, false); > > + break; > > + > > + case HDMI_NEW_EDID: > > + phys = parse_hdmi_addr(event_block->edid.edid); > > + cec_s_phys_addr(cec->adap, phys, false); > > + break; > > + } > > + > > + return NOTIFY_OK; > > +} > > Wouldn't it make a lot of sense to integrate this into the cec framework? > > All you need is to pass an hdmi_notifier_dev as argument to cec_allocate_adapter() > and you can integrate this. > > If you are OK with that, then I can make patches for that. It's not just about CEC. It's also used for passing information between the video and audio parts, so tying this into CEC is wrong. -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@armlinux.org.uk (Russell King - ARM Linux) Date: Tue, 23 Aug 2016 08:59:50 +0100 Subject: [PATCH RFC 4/5] drm/bridge: add dw-hdmi cec driver using Hans Verkil's CEC code In-Reply-To: References: <20160812141421.GB1041@n2100.armlinux.org.uk> Message-ID: <20160823075950.GC1041@n2100.armlinux.org.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Aug 23, 2016 at 09:21:17AM +0200, Hans Verkuil wrote: > Hi Russell, > > On 08/12/2016 04:15 PM, Russell King wrote: > > Add a CEC driver for the dw-hdmi hardware using Hans Verkil's CEC > > implementation. > > > > Signed-off-by: Russell King > > --- > > drivers/gpu/drm/bridge/Kconfig | 7 + > > drivers/gpu/drm/bridge/Makefile | 1 + > > drivers/gpu/drm/bridge/dw-hdmi-cec.c | 344 ++++++++++++++++++++++++++++++ > > drivers/gpu/drm/bridge/dw-hdmi.c | 64 +++++- > > include/linux/platform_data/dw_hdmi-cec.h | 16 ++ > > 5 files changed, 421 insertions(+), 11 deletions(-) > > create mode 100644 drivers/gpu/drm/bridge/dw-hdmi-cec.c > > create mode 100644 include/linux/platform_data/dw_hdmi-cec.h > > > > > > > +static unsigned int parse_hdmi_addr(const struct edid *edid) > > +{ > > + if (!edid || edid->extensions == 0) > > + return (u16)~0; > > + > > + return cec_get_edid_phys_addr((u8 *)edid, > > + EDID_LENGTH * (edid->extensions + 1), NULL); > > +} > > + > > +static int dw_hdmi_cec_notify(struct notifier_block *nb, unsigned long event, > > + void *data) > > +{ > > + struct dw_hdmi_cec *cec = container_of(nb, struct dw_hdmi_cec, nb); > > + union hdmi_event *event_block = data; > > + unsigned int phys; > > + > > + dev_info(event_block->base.source, "event %lu\n", event); > > + > > + if (event_block->base.source != cec->adap->devnode.parent) > > + return NOTIFY_OK; > > + > > + switch (event) { > > + case HDMI_CONNECTED: > > + break; > > + > > + case HDMI_DISCONNECTED: > > + cec_s_phys_addr(cec->adap, CEC_PHYS_ADDR_INVALID, false); > > + break; > > + > > + case HDMI_NEW_EDID: > > + phys = parse_hdmi_addr(event_block->edid.edid); > > + cec_s_phys_addr(cec->adap, phys, false); > > + break; > > + } > > + > > + return NOTIFY_OK; > > +} > > Wouldn't it make a lot of sense to integrate this into the cec framework? > > All you need is to pass an hdmi_notifier_dev as argument to cec_allocate_adapter() > and you can integrate this. > > If you are OK with that, then I can make patches for that. It's not just about CEC. It's also used for passing information between the video and audio parts, so tying this into CEC is wrong. -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King - ARM Linux Subject: Re: [PATCH RFC 4/5] drm/bridge: add dw-hdmi cec driver using Hans Verkil's CEC code Date: Tue, 23 Aug 2016 08:59:50 +0100 Message-ID: <20160823075950.GC1041@n2100.armlinux.org.uk> References: <20160812141421.GB1041@n2100.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:3201:214:fdff:fe10:1be6]) by gabe.freedesktop.org (Postfix) with ESMTPS id 014FA6E5A8 for ; Tue, 23 Aug 2016 08:00:15 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, Hans Verkuil , Tomi Valkeinen , Jean-Christophe Plagniol-Villard , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjMsIDIwMTYgYXQgMDk6MjE6MTdBTSArMDIwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IEhpIFJ1c3NlbGwsCj4gCj4gT24gMDgvMTIvMjAxNiAwNDoxNSBQTSwgUnVzc2VsbCBL aW5nIHdyb3RlOgo+ID4gQWRkIGEgQ0VDIGRyaXZlciBmb3IgdGhlIGR3LWhkbWkgaGFyZHdhcmUg dXNpbmcgSGFucyBWZXJraWwncyBDRUMKPiA+IGltcGxlbWVudGF0aW9uLgo+ID4gCj4gPiBTaWdu ZWQtb2ZmLWJ5OiBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPgo+ID4g LS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICAgICAgICAgICAgfCAgIDcg Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsK PiA+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWktY2VjLmMgICAgICB8IDM0NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3 LWhkbWkuYyAgICAgICAgICB8ICA2NCArKysrKy0KPiA+ICBpbmNsdWRlL2xpbnV4L3BsYXRmb3Jt X2RhdGEvZHdfaGRtaS1jZWMuaCB8ICAxNiArKwo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNDIxIGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWktY2VjLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg aW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2R3X2hkbWktY2VjLmgKPiA+IAo+IAo+IDxzbmlw Pgo+IAo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGFyc2VfaGRtaV9hZGRyKGNvbnN0IHN0cnVj dCBlZGlkICplZGlkKQo+ID4gK3sKPiA+ICsJaWYgKCFlZGlkIHx8IGVkaWQtPmV4dGVuc2lvbnMg PT0gMCkKPiA+ICsJCXJldHVybiAodTE2KX4wOwo+ID4gKwo+ID4gKwlyZXR1cm4gY2VjX2dldF9l ZGlkX3BoeXNfYWRkcigodTggKillZGlkLAo+ID4gKwkJCQlFRElEX0xFTkdUSCAqIChlZGlkLT5l eHRlbnNpb25zICsgMSksIE5VTEwpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGR3X2hk bWlfY2VjX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2 ZW50LAo+ID4gKwkJCSAgICAgIHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHdfaGRt aV9jZWMgKmNlYyA9IGNvbnRhaW5lcl9vZihuYiwgc3RydWN0IGR3X2hkbWlfY2VjLCBuYik7Cj4g PiArCXVuaW9uIGhkbWlfZXZlbnQgKmV2ZW50X2Jsb2NrID0gZGF0YTsKPiA+ICsJdW5zaWduZWQg aW50IHBoeXM7Cj4gPiArCj4gPiArCWRldl9pbmZvKGV2ZW50X2Jsb2NrLT5iYXNlLnNvdXJjZSwg ImV2ZW50ICVsdVxuIiwgZXZlbnQpOwo+ID4gKwo+ID4gKwlpZiAoZXZlbnRfYmxvY2stPmJhc2Uu c291cmNlICE9IGNlYy0+YWRhcC0+ZGV2bm9kZS5wYXJlbnQpCj4gPiArCQlyZXR1cm4gTk9USUZZ X09LOwo+ID4gKwo+ID4gKwlzd2l0Y2ggKGV2ZW50KSB7Cj4gPiArCWNhc2UgSERNSV9DT05ORUNU RUQ6Cj4gPiArCQlicmVhazsKPiA+ICsKPiA+ICsJY2FzZSBIRE1JX0RJU0NPTk5FQ1RFRDoKPiA+ ICsJCWNlY19zX3BoeXNfYWRkcihjZWMtPmFkYXAsIENFQ19QSFlTX0FERFJfSU5WQUxJRCwgZmFs c2UpOwo+ID4gKwkJYnJlYWs7Cj4gPiArCj4gPiArCWNhc2UgSERNSV9ORVdfRURJRDoKPiA+ICsJ CXBoeXMgPSBwYXJzZV9oZG1pX2FkZHIoZXZlbnRfYmxvY2stPmVkaWQuZWRpZCk7Cj4gPiArCQlj ZWNfc19waHlzX2FkZHIoY2VjLT5hZGFwLCBwaHlzLCBmYWxzZSk7Cj4gPiArCQlicmVhazsKPiA+ ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gTk9USUZZX09LOwo+ID4gK30KPiAKPiBXb3VsZG4ndCBp dCBtYWtlIGEgbG90IG9mIHNlbnNlIHRvIGludGVncmF0ZSB0aGlzIGludG8gdGhlIGNlYyBmcmFt ZXdvcms/Cj4gCj4gQWxsIHlvdSBuZWVkIGlzIHRvIHBhc3MgYW4gaGRtaV9ub3RpZmllcl9kZXYg YXMgYXJndW1lbnQgdG8gY2VjX2FsbG9jYXRlX2FkYXB0ZXIoKQo+IGFuZCB5b3UgY2FuIGludGVn cmF0ZSB0aGlzLgo+IAo+IElmIHlvdSBhcmUgT0sgd2l0aCB0aGF0LCB0aGVuIEkgY2FuIG1ha2Ug cGF0Y2hlcyBmb3IgdGhhdC4KCkl0J3Mgbm90IGp1c3QgYWJvdXQgQ0VDLiAgSXQncyBhbHNvIHVz ZWQgZm9yIHBhc3NpbmcgaW5mb3JtYXRpb24gYmV0d2Vlbgp0aGUgdmlkZW8gYW5kIGF1ZGlvIHBh cnRzLCBzbyB0eWluZyB0aGlzIGludG8gQ0VDIGlzIHdyb25nLgoKLS0gClJNSydzIFBhdGNoIHN5 c3RlbTogaHR0cDovL3d3dy5hcm1saW51eC5vcmcudWsvZGV2ZWxvcGVyL3BhdGNoZXMvCkZUVEMg YnJvYWRiYW5kIGZvciAwLjhtaWxlIGxpbmU6IGN1cnJlbnRseSBhdCA5LjZNYnBzIGRvd24gNDAw a2JwcyB1cAphY2NvcmRpbmcgdG8gc3BlZWR0ZXN0Lm5ldC4KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==