[media] solo6x10: Simplify solo_enum_ext_input
authorIsmael Luceno <ismael@iodev.co.uk>
Wed, 4 May 2016 16:21:21 +0000 (13:21 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 28 Jun 2016 11:04:43 +0000 (08:04 -0300)
Additionally, now it specifies which channels it's showing.

Signed-off-by: Ismael Luceno <ismael@iodev.co.uk>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/pci/solo6x10/solo6x10-v4l2.c

index 721ff5320de7ffb5bd0ef3aa80dcb1aca3246c59..953d6bf2232043d3c55cf18dd2f4b3fba6bc4b97 100644 (file)
@@ -386,26 +386,24 @@ static int solo_querycap(struct file *file, void  *priv,
 static int solo_enum_ext_input(struct solo_dev *solo_dev,
                               struct v4l2_input *input)
 {
-       static const char * const dispnames_1[] = { "4UP" };
-       static const char * const dispnames_2[] = { "4UP-1", "4UP-2" };
-       static const char * const dispnames_5[] = {
-               "4UP-1", "4UP-2", "4UP-3", "4UP-4", "16UP"
-       };
-       const char * const *dispnames;
-
-       if (input->index >= (solo_dev->nr_chans + solo_dev->nr_ext))
-               return -EINVAL;
-
-       if (solo_dev->nr_ext == 5)
-               dispnames = dispnames_5;
-       else if (solo_dev->nr_ext == 2)
-               dispnames = dispnames_2;
-       else
-               dispnames = dispnames_1;
+       int ext = input->index - solo_dev->nr_chans;
+       unsigned int nup, first;
 
-       snprintf(input->name, sizeof(input->name), "Multi %s",
-                dispnames[input->index - solo_dev->nr_chans]);
+       if (ext >= solo_dev->nr_ext)
+               return -EINVAL;
 
+       nup   = (ext == 4) ? 16 : 4;
+       first = (ext & 3) << 2; /* first channel in the n-up */
+       snprintf(input->name, sizeof(input->name),
+                "Multi %d-up (cameras %d-%d)",
+                nup, first + 1, first + nup);
+       /* Possible outputs:
+        *  Multi 4-up (cameras 1-4)
+        *  Multi 4-up (cameras 5-8)
+        *  Multi 4-up (cameras 9-12)
+        *  Multi 4-up (cameras 13-16)
+        *  Multi 16-up (cameras 1-16)
+        */
        return 0;
 }