From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v6,01/12] drivers: base: Unified device connection lookup From: Greg Kroah-Hartman Message-Id: <20180309175347.GA12150@kroah.com> Date: Fri, 9 Mar 2018 09:53:47 -0800 To: Hans de Goede Cc: Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Heikki Krogerus , Guenter Roeck , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: T24gRnJpLCBNYXIgMDIsIDIwMTggYXQgMTE6MjA6NDZBTSArMDEwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBGcm9tOiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRl bC5jb20+Cj4gCj4gU2V2ZXJhbCBmcmFtZXdvcmtzIC0gY2xrLCBncGlvLCBwaHksIHBtdywgZXRj LiAtIG1haW50YWluCj4gbG9va3VwIHRhYmxlcyBmb3IgZGVzY3JpYmluZyBjb25uZWN0aW9ucyBh bmQgcHJvdmlkZSBjdXN0b20KPiBBUEkgZm9yIGhhbmRsaW5nIHRoZW0uIFRoaXMgaW50cm9kdWNl cyBhIHNpbmdsZSBnZW5lcmljCj4gbG9va3VwIHRhYmxlIGFuZCBBUEkgZm9yIHRoZSBjb25uZWN0 aW9ucy4KPiAKPiBUaGUgbW90aXZhdGlvbiBmb3IgdGhpcyBjb21taXQgaXMgY2VudHJhbGl6aW5n IHRoZQo+IGNvbm5lY3Rpb24gbG9va3VwLCBidXQgdGhlIGdvYWwgaXMgdG8gdWx0aW1hdGVseSBl eHRyYWN0IHRoZQo+IGNvbm5lY3Rpb24gZGVzY3JpcHRpb25zIGFsc28gZnJvbSBmaXJtd2FyZSBi eSB1c2luZyB0aGUKPiBmd25vZGVfZ3JhcGhfKiBmdW5jdGlvbnMgYW5kIG90aGVyIG1lY2hhbmlz bXMgdGhhdCBhcmUKPiBhdmFpbGFibGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogSGVpa2tpIEtyb2dl cnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBIYW5z IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgo+IFJldmlld2VkLWJ5OiBBbmR5IFNoZXZj aGVua28gPGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSGFucyBk ZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KClNvcnJ5IGZvciB0aGUgZGVsYXksIGp1c3Qg bm93IHJldmlld2luZyB0aGlzIHBhdGNoLi4uCgpUaGUgY29udGVudCBpcyBmaW5lIChpZiBub3Qg c2NhcnkgZm9yIHRoZSBvYnZpb3VzIHJlYXNvbiBvZiBwYXNzaW5nCmFyb3VuZCAnc3RydWN0IGRl dmljZScgb2YgZGlmZmVyZW50IGJ1cyB0eXBlcywgYnV0IG9rLi4uKSwgYnV0IHRoZSBhcGkKbmFt aW5nIGlzICJyb3VnaCI6Cgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2xpbnV4L2Nv bm5lY3Rpb24uaAoKImNvbm5lY3Rpb24uaCIgaXMgdmFndWUsIHdoeSBub3QganVzdCBwdXQgdGhp cyBpbiBkZXZpY2UuaD8KCj4gQEAgLTAsMCArMSwzNCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAo+ICsKPiArI2lmbmRlZiBfTElOVVhfQ09OTkVDVElPTl9IXwo+ICsj ZGVmaW5lIF9MSU5VWF9DT05ORUNUSU9OX0hfCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5o Pgo+ICsKPiArc3RydWN0IGRldmljZTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgZGV2Y29uIC0g RGV2aWNlIENvbm5lY3Rpb24gRGVzY3JpcHRvcgo+ICsgKiBAZW5kcG9pbnQ6IFRoZSBuYW1lcyBv ZiB0aGUgdHdvIGRldmljZXMgY29ubmVjdGVkIHRvZ2V0aGVyCj4gKyAqIEBpZDogVW5pcXVlIGlk ZW50aWZpZXIgZm9yIHRoZSBjb25uZWN0aW9uCj4gKyAqIEBsaXN0OiBMaXN0IGhlYWQsIHByaXZh dGUgZm9yIGRldmNvbiBpbnRlcm5hbCB1c2Ugb25seQo+ICsgKi8KPiArc3RydWN0IGRldmNvbiB7 Cgonc3RydWN0IGRldmljZV9jb25uZWN0aW9uJz8gIFNwZWxsIGl0IG91dCBwbGVhc2UsIHBlb3Bs ZSBtaWdodCB0aGluawp0aGlzIGlzIGEgImRldmVsb3BlciBjb25mZXJlbmNlIiA6KQoKPiArCWNv bnN0IGNoYXIJCSplbmRwb2ludFsyXTsKPiArCWNvbnN0IGNoYXIJCSppZDsKPiArCXN0cnVjdCBs aXN0X2hlYWQJbGlzdDsKPiArfTsKPiArCj4gK3ZvaWQgKl9fZGV2aWNlX2ZpbmRfY29ubmVjdGlv bihzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmNvbl9pZCwKPiArCQkJICAgICAgIHZv aWQgKmRhdGEsCj4gKwkJCSAgICAgICB2b2lkICooKm1hdGNoKShzdHJ1Y3QgZGV2Y29uICpjb24s IGludCBlcCwKPiArCQkJCQkgICAgICB2b2lkICpkYXRhKSk7CgpJY2ssIF9fKiBmdW5jdGlvbnMg YXJlIHVzdWFsbHkgIm5vIGxvY2sgbmVlZGVkIiwgYnV0IGhlcmUgeW91IGFyZSBkb2luZwphIGxv dCAibW9yZSIgdGhhbiB0aGUgbm9ybWFsIGRldmljZV9maW5kX2Nvbm5lY3Rpb24oKSBjYWxsLiAg V2h5IG5vdAptYWtlIHRoaXM6CglkZXZpY2VfY29ubmVjdGlvbl9maW5kX21hdGNoKCk/Cgo+ICsK PiArc3RydWN0IGRldmljZSAqZGV2aWNlX2ZpbmRfY29ubmVjdGlvbihzdHJ1Y3QgZGV2aWNlICpk ZXYsIGNvbnN0IGNoYXIgKmNvbl9pZCk7CgpkZXZpY2VfY29ubmVjdGlvbl9maW5kKCk/Cgo+ICsK PiArI2RlZmluZSBERVZDT04oX2VwMCwgX2VwMSwgX2lkKSAgICAoc3RydWN0IGRldmNvbikgeyB7 IF9lcDAsIF9lcDEgfSwgX2lkLCB9CgpDYW4geW91IHVzZSBuYW1lZCBpZGVudGlmaWVycyBoZXJl PwoKPiArCj4gK3ZvaWQgYWRkX2RldmljZV9jb25uZWN0aW9uKHN0cnVjdCBkZXZjb24gKmNvbik7 Cj4gK3ZvaWQgcmVtb3ZlX2RldmljZV9jb25uZWN0aW9uKHN0cnVjdCBkZXZjb24gKmNvbik7Cgpk ZXZpY2VfY29ubmVjdGlvbl9hZGQoKSBhbmQgZGV2aWNlX2Nvbm5lY3Rpb25fcmVtb3ZlKCk/CgpJ IGNhbiBtYWtlIHRoZSBhcGkgbmFtZSBjaGFuZ2VzIGluIGFuIGFkZC1vbiBwYXRjaC4KCnRoYW5r cywKCmdyZWcgay1oCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUg bGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8v dmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: Re: [PATCH v6 01/12] drivers: base: Unified device connection lookup Date: Fri, 9 Mar 2018 09:53:47 -0800 Message-ID: <20180309175347.GA12150@kroah.com> References: <20180302102057.8917-1-hdegoede@redhat.com> <20180302102057.8917-2-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20180302102057.8917-2-hdegoede@redhat.com> Sender: linux-kernel-owner@vger.kernel.org To: Hans de Goede Cc: Darren Hart , Andy Shevchenko , MyungJoo Ham , Chanwoo Choi , Mathias Nyman , Heikki Krogerus , Guenter Roeck , platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-Id: platform-driver-x86.vger.kernel.org On Fri, Mar 02, 2018 at 11:20:46AM +0100, Hans de Goede wrote: > From: Heikki Krogerus > > Several frameworks - clk, gpio, phy, pmw, etc. - maintain > lookup tables for describing connections and provide custom > API for handling them. This introduces a single generic > lookup table and API for the connections. > > The motivation for this commit is centralizing the > connection lookup, but the goal is to ultimately extract the > connection descriptions also from firmware by using the > fwnode_graph_* functions and other mechanisms that are > available. > > Signed-off-by: Heikki Krogerus > Reviewed-by: Hans de Goede > Reviewed-by: Andy Shevchenko > Signed-off-by: Hans de Goede Sorry for the delay, just now reviewing this patch... The content is fine (if not scary for the obvious reason of passing around 'struct device' of different bus types, but ok...), but the api naming is "rough": > --- /dev/null > +++ b/include/linux/connection.h "connection.h" is vague, why not just put this in device.h? > @@ -0,0 +1,34 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#ifndef _LINUX_CONNECTION_H_ > +#define _LINUX_CONNECTION_H_ > + > +#include > + > +struct device; > + > +/** > + * struct devcon - Device Connection Descriptor > + * @endpoint: The names of the two devices connected together > + * @id: Unique identifier for the connection > + * @list: List head, private for devcon internal use only > + */ > +struct devcon { 'struct device_connection'? Spell it out please, people might think this is a "developer conference" :) > + const char *endpoint[2]; > + const char *id; > + struct list_head list; > +}; > + > +void *__device_find_connection(struct device *dev, const char *con_id, > + void *data, > + void *(*match)(struct devcon *con, int ep, > + void *data)); Ick, __* functions are usually "no lock needed", but here you are doing a lot "more" than the normal device_find_connection() call. Why not make this: device_connection_find_match()? > + > +struct device *device_find_connection(struct device *dev, const char *con_id); device_connection_find()? > + > +#define DEVCON(_ep0, _ep1, _id) (struct devcon) { { _ep0, _ep1 }, _id, } Can you use named identifiers here? > + > +void add_device_connection(struct devcon *con); > +void remove_device_connection(struct devcon *con); device_connection_add() and device_connection_remove()? I can make the api name changes in an add-on patch. thanks, greg k-h