From a3f5605ed4bcb06096a61f8d1a195fbc4adbea6c Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Tue, 31 Dec 2024 11:25:24 -0600 Subject: [PATCH] kernel/firmware: Support RPi GPU, touchscreen Getting the Raspberry Pi 4 GPU and 7-inch Touch Display 2 working was quite challenging. Several kernel drivers are needed, beyond the obvious VC4 and V3D, like voltage regulators and backlight controls. Even with all the drivers enabled, I still had trouble getting `/dev/dri/card1` (the display device, as opposed to `/dev/dri/card0`, the 3D rendering device) to appear until I explicitly enabled the `vc4-kms-dsi-ili9881-7inch` device tree overlay. I am not entirely sure why this is necessary, since `display_auto_detect` supposedly should have added this overlay automatically. I am also not sure how it would work if I wanted to use an HDMI monitor instead of the DSI panel, but fortunately, for this project, that's not necessary. --- config.txt | 14 ++++++------ linux.config | 60 +++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/config.txt b/config.txt index 4670275..f0b1528 100644 --- a/config.txt +++ b/config.txt @@ -1,12 +1,8 @@ arm_64bit=1 +arm_boost=1 start_x=1 -bootcode_delay=0 -boot_delay=0 - -gpu_mem=32 - kernel=u-boot.bin enable_uart=1 @@ -14,4 +10,10 @@ dtoverlay=miniuart-bt dtparam i2c_arm=on -device_tree=bcm2711-rpi-4-b.dtb +display_auto_detect=1 +dtoverlay=vc4-kms-v3d +dtoverlay=vc4-kms-dsi-ili9881-7inch +max_framebuffers=2 +disable_fw_kms_setup=1 +disable_overscan=1 +dtparam=audio=on diff --git a/linux.config b/linux.config index 169ff93..e61d910 100644 --- a/linux.config +++ b/linux.config @@ -45,12 +45,65 @@ CONFIG_IPV6=y CONFIG_IPV6_SIT=m CONFIG_IPV6_SIT_6RD=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m + +CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY=m +CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2=m # CONFIG_MEDIA_CEC_SUPPORT is not set # CONFIG_MEDIA_SUPPORT is not set -# CONFIG_SOUND is not set -# CONFIG_SND is not set -# CONFIG_SND_SOC is not set +CONFIG_DRM=m +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_GEM_SHMEM_HELPER=m +CONFIG_DRM_SCHED=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PANEL_ILITEK_ILI9806E=m +CONFIG_DRM_PANEL_ILITEK_ILI9881C=m +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=y +CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_TOSHIBA_TC358762=m +CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_V3D=m +CONFIG_VC4=m +CONFIG_DRM_VC4_HDMI_CEC=y +CONFIG_DRM_RP1_DSI=m +CONFIG_DRM_RP1_DPI=m +CONFIG_DRM_RP1_VEC=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m +CONFIG_FB_BCM2708=y +CONFIG_FB_SIMPLE=y +CONFIG_FB_SSD1307=m +CONFIG_FB_RPISENSE=m +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_IOMEM_HELPERS=y +CONFIG_FB_BACKLIGHT=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_RPI=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_BCM_VC_SM_CMA=m + +CONFIG_SOUND=y +CONFIG_SND=m +# CONFIG_SND_PCM_TIMER is not set +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_PROC_FS is not set +# CONFIG_SND_CTL_FAST_LOOKUP is not set +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_PCI is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_BCM2835_SOC_I2S=m CONFIG_AUDIT=y CONFIG_SECURITY=y @@ -64,6 +117,7 @@ CONFIG_MEMCG=y CONFIG_CGROUP_PIDS=y CONFIG_BLK_CGROUP=y +CONFIG_I2C_HID_OF_GOODIX=m CONFIG_USB_DWC2=m CONFIG_USB_DWC2_PCI=m CONFIG_USB_ACM=m