mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
RPiOS 23.2.0-rc3 patches rebased onto 23.2.1 Signed-off-by: Matthias Reichl <hias@horus.com>
66 lines
2.3 KiB
Diff
66 lines
2.3 KiB
Diff
From 569cbe4229df737ce5915c4be2cad534707fb4f7 Mon Sep 17 00:00:00 2001
|
|
From: Iago Toral Quiroga <itoral@igalia.com>
|
|
Date: Tue, 9 Nov 2021 08:50:51 +0100
|
|
Subject: [PATCH 004/139] broadcom/common: retrieve V3D revision number
|
|
|
|
The subrev field from the hub ident3 register is bumped with every
|
|
hardware revision doing backwards incompatible changes so we want to
|
|
keep track of this.
|
|
|
|
Instead of modifying the 'ver' field info to acommodate subrev info,
|
|
which would require a lot of changes, simply add a new 'rev' field in
|
|
devinfo that we can use when we need to make changes based on the
|
|
revision number of a hardware release.
|
|
---
|
|
src/broadcom/common/v3d_device_info.c | 14 +++++++++++++-
|
|
src/broadcom/common/v3d_device_info.h | 3 +++
|
|
2 files changed, 16 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/broadcom/common/v3d_device_info.c b/src/broadcom/common/v3d_device_info.c
|
|
index 7e0862f1f02..7512fe3a06b 100644
|
|
--- a/src/broadcom/common/v3d_device_info.c
|
|
+++ b/src/broadcom/common/v3d_device_info.c
|
|
@@ -36,6 +36,9 @@ v3d_get_device_info(int fd, struct v3d_device_info* devinfo, v3d_ioctl_fun drm_i
|
|
struct drm_v3d_get_param ident1 = {
|
|
.param = DRM_V3D_PARAM_V3D_CORE0_IDENT1,
|
|
};
|
|
+ struct drm_v3d_get_param hub_ident3 = {
|
|
+ .param = DRM_V3D_PARAM_V3D_HUB_IDENT3,
|
|
+ };
|
|
int ret;
|
|
|
|
ret = drm_ioctl(fd, DRM_IOCTL_V3D_GET_PARAM, &ident0);
|
|
@@ -76,5 +79,14 @@ v3d_get_device_info(int fd, struct v3d_device_info* devinfo, v3d_ioctl_fun drm_i
|
|
return false;
|
|
}
|
|
|
|
- return true;
|
|
+ ret = drm_ioctl(fd, DRM_IOCTL_V3D_GET_PARAM, &hub_ident3);
|
|
+ if (ret != 0) {
|
|
+ fprintf(stderr, "Couldn't get V3D core HUB IDENT3: %s\n",
|
|
+ strerror(errno));
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ devinfo->rev = (hub_ident3.value >> 8) & 0xff;
|
|
+
|
|
+ return true;
|
|
}
|
|
diff --git a/src/broadcom/common/v3d_device_info.h b/src/broadcom/common/v3d_device_info.h
|
|
index 97abd9b8d9f..32cb65cf81f 100644
|
|
--- a/src/broadcom/common/v3d_device_info.h
|
|
+++ b/src/broadcom/common/v3d_device_info.h
|
|
@@ -34,6 +34,9 @@ struct v3d_device_info {
|
|
/** Simple V3D version: major * 10 + minor */
|
|
uint8_t ver;
|
|
|
|
+ /** V3D revision number */
|
|
+ uint8_t rev;
|
|
+
|
|
/** Size of the VPM, in bytes. */
|
|
int vpm_size;
|
|
|
|
--
|
|
2.39.2
|
|
|