From 2340c646e6a5da658e114be2f721ff90853588d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Fri, 9 Aug 2019 19:50:30 +0200 Subject: brcm2708: update to latest patches from RPi foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- ...ry-the-display-ID-for-each-display-in-FKM.patch | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.19/950-0599-drm-vc4-Query-the-display-ID-for-each-display-in-FKM.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0599-drm-vc4-Query-the-display-ID-for-each-display-in-FKM.patch') diff --git a/target/linux/brcm2708/patches-4.19/950-0599-drm-vc4-Query-the-display-ID-for-each-display-in-FKM.patch b/target/linux/brcm2708/patches-4.19/950-0599-drm-vc4-Query-the-display-ID-for-each-display-in-FKM.patch new file mode 100644 index 0000000000..372fe2c962 --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0599-drm-vc4-Query-the-display-ID-for-each-display-in-FKM.patch @@ -0,0 +1,58 @@ +From 7029b71f2c474c3dc80beeec61ac89b01d56f32f Mon Sep 17 00:00:00 2001 +From: Dave Stevenson +Date: Tue, 9 Apr 2019 12:37:28 +0100 +Subject: [PATCH 599/773] drm: vc4: Query the display ID for each display in + FKMS + +Replace the hard coded list of display IDs for a mailbox call +that returns the display ID for each display that has been +detected. + +Signed-off-by: Dave Stevenson +--- + drivers/gpu/drm/vc4/vc4_firmware_kms.c | 16 +++++++++++++--- + include/soc/bcm2835/raspberrypi-firmware.h | 1 + + 2 files changed, 14 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c ++++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c +@@ -943,7 +943,7 @@ static int vc4_fkms_bind(struct device * + struct vc4_crtc **crtc_list; + u32 num_displays, display_num; + int ret; +- const u32 display_num_lookup[] = {2, 7, 1}; ++ u32 display_id; + + vc4->firmware_kms = true; + +@@ -982,8 +982,18 @@ static int vc4_fkms_bind(struct device * + return -ENOMEM; + + for (display_num = 0; display_num < num_displays; display_num++) { +- ret = vc4_fkms_create_screen(dev, drm, display_num, +- display_num_lookup[display_num], ++ display_id = display_num; ++ ret = rpi_firmware_property(vc4->firmware, ++ RPI_FIRMWARE_FRAMEBUFFER_GET_DISPLAY_ID, ++ &display_id, sizeof(display_id)); ++ /* FIXME: Determine the correct error handling here. ++ * Should we fail to create the one "screen" but keep the ++ * others, or fail the whole thing? ++ */ ++ if (ret) ++ DRM_ERROR("Failed to get display id %u\n", display_num); ++ ++ ret = vc4_fkms_create_screen(dev, drm, display_num, display_id, + &crtc_list[display_num]); + if (ret) + DRM_ERROR("Oh dear, failed to create display %u\n", +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -117,6 +117,7 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_FRAMEBUFFER_GET_TOUCHBUF = 0x0004000f, + RPI_FIRMWARE_FRAMEBUFFER_GET_GPIOVIRTBUF = 0x00040010, + RPI_FIRMWARE_FRAMEBUFFER_RELEASE = 0x00048001, ++ RPI_FIRMWARE_FRAMEBUFFER_GET_DISPLAY_ID = 0x00040016, + RPI_FIRMWARE_FRAMEBUFFER_SET_DISPLAY_NUM = 0x00048013, + RPI_FIRMWARE_FRAMEBUFFER_GET_NUM_DISPLAYS = 0x00040013, + RPI_FIRMWARE_FRAMEBUFFER_GET_DISPLAY_SETTINGS = 0x00040014, -- cgit v1.2.3