Re: [RFC 0/3] Make WLAN and Bluetooth basically work for CI20

From: H. Nikolaus Schaller
Date: Thu Feb 16 2023 - 01:58:41 EST


Hi Paul,

> Am 15.02.2023 um 22:19 schrieb Paul Cercueil <paul@xxxxxxxxxxxxxxx>:
>
> Hi Nikolaus,
>
> Le mercredi 15 février 2023 à 21:32 +0100, H. Nikolaus Schaller a
> écrit :
>> Hi Paul,
>> I wasn't aware of your work and it could have saved me a lot of time
>> to
>> experiment and try to make my patch set work.
>>
>> But we are still lucky, as we can merge ideas and find the really
>> best solution.
>>
>> Anyways you can take my patch 1/3 and 3/3 and we have only to discuss
>> details of 2/3.
>>
>> Interesting is your setup of several fixed regulators using
>> regulator-settling-time-us
>> to take care of power up sequencing. What I don't understand is the
>> fixedregulator-5
>> which has no controlling gpio but is always on. What is it needed
>> for? Maybe just to
>> be used to silence v(q)mmc-supply warnings etc.?
>
> It's wired to the various inputs of the ACT8600 chip. The driver will
> complain if they are not connected to anything. And while we're at it,
> it will also silence the v(q)mmc-supply warnings, yes.
>
>> But you do not really switch or enable/disable power of the SDIO or
>> bluetooth UART
>> interface?
>
> The badly named "bt_power" regulator powers on the chip, while the
> "wifi_io" regulator controls the voltage on the VDDIO pins. So these
> are enabled/disabled when needed.
>
>> Is it necessary to add a compatible of "ingenic,iw8103-fmac"? If it
>> works with the
>> standard "brcm,bcm4329-fmac" driver (note that I have "brcm,bcm4330-
>> fmac" because that
>> is how the module identifies itself) there seems to be no need for
>> another compatible
>> and a special bindings documentation.
>
> The chip has a different name so we can't guarantee that it works
> exactly like the BCM4330. So that was my reason behind using a new
> compatible string with a fallback.

Ok, that would be a good reason.

>
> However I sent a patch to add the new compatible string to the
> documentation and it got refused and I was told to just use the
> brcm,bcm4330-fmac, so I'll just do that.
>
>> For bluetooth you could add brcm,bt-pcm-int-params = [01 02 00 01
>> 01]; so that we
>> can eventually add some PCM stream to the sound setup.
>
> Sure, does that work though?

Well, I don't know. We have no sound setup.

> One (unrelated) note about Bluetooth, I didn't get it to work properly;
> it works enough to detect my keyboard and allow me to pair with it
> (typing the password on the BT keyboard) but it will never connect
> properly after that.

I haven't tested it that way in my setup.

>
>> Finally you have made node labels more consistent by calling them
>> wifi* while I made
>> them wlan0*... Well, just a matter of taste.
>
> Actually the node names should use as much as possible the generic
> names specified in the devicetree specification
> (https://www.devicetree.org/specifications/) and "wifi" is one of
> those.

I meant the node labels, not the node names.

BTW: Wi-Fi is a trademark of the Wi-Fi Alliance and means certification
while WLAN means the function. Of course the first must be compatible
to 802.11 and other standards while a WLAN could use some different
technology.

>
>> Then I tried to take your tree, add my defconfig (because it seems as
>> if you have not
>> updated configs), but I could only see
>>
>> [ 0.929072] Bluetooth: hci0: BCM: firmware Patch file not found,
>> tried:
>> [ 0.935704] Bluetooth: hci0: BCM: 'brcm/BCM4330B1.img,ci20.hcd'
>> [ 0.941683] Bluetooth: hci0: BCM: 'brcm/BCM4330B1.hcd'
>> [ 0.946827] Bluetooth: hci0: BCM: 'brcm/BCM.img,ci20.hcd'
>> [ 0.952278] Bluetooth: hci0: BCM: 'brcm/BCM.hcd'
>>
>> and then the kernel is stuck.
>>
>> So what is your defconfig that I can test your build?
>
> I test with the OpenDingux userspace so my defconfig is probably very
> different from yours. What are you using?

upstream ci20_defconfig + my patch 3/3.
Otherwise I test with Debian user-space.

Can you share your defconfig just for testing purposes?

>
> About the crash: make sure you have the *very* latest WiFi firmware
> from
> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/

The BCM4330B1.hcd firmware is missing there. I get mine from

https://github.com/armbian/firmware/raw/master/brcm

And it works with my setup but not yours. So I think something
else is missing or wrong. Note that it is loaded from the SD card
but the kernel is stuck earlier.

> I do remember that one particular version of the firmware will crash
> the kernel. You also don't need the .hcd firmware for Bluetooth to
> (somewhat) work.

Yes, I know. There may also be some race if the drivers are compiled
into the kernel that the bluetooth subsystem searches for the .hcd
files before the mmc subsystem has found and SD card. Then we have no
firmware even if it is stored.

BR,
Nikolaus

>>>
>>>>
>>>> Tested on CI20 with v6.2-rc6.
>>>>
>>>> H. Nikolaus Schaller (3):
>>>> MIPS: DTS: jz4780: add #clock-cells to rtc_dev
>>>> MIPS: DTS: CI20: fixes for WiFi/Bluetooth
>>>> MIPS: configs: ci20: enable drivers we need for WiFi/Bluetooth
>>>>
>>>> arch/mips/boot/dts/ingenic/ci20.dts | 77
>>>> ++++++++++++++++++++++--
>>>> --
>>>> arch/mips/boot/dts/ingenic/jz4780.dtsi | 2 +
>>>> arch/mips/configs/ci20_defconfig | 18 +++++-
>>>> 3 files changed, 84 insertions(+), 13 deletions(-)