mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
2e715fb4fc
Add support for BCM2712 (Raspberry Pi 5).
3bb5880ab3
Patches were generated from the diff between linux kernel branch linux-6.1.y
and rpi-6.1.y from raspberry pi kernel source:
- git format-patch linux-6.1.y...rpi-6.1.y
Build system: x86_64
Build-tested: bcm2708, bcm2709, bcm2710, bcm2711
Run-tested: bcm2710/RPi3B, bcm2711/RPi4B
Signed-off-by: Marty Jones <mj8263788@gmail.com>
[Remove applied and reverted patches, squash patches and config commits]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
92 lines
3.8 KiB
Diff
92 lines
3.8 KiB
Diff
From 2b6570e66f2769110311593f52f88dba3271a278 Mon Sep 17 00:00:00 2001
|
|
From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
|
|
Date: Fri, 22 Sep 2023 13:47:10 +0300
|
|
Subject: [PATCH] media: rp1: cfe: Add is_image_node()
|
|
|
|
The hardware supports streaming from memory (in addition to streaming
|
|
from the CSI-2 RX), but the driver does not support this at the moment.
|
|
|
|
There are multiple places in the driver which uses
|
|
is_image_output_node(), even if the "output" part is not relevant. Thus,
|
|
in a minor preparation for the possible support for streaming from
|
|
memory, and to make it more obvious that the pieces of code are not
|
|
about the "output", add is_image_node() which will return true for both
|
|
input and output video nodes.
|
|
|
|
While at it, reformat also the metadata related macros to fit inside 80
|
|
columns.
|
|
|
|
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
|
|
---
|
|
.../media/platform/raspberrypi/rp1_cfe/cfe.c | 28 +++++++++++--------
|
|
1 file changed, 17 insertions(+), 11 deletions(-)
|
|
|
|
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
|
|
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
|
|
@@ -199,13 +199,20 @@ static const struct node_description nod
|
|
|
|
#define is_fe_node(node) (((node)->id) >= FE_OUT0)
|
|
#define is_csi2_node(node) (!is_fe_node(node))
|
|
-#define is_image_output_node(node) \
|
|
+
|
|
+#define is_image_output_node(node) \
|
|
(node_desc[(node)->id].buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
|
-#define is_meta_output_node(node) \
|
|
+#define is_image_input_node(node) \
|
|
+ (node_desc[(node)->id].buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
|
|
+#define is_image_node(node) \
|
|
+ (is_image_output_node(node) || is_image_input_node(node))
|
|
+
|
|
+#define is_meta_output_node(node) \
|
|
(node_desc[(node)->id].buf_type == V4L2_BUF_TYPE_META_CAPTURE)
|
|
-#define is_meta_input_node(node) \
|
|
+#define is_meta_input_node(node) \
|
|
(node_desc[(node)->id].buf_type == V4L2_BUF_TYPE_META_OUTPUT)
|
|
-#define is_meta_node(node) (is_meta_output_node(node) || is_meta_input_node(node))
|
|
+#define is_meta_node(node) \
|
|
+ (is_meta_output_node(node) || is_meta_input_node(node))
|
|
|
|
/* To track state across all nodes. */
|
|
#define NUM_STATES 5
|
|
@@ -426,7 +433,7 @@ static int format_show(struct seq_file *
|
|
seq_printf(s, "\nNode %u (%s) state: 0x%lx\n", i,
|
|
node_desc[i].name, state);
|
|
|
|
- if (is_image_output_node(node))
|
|
+ if (is_image_node(node))
|
|
seq_printf(s, "format: " V4L2_FOURCC_CONV " 0x%x\n"
|
|
"resolution: %ux%u\nbpl: %u\nsize: %u\n",
|
|
V4L2_FOURCC_CONV_ARGS(node->fmt.fmt.pix.pixelformat),
|
|
@@ -940,9 +947,8 @@ static int cfe_queue_setup(struct vb2_qu
|
|
{
|
|
struct cfe_node *node = vb2_get_drv_priv(vq);
|
|
struct cfe_device *cfe = node->cfe;
|
|
- unsigned int size = is_image_output_node(node) ?
|
|
- node->fmt.fmt.pix.sizeimage :
|
|
- node->fmt.fmt.meta.buffersize;
|
|
+ unsigned int size = is_image_node(node) ? node->fmt.fmt.pix.sizeimage :
|
|
+ node->fmt.fmt.meta.buffersize;
|
|
|
|
cfe_dbg("%s: [%s]\n", __func__, node_desc[node->id].name);
|
|
|
|
@@ -973,8 +979,8 @@ static int cfe_buffer_prepare(struct vb2
|
|
cfe_dbg_verbose("%s: [%s] buffer:%p\n", __func__,
|
|
node_desc[node->id].name, vb);
|
|
|
|
- size = is_image_output_node(node) ? node->fmt.fmt.pix.sizeimage :
|
|
- node->fmt.fmt.meta.buffersize;
|
|
+ size = is_image_node(node) ? node->fmt.fmt.pix.sizeimage :
|
|
+ node->fmt.fmt.meta.buffersize;
|
|
if (vb2_plane_size(vb, 0) < size) {
|
|
cfe_err("data will not fit into plane (%lu < %lu)\n",
|
|
vb2_plane_size(vb, 0), size);
|
|
@@ -1757,7 +1763,7 @@ static int cfe_register_node(struct cfe_
|
|
node->cfe = cfe;
|
|
node->id = id;
|
|
|
|
- if (is_image_output_node(node)) {
|
|
+ if (is_image_node(node)) {
|
|
fmt = find_format_by_code(cfe_default_format.code);
|
|
if (!fmt) {
|
|
cfe_err("Failed to find format code\n");
|