PowerVR G6230: bring the GPU up under mainline Linux #55
Labels
No labels
blocked-physical
cleanup
hardware
infra
kernel
P1-critical
P2-high
P3-normal
P4-later
reliability
security
upstream
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tiagoagueda/a80#55
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The PowerVR G6230 has never been driven under mainline. This tracks the work to
change that, using the vendor's kernel-mode DDK source rather than an open driver.
Full plan:
55-gpu-linux-plan.md. Feasibility and evidence:54-powervr-feasibility.md.Why this is possible at all
The upstream open driver (
drm/powervr+ Mesapvr) cannot drive this chip: it needs aper-core firmware blob named by BVNC, and there is no
rogue_1.75.2.30_v1.fwinlinux-firmwareand never will be. It also
depends on (ARM64 || RISCV && 64BIT)and we are ARMv7.What makes it tractable is that
A80_SDK_20140728_lichee.tar.gzon ouranos containslichee/linux-3.4/modules/rogue_km/- 427 files, dual GPL/MIT, whosehwdefscarries a1.V.2.30core config. That source supports our exact silicon.Hardware constants (from the vendor platform layer, not guessed)
0x02000000, size0x010000000x01c08000GIC_SPI 971.75.2.30axp15_dcdc3(sys_config.fex [rgx_para])The IRQ cross-checks: the vendor's real-silicon branch gives HDMI
+88, and our working HDMInode uses
GIC_SPI 88, so the mapping is direct.Mainline already has the GPU clocks in
ccu-sun9i-a80.c(pll_gpu,gpu_core,gpu_memory,gpu_axi,bus-gpu-ctrl). Nothing to write there.Expectations
Four Cortex-A7s only, because of #53, and no hardware video decode. A working GPU buys a smooth
desktop or Kodi UI. It will not play 1080p H.264 any better than today. If the goal is a
media box, booting the vendor Android 4.4 build gets there this week for zero engineering.
Sub-issues, in dependency order
#56 comes first and is a genuine gate - it decides whether the end result is accelerated
Debian (DDK 1.4 glibc userspace) or Android-only (DDK 1.3, our matched pair). Do not sink effort
into #58 before it is answered, since the answer does not change #57 or #58 technically but does
change whether the outcome is worth having.
#57 and #58 are pure desk work. Nothing touches the board before #59.
Gates
/dev/pvrsrvkmappears, no oops.es2gears-class test renders on the TV.The gate is open. #56 is resolved:
github.com/cubieboard/CC-A80-kernel-sourcecarriesrogue_kmat1.4@3064661- the same build number as thelibpvr_dri_if.sowe hold - and itsversion string reads
Rogue_DDK_Linux_XOrg, notAndroid_RSCompute.So the shape of this issue is settled, and it is the good branch: a matched glibc km/um pair
exists, with the sunxi system layer (
services/system/rgx_sunxi/) and a Linux build target(
build/linux/sunxi_linux/Makefile) on kernel 3.4.39. No libhybris, no booting Android 4.4 foracceleration.
Archived at
~/a80/vendor/CC-A80-rogue_km-1.4@3064661.tar.zstwith checksums; seeARCHIVE.md.The forward-port to mainline (#58) is still the hard part - this is a 3.4-era DDK - but it is now
a porting problem with a known-correct starting point rather than a hunt.