From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 1/3 v2] drm/i2c/adv7511: Add audio support Date: Tue, 29 Mar 2016 22:33:19 +0530 Message-ID: <56FAB557.3060900@codeaurora.org> References: <15b1936d307912ba12df7fa09ec3a7a80ac5fcef.1459174494.git.joabreu@synopsys.com> <56FA3745.3000807@codeaurora.org> <56FA5E57.2000506@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56FA5E57.2000506@synopsys.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu , linux-snps-arc@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org, devicetree@vger.kernel.org Cc: tixy@linaro.org, mark.rutland@arm.com, laurent.pinchart+renesas@ideasonboard.com, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, Vineet.Gupta1@synopsys.com, Alexey.Brodkin@synopsys.com, lgirdwood@gmail.com, robh+dt@kernel.org, nariman@opensource.wolfsonmicro.com, yitian.bu@tangramtek.com, wsa+renesas@sang-engineering.com, broonie@kernel.org, Maruthi.Bayyavarapu@amd.com, galak@codeaurora.org, buyitian@gmail.com, alexander.deucher@amd.com, tiwai@suse.com, perex@perex.cz, CARLOS.PALMINHA@synopsys.com List-Id: alsa-devel@alsa-project.org CgpPbiAzLzI5LzIwMTYgNDoyMiBQTSwgSm9zZSBBYnJldSB3cm90ZToKPiBIaSBBcmNoaXQsCj4K PiBPbiAyOS0wMy0yMDE2IDA5OjA1LCBBcmNoaXQgVGFuZWphIHdyb3RlOgo+PiBIaSwKPj4KPj4g T24gMDMvMjgvMjAxNiAwODowNiBQTSwgSm9zZSBBYnJldSB3cm90ZToKPj4+IFRoaXMgcGF0Y2gg YWRkcyBhdWRpbyBzdXBwb3J0IGZvciB0aGUgQURWNzUxMSBIRE1JIHRyYW5zbWl0dGVyCj4+PiB1 c2luZyBBTFNBIFNvQy4KPj4+Cj4+PiBUaGUgY29kZSB3YXMgcG9ydGVkIGZyb20gQW5hbG9nIERl dmljZXMgbGludXggdHJlZSBmcm9tCj4+PiBjb21taXQgMTc3MGM0YTFlMzJiICgiTWVyZ2UgcmVt b3RlLXRyYWNraW5nIGJyYW5jaAo+Pj4gJ3hpbGlueC9tYXN0ZXInIGludG8geGNvbW1fenlucSIp LCB3aGljaCBpcyBhdmFpbGFibGUgYXQ6Cj4+PiAgICAgIC0gaHR0cHM6Ly9naXRodWIuY29tL2Fu YWxvZ2RldmljZXNpbmMvbGludXgvCj4+Pgo+Pj4gVGhlIG1haW4gY29yZSBmaWxlIHdhcyByZW5h bWVkIGZyb20gYWR2NzUxMS5jIHRvIGFkdjc1MTFfY29yZS5jCj4+PiBzbyB0aGF0IGF1ZGlvIGFu ZCB2aWRlbyBjb21waWxlIGludG8gYSBzaW5nbGUgYWR2NzUxMS5rbyBtb2R1bGUKPj4+IGFuZCB0 byBrZWVwIHVwIHdpdGggQW5hbG9nIERldmljZXMga2VybmVsIHRyZWUuCj4+Pgo+Pj4gVGhlIGF1 ZGlvIGNhbiBiZSBkaXNhYmxlZCB1c2luZyBtZW51LWNvbmZpZyBzbyBpdCBpcyBwb3NzaWJsZQo+ Pj4gdG8gdXNlIG9ubHkgdmlkZW8gbW9kZS4KPj4+Cj4+PiBUaGUgSERNSSBtb2RlIGlzIGF1dG9t YXRpY2FsbHkgc3RhcnRlZCBhdCBib290IGFuZCB0aGUgYXVkaW8KPj4+ICh3aGVuIGVuYWJsZWQp IHJlZ2lzdGVycyBhcyBhIGNvZGVjIGludG8gQUxTQS4KPj4KPj4gSXMgdGhlcmUgYSByZWFzb24g d2h5IHdlIHNldCB0aGUgbW9kZSB0byBIRE1JIGF0IHByb2JlIGl0c2VsZj8KPj4gU2hvdWxkbid0 IGl0IGJlIG9rYXkgdG8gc2V0IHRoZSBtb2RlIGxhdGVyIG9uY2Ugd2UgcmVhZCB0aGUKPj4gRURJ RCBvZmYgdGhlIHBhbmVsPwo+Pgo+PiBTb21lIG1vcmUgY29tbWVudHMgYmVsb3cuCj4+Cj4KPiBX ZWxsLCB3aGVuIEkgd2FzIHVzaW5nIHRoaXMgaW4ga2VybmVsIDMuMTggKHdpdGggYW4gb2xkZXIg dmVyc2lvbiBvZiB0aGUgZHJpdmVyKQo+IEkgbm90aWNlZCB0aGF0IERWSSBtb2RlIHdhcyBiZWlu ZyB1c2VkIGV2ZW4gd2hlbiBIRE1JIHdhcyBjb25uZWN0ZWQgc28gSSBmb3JjZWQKPiB0aGUgZHJp dmVyIHRvIHN0YXJ0IGluIEhETUkgbW9kZS4gVGhlcmUgd2VyZSBzb21lIGNoYW5nZXMgaW4gdGhl IGRyaXZlciBzbyBpdCBpcwo+IHBvc3NpYmxlIHRoYXQgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVk LiBTaG91bGQgSSBkcm9wIGl0PwoKTW9kZSBzZWxlY3Rpb24gd29ya3MgZmluZSB3aXRoIEFEVjc1 MzMgb24gYSA0LjUga2VybmVsLiBJJ20gYXNzdW1pbmcgaXQKc2hvdWxkIHdvcmsgb3V0IG9mIHRo ZSBib3ggZm9yIEFEVjc1MTEgdG9vLiBXZSBzaG91bGQgZHJvcCB0aGlzLgoKCj4KPj4+Cj4+PiBT UERJRiBEQUkgZm9ybWF0IHdhcyBhbHNvIGFkZGVkIHRvIEFTb0MgYXMgaXQgaXMgcmVxdWlyZWQK Pj4+IGJ5IGFkdjc1MTEgYXVkaW8uCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogSm9zZSBBYnJldSA8 am9hYnJldUBzeW5vcHN5cy5jb20+Cj4+PiAtLS0KPj4+Cj4+PiBObyBjaGFuZ2VzIHYxIC0+IHYy Lgo+Pj4KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pMmMvS2NvbmZpZyAgICAgICAgIHwgICAxMSAr Cj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTJjL01ha2VmaWxlICAgICAgICB8ICAgIDIgKwo+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3NTExLmMgICAgICAgfCAxMDI0IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1 MTEuaCAgICAgICB8ICAgNDEgKysKPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pMmMvYWR2NzUxMV9h dWRpby5jIHwgIDMxMCArKysrKysrKysrKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3 NTExX2NvcmUuYyAgfCAxMDA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ ICAgIGluY2x1ZGUvc291bmQvc29jLWRhaS5oICAgICAgICAgICAgIHwgICAgMSArCj4+PiAgICA3 IGZpbGVzIGNoYW5nZWQsIDEzNzAgaW5zZXJ0aW9ucygrKSwgMTAyNCBkZWxldGlvbnMoLSkKPj4+ ICAgIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTJjL2Fkdjc1MTEuYwo+Pj4g ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pMmMvYWR2NzUxMV9hdWRpby5j Cj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2kyYy9hZHY3NTExX2Nv cmUuYwo+Pgo+PiA8c25pcD4KPj4KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUo c3RydWN0IGkyY19jbGllbnQgKmkyYywgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQKPj4+ICpp ZCkKPj4+ICt7Cj4+PiArICAgIHN0cnVjdCBhZHY3NTExX2xpbmtfY29uZmlnIGxpbmtfY29uZmln Owo+Pj4gKyAgICBzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMTsKPj4+ICsgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gJmkyYy0+ZGV2Owo+Pj4gKyAgICB1bnNpZ25lZCBpbnQgdmFsOwo+Pj4gKyAgICBp bnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICBpZiAoIWRldi0+b2Zfbm9kZSkKPj4+ICsgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICBhZHY3NTExID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCphZHY3NTExKSwgR0ZQX0tFUk5FTCk7Cj4+PiArICAgIGlmICghYWR2NzUxMSkKPj4+ ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pj4gKwo+Pj4gKyAgICBhZHY3NTExLT5wb3dlcmVk ID0gZmFsc2U7Cj4+PiArICAgIGFkdjc1MTEtPnN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlz Y29ubmVjdGVkOwo+Pj4gKwo+Pj4gKyAgICByZXQgPSBhZHY3NTExX3BhcnNlX2R0KGRldi0+b2Zf bm9kZSwgJmxpbmtfY29uZmlnKTsKPj4+ICsgICAgaWYgKHJldCkKPj4+ICsgICAgICAgIHJldHVy biByZXQ7Cj4+PiArCj4+PiArICAgIC8qCj4+PiArICAgICAqIFRoZSBwb3dlciBkb3duIEdQSU8g aXMgb3B0aW9uYWwuIElmIHByZXNlbnQsIHRvZ2dsZSBpdCBmcm9tIGFjdGl2ZSB0bwo+Pj4gKyAg ICAgKiBpbmFjdGl2ZSB0byB3YWtlIHVwIHRoZSBlbmNvZGVyLgo+Pj4gKyAgICAgKi8KPj4+ICsg ICAgYWR2NzUxMS0+Z3Bpb19wZCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgInBkIiwg R1BJT0RfT1VUX0hJR0gpOwo+Pj4gKyAgICBpZiAoSVNfRVJSKGFkdjc1MTEtPmdwaW9fcGQpKQo+ Pj4gKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoYWR2NzUxMS0+Z3Bpb19wZCk7Cj4+PiArCj4+PiAr ICAgIGlmIChhZHY3NTExLT5ncGlvX3BkKSB7Cj4+PiArICAgICAgICBtZGVsYXkoNSk7Cj4+PiAr ICAgICAgICBncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoYWR2NzUxMS0+Z3Bpb19wZCwgMCk7Cj4+ PiArICAgIH0KPj4+ICsKPj4+ICsgICAgYWR2NzUxMS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5p dF9pMmMoaTJjLCAmYWR2NzUxMV9yZWdtYXBfY29uZmlnKTsKPj4+ICsgICAgaWYgKElTX0VSUihh ZHY3NTExLT5yZWdtYXApKQo+Pj4gKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoYWR2NzUxMS0+cmVn bWFwKTsKPj4+ICsKPj4+ICsgICAgcmV0ID0gcmVnbWFwX3JlYWQoYWR2NzUxMS0+cmVnbWFwLCBB RFY3NTExX1JFR19DSElQX1JFVklTSU9OLCAmdmFsKTsKPj4+ICsgICAgaWYgKHJldCkKPj4+ICsg ICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgIGRldl9kYmcoZGV2LCAiUmV2LiAlZFxuIiwgdmFs KTsKPj4+ICsKPj4+ICsgICAgcmV0ID0gcmVnbWFwX3JlZ2lzdGVyX3BhdGNoKGFkdjc1MTEtPnJl Z21hcCwgYWR2NzUxMV9maXhlZF9yZWdpc3RlcnMsCj4+PiArICAgICAgICAgICAgICAgICAgICBB UlJBWV9TSVpFKGFkdjc1MTFfZml4ZWRfcmVnaXN0ZXJzKSk7Cj4+PiArICAgIGlmIChyZXQpCj4+ PiArICAgICAgICByZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gKyAgICByZWdtYXBfd3JpdGUoYWR2NzUx MS0+cmVnbWFwLCBBRFY3NTExX1JFR19FRElEX0kyQ19BRERSLCBlZGlkX2kyY19hZGRyKTsKPj4+ ICsgICAgcmVnbWFwX3dyaXRlKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfUEFDS0VUX0ky Q19BRERSLAo+Pj4gKyAgICAgICAgICAgICBwYWNrZXRfaTJjX2FkZHIpOwo+Pj4gKyAgICByZWdt YXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JFR19DRUNfSTJDX0FERFIsIGNlY19p MmNfYWRkcik7Cj4+PiArICAgIGFkdjc1MTFfcGFja2V0X2Rpc2FibGUoYWR2NzUxMSwgMHhmZmZm KTsKPj4+ICsKPj4+ICsgICAgYWR2NzUxMS0+aTJjX21haW4gPSBpMmM7Cj4+PiArICAgIGFkdjc1 MTEtPmkyY19lZGlkID0gaTJjX25ld19kdW1teShpMmMtPmFkYXB0ZXIsIGVkaWRfaTJjX2FkZHIg Pj4gMSk7Cj4+PiArICAgIGlmICghYWR2NzUxMS0+aTJjX2VkaWQpCj4+PiArICAgICAgICByZXR1 cm4gLUVOT01FTTsKPj4+ICsKPj4+ICsgICAgaWYgKGkyYy0+aXJxKSB7Cj4+PiArICAgICAgICBp bml0X3dhaXRxdWV1ZV9oZWFkKCZhZHY3NTExLT53cSk7Cj4+PiArCj4+PiArICAgICAgICByZXQg PSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgaTJjLT5pcnEsIE5VTEwsCj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgYWR2NzUxMV9pcnFfaGFuZGxlciwKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICBJUlFGX09ORVNIT1QsIGRldl9uYW1lKGRldiksCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgYWR2NzUxMSk7Cj4+PiArICAgICAgICBpZiAocmV0KQo+Pj4gKyAgICAg ICAgICAgIGdvdG8gZXJyX2kyY191bnJlZ2lzdGVyX2RldmljZTsKPj4+ICsgICAgfQo+Pj4gKwo+ Pj4gKyAgICAvKiBDRUMgaXMgdW51c2VkIGZvciBub3cgKi8KPj4+ICsgICAgcmVnbWFwX3dyaXRl KGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfQ0VDX0NUUkwsCj4+PiArICAgICAgICAgICAg IEFEVjc1MTFfQ0VDX0NUUkxfUE9XRVJfRE9XTik7Cj4+PiArCj4+PiArICAgIGFkdjc1MTFfcG93 ZXJfb2ZmKGFkdjc1MTEpOwo+Pj4gKwo+Pj4gKyAgICBpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBh ZHY3NTExKTsKPj4+ICsKPj4+ICsjaWZkZWYgQ09ORklHX0RSTV9JMkNfQURWNzUxMV9BVURJTwo+ Pj4gKyAgICBhZHY3NTExX2F1ZGlvX2luaXQoJmkyYy0+ZGV2KTsKPj4+ICsjZW5kaWYKPj4KPj4g SWYgd2UgaW50ZW5kIHRvIGhhdmUgbW9yZSBhdWRpbyBmdW5jcyBiZWluZyB1c2VkIGJ5IHRoZSBj b3JlIGluIHRoZQo+PiBmdXR1cmUsIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBOT1AgYXVkaW8g ZnVuY3MgcmF0aGVyIHRoYW4gaGF2aW5nCj4+IG11bHRpcGxlICNpZmRlZiBjaGVja3MgaW4gdGhl IGRyaXZlciB3aGVuIENPTkZJR19EUk1fSTJDX0FEVjc1MTFfQVVESU8KPj4gaXNuJ3Qgc2V0Lgo+ Pgo+Cj4gSSB3aWxsIG1vdmUgdGhpcyBpZmRlZiB0byBhZHY3NTFfYXVkaW8gYW5kIHVzZSBOT1Ag ZnVuY3Rpb25zLgoKVGhhbmtzLCBJIHRoaW5rIGl0IHNob3VsZCBoZWxwIGluIHRoZSBsb25nZXIg cnVuLgoKPgo+Pj4gKwo+Pj4gKyAgICBhZHY3NTExX3NldF9saW5rX2NvbmZpZyhhZHY3NTExLCAm bGlua19jb25maWcpOwo+Pj4gKwo+Pj4gKyAgICAvKiBFbmFibGUgSERNSSBtb2RlICovCj4+PiAr ICAgIHJlZ21hcF91cGRhdGVfYml0cyhhZHY3NTExLT5yZWdtYXAsIEFEVjc1MTFfUkVHX0hEQ1Bf SERNSV9DRkcsCj4+PiArICAgICAgICAgICAgQURWNzUxMV9IRE1JX0NGR19NT0RFX01BU0ssCj4+ PiArICAgICAgICAgICAgQURWNzUxMV9IRE1JX0NGR19NT0RFX0hETUkpOwo+Pj4gKwo+Pj4gKyAg ICByZXR1cm4gMDsKPj4+ICsKPj4+ICtlcnJfaTJjX3VucmVnaXN0ZXJfZGV2aWNlOgo+Pj4gKyAg ICBpMmNfdW5yZWdpc3Rlcl9kZXZpY2UoYWR2NzUxMS0+aTJjX2VkaWQpOwo+Pj4gKwo+Pj4gKyAg ICByZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGFkdjc1MTFfcmVtb3Zl KHN0cnVjdCBpMmNfY2xpZW50ICppMmMpCj4+PiArewo+Pj4gKyAgICBzdHJ1Y3QgYWR2NzUxMSAq YWR2NzUxMSA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOwo+Pj4gKwo+Pgo+PiBBcmUgd2UgbWlz c2luZyBhIGNhbGwgdG8gYWR2NzUxMV9hdWRpb19leGl0KCkgaGVyZT8KPgo+IEkgZm9sbG93ZWQg dGhlIGNvZGUgaW4gQW5hbG9nIERldmljZXMgdHJlZSB3aGVyZSB0aGVyZSBpcyBubyBjYWxsIHRv Cj4gYXVkaW9fZXhpdCgpIGJ1dCBpbmRlZWQgeW91IGFyZSBjb3JyZWN0LiBJIHdpbGwgYWRkIHRo aXMgY2FsbC4KPgoKU2luY2Ugd2UgaGF2ZSAzIGZpbGVzIGZvciBhZHY3NTExIG5vdywgY291bGQg d2UgYWxzbyBtb3ZlIHRoZSBkcml2ZXIKdG8gYSBzZXBhcmF0ZSBmb2xkZXI/IFRoZSBsb25nIHRl cm0gcGxhbiBpcyB0byBjb252ZXJ0IGFsbCB0aGUgaTJjCnNsYXZlIGVuY29kZXIgZHJpdmVycyB0 byBicmlkZ2VzLiBLZWVwaW5nIHRoZW0gdG9nZXRoZXIgd291bGQgYmUgbmljZXIKd2hlbiB3ZSBt aWdyYXRlIHRoaXMgZHJpdmVyIHRvIHRoZSBicmlkZ2UgZm9sZGVyLgoKVGhhbmtzLApBcmNoaXQK Ci0tIApRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiBDb2Rl IEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: architt@codeaurora.org (Archit Taneja) Date: Tue, 29 Mar 2016 22:33:19 +0530 Subject: [PATCH 1/3 v2] drm/i2c/adv7511: Add audio support In-Reply-To: <56FA5E57.2000506@synopsys.com> References: <15b1936d307912ba12df7fa09ec3a7a80ac5fcef.1459174494.git.joabreu@synopsys.com> <56FA3745.3000807@codeaurora.org> <56FA5E57.2000506@synopsys.com> List-ID: Message-ID: <56FAB557.3060900@codeaurora.org> To: linux-snps-arc@lists.infradead.org On 3/29/2016 4:22 PM, Jose Abreu wrote: > Hi Archit, > > On 29-03-2016 09:05, Archit Taneja wrote: >> Hi, >> >> On 03/28/2016 08:06 PM, Jose Abreu wrote: >>> This patch adds audio support for the ADV7511 HDMI transmitter >>> using ALSA SoC. >>> >>> The code was ported from Analog Devices linux tree from >>> commit 1770c4a1e32b ("Merge remote-tracking branch >>> 'xilinx/master' into xcomm_zynq"), which is available at: >>> - https://github.com/analogdevicesinc/linux/ >>> >>> The main core file was renamed from adv7511.c to adv7511_core.c >>> so that audio and video compile into a single adv7511.ko module >>> and to keep up with Analog Devices kernel tree. >>> >>> The audio can be disabled using menu-config so it is possible >>> to use only video mode. >>> >>> The HDMI mode is automatically started at boot and the audio >>> (when enabled) registers as a codec into ALSA. >> >> Is there a reason why we set the mode to HDMI at probe itself? >> Shouldn't it be okay to set the mode later once we read the >> EDID off the panel? >> >> Some more comments below. >> > > Well, when I was using this in kernel 3.18 (with an older version of the driver) > I noticed that DVI mode was being used even when HDMI was connected so I forced > the driver to start in HDMI mode. There were some changes in the driver so it is > possible that this is no longer needed. Should I drop it? Mode selection works fine with ADV7533 on a 4.5 kernel. I'm assuming it should work out of the box for ADV7511 too. We should drop this. > >>> >>> SPDIF DAI format was also added to ASoC as it is required >>> by adv7511 audio. >>> >>> Signed-off-by: Jose Abreu >>> --- >>> >>> No changes v1 -> v2. >>> >>> drivers/gpu/drm/i2c/Kconfig | 11 + >>> drivers/gpu/drm/i2c/Makefile | 2 + >>> drivers/gpu/drm/i2c/adv7511.c | 1024 ----------------------------------- >>> drivers/gpu/drm/i2c/adv7511.h | 41 ++ >>> drivers/gpu/drm/i2c/adv7511_audio.c | 310 +++++++++++ >>> drivers/gpu/drm/i2c/adv7511_core.c | 1005 ++++++++++++++++++++++++++++++++++ >>> include/sound/soc-dai.h | 1 + >>> 7 files changed, 1370 insertions(+), 1024 deletions(-) >>> delete mode 100644 drivers/gpu/drm/i2c/adv7511.c >>> create mode 100644 drivers/gpu/drm/i2c/adv7511_audio.c >>> create mode 100644 drivers/gpu/drm/i2c/adv7511_core.c >> >> >> >>> + >>> +static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id >>> *id) >>> +{ >>> + struct adv7511_link_config link_config; >>> + struct adv7511 *adv7511; >>> + struct device *dev = &i2c->dev; >>> + unsigned int val; >>> + int ret; >>> + >>> + if (!dev->of_node) >>> + return -EINVAL; >>> + >>> + adv7511 = devm_kzalloc(dev, sizeof(*adv7511), GFP_KERNEL); >>> + if (!adv7511) >>> + return -ENOMEM; >>> + >>> + adv7511->powered = false; >>> + adv7511->status = connector_status_disconnected; >>> + >>> + ret = adv7511_parse_dt(dev->of_node, &link_config); >>> + if (ret) >>> + return ret; >>> + >>> + /* >>> + * The power down GPIO is optional. If present, toggle it from active to >>> + * inactive to wake up the encoder. >>> + */ >>> + adv7511->gpio_pd = devm_gpiod_get_optional(dev, "pd", GPIOD_OUT_HIGH); >>> + if (IS_ERR(adv7511->gpio_pd)) >>> + return PTR_ERR(adv7511->gpio_pd); >>> + >>> + if (adv7511->gpio_pd) { >>> + mdelay(5); >>> + gpiod_set_value_cansleep(adv7511->gpio_pd, 0); >>> + } >>> + >>> + adv7511->regmap = devm_regmap_init_i2c(i2c, &adv7511_regmap_config); >>> + if (IS_ERR(adv7511->regmap)) >>> + return PTR_ERR(adv7511->regmap); >>> + >>> + ret = regmap_read(adv7511->regmap, ADV7511_REG_CHIP_REVISION, &val); >>> + if (ret) >>> + return ret; >>> + dev_dbg(dev, "Rev. %d\n", val); >>> + >>> + ret = regmap_register_patch(adv7511->regmap, adv7511_fixed_registers, >>> + ARRAY_SIZE(adv7511_fixed_registers)); >>> + if (ret) >>> + return ret; >>> + >>> + regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, edid_i2c_addr); >>> + regmap_write(adv7511->regmap, ADV7511_REG_PACKET_I2C_ADDR, >>> + packet_i2c_addr); >>> + regmap_write(adv7511->regmap, ADV7511_REG_CEC_I2C_ADDR, cec_i2c_addr); >>> + adv7511_packet_disable(adv7511, 0xffff); >>> + >>> + adv7511->i2c_main = i2c; >>> + adv7511->i2c_edid = i2c_new_dummy(i2c->adapter, edid_i2c_addr >> 1); >>> + if (!adv7511->i2c_edid) >>> + return -ENOMEM; >>> + >>> + if (i2c->irq) { >>> + init_waitqueue_head(&adv7511->wq); >>> + >>> + ret = devm_request_threaded_irq(dev, i2c->irq, NULL, >>> + adv7511_irq_handler, >>> + IRQF_ONESHOT, dev_name(dev), >>> + adv7511); >>> + if (ret) >>> + goto err_i2c_unregister_device; >>> + } >>> + >>> + /* CEC is unused for now */ >>> + regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL, >>> + ADV7511_CEC_CTRL_POWER_DOWN); >>> + >>> + adv7511_power_off(adv7511); >>> + >>> + i2c_set_clientdata(i2c, adv7511); >>> + >>> +#ifdef CONFIG_DRM_I2C_ADV7511_AUDIO >>> + adv7511_audio_init(&i2c->dev); >>> +#endif >> >> If we intend to have more audio funcs being used by the core in the >> future, it would be nice to have NOP audio funcs rather than having >> multiple #ifdef checks in the driver when CONFIG_DRM_I2C_ADV7511_AUDIO >> isn't set. >> > > I will move this ifdef to adv751_audio and use NOP functions. Thanks, I think it should help in the longer run. > >>> + >>> + adv7511_set_link_config(adv7511, &link_config); >>> + >>> + /* Enable HDMI mode */ >>> + regmap_update_bits(adv7511->regmap, ADV7511_REG_HDCP_HDMI_CFG, >>> + ADV7511_HDMI_CFG_MODE_MASK, >>> + ADV7511_HDMI_CFG_MODE_HDMI); >>> + >>> + return 0; >>> + >>> +err_i2c_unregister_device: >>> + i2c_unregister_device(adv7511->i2c_edid); >>> + >>> + return ret; >>> +} >>> + >>> +static int adv7511_remove(struct i2c_client *i2c) >>> +{ >>> + struct adv7511 *adv7511 = i2c_get_clientdata(i2c); >>> + >> >> Are we missing a call to adv7511_audio_exit() here? > > I followed the code in Analog Devices tree where there is no call to > audio_exit() but indeed you are correct. I will add this call. > Since we have 3 files for adv7511 now, could we also move the driver to a separate folder? The long term plan is to convert all the i2c slave encoder drivers to bridges. Keeping them together would be nicer when we migrate this driver to the bridge folder. Thanks, Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757761AbcC2RDq (ORCPT ); Tue, 29 Mar 2016 13:03:46 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:49690 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751831AbcC2RDo (ORCPT ); Tue, 29 Mar 2016 13:03:44 -0400 Subject: Re: [PATCH 1/3 v2] drm/i2c/adv7511: Add audio support To: Jose Abreu , linux-snps-arc@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org, devicetree@vger.kernel.org References: <15b1936d307912ba12df7fa09ec3a7a80ac5fcef.1459174494.git.joabreu@synopsys.com> <56FA3745.3000807@codeaurora.org> <56FA5E57.2000506@synopsys.com> Cc: tixy@linaro.org, mark.rutland@arm.com, broonie@kernel.org, Alexey.Brodkin@synopsys.com, lgirdwood@gmail.com, yitian.bu@tangramtek.com, wsa+renesas@sang-engineering.com, laurent.pinchart+renesas@ideasonboard.com, nariman@opensource.wolfsonmicro.com, Maruthi.Bayyavarapu@amd.com, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, Vineet.Gupta1@synopsys.com, buyitian@gmail.com, perex@perex.cz, tiwai@suse.com, robh+dt@kernel.org, galak@codeaurora.org, alexander.deucher@amd.com, CARLOS.PALMINHA@synopsys.com From: Archit Taneja Message-ID: <56FAB557.3060900@codeaurora.org> Date: Tue, 29 Mar 2016 22:33:19 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <56FA5E57.2000506@synopsys.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/29/2016 4:22 PM, Jose Abreu wrote: > Hi Archit, > > On 29-03-2016 09:05, Archit Taneja wrote: >> Hi, >> >> On 03/28/2016 08:06 PM, Jose Abreu wrote: >>> This patch adds audio support for the ADV7511 HDMI transmitter >>> using ALSA SoC. >>> >>> The code was ported from Analog Devices linux tree from >>> commit 1770c4a1e32b ("Merge remote-tracking branch >>> 'xilinx/master' into xcomm_zynq"), which is available at: >>> - https://github.com/analogdevicesinc/linux/ >>> >>> The main core file was renamed from adv7511.c to adv7511_core.c >>> so that audio and video compile into a single adv7511.ko module >>> and to keep up with Analog Devices kernel tree. >>> >>> The audio can be disabled using menu-config so it is possible >>> to use only video mode. >>> >>> The HDMI mode is automatically started at boot and the audio >>> (when enabled) registers as a codec into ALSA. >> >> Is there a reason why we set the mode to HDMI at probe itself? >> Shouldn't it be okay to set the mode later once we read the >> EDID off the panel? >> >> Some more comments below. >> > > Well, when I was using this in kernel 3.18 (with an older version of the driver) > I noticed that DVI mode was being used even when HDMI was connected so I forced > the driver to start in HDMI mode. There were some changes in the driver so it is > possible that this is no longer needed. Should I drop it? Mode selection works fine with ADV7533 on a 4.5 kernel. I'm assuming it should work out of the box for ADV7511 too. We should drop this. > >>> >>> SPDIF DAI format was also added to ASoC as it is required >>> by adv7511 audio. >>> >>> Signed-off-by: Jose Abreu >>> --- >>> >>> No changes v1 -> v2. >>> >>> drivers/gpu/drm/i2c/Kconfig | 11 + >>> drivers/gpu/drm/i2c/Makefile | 2 + >>> drivers/gpu/drm/i2c/adv7511.c | 1024 ----------------------------------- >>> drivers/gpu/drm/i2c/adv7511.h | 41 ++ >>> drivers/gpu/drm/i2c/adv7511_audio.c | 310 +++++++++++ >>> drivers/gpu/drm/i2c/adv7511_core.c | 1005 ++++++++++++++++++++++++++++++++++ >>> include/sound/soc-dai.h | 1 + >>> 7 files changed, 1370 insertions(+), 1024 deletions(-) >>> delete mode 100644 drivers/gpu/drm/i2c/adv7511.c >>> create mode 100644 drivers/gpu/drm/i2c/adv7511_audio.c >>> create mode 100644 drivers/gpu/drm/i2c/adv7511_core.c >> >> >> >>> + >>> +static int adv7511_probe(struct i2c_client *i2c, const struct i2c_device_id >>> *id) >>> +{ >>> + struct adv7511_link_config link_config; >>> + struct adv7511 *adv7511; >>> + struct device *dev = &i2c->dev; >>> + unsigned int val; >>> + int ret; >>> + >>> + if (!dev->of_node) >>> + return -EINVAL; >>> + >>> + adv7511 = devm_kzalloc(dev, sizeof(*adv7511), GFP_KERNEL); >>> + if (!adv7511) >>> + return -ENOMEM; >>> + >>> + adv7511->powered = false; >>> + adv7511->status = connector_status_disconnected; >>> + >>> + ret = adv7511_parse_dt(dev->of_node, &link_config); >>> + if (ret) >>> + return ret; >>> + >>> + /* >>> + * The power down GPIO is optional. If present, toggle it from active to >>> + * inactive to wake up the encoder. >>> + */ >>> + adv7511->gpio_pd = devm_gpiod_get_optional(dev, "pd", GPIOD_OUT_HIGH); >>> + if (IS_ERR(adv7511->gpio_pd)) >>> + return PTR_ERR(adv7511->gpio_pd); >>> + >>> + if (adv7511->gpio_pd) { >>> + mdelay(5); >>> + gpiod_set_value_cansleep(adv7511->gpio_pd, 0); >>> + } >>> + >>> + adv7511->regmap = devm_regmap_init_i2c(i2c, &adv7511_regmap_config); >>> + if (IS_ERR(adv7511->regmap)) >>> + return PTR_ERR(adv7511->regmap); >>> + >>> + ret = regmap_read(adv7511->regmap, ADV7511_REG_CHIP_REVISION, &val); >>> + if (ret) >>> + return ret; >>> + dev_dbg(dev, "Rev. %d\n", val); >>> + >>> + ret = regmap_register_patch(adv7511->regmap, adv7511_fixed_registers, >>> + ARRAY_SIZE(adv7511_fixed_registers)); >>> + if (ret) >>> + return ret; >>> + >>> + regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, edid_i2c_addr); >>> + regmap_write(adv7511->regmap, ADV7511_REG_PACKET_I2C_ADDR, >>> + packet_i2c_addr); >>> + regmap_write(adv7511->regmap, ADV7511_REG_CEC_I2C_ADDR, cec_i2c_addr); >>> + adv7511_packet_disable(adv7511, 0xffff); >>> + >>> + adv7511->i2c_main = i2c; >>> + adv7511->i2c_edid = i2c_new_dummy(i2c->adapter, edid_i2c_addr >> 1); >>> + if (!adv7511->i2c_edid) >>> + return -ENOMEM; >>> + >>> + if (i2c->irq) { >>> + init_waitqueue_head(&adv7511->wq); >>> + >>> + ret = devm_request_threaded_irq(dev, i2c->irq, NULL, >>> + adv7511_irq_handler, >>> + IRQF_ONESHOT, dev_name(dev), >>> + adv7511); >>> + if (ret) >>> + goto err_i2c_unregister_device; >>> + } >>> + >>> + /* CEC is unused for now */ >>> + regmap_write(adv7511->regmap, ADV7511_REG_CEC_CTRL, >>> + ADV7511_CEC_CTRL_POWER_DOWN); >>> + >>> + adv7511_power_off(adv7511); >>> + >>> + i2c_set_clientdata(i2c, adv7511); >>> + >>> +#ifdef CONFIG_DRM_I2C_ADV7511_AUDIO >>> + adv7511_audio_init(&i2c->dev); >>> +#endif >> >> If we intend to have more audio funcs being used by the core in the >> future, it would be nice to have NOP audio funcs rather than having >> multiple #ifdef checks in the driver when CONFIG_DRM_I2C_ADV7511_AUDIO >> isn't set. >> > > I will move this ifdef to adv751_audio and use NOP functions. Thanks, I think it should help in the longer run. > >>> + >>> + adv7511_set_link_config(adv7511, &link_config); >>> + >>> + /* Enable HDMI mode */ >>> + regmap_update_bits(adv7511->regmap, ADV7511_REG_HDCP_HDMI_CFG, >>> + ADV7511_HDMI_CFG_MODE_MASK, >>> + ADV7511_HDMI_CFG_MODE_HDMI); >>> + >>> + return 0; >>> + >>> +err_i2c_unregister_device: >>> + i2c_unregister_device(adv7511->i2c_edid); >>> + >>> + return ret; >>> +} >>> + >>> +static int adv7511_remove(struct i2c_client *i2c) >>> +{ >>> + struct adv7511 *adv7511 = i2c_get_clientdata(i2c); >>> + >> >> Are we missing a call to adv7511_audio_exit() here? > > I followed the code in Analog Devices tree where there is no call to > audio_exit() but indeed you are correct. I will add this call. > Since we have 3 files for adv7511 now, could we also move the driver to a separate folder? The long term plan is to convert all the i2c slave encoder drivers to bridges. Keeping them together would be nicer when we migrate this driver to the bridge folder. Thanks, Archit -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project