media: vivid: Move all fb_info references into vivid-osd

Most references to fb_info are already within vivid-osd.c. This patch
moves the remaining references into vivid-osd.c.

We also take this opportunity to make the function names in vivid-osd
more consistent.

This is a preparation patch to make CONFIG_FB optional for vivid.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
Ricardo Ribalda 2025-03-06 13:27:30 +00:00 committed by Hans Verkuil
parent 308e51f412
commit ff71ef9478
5 changed files with 28 additions and 16 deletions

View file

@ -1410,8 +1410,6 @@ static int vivid_create_queues(struct vivid_dev *dev)
ret = vivid_fb_init(dev);
if (ret)
return ret;
v4l2_info(&dev->v4l2_dev, "Framebuffer device registered as fb%d\n",
dev->fb_info.node);
}
return 0;
}
@ -2197,12 +2195,8 @@ static void vivid_remove(struct platform_device *pdev)
video_device_node_name(&dev->radio_tx_dev));
video_unregister_device(&dev->radio_tx_dev);
}
if (dev->has_fb) {
v4l2_info(&dev->v4l2_dev, "unregistering fb%d\n",
dev->fb_info.node);
unregister_framebuffer(&dev->fb_info);
vivid_fb_release_buffers(dev);
}
if (dev->has_fb)
vivid_fb_deinit(dev);
if (dev->has_meta_cap) {
v4l2_info(&dev->v4l2_dev, "unregistering %s\n",
video_device_node_name(&dev->meta_cap_dev));

View file

@ -402,7 +402,7 @@ static int vivid_fb_s_ctrl(struct v4l2_ctrl *ctrl)
switch (ctrl->id) {
case VIVID_CID_CLEAR_FB:
vivid_clear_fb(dev);
vivid_fb_clear(dev);
break;
}
return 0;

View file

@ -45,13 +45,18 @@ static const u16 rgb565[16] = {
0xffff, 0xffe0, 0x07ff, 0x07e0, 0xf81f, 0xf800, 0x001f, 0x0000
};
void vivid_clear_fb(struct vivid_dev *dev)
unsigned int vivid_fb_green_bits(struct vivid_dev *dev)
{
return dev->fb_defined.green.length;
}
void vivid_fb_clear(struct vivid_dev *dev)
{
void *p = dev->video_vbase;
const u16 *rgb = rgb555;
unsigned x, y;
if (dev->fb_defined.green.length == 6)
if (vivid_fb_green_bits(dev) == 6)
rgb = rgb565;
for (y = 0; y < dev->display_height; y++) {
@ -333,7 +338,7 @@ static int vivid_fb_init_vidmode(struct vivid_dev *dev)
}
/* Release any memory we've grabbed */
void vivid_fb_release_buffers(struct vivid_dev *dev)
static void vivid_fb_release_buffers(struct vivid_dev *dev)
{
if (dev->video_vbase == NULL)
return;
@ -370,7 +375,7 @@ int vivid_fb_init(struct vivid_dev *dev)
return ret;
}
vivid_clear_fb(dev);
vivid_fb_clear(dev);
/* Register the framebuffer */
if (register_framebuffer(&dev->fb_info) < 0) {
@ -380,6 +385,17 @@ int vivid_fb_init(struct vivid_dev *dev)
/* Set the card to the requested mode */
vivid_fb_set_par(&dev->fb_info);
v4l2_info(&dev->v4l2_dev, "Framebuffer device registered as fb%d\n",
dev->fb_info.node);
return 0;
}
void vivid_fb_deinit(struct vivid_dev *dev)
{
v4l2_info(&dev->v4l2_dev, "unregistering fb%d\n", dev->fb_info.node);
unregister_framebuffer(&dev->fb_info);
vivid_fb_release_buffers(dev);
}

View file

@ -9,7 +9,8 @@
#define _VIVID_OSD_H_
int vivid_fb_init(struct vivid_dev *dev);
void vivid_fb_release_buffers(struct vivid_dev *dev);
void vivid_clear_fb(struct vivid_dev *dev);
void vivid_fb_deinit(struct vivid_dev *dev);
void vivid_fb_clear(struct vivid_dev *dev);
unsigned int vivid_fb_green_bits(struct vivid_dev *dev);
#endif

View file

@ -16,6 +16,7 @@
#include <media/v4l2-rect.h>
#include "vivid-core.h"
#include "vivid-osd.h"
#include "vivid-vid-common.h"
#include "vivid-kthread-out.h"
#include "vivid-vid-out.h"
@ -907,7 +908,7 @@ int vivid_vid_out_g_fbuf(struct file *file, void *fh,
a->base = (void *)dev->video_pbase;
a->fmt.width = dev->display_width;
a->fmt.height = dev->display_height;
if (dev->fb_defined.green.length == 5)
if (vivid_fb_green_bits(dev) == 5)
a->fmt.pixelformat = V4L2_PIX_FMT_ARGB555;
else
a->fmt.pixelformat = V4L2_PIX_FMT_RGB565;