Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 09 Jun 2020 23:16:42 +0000
From:      Robert Crowston <crowston@protonmail.com>
Cc:        freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: Report: FreeBSD on Rpi4 8 GB model
Message-ID:  <vZ3qJTOGzo9Cg-9N3Y3BJXsbSXiMQ57DZXJsK7j-T7Xp7xH9ItIua8vcHu2qQj992QAIDfN19Opz0gPRYRgXStldvEslmQL4_OENaE0uyDQ=@protonmail.com>
In-Reply-To: <kb9ZDoXeXjZQGaI_pHItcwGDLz9nl5FzAe-_mxkI1N9MAFSkDpvFbwt-JUy-YmoOg-3C9bFyiNYgUoGvAnJZvsxbbGVHP4ZlUC84EgCd6A0=@protonmail.com>
References:  <kb9ZDoXeXjZQGaI_pHItcwGDLz9nl5FzAe-_mxkI1N9MAFSkDpvFbwt-JUy-YmoOg-3C9bFyiNYgUoGvAnJZvsxbbGVHP4ZlUC84EgCd6A0=@protonmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I figured out how to start the xhci driver.

The snag is, it seems the message to the VC to reinstall the xhci firmware =
has to be delivered *after* the bridge memory window is configured on the c=
ontroller by the pci_pci bridge, and *before* the xhci controller is starte=
d.

That kind of ordering is not straightforward to arrange, as far as I can se=
e: I cannot hack the message onto the end of the pcie attach function, sinc=
e we need the bridge child to have attached, but not the xhci grandchild.

I think the best way then is to create a shim driver for the xhci controlle=
r whose probe() is designed only to succeed on the Rpi4. The shim's attach(=
) will instruct the VC to load the xhci firmware, and then defer to the gen=
eric xhci_pci_attach(). All other methods will be inherited from the xhci_p=
ci driver.

Another idea is to put the logic directly in the xhci_pci.c file, but I thi=
nk creating a dependency out to the Rpi4 mailbox API from the generic XHCI =
framework is quite a hack.

Anyone have any thoughts?

=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90 Original Me=
ssage =E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90=E2=80=90
On Saturday, 6 June 2020 19:15, Robert Crowston via freebsd-arm <freebsd-ar=
m@freebsd.org> wrote:

> What works:
>
> -   FreeBSD SMP (see below)
> -   All 8 GB of memory (less video RAM).
>
>     What does not work on the 8 GB model (but does work on the 4 GB model=
):
>
> -   xhci (with my driver, there has been a change in the way the firmware=
 is loaded)
> -   ethernet (genet0 is detected fine, appears to be up, but no packets g=
o over the interface)
> -   JTAG debugging (urgh)
>
>     dmesg: https://dmesgd.nycbug.org/index.cgi?do=3Dview&id=3D5534
>
>     You will need the latest u-boot. The one in pkg doesn't work. I compi=
led from head: https://github.com/u-boot/u-boot.git
>
>     For SMP, you need also need to tell u-boot not to clobber over our pr=
ocessor start up function set up by armstub8-gic.bin.
>
>     Edit board/raspberrypi/rpi/Kconfig, set RPI_EFI_NR_SPIN_PAGES to a la=
rger number (I picked 10, probably too big, but it was easier than doing th=
e arithmetic).
>
>     $ CROSS_COMPILE=3Daarch64-none-elf- gmake rpi_4_defconfig
>     $ CROSS_COMPILE=3Daarch64-none-elf- gmake
>
>     Overwrite the u-boot.bin file on your sdcard with the one just built.
>
>     You will also need the latest versions of the pi4 firmware files on y=
our MSDOS partition, bcm2711-rpi-4-b.dtb, fixup4.dat, start4.elf, and the o=
verlays/ directory.
>
>
> freebsd-arm@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?vZ3qJTOGzo9Cg-9N3Y3BJXsbSXiMQ57DZXJsK7j-T7Xp7xH9ItIua8vcHu2qQj992QAIDfN19Opz0gPRYRgXStldvEslmQL4_OENaE0uyDQ=>