Merge: 870a171 2146136
Author: Dave Airlie
Date: Tue Dec 15 10:43:27 2015 +1000
Merge tag 'drm-vc4-next-2015-12-11' of http://github.com/anholt/linux into drm-next
This is the last step for getting the VC4 driver upstream: Dave's pulled my code for inclusion in kernel 4.5 (probably to be released around mid-March). The ABI is now stable, so I'm working on getting that ABI usage into the Mesa 11.1 release. Hopefully I'll land that in the next couple of days.
As far as using it out of the box, we're not there yet. I've been getting my code included in some builds for the Raspberry Pi Foundation developers. They've been working on switching to kernel 4.2, and their tree has VC4 support up to the previous ABI. Once the Mesa 11.1 merge happens, I'll ask them to pull the new kernel ABI and rebuild userspace using Mesa 11.1-rc4. Hopefully this then appears in the next Raspbian Jessie build they produce. Until that release happens, there are instructions for the development environment on the DRI wiki, and I'd recommend trying out the continuous integration builds linked from there.
The Raspberry Pi folks aren't ready to swap everyone over to the vc4 driver quite yet, though. They want to make sure we don't regress functionality, obviously, and there are some big chunks of work left to do: HDMI audio support, video overlays, and integration of the vc4 driver with the camera and video decode support come time mind. And then there's the matter of making sure that 3D performance doesn't suffer. That's a bit hard to test, since only a few apps work with the existing GLES2 support, while the vc4 driver gives GLX, EGL-on-X11, EGL-on-gbm, most of GL2.1, and all of GLES2, but doesn't support the EGL-on-Dispmanx interface that the previous driver used. So, until then, they're going to have a devicetree overlay that determines whether the firmware sets itself up for Linux using the vc4 driver or the closed driver.
Part of what's taken so long to get to this point has been trying to get my dependencies merged to the kernel. To turn on V3D, I need to turn on power, which means a power domain driver. Turning on the power required talking to the firmware, which required resurrecting an old patchset for talking to the firmware, which got bikeshedded harder than I've ever had happen to my code before. Programming video modes required a clock driver. Every step of the way is misery to get the code merged, and I would give up a lot to never work on the Linux kernel again.
Until then, though, I've become as Raspberry Pi kernel maintainer, so that I can ack other people's patches and help shepherd them into the kernel. Hopefully for 4.5 I can get the aux clock driver bikeshedding dealt with and resubmit it, at which point people can use UART1 and SPI1/2. I have a third rework to do of my power domain driver so that if we're lucky we can get it merged nad actually turn on the 3D core (and manage power of many other devices, too!). Martin Sperl is doing a major rewrite of the SPI driver (an area I know basically nothing about), and his recent patch split may deal with the subsystem maintainer's concerns. I want to pull in feedback and merge Lubomir's thermal driver. There's also a cpufreq driver (for actually doing the overclocking you can set with config.txt) from Lubomir, which I expect to be harder to deal with the feedback on.
So, while I've been quiet on the blogging front, there's been a lot going on for vc4, and it's in pretty good shape now. Hopefully more folks can give it a try as it becomes more upstreamed and accessible.