Skip to content
Golden Delicious Computers GmbH&Co. KG edited this page Jul 19, 2020 · 9 revisions

This project is about shaping existing GPL Linux kernel drivers for the PVR/SGX5 architecture so that they can become accepted into drivers/staging (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/staging).

We also discuss where to get matching (nonfree) user-space components (firmware and libraries), but it is NOT about reverse engineering those. Just the device driver which handles reset, clock, memory/dma interface, open/ioctl, firmware download, framebuffers/DRM.

There may also be some glue code here for interfacing to the processor of the SoC (OMAP, Sunxi, Poulsbo, Cedarview, jz4780) but that should go separately to the arch/ subdirectories and device tree sources.

For communication, please subscribe and CC: all discussion to the mailing list:

[email protected]

Current work is being done based on DDK 1.17. The plan is to

  1. make it compile within the kernel tree for omap e.g. CONFIG_SGX=y, CONFIG_SGX_114, CONFIG_SGX_OMAP=m (done)
  2. make it compile within the kernel tree for sunxi, jz4780, cedarview, poulsbo (partially done)
  3. make it load on omap5 (done)
  4. make it successfully download the firmware and successfully run gles1test1 on omap5 (done)
  5. make it successfully download the firmware on other omap (omap3, am335x, omap4) (done)
  6. rework the driver module so that we read more config information from device tree and do not need separate builds for each combination of SoC and SGX version/variant (tbd)
  7. clean up so that it can be accepted into drivers/staging

How to build current work-in-progress version:

git checkout -B work-pvr114 letux-pvr
echo CONFIG_STAGING=y >>arch/arm/configs/omap2plus_defconfig
echo CONFIG_PREEMPT=y >>arch/arm/configs/omap2plus_defconfig
echo CONFIG_SGX=y >>arch/arm/configs/omap2plus_defconfig
echo CONFIG_SGX_OMAP=m >>arch/arm/configs/omap2plus_defconfig
echo CONFIG_PVRSGX_1_17_4948957=y >>arch/arm/configs/omap2plus_defconfig
echo CONFIG_SGX_DRM=y >>arch/arm/configs/omap2plus_defconfig
make omap2plus_defconfig

This should build multiple kernel modules but through DT the kernel will load the right one during boot by matching e.g. "ti,omap3630-sgx530-125".

Then you can install some user-space binaries and should be able to run successfully:

pvrsrvctl --no-module --start gles1test1

The current status is that it can be demonstrated for example on BeagleBone Black (am335x) and Pyra-Handheld (omap5).

Clone this wiki locally