media: smiapp: Support the "rotation" property
authorSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 2 May 2018 20:59:00 +0000 (16:59 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Thu, 28 Jun 2018 12:44:00 +0000 (08:44 -0400)
Use the "rotation" property to tell that the sensor is mounted upside
down. This reverses the behaviour of the VFLIP and HFLIP controls as well
as the pixel order.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/i2c/smiapp/smiapp-core.c

index e1f8208..e9e0f21 100644 (file)
@@ -2764,6 +2764,7 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev)
        struct v4l2_fwnode_endpoint *bus_cfg;
        struct fwnode_handle *ep;
        struct fwnode_handle *fwnode = dev_fwnode(dev);
+       u32 rotation;
        int i;
        int rval;
 
@@ -2800,6 +2801,21 @@ static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev)
 
        dev_dbg(dev, "lanes %u\n", hwcfg->lanes);
 
+       rval = fwnode_property_read_u32(fwnode, "rotation", &rotation);
+       if (!rval) {
+               switch (rotation) {
+               case 180:
+                       hwcfg->module_board_orient =
+                               SMIAPP_MODULE_BOARD_ORIENT_180;
+                       /* Fall through */
+               case 0:
+                       break;
+               default:
+                       dev_err(dev, "invalid rotation %u\n", rotation);
+                       goto out_err;
+               }
+       }
+
        /* NVM size is not mandatory */
        fwnode_property_read_u32(fwnode, "nokia,nvm-size", &hwcfg->nvm_size);