Add support to the SQ-905 driver to pass back to user space the
sensor orientation information obtained from the camera during init.
Modifies gspca and the videodev2.h header to create the necessary
API.
[mchehab@redhat.com: Changed "Output is" to "Frames are" at the comments, as suggested at LMML]
Signed-off-by: Adam Baker <linux@baker-net.org.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
        if (input->index != 0)
                return -EINVAL;
        input->type = V4L2_INPUT_TYPE_CAMERA;
+       input->status = gspca_dev->cam.input_flags;
        strncpy(input->name, gspca_dev->sd_desc->name,
                sizeof input->name);
        return 0;
 
                                 * - cannot be > MAX_NURBS
                                 * - when 0 and bulk_size != 0 means
                                 *   1 URB and submit done by subdriver */
+       u32 input_flags;        /* value for ENUM_INPUT status flags */
 };
 
 struct gspca_dev;
 
        gspca_dev->cam.nmodes = ARRAY_SIZE(sq905_mode);
        if (!(ident & SQ905_HIRES_MASK))
                gspca_dev->cam.nmodes--;
+
+       if (ident & SQ905_ORIENTATION_MASK)
+               gspca_dev->cam.input_flags = V4L2_IN_ST_VFLIP;
+       else
+               gspca_dev->cam.input_flags = V4L2_IN_ST_VFLIP |
+                                            V4L2_IN_ST_HFLIP;
        return 0;
 }
 
 
 #define V4L2_IN_ST_NO_SIGNAL   0x00000002
 #define V4L2_IN_ST_NO_COLOR    0x00000004
 
+/* field 'status' - sensor orientation */
+/* If sensor is mounted upside down set both bits */
+#define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */
+#define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */
+
 /* field 'status' - analog */
 #define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
 #define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */