From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kishon Vijay Abraham I Subject: Re: [PATCH v9 0/8] Generic PHY Framework Date: Thu, 4 Jul 2013 10:47:53 +0530 Message-ID: <51D50581.1000800@ti.com> References: <1372247257-30186-1-git-send-email-kishon@ti.com> <780E789C2E067A4BB8F69D0BB9EC4F253E975B5E@DBDE04.ent.ti.com> <51D3F773.9000209@ti.com> <20130703132038.GI15056@arwen.pp.htv.fi> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20130703132038.GI15056-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: "devicetree-discuss" To: balbi-l0cyMroinI0@public.gmane.org Cc: "mchehab-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org" , "linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "Patel, Satish" , "Nori, Sekhar" , "swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org" , "grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org" , "cesarb-PWySMVKUnqmsTnJN9+BGXg@public.gmane.org" , "Cherian, George" , "devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org" , "rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org" , "linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org" , "sylvester.nawrocki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" , "Krishnamoorthy, Balaji T" , "gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org" , "linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" List-Id: linux-omap@vger.kernel.org SGksCgpPbiBXZWRuZXNkYXkgMDMgSnVseSAyMDEzIDA2OjUwIFBNLCBGZWxpcGUgQmFsYmkgd3Jv dGU6Cj4gSGksCj4KPiBPbiBXZWQsIEp1bCAwMywgMjAxMyBhdCAwMzozNTozOVBNICswNTMwLCBL aXNob24gVmlqYXkgQWJyYWhhbSBJIHdyb3RlOgo+PiBPbiBXZWRuZXNkYXkgMDMgSnVseSAyMDEz IDAzOjAyIFBNLCBQYXRlbCwgU2F0aXNoIHdyb3RlOgo+Pj4gSGkgS2lzaG9uLAo+Pj4KPj4+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4+IEZyb206IEFCUkFIQU0sIEtJU0hPTiBWSUpB WQo+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgSnVuZSAyNiwgMjAxMyA1OjE3IFBNCj4+Pj4gVG86IGdy YW50Lmxpa2VseUBsaW5hcm8ub3JnOyB0b255QGF0b21pZGUuY29tOyBCYWxiaSwgRmVsaXBlOyBB QlJBSEFNLAo+Pj4+IEtJU0hPTiBWSUpBWTsgYXJuZEBhcm5kYi5kZTsgc3dhcnJlbkBudmlkaWEu Y29tOwo+Pj4+IHN5bHZlc3Rlci5uYXdyb2NraUBnbWFpbC5jb207IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LQo+Pj4+IG9tYXBAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LQo+Pj4+IHVzYkB2Z2VyLmtlcm5lbC5v cmc7IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBha3BtQGxpbnV4LQo+Pj4+IGZvdW5kYXRp b24ub3JnCj4+Pj4gQ2M6IHJvYi5oZXJyaW5nQGNhbHhlZGEuY29tOyByb2JAbGFuZGxleS5uZXQ7 IGxpbnV4QGFybS5saW51eC5vcmcudWs7Cj4+Pj4gYmVub2l0LmNvdXNzb25AbGluYXJvLm9yZzsg bWNoZWhhYkByZWRoYXQuY29tOyBjZXNhcmJAY2VzYXJiLm5ldDsKPj4+PiBkYXZlbUBkYXZlbWxv ZnQubmV0OyBOYXlhaywgUmFqZW5kcmE7IHNoYXduLmd1b0BsaW5hcm8ub3JnOyBTaGlsaW1rYXIs Cj4+Pj4gU2FudG9zaDsgZGV2aWNldHJlZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmc7IGxpbnV4 LQo+Pj4+IGRvY0B2Z2VyLmtlcm5lbC5vcmc7IE5vcmksIFNla2hhcjsgS3Jpc2huYW1vb3J0aHks IEJhbGFqaSBUOyBDaGVyaWFuLAo+Pj4+IEdlb3JnZQo+Pj4+IFN1YmplY3Q6IFtQQVRDSCB2OSAw LzhdIEdlbmVyaWMgUEhZIEZyYW1ld29yawo+Pj4+Cj4+Pj4gQWRkZWQgYSBnZW5lcmljIFBIWSBm cmFtZXdvcmsgdGhhdCBwcm92aWRlcyBhIHNldCBvZiBBUElzIGZvciB0aGUgUEhZCj4+Pj4gZHJp dmVycwo+Pj4+IHRvIGNyZWF0ZS9kZXN0cm95IGEgUEhZIGFuZCBBUElzIGZvciB0aGUgUEhZIHVz ZXJzIHRvIG9idGFpbiBhCj4+Pj4gcmVmZXJlbmNlIHRvCj4+Pj4gdGhlIFBIWSB3aXRoIG9yIHdp dGhvdXQgdXNpbmcgcGhhbmRsZS4KPj4+Pgo+Pj4+IFRoaXMgZnJhbWV3b3JrIHdpbGwgYmUgb2Yg dXNlIG9ubHkgdG8gZGV2aWNlcyB0aGF0IHVzZXMgZXh0ZXJuYWwgUEhZCj4+Pj4gKFBIWQo+Pj4+ IGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVtYmVkZGVkIHdpdGhpbiB0aGUgY29udHJvbGxlcikuCj4+ Pj4KPj4+PiBUaGUgaW50ZW50aW9uIG9mIGNyZWF0aW5nIHRoaXMgZnJhbWV3b3JrIGlzIHRvIGJy aW5nIHRoZSBwaHkgZHJpdmVycwo+Pj4+IHNwcmVhZAo+Pj4+IGFsbCBvdmVyIHRoZSBMaW51eCBr ZXJuZWwgdG8gZHJpdmVycy9waHkgdG8gaW5jcmVhc2UgY29kZSByZS11c2UgYW5kCj4+Pj4gdG8K Pj4+PiBpbmNyZWFzZSBjb2RlIG1haW50YWluYWJpbGl0eS4KPj4+Cj4+PiBJIHdvdWxkIGxpa2Ug dG8gdXNlIHRoaXMgZnJhbWV3b3JrIGZvciBhIHNtYXJ0LWNhcmQgY29udHJvbGxlciBjb25uZWN0 ZWQgdG8gYQo+Pj4gc21hcnQtY2FyZCBwaHkuIEkgaGF2ZSBzb21lIHF1ZXN0aW9ucyBhbmQgd291 bGQgbGlrZSB0byBnZXQgZmVlZGJhY2sgb24gdGhlIHNhbWUuCj4+Cj4+IGdsYWQgdG8ga25vdyB0 aGF0IDotKQo+Pj4KPj4+IEkgYW0gdXNpbmcg4oCcVERBODAyNiIgU21hcnRjYXJkIFBIWSBmcm9t IE5YUC4gSGVyZSBpcyB0aGUgbGluayBmb3IgZGF0YXNoZWV0Cj4+PiBhbmQgYXBwIG5vdGUgZm9y IHRoZSBzYW1lLiBUaGUgc21hcnQgY2FyZCBjb250cm9sbGVyIGlzIGluc2lkZSB0aGUgVEkgU29D Cj4+PiBJIGFtIHdvcmtpbmcgd2l0aC4KPj4+Cj4+PiBEYXRhc2hlZXQgOgo+Pj4gd3d3Lm54cC5j b20vZG9jdW1lbnRzL2RhdGFfc2hlZXQvVERBODAyNi5wZGY/Cj4+Pgo+Pj4gQXBwbm90ZSA6Cj4+ PiBodHRwOi8vd3d3Lm54cC5jb20vZG9jdW1lbnRzL2FwcGxpY2F0aW9uX25vdGUvQU4xMDcyNC5w ZGYKPj4+Cj4+PiBUaGUgVEkgU29DIGRldGFpbHMgYXJlIG5vdCBwdWJsaWMgKHlldCkuIEkgY2Fu IHByb3ZpZGUgZGV0YWlscyB0byB5b3Ugb2ZmbGluZS4KPj4+Cj4+PiBCcmllZiBhYm91dCBvcGVy YXRpb246Cj4+PiAtCVRoZSBjb250cm9sbGVyIGNhbiB3b3JrIHdpdGggYW5kIHdpdGhvdXQgYSBQ SFkKPj4+IC0JV2hlbiBub3QgdXNpbmcgUEhZLCBpdCBpcyBsaW1pdGVkIHRvIHRhbGtpbmcgdG8g YSBzaW5nbGUKPj4+IAlzbWFydCBjYXJkLiBUaGVyZSBpcyBhbHNvIGEgbmVlZCB0byBwdXQgZXh0 ZXJuYWwgZGUtYWN0aXZhdGlvbiBsb2dpYwo+Pj4gCW9uIGNhcmQgcmVtb3ZhbCBmb3IgdGhpcyBj YXNlLgo+Pj4gLQlXaXRoIGEgUEhZIHlvdSBjYW4gdXNlIG1vcmUgdGhhbiBvbmUgc21hcnQgY2Fy ZC4KPj4+IC0JUGh5IGhhcyA1IHNsb3RzIDogIDEgZm9yIHNtYXJ0IGNhcmQgKGNyZWRpdC9kZWJp dC9vdGhlciBjYXJkIHdpdGggY2hpcCkKPj4+ICAgICAgICBhbmQgb3RoZXJzIGZvciBTQU0g4oCT IFNJTSBsaWtlIG1vZHVsZXMKPj4+IC0gCU9uY2UgdGhlIFBIWSBpcyBpbml0aWFsaXplZCwgdGhl cmUgYXJlIHNvbWUgb3BlcmF0aW9ucyB0aGF0IHRoZSBjb250cm9sbGVyCj4+PiAJY2FuIHJlcXVl c3Qgb2YgdGhlIFBIWSBsaWtlOgo+Pj4gCS0gQ2FyZCBjb25maWd1cmF0aW9ucyAgLSBzZXQgdm9s dGFnZQo+Pj4gCS0gQWN0aXZhdGlvbiBvZiBjYXJkCj4+PiAJLSBBVFIg4oCTIEFuc3dlciB0byBy ZXNldAo+Pj4gCS0gV2FybSByZXNldAo+Pj4gCS0gQURQVSBleGNoYW5nZQo+Pj4gCS0gRGVhY3Rp dmF0aW9uICggTm9ybWFsL0VtZXJnZW5jeSkKPj4KPj4gaG1tLi4gV2Ugc2hvdWxkIHRoaW5rIGFi b3V0IGV4dGVuZGluZyB0aGUgcGh5X29wcyB0byBpbmNsdWRlIHRoZXNlCj4+IG9wZXJhdGlvbnMg KHNvbWV0aGluZyBsaWtlIHBoeV9zbWFydF9jYXJkX29wcyBzbyB0aGF0IG90aGVyCj4+IHNtYXJ0 X2NhcmQgUEhZcyB3aWxsIGFsc28gYmUgYWJsZSB0byB1c2UgaXQpLgo+Cj4gbGV0J3MgdHJ5IHRv IGF2b2lkIHVzZS1jYXNlIHNwZWNpZmljIGFkZGl0aW9ucy4gc2V0X3ZvbHRhZ2Ugc291bmRzIGxp a2UKPiBhIHJlZ3VsYXRvciB0aGluZywgYnV0IHRoZSByZWd1bGF0b3IgaXMgY29udHJvbGxlZCB0 aHJvdWdoIHRoZSBQSFkuIEkKPiBndWVzcyBpdCBtYWtlcyBzZW5zZSB0byBoYXZlIGEgZ2VuZXJp YyBwaHlfc2V0X3ZvbHRhZ2UoKSBjYWxsIHNpbmNlIGV2ZW4KPiBVU0IgY2FuIG1ha2UgdXNlIG9m IHRoYXQuCj4KPiBGb3IgY2FyZCBhY3RpdmF0aW9uLCBpdCBzb3VuZHMgbGlrZSBwaHlfaW5pdCgp L3BoeV9zaHV0ZG93bigpIHdvdWxkCj4gY292ZXIgaXQuCj4KPiBGb3Igd2FybSByZXNldCBwZXJo YXBzIGEgcGh5X3Jlc2V0KCkgY2FsbGJhY2sgPyBBbHRob3VnaCB0aGF0IGNvdWxkLAo+IGVhc2ls eSwgZ2V0IGFidXNlZC4KPgo+IEZvciBkZWFjdGl2YXRpb24sIHRoYXQncyBwaHlfc2h1dGRvd24o KS4KPgo+IEFUUiBhbmQgQURQVSBuZWVkcyBtb3JlIHRob3VnaHQsIEkgZ3Vlc3MuCj4KPj4+IC0g CUluIHRoZSBtb2RlIHdoZW4gc21hcnRjYXJkIGNvbnRyb2xsZXIgdGFsa3MgZGlyZWN0bHkgdG8g dGhlIGNhcmQgd2l0aG91dCB0aGUgbmVlZAo+Pj4gCWZvciBhIFBIWSwgYWxsIHRoZSBhYm92ZSBv cGVyYXRpb25zIHdpbGwgYmUgY2FycmllZCBvdXQgYnkgdGhlIGNvbnRyb2xsZXIgaXRzZWxmCj4+ Pgo+Pj4gTXkgY3VycmVudCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gbWFrZSB0aGUgY29udHJvbGxl ciBkcml2ZXIgcHJvdmlkZSB0aGUgdXNlciBpbnRlcmZhY2UKPj4+IGFuZCB0YWxrIHRvIHRoZSBQ SFkgdXNpbmcgdGhlIGdlbmVyaWMgUEhZIGZyYW1ld29yayB5b3UgcHJvcG9zZWQuIEluIHRoZSBj YXNlIHdoZXJlIHRoZXJlCj4+PiBpcyBubyBQSFksIG15IGlkZWEgaXMgdG8gY3JlYXRlIGEgImR1 bW15IiBQSFkgd2hpY2ggdXNlcyB0aGUgY29udHJvbGxlciBmdW5jdGlvbmFsaXR5IGl0c2VsZi4K Pj4KPj4gcmlnaHQuIEFuZCBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgYWN0dWFsbHkgaGF2ZSBhIFBI WSwgY3JlYXRlIGEgUEhZCj4+IGRyaXZlciBhbmQgaW1wbGVtZW50IHRoZSBwaHlfc21hcnRfY2Fy ZF9vcHMgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBIWQo+PiBmcmFtZXdvcmsuCj4KPiBJIHdvdWxk IHRyeSB0byBhdm9pZCB0aGF0LiBPdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHBoeV91c2Jfb3BzLAo+ IHBoeV9zYXRhX29wcywgcGh5X25ldHdvcmtfb3BzLCBwaHlfcGNpX29wcywgZXRjIGV0YyBldGMu IEl0IHdvdWxkIGVhc2lseQo+IGJsb3cgdXAuCgp0cnVlLiBCdXQgaXQncyBjZXJ0YWlubHkgZ29p bmcgdG8gYmUgZGlmZmljdWx0IHRvIG1hcCBjZXJ0YWluIGZ1bmN0aW9uCnNwZWNpZmljIG9wcyB0 byB0aGUgZ2VuZXJpYyBvcHMgKGp1c3QgbGlrZSBBVFIgYW5kIEFEUFUgaW4gc21hcnQgY2FyZApj YXNlIG9yIHNldCBwaXhlbCBmb3IgaGRtaSkuCgpUaGFua3MKS2lzaG9uCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldmljZXRyZWUtZGlzY3VzcyBtYWls aW5nIGxpc3QKZGV2aWNldHJlZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0 cy5vemxhYnMub3JnL2xpc3RpbmZvL2RldmljZXRyZWUtZGlzY3Vzcwo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: kishon@ti.com (Kishon Vijay Abraham I) Date: Thu, 4 Jul 2013 10:47:53 +0530 Subject: [PATCH v9 0/8] Generic PHY Framework In-Reply-To: <20130703132038.GI15056@arwen.pp.htv.fi> References: <1372247257-30186-1-git-send-email-kishon@ti.com> <780E789C2E067A4BB8F69D0BB9EC4F253E975B5E@DBDE04.ent.ti.com> <51D3F773.9000209@ti.com> <20130703132038.GI15056@arwen.pp.htv.fi> Message-ID: <51D50581.1000800@ti.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi, On Wednesday 03 July 2013 06:50 PM, Felipe Balbi wrote: > Hi, > > On Wed, Jul 03, 2013 at 03:35:39PM +0530, Kishon Vijay Abraham I wrote: >> On Wednesday 03 July 2013 03:02 PM, Patel, Satish wrote: >>> Hi Kishon, >>> >>>> -----Original Message----- >>>> From: ABRAHAM, KISHON VIJAY >>>> Sent: Wednesday, June 26, 2013 5:17 PM >>>> To: grant.likely at linaro.org; tony at atomide.com; Balbi, Felipe; ABRAHAM, >>>> KISHON VIJAY; arnd at arndb.de; swarren at nvidia.com; >>>> sylvester.nawrocki at gmail.com; linux-kernel at vger.kernel.org; linux- >>>> omap at vger.kernel.org; linux-arm-kernel at lists.infradead.org; linux- >>>> usb at vger.kernel.org; gregkh at linuxfoundation.org; akpm at linux- >>>> foundation.org >>>> Cc: rob.herring at calxeda.com; rob at landley.net; linux at arm.linux.org.uk; >>>> benoit.cousson at linaro.org; mchehab at redhat.com; cesarb at cesarb.net; >>>> davem at davemloft.net; Nayak, Rajendra; shawn.guo at linaro.org; Shilimkar, >>>> Santosh; devicetree-discuss at lists.ozlabs.org; linux- >>>> doc at vger.kernel.org; Nori, Sekhar; Krishnamoorthy, Balaji T; Cherian, >>>> George >>>> Subject: [PATCH v9 0/8] Generic PHY Framework >>>> >>>> Added a generic PHY framework that provides a set of APIs for the PHY >>>> drivers >>>> to create/destroy a PHY and APIs for the PHY users to obtain a >>>> reference to >>>> the PHY with or without using phandle. >>>> >>>> This framework will be of use only to devices that uses external PHY >>>> (PHY >>>> functionality is not embedded within the controller). >>>> >>>> The intention of creating this framework is to bring the phy drivers >>>> spread >>>> all over the Linux kernel to drivers/phy to increase code re-use and >>>> to >>>> increase code maintainability. >>> >>> I would like to use this framework for a smart-card controller connected to a >>> smart-card phy. I have some questions and would like to get feedback on the same. >> >> glad to know that :-) >>> >>> I am using ?TDA8026" Smartcard PHY from NXP. Here is the link for datasheet >>> and app note for the same. The smart card controller is inside the TI SoC >>> I am working with. >>> >>> Datasheet : >>> www.nxp.com/documents/data_sheet/TDA8026.pdf? >>> >>> Appnote : >>> http://www.nxp.com/documents/application_note/AN10724.pdf >>> >>> The TI SoC details are not public (yet). I can provide details to you offline. >>> >>> Brief about operation: >>> - The controller can work with and without a PHY >>> - When not using PHY, it is limited to talking to a single >>> smart card. There is also a need to put external de-activation logic >>> on card removal for this case. >>> - With a PHY you can use more than one smart card. >>> - Phy has 5 slots : 1 for smart card (credit/debit/other card with chip) >>> and others for SAM ? SIM like modules >>> - Once the PHY is initialized, there are some operations that the controller >>> can request of the PHY like: >>> - Card configurations - set voltage >>> - Activation of card >>> - ATR ? Answer to reset >>> - Warm reset >>> - ADPU exchange >>> - Deactivation ( Normal/Emergency) >> >> hmm.. We should think about extending the phy_ops to include these >> operations (something like phy_smart_card_ops so that other >> smart_card PHYs will also be able to use it). > > let's try to avoid use-case specific additions. set_voltage sounds like > a regulator thing, but the regulator is controlled through the PHY. I > guess it makes sense to have a generic phy_set_voltage() call since even > USB can make use of that. > > For card activation, it sounds like phy_init()/phy_shutdown() would > cover it. > > For warm reset perhaps a phy_reset() callback ? Although that could, > easily, get abused. > > For deactivation, that's phy_shutdown(). > > ATR and ADPU needs more thought, I guess. > >>> - In the mode when smartcard controller talks directly to the card without the need >>> for a PHY, all the above operations will be carried out by the controller itself >>> >>> My current thought process is to make the controller driver provide the user interface >>> and talk to the PHY using the generic PHY framework you proposed. In the case where there >>> is no PHY, my idea is to create a "dummy" PHY which uses the controller functionality itself. >> >> right. And in the case where you actually have a PHY, create a PHY >> driver and implement the phy_smart_card_ops and register with the PHY >> framework. > > I would try to avoid that. Otherwise we will have phy_usb_ops, > phy_sata_ops, phy_network_ops, phy_pci_ops, etc etc etc. It would easily > blow up. true. But it's certainly going to be difficult to map certain function specific ops to the generic ops (just like ATR and ADPU in smart card case or set pixel for hdmi). Thanks Kishon