-
Notifications
You must be signed in to change notification settings - Fork 20
Home
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:
Current work is being done based on DDK 1.17. The plan is to
- make it compile within the kernel tree for omap e.g. CONFIG_SGX=y, CONFIG_SGX_114, CONFIG_SGX_OMAP=m (done)
- make it compile within the kernel tree for sunxi, jz4780, cedarview, poulsbo (partially done)
- make it load on omap5 (done)
- make it successfully download the firmware and successfully run gles1test1 on omap5 (done)
- make it successfully download the firmware on other omap (omap3, am335x, omap4) (done)
- 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)
- 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).