mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
7d7aa2fd92
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Despite, since subtargets range from bcm2708 to bcm2711, it seems appropriate to use bcm27xx instead of bcm2708 (again, as already done for BOARDNAME). This also renames the packages brcm2708-userland and brcm2708-gpu-fw. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Acked-by: Álvaro Fernández Rojas <noltari@gmail.com>
160 lines
5.0 KiB
Diff
160 lines
5.0 KiB
Diff
From b3fe618a47d770f6c9808ade14360fd81a599789 Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
|
Date: Wed, 19 Jun 2019 03:55:50 +0100
|
|
Subject: [PATCH] video/bcm2708_fb: Revert cma allocation attempt
|
|
|
|
"4600e91 Pulled in the multi frame buffer support from the Pi3 repo"
|
|
pulled back in the code for allocating the framebuffer from the CMA
|
|
heap.
|
|
Revert it again.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
|
---
|
|
drivers/video/fbdev/bcm2708_fb.c | 101 +++------------------
|
|
include/soc/bcm2835/raspberrypi-firmware.h | 1 -
|
|
2 files changed, 13 insertions(+), 89 deletions(-)
|
|
|
|
--- a/drivers/video/fbdev/bcm2708_fb.c
|
|
+++ b/drivers/video/fbdev/bcm2708_fb.c
|
|
@@ -112,9 +112,6 @@ struct bcm2708_fb {
|
|
struct vc4_display_settings_t display_settings;
|
|
struct debugfs_regset32 screeninfo_regset;
|
|
struct bcm2708_fb_dev *fbdev;
|
|
- unsigned int image_size;
|
|
- dma_addr_t dma_addr;
|
|
- void *cpuaddr;
|
|
};
|
|
|
|
#define MAX_FRAMEBUFFERS 3
|
|
@@ -377,12 +374,12 @@ static int bcm2708_fb_set_par(struct fb_
|
|
.xoffset = info->var.xoffset,
|
|
.yoffset = info->var.yoffset,
|
|
.tag5 = { RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE, 8, 0 },
|
|
- /* base and screen_size will be initialised later */
|
|
- .tag6 = { RPI_FIRMWARE_FRAMEBUFFER_SET_PITCH, 4, 0 },
|
|
- /* pitch will be initialised later */
|
|
+ .base = 0,
|
|
+ .screen_size = 0,
|
|
+ .tag6 = { RPI_FIRMWARE_FRAMEBUFFER_GET_PITCH, 4, 0 },
|
|
+ .pitch = 0,
|
|
};
|
|
- int ret, image_size;
|
|
-
|
|
+ int ret;
|
|
|
|
print_debug("%s(%p) %dx%d (%dx%d), %d, %d (display %d)\n", __func__,
|
|
info,
|
|
@@ -397,76 +394,12 @@ static int bcm2708_fb_set_par(struct fb_
|
|
*/
|
|
set_display_num(fb);
|
|
|
|
- /* Try allocating our own buffer. We can specify all the parameters */
|
|
- image_size = ((info->var.xres * info->var.yres) *
|
|
- info->var.bits_per_pixel) >> 3;
|
|
-
|
|
- if (!fb->fbdev->disable_arm_alloc &&
|
|
- (image_size != fb->image_size || !fb->dma_addr)) {
|
|
- if (fb->dma_addr) {
|
|
- dma_free_coherent(info->device, fb->image_size,
|
|
- fb->cpuaddr, fb->dma_addr);
|
|
- fb->image_size = 0;
|
|
- fb->cpuaddr = NULL;
|
|
- fb->dma_addr = 0;
|
|
- }
|
|
-
|
|
- fb->cpuaddr = dma_alloc_coherent(info->device, image_size,
|
|
- &fb->dma_addr, GFP_KERNEL);
|
|
-
|
|
- if (!fb->cpuaddr) {
|
|
- fb->dma_addr = 0;
|
|
- fb->fbdev->disable_arm_alloc = true;
|
|
- } else {
|
|
- fb->image_size = image_size;
|
|
- }
|
|
- }
|
|
-
|
|
- if (fb->cpuaddr) {
|
|
- fbinfo.base = fb->dma_addr;
|
|
- fbinfo.screen_size = image_size;
|
|
- fbinfo.pitch = (info->var.xres * info->var.bits_per_pixel) >> 3;
|
|
-
|
|
- ret = rpi_firmware_property_list(fb->fbdev->fw, &fbinfo,
|
|
- sizeof(fbinfo));
|
|
- if (ret || fbinfo.base != fb->dma_addr) {
|
|
- /* Firmware either failed, or assigned a different base
|
|
- * address (ie it doesn't support being passed an FB
|
|
- * allocation).
|
|
- * Destroy the allocation, and don't try again.
|
|
- */
|
|
- dma_free_coherent(info->device, fb->image_size,
|
|
- fb->cpuaddr, fb->dma_addr);
|
|
- fb->image_size = 0;
|
|
- fb->cpuaddr = NULL;
|
|
- fb->dma_addr = 0;
|
|
- fb->fbdev->disable_arm_alloc = true;
|
|
- }
|
|
- } else {
|
|
- /* Our allocation failed - drop into the old scheme of
|
|
- * allocation by the VPU.
|
|
- */
|
|
- ret = -ENOMEM;
|
|
- }
|
|
-
|
|
+ ret = rpi_firmware_property_list(fb->fbdev->fw, &fbinfo,
|
|
+ sizeof(fbinfo));
|
|
if (ret) {
|
|
- /* Old scheme:
|
|
- * - FRAMEBUFFER_ALLOCATE passes 0 for base and screen_size.
|
|
- * - GET_PITCH instead of SET_PITCH.
|
|
- */
|
|
- fbinfo.base = 0;
|
|
- fbinfo.screen_size = 0;
|
|
- fbinfo.tag6.tag = RPI_FIRMWARE_FRAMEBUFFER_GET_PITCH;
|
|
- fbinfo.pitch = 0;
|
|
-
|
|
- ret = rpi_firmware_property_list(fb->fbdev->fw, &fbinfo,
|
|
- sizeof(fbinfo));
|
|
- if (ret) {
|
|
- dev_err(info->device,
|
|
- "Failed to allocate GPU framebuffer (%d)\n",
|
|
- ret);
|
|
- return ret;
|
|
- }
|
|
+ dev_err(info->device,
|
|
+ "Failed to allocate GPU framebuffer (%d)\n", ret);
|
|
+ return ret;
|
|
}
|
|
|
|
if (info->var.bits_per_pixel <= 8)
|
|
@@ -481,17 +414,9 @@ static int bcm2708_fb_set_par(struct fb_
|
|
fb->fb.fix.smem_start = fbinfo.base;
|
|
fb->fb.fix.smem_len = fbinfo.pitch * fbinfo.yres_virtual;
|
|
fb->fb.screen_size = fbinfo.screen_size;
|
|
-
|
|
- if (!fb->dma_addr) {
|
|
- if (fb->fb.screen_base)
|
|
- iounmap(fb->fb.screen_base);
|
|
-
|
|
- fb->fb.screen_base = ioremap_wc(fbinfo.base,
|
|
- fb->fb.screen_size);
|
|
- } else {
|
|
- fb->fb.screen_base = fb->cpuaddr;
|
|
- }
|
|
-
|
|
+ if (fb->fb.screen_base)
|
|
+ iounmap(fb->fb.screen_base);
|
|
+ fb->fb.screen_base = ioremap_wc(fbinfo.base, fb->fb.screen_size);
|
|
if (!fb->fb.screen_base) {
|
|
/* the console may currently be locked */
|
|
console_trylock();
|
|
--- a/include/soc/bcm2835/raspberrypi-firmware.h
|
|
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
|
|
@@ -138,7 +138,6 @@ enum rpi_firmware_property_tag {
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_DEPTH = 0x00048005,
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_PIXEL_ORDER = 0x00048006,
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_ALPHA_MODE = 0x00048007,
|
|
- RPI_FIRMWARE_FRAMEBUFFER_SET_PITCH = 0x00048008,
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET = 0x00048009,
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_OVERSCAN = 0x0004800a,
|
|
RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE = 0x0004800b,
|