From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/5] media: cec-notifier: Get notifier by device and connector name Date: Fri, 18 May 2018 11:48:19 -0400 Message-ID: <20180518154819.GL3373@art_vandelay> References: <1526648704-16873-1-git-send-email-narmstrong@baylibre.com> <1526648704-16873-2-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb0-x241.google.com (mail-yb0-x241.google.com [IPv6:2607:f8b0:4002:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C5156E329 for ; Fri, 18 May 2018 15:48:22 +0000 (UTC) Received: by mail-yb0-x241.google.com with SMTP id g140-v6so2843565ybf.6 for ; Fri, 18 May 2018 08:48:21 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1526648704-16873-2-git-send-email-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Neil Armstrong Cc: seanpaul@google.com, fparent@baylibre.com, airlied@linux.ie, sadolfsson@google.com, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, felixe@google.com, hans.verkuil@cisco.com, marcheu@chromium.org, bleung@google.com, darekm@google.com, lee.jones@linaro.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXkgMTgsIDIwMTggYXQgMDM6MDU6MDBQTSArMDIwMCwgTmVpbCBBcm1zdHJvbmcg d3JvdGU6Cj4gSW4gbm9uIGRldmljZS10cmVlIHdvcmxkLCB3ZSBjYW4gbmVlZCB0byBnZXQgdGhl IG5vdGlmaWVyIGJ5IHRoZSBkcml2ZXIKPiBuYW1lIGRpcmVjdGx5IGFuZCBldmVudHVhbGx5IGRl ZmVyIHByb2JlIGlmIG5vdCB5ZXQgY3JlYXRlZC4KPiAKPiBUaGlzIHBhdGNoIGFkZHMgYSB2YXJp YW50IG9mIHRoZSBnZXQgZnVuY3Rpb24gYnkgdXNpbmcgdGhlIGRldmljZSBuYW1lCj4gaW5zdGVh ZCBhbmQgd2lsbCBub3QgY3JlYXRlIGEgbm90aWZpZXIgaWYgbm90IHlldCBjcmVhdGVkLgo+IAo+ IEJ1dCB0aGUgaTkxNSBkcml2ZXIgZXhwb3NlcyBhdCBsZWFzdCAyIEhETUkgY29ubmVjdG9ycywg dGhpcyBwYXRjaCBhbHNvCj4gYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8gYWRkIGEgY29ubmVjdG9y IG5hbWUgdGllZCB0byB0aGUgbm90aWZpZXIgZGV2aWNlCj4gdG8gZm9ybSBhIHR1cGxlIGFuZCBh c3NvY2lhdGUgZGlmZmVyZW50IENFQyBjb250cm9sbGVycyBmb3IgZWFjaCBIRE1JCj4gY29ubmVj dG9ycy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXls aWJyZS5jb20+CgpIaSBOZWlsLApUaGFua3MgZm9yIHBvc3RpbmcgdGhlc2UhCgo+IC0tLQo+ICBk cml2ZXJzL21lZGlhL2NlYy9jZWMtbm90aWZpZXIuYyB8IDExICsrKysrKysrLS0tCj4gIGluY2x1 ZGUvbWVkaWEvY2VjLW5vdGlmaWVyLmggICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysr LS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jZWMvY2VjLW5vdGlmaWVyLmMgYi9kcml2 ZXJzL21lZGlhL2NlYy9jZWMtbm90aWZpZXIuYwo+IGluZGV4IDE2ZGZmYTAuLmRkMjA3OGIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9jZWMvY2VjLW5vdGlmaWVyLmMKPiArKysgYi9kcml2 ZXJzL21lZGlhL2NlYy9jZWMtbm90aWZpZXIuYwo+IEBAIC0yMSw2ICsyMSw3IEBAIHN0cnVjdCBj ZWNfbm90aWZpZXIgewo+ICAJc3RydWN0IGxpc3RfaGVhZCBoZWFkOwo+ICAJc3RydWN0IGtyZWYg a3JlZjsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCWNvbnN0IGNoYXIgKmNvbm47Cj4gIAlz dHJ1Y3QgY2VjX2FkYXB0ZXIgKmNlY19hZGFwOwo+ICAJdm9pZCAoKmNhbGxiYWNrKShzdHJ1Y3Qg Y2VjX2FkYXB0ZXIgKmFkYXAsIHUxNiBwYSk7Cj4gIAo+IEBAIC0zMCwxMyArMzEsMTQgQEAgc3Ry dWN0IGNlY19ub3RpZmllciB7Cj4gIHN0YXRpYyBMSVNUX0hFQUQoY2VjX25vdGlmaWVycyk7Cj4g IHN0YXRpYyBERUZJTkVfTVVURVgoY2VjX25vdGlmaWVyc19sb2NrKTsKPiAgCj4gLXN0cnVjdCBj ZWNfbm90aWZpZXIgKmNlY19ub3RpZmllcl9nZXQoc3RydWN0IGRldmljZSAqZGV2KQo+ICtzdHJ1 Y3QgY2VjX25vdGlmaWVyICpjZWNfbm90aWZpZXJfZ2V0X2Nvbm4oc3RydWN0IGRldmljZSAqZGV2 LCBjb25zdCBjaGFyICpjb25uKQo+ICB7Cj4gIAlzdHJ1Y3QgY2VjX25vdGlmaWVyICpuOwo+ICAK PiAgCW11dGV4X2xvY2soJmNlY19ub3RpZmllcnNfbG9jayk7Cj4gIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG4sICZjZWNfbm90aWZpZXJzLCBoZWFkKSB7Cj4gLQkJaWYgKG4tPmRldiA9PSBkZXYpIHsK PiArCQlpZiAobi0+ZGV2ID09IGRldiAmJgo+ICsJCSAgICAoIWNvbm4gfHwgIXN0cmNtcChuLT5j b25uLCBjb25uKSkpIHsKPiAgCQkJa3JlZl9nZXQoJm4tPmtyZWYpOwo+ICAJCQltdXRleF91bmxv Y2soJmNlY19ub3RpZmllcnNfbG9jayk7Cj4gIAkJCXJldHVybiBuOwo+IEBAIC00Niw2ICs0OCw4 IEBAIHN0cnVjdCBjZWNfbm90aWZpZXIgKmNlY19ub3RpZmllcl9nZXQoc3RydWN0IGRldmljZSAq ZGV2KQo+ICAJaWYgKCFuKQo+ICAJCWdvdG8gdW5sb2NrOwo+ICAJbi0+ZGV2ID0gZGV2Owo+ICsJ aWYgKGNvbm4pCj4gKwkJbi0+Y29ubiA9IGtzdHJkdXAoY29ubiwgR0ZQX0tFUk5FTCk7Cj4gIAlu LT5waHlzX2FkZHIgPSBDRUNfUEhZU19BRERSX0lOVkFMSUQ7Cj4gIAltdXRleF9pbml0KCZuLT5s b2NrKTsKPiAgCWtyZWZfaW5pdCgmbi0+a3JlZik7Cj4gQEAgLTU0LDcgKzU4LDcgQEAgc3RydWN0 IGNlY19ub3RpZmllciAqY2VjX25vdGlmaWVyX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAlt dXRleF91bmxvY2soJmNlY19ub3RpZmllcnNfbG9jayk7Cj4gIAlyZXR1cm4gbjsKPiAgfQo+IC1F WFBPUlRfU1lNQk9MX0dQTChjZWNfbm90aWZpZXJfZ2V0KTsKPiArRVhQT1JUX1NZTUJPTF9HUEwo Y2VjX25vdGlmaWVyX2dldF9jb25uKTsKPiAgCj4gIHN0YXRpYyB2b2lkIGNlY19ub3RpZmllcl9y ZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ICB7Cj4gQEAgLTYyLDYgKzY2LDcgQEAgc3RhdGlj IHZvaWQgY2VjX25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCj4gIAkJY29udGFp bmVyX29mKGtyZWYsIHN0cnVjdCBjZWNfbm90aWZpZXIsIGtyZWYpOwo+ICAKPiAgCWxpc3RfZGVs KCZuLT5oZWFkKTsKPiArCWtmcmVlKG4tPmNvbm4pOwo+ICAJa2ZyZWUobik7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvY2VjLW5vdGlmaWVyLmggYi9pbmNsdWRlL21lZGlh L2NlYy1ub3RpZmllci5oCj4gaW5kZXggY2YwYWRkNy4uODE0ZWVlZiAxMDA2NDQKPiAtLS0gYS9p bmNsdWRlL21lZGlhL2NlYy1ub3RpZmllci5oCj4gKysrIGIvaW5jbHVkZS9tZWRpYS9jZWMtbm90 aWZpZXIuaAo+IEBAIC0yMCw4ICsyMCwxMCBAQCBzdHJ1Y3QgY2VjX25vdGlmaWVyOwo+ICAjaWYg SVNfUkVBQ0hBQkxFKENPTkZJR19DRUNfQ09SRSkgJiYgSVNfRU5BQkxFRChDT05GSUdfQ0VDX05P VElGSUVSKQo+ICAKPiAgLyoqCj4gLSAqIGNlY19ub3RpZmllcl9nZXQgLSBmaW5kIG9yIGNyZWF0 ZSBhIG5ldyBjZWNfbm90aWZpZXIgZm9yIHRoZSBnaXZlbiBkZXZpY2UuCj4gKyAqIGNlY19ub3Rp Zmllcl9nZXRfY29ubiAtIGZpbmQgb3IgY3JlYXRlIGEgbmV3IGNlY19ub3RpZmllciBmb3IgdGhl IGdpdmVuCj4gKyAqIGRldmljZSBhbmQgY29ubmVjdG9yIHR1cGxlLgo+ICAgKiBAZGV2OiBkZXZp Y2UgdGhhdCBzZW5kcyB0aGUgZXZlbnRzLgo+ICsgKiBAY29ubjogdGhlIGNvbm5lY3RvciBuYW1l IGZyb20gd2hpY2ggdGhlIGV2ZW50IG9jY3VycwoKUHJvYmFibHkgYmVzdCB0byB1c2UgIm5hbWUi IGluc3RlYWQgb2YgY29ubmVjdG9yLCBzaW5jZSBpdCBkb2Vzbid0IG5lY2Vzc2FyaWx5Cl9oYXZl XyB0byBiZSBhIGNvbm5lY3RvciBuYW1lLiBTbywgY2VjX25vdGlmaWVyX2dldF9ieV9uYW1lKGRl diwgbmFtZSkKCj4gICAqCj4gICAqIElmIGEgbm90aWZpZXIgZm9yIGRldmljZSBAZGV2IGFscmVh ZHkgZXhpc3RzLCB0aGVuIGluY3JlYXNlIHRoZSByZWZjb3VudAo+ICAgKiBhbmQgcmV0dXJuIHRo YXQgbm90aWZpZXIuCj4gQEAgLTMxLDcgKzMzLDggQEAgc3RydWN0IGNlY19ub3RpZmllcjsKPiAg ICoKPiAgICogUmV0dXJuIE5VTEwgaWYgdGhlIG1lbW9yeSBjb3VsZCBub3QgYmUgYWxsb2NhdGVk Lgo+ICAgKi8KPiAtc3RydWN0IGNlY19ub3RpZmllciAqY2VjX25vdGlmaWVyX2dldChzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwo+ICtzdHJ1Y3QgY2VjX25vdGlmaWVyICpjZWNfbm90aWZpZXJfZ2V0X2Nv bm4oc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbm4pOwo+ICAK PiAgLyoqCj4gICAqIGNlY19ub3RpZmllcl9wdXQgLSBkZWNyZWFzZSByZWZjb3VudCBhbmQgZGVs ZXRlIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgMC4KPiBAQCAtODUsNyArODgsOCBAQCB2b2lk IGNlY19yZWdpc3Rlcl9jZWNfbm90aWZpZXIoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLAo+ICAJ CQkgICAgICAgc3RydWN0IGNlY19ub3RpZmllciAqbm90aWZpZXIpOwo+ICAKPiAgI2Vsc2UKPiAt c3RhdGljIGlubGluZSBzdHJ1Y3QgY2VjX25vdGlmaWVyICpjZWNfbm90aWZpZXJfZ2V0KHN0cnVj dCBkZXZpY2UgKmRldikKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY2VjX25vdGlmaWVyICpjZWNf bm90aWZpZXJfZ2V0X2Nvbm4oc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJCQkJIGNvbnN0IGNo YXIgKmNvbm4pCj4gIHsKPiAgCS8qIEEgbm9uLU5VTEwgcG9pbnRlciBpcyBleHBlY3RlZCBvbiBz dWNjZXNzICovCj4gIAlyZXR1cm4gKHN0cnVjdCBjZWNfbm90aWZpZXIgKikweGRlYWRmZWVkOwo+ IEBAIC0xMjEsNiArMTI1LDIzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjZWNfcmVnaXN0ZXJfY2Vj X25vdGlmaWVyKHN0cnVjdCBjZWNfYWRhcHRlciAqYWRhcCwKPiAgI2VuZGlmCj4gIAo+ICAvKioK PiArICogY2VjX25vdGlmaWVyX2dldCAtIGZpbmQgb3IgY3JlYXRlIGEgbmV3IGNlY19ub3RpZmll ciBmb3IgdGhlIGdpdmVuIGRldmljZS4KPiArICogQGRldjogZGV2aWNlIHRoYXQgc2VuZHMgdGhl IGV2ZW50cy4KPiArICoKPiArICogSWYgYSBub3RpZmllciBmb3IgZGV2aWNlIEBkZXYgYWxyZWFk eSBleGlzdHMsIHRoZW4gaW5jcmVhc2UgdGhlIHJlZmNvdW50Cj4gKyAqIGFuZCByZXR1cm4gdGhh dCBub3RpZmllci4KPiArICoKPiArICogSWYgaXQgZG9lc24ndCBleGlzdCwgdGhlbiBhbGxvY2F0 ZSBhIG5ldyBub3RpZmllciBzdHJ1Y3QgYW5kIHJldHVybiBhCj4gKyAqIHBvaW50ZXIgdG8gdGhh dCBuZXcgc3RydWN0LgoKWW91IG1pZ2h0IGFsc28gd2FudCB0byBjb3ZlciB0aGUgY2FzZSB3aGVy ZSB5b3UgaGF2ZSBtdWx0aXBsZSBuYW1lZCBub3RpZmllcnMKZm9yIHRoZSBzYW1lIGRldmljZS4g SXQgbG9va3MgbGlrZSBpdCBqdXN0IGdyYWJzIHRoZSBmaXJzdCBvbmU/CgpTZWFuCgo+ICsgKgo+ ICsgKiBSZXR1cm4gTlVMTCBpZiB0aGUgbWVtb3J5IGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBjZWNfbm90aWZpZXIgKmNlY19ub3RpZmllcl9n ZXQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlyZXR1cm4gY2VjX25vdGlmaWVyX2dldF9j b25uKGRldiwgTlVMTCk7Cj4gK30KPiArCj4gKy8qKgo+ICAgKiBjZWNfbm90aWZpZXJfcGh5c19h ZGRyX2ludmFsaWRhdGUoKSAtIHNldCB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0byBJTlZBTElECj4g ICAqCj4gICAqIEBuOiB0aGUgQ0VDIG5vdGlmaWVyCj4gLS0gCj4gMi43LjQKPiAKCi0tIApTZWFu IFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-yb0-f193.google.com ([209.85.213.193]:40074 "EHLO mail-yb0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750957AbeERPsV (ORCPT ); Fri, 18 May 2018 11:48:21 -0400 Received: by mail-yb0-f193.google.com with SMTP id o80-v6so2844000ybc.7 for ; Fri, 18 May 2018 08:48:21 -0700 (PDT) Date: Fri, 18 May 2018 11:48:19 -0400 From: Sean Paul To: Neil Armstrong Cc: airlied@linux.ie, hans.verkuil@cisco.com, lee.jones@linaro.org, olof@lixom.net, seanpaul@google.com, sadolfsson@google.com, felixe@google.com, bleung@google.com, darekm@google.com, marcheu@chromium.org, fparent@baylibre.com, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/5] media: cec-notifier: Get notifier by device and connector name Message-ID: <20180518154819.GL3373@art_vandelay> References: <1526648704-16873-1-git-send-email-narmstrong@baylibre.com> <1526648704-16873-2-git-send-email-narmstrong@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1526648704-16873-2-git-send-email-narmstrong@baylibre.com> Sender: linux-media-owner@vger.kernel.org List-ID: On Fri, May 18, 2018 at 03:05:00PM +0200, Neil Armstrong wrote: > In non device-tree world, we can need to get the notifier by the driver > name directly and eventually defer probe if not yet created. > > This patch adds a variant of the get function by using the device name > instead and will not create a notifier if not yet created. > > But the i915 driver exposes at least 2 HDMI connectors, this patch also > adds the possibility to add a connector name tied to the notifier device > to form a tuple and associate different CEC controllers for each HDMI > connectors. > > Signed-off-by: Neil Armstrong Hi Neil, Thanks for posting these! > --- > drivers/media/cec/cec-notifier.c | 11 ++++++++--- > include/media/cec-notifier.h | 27 ++++++++++++++++++++++++--- > 2 files changed, 32 insertions(+), 6 deletions(-) > > diff --git a/drivers/media/cec/cec-notifier.c b/drivers/media/cec/cec-notifier.c > index 16dffa0..dd2078b 100644 > --- a/drivers/media/cec/cec-notifier.c > +++ b/drivers/media/cec/cec-notifier.c > @@ -21,6 +21,7 @@ struct cec_notifier { > struct list_head head; > struct kref kref; > struct device *dev; > + const char *conn; > struct cec_adapter *cec_adap; > void (*callback)(struct cec_adapter *adap, u16 pa); > > @@ -30,13 +31,14 @@ struct cec_notifier { > static LIST_HEAD(cec_notifiers); > static DEFINE_MUTEX(cec_notifiers_lock); > > -struct cec_notifier *cec_notifier_get(struct device *dev) > +struct cec_notifier *cec_notifier_get_conn(struct device *dev, const char *conn) > { > struct cec_notifier *n; > > mutex_lock(&cec_notifiers_lock); > list_for_each_entry(n, &cec_notifiers, head) { > - if (n->dev == dev) { > + if (n->dev == dev && > + (!conn || !strcmp(n->conn, conn))) { > kref_get(&n->kref); > mutex_unlock(&cec_notifiers_lock); > return n; > @@ -46,6 +48,8 @@ struct cec_notifier *cec_notifier_get(struct device *dev) > if (!n) > goto unlock; > n->dev = dev; > + if (conn) > + n->conn = kstrdup(conn, GFP_KERNEL); > n->phys_addr = CEC_PHYS_ADDR_INVALID; > mutex_init(&n->lock); > kref_init(&n->kref); > @@ -54,7 +58,7 @@ struct cec_notifier *cec_notifier_get(struct device *dev) > mutex_unlock(&cec_notifiers_lock); > return n; > } > -EXPORT_SYMBOL_GPL(cec_notifier_get); > +EXPORT_SYMBOL_GPL(cec_notifier_get_conn); > > static void cec_notifier_release(struct kref *kref) > { > @@ -62,6 +66,7 @@ static void cec_notifier_release(struct kref *kref) > container_of(kref, struct cec_notifier, kref); > > list_del(&n->head); > + kfree(n->conn); > kfree(n); > } > > diff --git a/include/media/cec-notifier.h b/include/media/cec-notifier.h > index cf0add7..814eeef 100644 > --- a/include/media/cec-notifier.h > +++ b/include/media/cec-notifier.h > @@ -20,8 +20,10 @@ struct cec_notifier; > #if IS_REACHABLE(CONFIG_CEC_CORE) && IS_ENABLED(CONFIG_CEC_NOTIFIER) > > /** > - * cec_notifier_get - find or create a new cec_notifier for the given device. > + * cec_notifier_get_conn - find or create a new cec_notifier for the given > + * device and connector tuple. > * @dev: device that sends the events. > + * @conn: the connector name from which the event occurs Probably best to use "name" instead of connector, since it doesn't necessarily _have_ to be a connector name. So, cec_notifier_get_by_name(dev, name) > * > * If a notifier for device @dev already exists, then increase the refcount > * and return that notifier. > @@ -31,7 +33,8 @@ struct cec_notifier; > * > * Return NULL if the memory could not be allocated. > */ > -struct cec_notifier *cec_notifier_get(struct device *dev); > +struct cec_notifier *cec_notifier_get_conn(struct device *dev, > + const char *conn); > > /** > * cec_notifier_put - decrease refcount and delete when the refcount reaches 0. > @@ -85,7 +88,8 @@ void cec_register_cec_notifier(struct cec_adapter *adap, > struct cec_notifier *notifier); > > #else > -static inline struct cec_notifier *cec_notifier_get(struct device *dev) > +static inline struct cec_notifier *cec_notifier_get_conn(struct device *dev, > + const char *conn) > { > /* A non-NULL pointer is expected on success */ > return (struct cec_notifier *)0xdeadfeed; > @@ -121,6 +125,23 @@ static inline void cec_register_cec_notifier(struct cec_adapter *adap, > #endif > > /** > + * cec_notifier_get - find or create a new cec_notifier for the given device. > + * @dev: device that sends the events. > + * > + * If a notifier for device @dev already exists, then increase the refcount > + * and return that notifier. > + * > + * If it doesn't exist, then allocate a new notifier struct and return a > + * pointer to that new struct. You might also want to cover the case where you have multiple named notifiers for the same device. It looks like it just grabs the first one? Sean > + * > + * Return NULL if the memory could not be allocated. > + */ > +static inline struct cec_notifier *cec_notifier_get(struct device *dev) > +{ > + return cec_notifier_get_conn(dev, NULL); > +} > + > +/** > * cec_notifier_phys_addr_invalidate() - set the physical address to INVALID > * > * @n: the CEC notifier > -- > 2.7.4 > -- Sean Paul, Software Engineer, Google / Chromium OS