]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: vivid: Move all fb_info references into vivid-osd
authorRicardo Ribalda <ribalda@chromium.org>
Thu, 6 Mar 2025 13:27:30 +0000 (13:27 +0000)
committerHans Verkuil <hverkuil@xs4all.nl>
Thu, 6 Mar 2025 16:28:32 +0000 (17:28 +0100)
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>
drivers/media/test-drivers/vivid/vivid-core.c
drivers/media/test-drivers/vivid/vivid-ctrls.c
drivers/media/test-drivers/vivid/vivid-osd.c
drivers/media/test-drivers/vivid/vivid-osd.h
drivers/media/test-drivers/vivid/vivid-vid-out.c

index 7477ac8cb955647bfb713ef2b171e25ac5d39128..10f5bef3f49cca4c3a0ae62dd4704ac4180a7c43 100644 (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));
index 57346b7145341a0bd0d2b08355e77078f8bba7fc..e340df0b62617a18d34e0b101f4440db9390174e 100644 (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;
index 5c931b94a7b5e2fd4e50f8bc1b2767e5c927de2b..91ad9b314f2ec3a31cc339408db6db627007d1c5 100644 (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);
+}
index f9ac1af25dd3adb86b2f9b2719c4e72eca419ca6..9a7ef83e6eb2e44e20d2a2e98303845703375bcb 100644 (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
index 5ec84db934d6b0fd9f659298f80cd59a25983a2c..c3398bce6c150dab4b76f5fbe8cb7420edbc0132 100644 (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;