[media] V4L2: add a device pointer to struct v4l2_subdev
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Mon, 10 Jun 2013 18:07:35 +0000 (15:07 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 21 Jun 2013 19:28:36 +0000 (16:28 -0300)
It is often useful to have simple means to get from a subdevice to the
underlying physical device. This patch adds such a pointer to struct
v4l2_subdev and sets it accordingly in the I2C and SPI cases.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/v4l2-core/v4l2-common.c
include/media/v4l2-subdev.h

index 3b2a7606bc84fca51f27398fb91bcf055c640a93..a95e5e23403fe3254673d30e323c2bebd389e1ef 100644 (file)
@@ -237,6 +237,7 @@ void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client,
        sd->flags |= V4L2_SUBDEV_FL_IS_I2C;
        /* the owner is the same as the i2c_client's driver owner */
        sd->owner = client->driver->driver.owner;
+       sd->dev = &client->dev;
        /* i2c_client and v4l2_subdev point to one another */
        v4l2_set_subdevdata(sd, client);
        i2c_set_clientdata(client, sd);
@@ -370,6 +371,7 @@ void v4l2_spi_subdev_init(struct v4l2_subdev *sd, struct spi_device *spi,
        sd->flags |= V4L2_SUBDEV_FL_IS_SPI;
        /* the owner is the same as the spi_device's driver owner */
        sd->owner = spi->dev.driver->owner;
+       sd->dev = &spi->dev;
        /* spi_device and v4l2_subdev point to one another */
        v4l2_set_subdevdata(sd, spi);
        spi_set_drvdata(spi, sd);
index 21fc9e16d7be07d52b2807a3d01879cd41a2b9b1..5fbb266405f9830bb1c4836a409f238bfe50e323 100644 (file)
@@ -583,6 +583,8 @@ struct v4l2_subdev {
        void *host_priv;
        /* subdev device node */
        struct video_device *devnode;
+       /* pointer to the physical device, if any */
+       struct device *dev;
 };
 
 #define media_entity_to_v4l2_subdev(ent) \