staging: vc04_services: isp: Make all references to bcm2835_isp_fmt const
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Fri, 1 May 2020 15:54:20 +0000 (16:54 +0100)
committerpopcornmix <popcornmix@gmail.com>
Wed, 1 Jul 2020 15:33:56 +0000 (16:33 +0100)
The array of potential formats and their configuration should be const.
Rework all accesses so that this is possible.

The list of supported formats was taking a copy of entries from this table.
This is unnecessary, therefore allocate an array of pointers instead of
an array of entries.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
drivers/staging/vc04_services/bcm2835-isp/bcm2835_isp_fmts.h

index edb1a27..bd1bb76 100644 (file)
@@ -67,7 +67,7 @@ struct bcm2835_isp_q_data {
        unsigned int width;
        unsigned int height;
        unsigned int sizeimage;
-       struct bcm2835_isp_fmt *fmt;
+       const struct bcm2835_isp_fmt *fmt;
 };
 
 /*
@@ -232,11 +232,11 @@ struct bcm2835_isp_fmt *find_format_by_fourcc(unsigned int fourcc,
                                              struct bcm2835_isp_node *node)
 {
        struct bcm2835_isp_fmt_list *fmts = &node->supported_fmts;
-       struct bcm2835_isp_fmt *fmt;
+       const struct bcm2835_isp_fmt *fmt;
        unsigned int i;
 
        for (i = 0; i < fmts->num_entries; i++) {
-               fmt = &fmts->list[i];
+               fmt = fmts->list[i];
                if (fmt->fourcc == fourcc)
                        return fmt;
        }
@@ -244,8 +244,9 @@ struct bcm2835_isp_fmt *find_format_by_fourcc(unsigned int fourcc,
        return NULL;
 }
 
-static struct bcm2835_isp_fmt *find_format(struct v4l2_format *f,
-                                          struct bcm2835_isp_node *node)
+static const
+struct bcm2835_isp_fmt *find_format(struct v4l2_format *f,
+                                   struct bcm2835_isp_node *node)
 {
        return find_format_by_fourcc(node_is_stats(node) ?
                                     f->fmt.meta.dataformat :
@@ -666,19 +667,20 @@ static const struct vb2_ops bcm2835_isp_node_queue_ops = {
        .stop_streaming         = bcm2835_isp_node_stop_streaming,
 };
 
-static struct bcm2835_isp_fmt *get_default_format(struct bcm2835_isp_node *node)
+static const
+struct bcm2835_isp_fmt *get_default_format(struct bcm2835_isp_node *node)
 {
-       return &node->supported_fmts.list[0];
+       return node->supported_fmts.list[0];
 }
 
 static inline unsigned int get_bytesperline(int width,
-                                           struct bcm2835_isp_fmt *fmt)
+                                           const struct bcm2835_isp_fmt *fmt)
 {
        return ALIGN((width * fmt->depth) >> 3, fmt->bytesperline_align);
 }
 
 static inline unsigned int get_sizeimage(int bpl, int width, int height,
-                                        struct bcm2835_isp_fmt *fmt)
+                                        const struct bcm2835_isp_fmt *fmt)
 {
        return (bpl * height * fmt->size_multiplier_x2) >> 1;
 }
@@ -892,8 +894,8 @@ static int bcm2835_isp_node_enum_fmt(struct file *file, void  *priv,
 
        if (f->index < fmts->num_entries) {
                /* Format found */
-               f->pixelformat = fmts->list[f->index].fourcc;
-               f->flags = fmts->list[f->index].flags;
+               f->pixelformat = fmts->list[f->index]->fourcc;
+               f->flags = fmts->list[f->index]->flags;
                return 0;
        }
 
@@ -905,7 +907,7 @@ static int bcm2835_isp_enum_framesizes(struct file *file, void *priv,
 {
        struct bcm2835_isp_node *node = video_drvdata(file);
        struct bcm2835_isp_dev *dev = node_get_dev(node);
-       struct bcm2835_isp_fmt *fmt;
+       const struct bcm2835_isp_fmt *fmt;
 
        if (node_is_stats(node) || fsize->index)
                return -EINVAL;
@@ -933,7 +935,7 @@ static int bcm2835_isp_node_try_fmt(struct file *file, void *priv,
                                    struct v4l2_format *f)
 {
        struct bcm2835_isp_node *node = video_drvdata(file);
-       struct bcm2835_isp_fmt *fmt;
+       const struct bcm2835_isp_fmt *fmt;
 
        if (f->type != node->queue.type)
                return -EINVAL;
@@ -1113,7 +1115,7 @@ static const struct v4l2_ioctl_ops bcm2835_isp_node_ioctl_ops = {
 static int bcm2835_isp_get_supported_fmts(struct bcm2835_isp_node *node)
 {
        struct bcm2835_isp_dev *dev = node_get_dev(node);
-       struct bcm2835_isp_fmt *list;
+       struct bcm2835_isp_fmt const **list;
        unsigned int i, j, num_encodings;
        u32 fourccs[MAX_SUPPORTED_ENCODINGS];
        u32 param_size = sizeof(fourccs);
@@ -1144,7 +1146,7 @@ static int bcm2835_isp_get_supported_fmts(struct bcm2835_isp_node *node)
         * Any that aren't supported will waste a very small amount of memory.
         */
        list = devm_kzalloc(dev->dev,
-                           sizeof(struct bcm2835_isp_fmt) * num_encodings,
+                           sizeof(struct bcm2835_isp_fmt *) * num_encodings,
                            GFP_KERNEL);
        if (!list)
                return -ENOMEM;
@@ -1154,7 +1156,7 @@ static int bcm2835_isp_get_supported_fmts(struct bcm2835_isp_node *node)
                const struct bcm2835_isp_fmt *fmt = get_fmt(fourccs[i]);
 
                if (fmt) {
-                       list[j] = *fmt;
+                       list[j] = fmt;
                        j++;
                }
        }
index 9d8ccb4..af3bde1 100644 (file)
@@ -26,7 +26,7 @@ struct bcm2835_isp_fmt {
 };
 
 struct bcm2835_isp_fmt_list {
-       struct bcm2835_isp_fmt *list;
+       struct bcm2835_isp_fmt const **list;
        unsigned int num_entries;
 };