From mboxrd@z Thu Jan 1 00:00:00 1970 From: Icenowy Zheng Subject: Re: [PATCH] ARM: dts: sun8i-q8-common: enable bluetooth on SDIO Wi-Fi Date: Mon, 19 Dec 2016 22:08:32 +0800 Message-ID: <11985541482156512@web2g.yandex.ru> References: <20161213233658.atGuNCNY@smtp1h.mail.yandex.net> <20161216124748.rkvnnlo4x5onzpvk@lukather> <4720181481899200@web7g.yandex.ru> <20161219100952.bspym36nsehda3za@lukather> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161219100952.bspym36nsehda3za@lukather> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Maxime Ripard Cc: Hans de Goede , Chen-Yu Tsai , linux-kernel , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" List-Id: devicetree@vger.kernel.org CgoxOS4xMi4yMDE2LCAxODowOSwgIk1heGltZSBSaXBhcmQiIDxtYXhpbWUucmlwYXJkQGZyZWUt ZWxlY3Ryb25zLmNvbT46Cj4gT24gRnJpLCBEZWMgMTYsIDIwMTYgYXQgMTA6NDA6MDBQTSArMDgw MCwgSWNlbm93eSBaaGVuZyB3cm90ZToKPj4gwqA+PiDCoD4gPsKgICZyX3BpbyB7Cj4+IMKgPj4g wqA+ID7CoCB3aWZpX3B3cnNlcV9waW5fcTg6IHdpZmlfcHdyc2VxX3BpbkAwIHsKPj4gwqA+PiDC oD4gPiAtIHBpbnMgPSAiUEw2IiwgIlBMNyIsICJQTDExIjsKPj4gwqA+PiDCoD4gPiArIHBpbnMg PSAiUEw2IiwgIlBMNyIsICJQTDgiLCAiUEwxMSI7Cj4+IMKgPj4gwqA+ID7CoCBmdW5jdGlvbiA9 ICJncGlvX2luIjsKPj4gwqA+PiDCoD4gPsKgIGJpYXMtcHVsbC11cDsKPj4gwqA+PiDCoD4gPsKg IH07Cj4+IMKgPj4gwqA+Cj4+IMKgPj4gwqA+IFRoZXJlJ3Mgc2V2ZXJhbCB0aGluZ3Mgd3Jvbmcg aGVyZS4gVGhlIGZpcnN0IG9uZSBpcyB0aGF0IHlvdSByZWx5Cj4+IMKgPj4gwqA+IHNvbGVseSBv biB0aGUgcGluY3RybCBzdGF0ZSB0byBtYWludGFpbiBhIHJlc2V0IGxpbmUuIFRoaXMgaXMgdmVy eQo+PiDCoD4+IMKgPiBmcmFnaWxlIChlc3BlY2lhbGx5IHNpbmNlIHRoZSBHUElPIHBpbmN0cmwg c3RhdGUgYXJlIGxpa2VseSB0byBnbyBhd2F5Cj4+IMKgPj4gwqA+IGF0IHNvbWUgcG9pbnQpLCBi dXQgaXQgYWxzbyBtZWFucyB0aGF0IGlmIHlvdXIgZHJpdmVyIHdhbnRzIHRvIHJlY292ZXIKPj4g wqA+PiDCoD4gZnJvbSB0aGF0IHNpdHVhdGlvbiBhdCBzb21lIHBvaW50LCBpdCB3b24ndCB3b3Jr Lgo+PiDCoD4+IMKgPgo+PiDCoD4+IMKgPiBUaGUgb3RoZXIgb25lIGlzIHRoYXQgdGhlIGJsdWV0 b290aCBhbmQgd2lmaSBjaGlwcyBhcmUgdHdvIGRldmljZXMgaW4KPj4gwqA+PiDCoD4gbGludXgs IGFuZCB5b3UgYXNzaWduIHRoYXQgcGluIHRvIHRoZSB3cm9uZyBkZXZpY2UgKHdpZmkpLgo+PiDC oD4+IMKgPgo+PiDCoD4+IMKgPiByZmtpbGwtZ3BpbyBpcyBtYWRlIGp1c3QgZm9yIHRoYXQsIHNv IHBsZWFzZSB1c2UgaXQuCj4+IMKgPj4KPj4gwqA+PiDCoFRoZSBHUElPIGlzIG5vdCBmb3IgdGhl IHJhZGlvLCBidXQgZm9yIHRoZSBmdWxsIEJsdWV0b290aCBwYXJ0Lgo+PiDCoD4KPj4gwqA+IEkg a25vdy4KPj4gwqA+Cj4+IMKgPj4gwqBJZiBpdCdzIHNldCB0byAwLCB0aGVuIHRoZSBibHVldG9v dGggcGFydCB3aWxsIHJlc2V0LCBhbmQgdGhlCj4+IMKgPj4gwqBoY2lhdHRhY2ggd2lsbCBmYWls Lgo+PiDCoD4KPj4gwqA+IEJvdGggcmZraWxsLWdwaW8gYW5kIHJma2lsbC1yZWd1bGF0b3Igd2ls bCBzaHV0ZG93biB3aGVuIGNhbGxlZAo+PiDCoD4gKGVpdGhlciBieSBwb2tpbmcgdGhlIHJlc2V0 IHBpbiBvciBzaHV0dGluZyBkb3duIHRoZSByZWd1bGF0b3IpLCBzbwo+PiDCoD4gdGhhdCBkZWZp bml0ZWx5IHNlZW1zIGxpa2UgYW4gZXhwZWN0ZWQgYmVoYXZpb3IgdG8gcHV0IHRoZSBkZXZpY2Ug aW4KPj4gwqA+IHJlc2V0Lgo+PiDCoD4KPj4gwqA+PiDCoFRoZSBCU1AgdXNlcyB0aGlzIGFzIGEg cmZraWxsLCBhbmQgdGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBibHVldG9vdGgKPj4gwqA+PiDCoG9u L29mZiBzd2l0Y2ggZG8gbm90IHdvcmsgcHJvcGVybHkuCj4+IMKgPgo+PiDCoD4gVGhlbiByZmtp bGwgbmVlZHMgZml4aW5nLCBidXQgd29ya2luZyBhcm91bmQgaXQgYnkgaG9waW5nIHRoYXQgdGhl Cj4+IMKgPiBjb3JlIHdpbGwgcHJvYmUgYW4gZW50aXJlbHkgZGlmZmVyZW50IGRldmljZSwgYW5k IGVuZm9yY2luZyBhIGRlZmF1bHQKPj4gwqA+IHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBt aWdodCBvciBtaWdodCBub3QgY2hhbmdlIGlzIGJvdGggZnJhZ2lsZQo+PiDCoD4gYW5kIHdyb25n Lgo+Pgo+PiDCoEkgdGhpbmsgYSByZmtpbGwtZ3BpbyBoZXJlIHdvcmtzIGp1c3QgbGlrZSB0aGUg QlNQIHJma2lsbC4uLgo+Pgo+PiDCoFRoZSByZWFsIHByb2JsZW0gaXMgdGhhdCB0aGUgUmVhbHRl ayBVQVJUIGJsdWV0b290aCBkcml2ZXIgaXMgYSB1c2Vyc3BhY2UKPj4gwqBwcm9ncmFtIChhIG1v ZGlmaWVkIGhjaWF0dGFjaCksIHdoaWNoIGlzIG5vdCBjYXBhYmxlIG9mIHRoZSBHUElPIHJlc2V0 Li4uCj4KPiBDYW4ndCB5b3UgcnVuIHJma2lsbCBiZWZvcmUgYXR0YWNoaW5nPyBXaGF0IGlzIHRo ZSBwcm9ibGVtIGV4YWN0bHk/Cj4gSXQncyBub3QgaW4gcmVzZXQgZm9yIGxvbmcgZW5vdWdoPwo+ Cj4gVGhpcyBzZWVtcyBtb3JlIGFuZCBtb3JlIGxpa2UgYW4gaXNzdWUgaW4gdGhlIEJUIHN0YWNr IHlvdSdyZQo+IHVzaW5nLiBXZSBtaWdodCBjb25zaWRlciB3b3JrYXJvdW5kcyBpbiB0aGUga2Vy bmVsLCBidXQgdGhleSBoYXZlIHRvCj4gYmUgY29ycmVjdC4KCk9uZSBtb3JlIHJma2lsbCBpbnRl cmZhY2Ugd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGhjaTAgYWZ0ZXIgaGNpYXR0YWNoLCB3aGljaCBj YW4KYmUgc2FmZWx5IHRvZ2dsZWQgYmxvY2sgYW5kIHVuYmxvY2suCgpIb3dldmVyLCBpZiB0aGUg R1BJTyBpcyB0b2dnbGVkIGRvd24sIHRoZSBoY2lhdHRhY2ggcHJvZ3JhbSB3aWxsIGRpZS4KClRo ZSBibHVldG9vdGggc3RhY2sgSSB1c2VkIGlzIGZkLm8ncyBCbHVlWi4KCj4KPiBNYXhpbWUKPgo+ IC0tCj4gTWF4aW1lIFJpcGFyZCwgRnJlZSBFbGVjdHJvbnMKPiBFbWJlZGRlZCBMaW51eCBhbmQg S2VybmVsIGVuZ2luZWVyaW5nCj4gaHR0cDovL2ZyZWUtZWxlY3Ryb25zLmNvbQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: icenowy@aosc.xyz (Icenowy Zheng) Date: Mon, 19 Dec 2016 22:08:32 +0800 Subject: [PATCH] ARM: dts: sun8i-q8-common: enable bluetooth on SDIO Wi-Fi In-Reply-To: <20161219100952.bspym36nsehda3za@lukather> References: <20161213233658.atGuNCNY@smtp1h.mail.yandex.net> <20161216124748.rkvnnlo4x5onzpvk@lukather> <4720181481899200@web7g.yandex.ru> <20161219100952.bspym36nsehda3za@lukather> Message-ID: <11985541482156512@web2g.yandex.ru> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 19.12.2016, 18:09, "Maxime Ripard" : > On Fri, Dec 16, 2016 at 10:40:00PM +0800, Icenowy Zheng wrote: >> ?>> ?> >? &r_pio { >> ?>> ?> >? wifi_pwrseq_pin_q8: wifi_pwrseq_pin at 0 { >> ?>> ?> > - pins = "PL6", "PL7", "PL11"; >> ?>> ?> > + pins = "PL6", "PL7", "PL8", "PL11"; >> ?>> ?> >? function = "gpio_in"; >> ?>> ?> >? bias-pull-up; >> ?>> ?> >? }; >> ?>> ?> >> ?>> ?> There's several things wrong here. The first one is that you rely >> ?>> ?> solely on the pinctrl state to maintain a reset line. This is very >> ?>> ?> fragile (especially since the GPIO pinctrl state are likely to go away >> ?>> ?> at some point), but it also means that if your driver wants to recover >> ?>> ?> from that situation at some point, it won't work. >> ?>> ?> >> ?>> ?> The other one is that the bluetooth and wifi chips are two devices in >> ?>> ?> linux, and you assign that pin to the wrong device (wifi). >> ?>> ?> >> ?>> ?> rfkill-gpio is made just for that, so please use it. >> ?>> >> ?>> ?The GPIO is not for the radio, but for the full Bluetooth part. >> ?> >> ?> I know. >> ?> >> ?>> ?If it's set to 0, then the bluetooth part will reset, and the >> ?>> ?hciattach will fail. >> ?> >> ?> Both rfkill-gpio and rfkill-regulator will shutdown when called >> ?> (either by poking the reset pin or shutting down the regulator), so >> ?> that definitely seems like an expected behavior to put the device in >> ?> reset. >> ?> >> ?>> ?The BSP uses this as a rfkill, and the result is that the bluetooth >> ?>> ?on/off switch do not work properly. >> ?> >> ?> Then rfkill needs fixing, but working around it by hoping that the >> ?> core will probe an entirely different device, and enforcing a default >> ?> that the rest of the kernel might or might not change is both fragile >> ?> and wrong. >> >> ?I think a rfkill-gpio here works just like the BSP rfkill... >> >> ?The real problem is that the Realtek UART bluetooth driver is a userspace >> ?program (a modified hciattach), which is not capable of the GPIO reset... > > Can't you run rfkill before attaching? What is the problem exactly? > It's not in reset for long enough? > > This seems more and more like an issue in the BT stack you're > using. We might consider workarounds in the kernel, but they have to > be correct. One more rfkill interface will be generated for hci0 after hciattach, which can be safely toggled block and unblock. However, if the GPIO is toggled down, the hciattach program will die. The bluetooth stack I used is fd.o's BlueZ. > > Maxime > > -- > Maxime Ripard, Free Electrons > Embedded Linux and Kernel engineering > http://free-electrons.com