diff options
| author | Hans de Goede <hdegoede@redhat.com> | 2012-05-09 10:19:00 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-14 08:42:34 -0400 |
| commit | a8a478601ac1d8877e23cb832fe4b44042ce6f20 (patch) | |
| tree | c2a0074e12c85ba852f340bbf83ec5fbd0ec348c | |
| parent | 98684298f9ed89554cdaa4afe2554fca8276d1e9 (diff) | |
[media] gscpa: Move ctrl_handler to gspca_dev
We intend to eventually port all sub-drivers to the control-framework. At
which point it will make more sense to have the ctrl_handler in gspca_dev
then to have it in the subdrivers. Lets move it there now, to avoid a lot
of work to move it later.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/video/gspca/gspca.h | 1 | ||||
| -rw-r--r-- | drivers/media/video/gspca/mars.c | 20 | ||||
| -rw-r--r-- | drivers/media/video/gspca/sn9c20x.c | 26 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx.c | 2 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx.h | 3 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c | 9 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c | 14 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx_st6422.c | 6 | ||||
| -rw-r--r-- | drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c | 13 | ||||
| -rw-r--r-- | drivers/media/video/gspca/zc3xx.c | 13 |
10 files changed, 56 insertions, 51 deletions
diff --git a/drivers/media/video/gspca/gspca.h b/drivers/media/video/gspca/gspca.h index 449ff8e37fe7..dd15e07d4666 100644 --- a/drivers/media/video/gspca/gspca.h +++ b/drivers/media/video/gspca/gspca.h | |||
| @@ -174,6 +174,7 @@ struct gspca_dev { | |||
| 174 | const struct sd_desc *sd_desc; /* subdriver description */ | 174 | const struct sd_desc *sd_desc; /* subdriver description */ |
| 175 | unsigned ctrl_dis; /* disabled controls (bit map) */ | 175 | unsigned ctrl_dis; /* disabled controls (bit map) */ |
| 176 | unsigned ctrl_inac; /* inactive controls (bit map) */ | 176 | unsigned ctrl_inac; /* inactive controls (bit map) */ |
| 177 | struct v4l2_ctrl_handler ctrl_handler; | ||
| 177 | 178 | ||
| 178 | /* autogain and exposure or gain control cluster, these are global as | 179 | /* autogain and exposure or gain control cluster, these are global as |
| 179 | the autogain/exposure functions in autogain_functions.c use them */ | 180 | the autogain/exposure functions in autogain_functions.c use them */ |
diff --git a/drivers/media/video/gspca/mars.c b/drivers/media/video/gspca/mars.c index 2950347b8265..ec7b21ee79fb 100644 --- a/drivers/media/video/gspca/mars.c +++ b/drivers/media/video/gspca/mars.c | |||
| @@ -34,7 +34,6 @@ MODULE_LICENSE("GPL"); | |||
| 34 | struct sd { | 34 | struct sd { |
| 35 | struct gspca_dev gspca_dev; /* !! must be the first item */ | 35 | struct gspca_dev gspca_dev; /* !! must be the first item */ |
| 36 | 36 | ||
| 37 | struct v4l2_ctrl_handler ctrl_handler; | ||
| 38 | struct v4l2_ctrl *brightness; | 37 | struct v4l2_ctrl *brightness; |
| 39 | struct v4l2_ctrl *saturation; | 38 | struct v4l2_ctrl *saturation; |
| 40 | struct v4l2_ctrl *sharpness; | 39 | struct v4l2_ctrl *sharpness; |
| @@ -161,8 +160,9 @@ static void setilluminators(struct gspca_dev *gspca_dev, bool top, bool bottom) | |||
| 161 | 160 | ||
| 162 | static int mars_s_ctrl(struct v4l2_ctrl *ctrl) | 161 | static int mars_s_ctrl(struct v4l2_ctrl *ctrl) |
| 163 | { | 162 | { |
| 164 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 163 | struct gspca_dev *gspca_dev = |
| 165 | struct gspca_dev *gspca_dev = &sd->gspca_dev; | 164 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); |
| 165 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 166 | 166 | ||
| 167 | gspca_dev->usb_err = 0; | 167 | gspca_dev->usb_err = 0; |
| 168 | 168 | ||
| @@ -179,20 +179,20 @@ static int mars_s_ctrl(struct v4l2_ctrl *ctrl) | |||
| 179 | 179 | ||
| 180 | switch (ctrl->id) { | 180 | switch (ctrl->id) { |
| 181 | case V4L2_CID_BRIGHTNESS: | 181 | case V4L2_CID_BRIGHTNESS: |
| 182 | setbrightness(&sd->gspca_dev, ctrl->val); | 182 | setbrightness(gspca_dev, ctrl->val); |
| 183 | break; | 183 | break; |
| 184 | case V4L2_CID_SATURATION: | 184 | case V4L2_CID_SATURATION: |
| 185 | setcolors(&sd->gspca_dev, ctrl->val); | 185 | setcolors(gspca_dev, ctrl->val); |
| 186 | break; | 186 | break; |
| 187 | case V4L2_CID_GAMMA: | 187 | case V4L2_CID_GAMMA: |
| 188 | setgamma(&sd->gspca_dev, ctrl->val); | 188 | setgamma(gspca_dev, ctrl->val); |
| 189 | break; | 189 | break; |
| 190 | case V4L2_CID_ILLUMINATORS_1: | 190 | case V4L2_CID_ILLUMINATORS_1: |
| 191 | setilluminators(&sd->gspca_dev, sd->illum_top->val, | 191 | setilluminators(gspca_dev, sd->illum_top->val, |
| 192 | sd->illum_bottom->val); | 192 | sd->illum_bottom->val); |
| 193 | break; | 193 | break; |
| 194 | case V4L2_CID_SHARPNESS: | 194 | case V4L2_CID_SHARPNESS: |
| 195 | setsharpness(&sd->gspca_dev, ctrl->val); | 195 | setsharpness(gspca_dev, ctrl->val); |
| 196 | break; | 196 | break; |
| 197 | case V4L2_CID_JPEG_COMPRESSION_QUALITY: | 197 | case V4L2_CID_JPEG_COMPRESSION_QUALITY: |
| 198 | jpeg_set_qual(sd->jpeg_hdr, ctrl->val); | 198 | jpeg_set_qual(sd->jpeg_hdr, ctrl->val); |
| @@ -211,7 +211,7 @@ static const struct v4l2_ctrl_ops mars_ctrl_ops = { | |||
| 211 | static int sd_init_controls(struct gspca_dev *gspca_dev) | 211 | static int sd_init_controls(struct gspca_dev *gspca_dev) |
| 212 | { | 212 | { |
| 213 | struct sd *sd = (struct sd *) gspca_dev; | 213 | struct sd *sd = (struct sd *) gspca_dev; |
| 214 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 214 | struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; |
| 215 | 215 | ||
| 216 | gspca_dev->vdev.ctrl_handler = hdl; | 216 | gspca_dev->vdev.ctrl_handler = hdl; |
| 217 | v4l2_ctrl_handler_init(hdl, 7); | 217 | v4l2_ctrl_handler_init(hdl, 7); |
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c index 1758ed98cf16..ad098202d7f0 100644 --- a/drivers/media/video/gspca/sn9c20x.c +++ b/drivers/media/video/gspca/sn9c20x.c | |||
| @@ -70,7 +70,6 @@ MODULE_LICENSE("GPL"); | |||
| 70 | struct sd { | 70 | struct sd { |
| 71 | struct gspca_dev gspca_dev; | 71 | struct gspca_dev gspca_dev; |
| 72 | 72 | ||
| 73 | struct v4l2_ctrl_handler ctrl_handler; | ||
| 74 | struct { /* color control cluster */ | 73 | struct { /* color control cluster */ |
| 75 | struct v4l2_ctrl *brightness; | 74 | struct v4l2_ctrl *brightness; |
| 76 | struct v4l2_ctrl *contrast; | 75 | struct v4l2_ctrl *contrast; |
| @@ -1694,8 +1693,9 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
| 1694 | 1693 | ||
| 1695 | static int sd_s_ctrl(struct v4l2_ctrl *ctrl) | 1694 | static int sd_s_ctrl(struct v4l2_ctrl *ctrl) |
| 1696 | { | 1695 | { |
| 1697 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 1696 | struct gspca_dev *gspca_dev = |
| 1698 | struct gspca_dev *gspca_dev = &sd->gspca_dev; | 1697 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); |
| 1698 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 1699 | 1699 | ||
| 1700 | gspca_dev->usb_err = 0; | 1700 | gspca_dev->usb_err = 0; |
| 1701 | 1701 | ||
| @@ -1705,37 +1705,37 @@ static int sd_s_ctrl(struct v4l2_ctrl *ctrl) | |||
| 1705 | switch (ctrl->id) { | 1705 | switch (ctrl->id) { |
| 1706 | /* color control cluster */ | 1706 | /* color control cluster */ |
| 1707 | case V4L2_CID_BRIGHTNESS: | 1707 | case V4L2_CID_BRIGHTNESS: |
| 1708 | set_cmatrix(&sd->gspca_dev, sd->brightness->val, | 1708 | set_cmatrix(gspca_dev, sd->brightness->val, |
| 1709 | sd->contrast->val, sd->saturation->val, sd->hue->val); | 1709 | sd->contrast->val, sd->saturation->val, sd->hue->val); |
| 1710 | break; | 1710 | break; |
| 1711 | case V4L2_CID_GAMMA: | 1711 | case V4L2_CID_GAMMA: |
| 1712 | set_gamma(&sd->gspca_dev, ctrl->val); | 1712 | set_gamma(gspca_dev, ctrl->val); |
| 1713 | break; | 1713 | break; |
| 1714 | /* blue/red balance cluster */ | 1714 | /* blue/red balance cluster */ |
| 1715 | case V4L2_CID_BLUE_BALANCE: | 1715 | case V4L2_CID_BLUE_BALANCE: |
| 1716 | set_redblue(&sd->gspca_dev, sd->blue->val, sd->red->val); | 1716 | set_redblue(gspca_dev, sd->blue->val, sd->red->val); |
| 1717 | break; | 1717 | break; |
| 1718 | /* h/vflip cluster */ | 1718 | /* h/vflip cluster */ |
| 1719 | case V4L2_CID_HFLIP: | 1719 | case V4L2_CID_HFLIP: |
| 1720 | set_hvflip(&sd->gspca_dev, sd->hflip->val, sd->vflip->val); | 1720 | set_hvflip(gspca_dev, sd->hflip->val, sd->vflip->val); |
| 1721 | break; | 1721 | break; |
| 1722 | /* standalone exposure control */ | 1722 | /* standalone exposure control */ |
| 1723 | case V4L2_CID_EXPOSURE: | 1723 | case V4L2_CID_EXPOSURE: |
| 1724 | set_exposure(&sd->gspca_dev, ctrl->val); | 1724 | set_exposure(gspca_dev, ctrl->val); |
| 1725 | break; | 1725 | break; |
| 1726 | /* standalone gain control */ | 1726 | /* standalone gain control */ |
| 1727 | case V4L2_CID_GAIN: | 1727 | case V4L2_CID_GAIN: |
| 1728 | set_gain(&sd->gspca_dev, ctrl->val); | 1728 | set_gain(gspca_dev, ctrl->val); |
| 1729 | break; | 1729 | break; |
| 1730 | /* autogain + exposure or gain control cluster */ | 1730 | /* autogain + exposure or gain control cluster */ |
| 1731 | case V4L2_CID_AUTOGAIN: | 1731 | case V4L2_CID_AUTOGAIN: |
| 1732 | if (sd->sensor == SENSOR_SOI968) | 1732 | if (sd->sensor == SENSOR_SOI968) |
| 1733 | set_gain(&sd->gspca_dev, sd->gain->val); | 1733 | set_gain(gspca_dev, sd->gain->val); |
| 1734 | else | 1734 | else |
| 1735 | set_exposure(&sd->gspca_dev, sd->exposure->val); | 1735 | set_exposure(gspca_dev, sd->exposure->val); |
| 1736 | break; | 1736 | break; |
| 1737 | case V4L2_CID_JPEG_COMPRESSION_QUALITY: | 1737 | case V4L2_CID_JPEG_COMPRESSION_QUALITY: |
| 1738 | set_quality(&sd->gspca_dev, ctrl->val); | 1738 | set_quality(gspca_dev, ctrl->val); |
| 1739 | break; | 1739 | break; |
| 1740 | } | 1740 | } |
| 1741 | return gspca_dev->usb_err; | 1741 | return gspca_dev->usb_err; |
| @@ -1748,7 +1748,7 @@ static const struct v4l2_ctrl_ops sd_ctrl_ops = { | |||
| 1748 | static int sd_init_controls(struct gspca_dev *gspca_dev) | 1748 | static int sd_init_controls(struct gspca_dev *gspca_dev) |
| 1749 | { | 1749 | { |
| 1750 | struct sd *sd = (struct sd *) gspca_dev; | 1750 | struct sd *sd = (struct sd *) gspca_dev; |
| 1751 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 1751 | struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; |
| 1752 | 1752 | ||
| 1753 | gspca_dev->vdev.ctrl_handler = hdl; | 1753 | gspca_dev->vdev.ctrl_handler = hdl; |
| 1754 | v4l2_ctrl_handler_init(hdl, 13); | 1754 | v4l2_ctrl_handler_init(hdl, 13); |
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.c b/drivers/media/video/gspca/stv06xx/stv06xx.c index cebd615effeb..999ec7764449 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx.c +++ b/drivers/media/video/gspca/stv06xx/stv06xx.c | |||
| @@ -268,7 +268,7 @@ static int stv06xx_init_controls(struct gspca_dev *gspca_dev) | |||
| 268 | 268 | ||
| 269 | PDEBUG(D_PROBE, "Initializing controls"); | 269 | PDEBUG(D_PROBE, "Initializing controls"); |
| 270 | 270 | ||
| 271 | gspca_dev->vdev.ctrl_handler = &sd->ctrl_handler; | 271 | gspca_dev->vdev.ctrl_handler = &gspca_dev->ctrl_handler; |
| 272 | return sd->sensor->init_controls(sd); | 272 | return sd->sensor->init_controls(sd); |
| 273 | } | 273 | } |
| 274 | 274 | ||
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx.h b/drivers/media/video/gspca/stv06xx/stv06xx.h index b7cbc6b878d3..34957a4ec150 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx.h +++ b/drivers/media/video/gspca/stv06xx/stv06xx.h | |||
| @@ -89,9 +89,6 @@ struct sd { | |||
| 89 | /* A pointer to the currently connected sensor */ | 89 | /* A pointer to the currently connected sensor */ |
| 90 | const struct stv06xx_sensor *sensor; | 90 | const struct stv06xx_sensor *sensor; |
| 91 | 91 | ||
| 92 | /* Control handler */ | ||
| 93 | struct v4l2_ctrl_handler ctrl_handler; | ||
| 94 | |||
| 95 | /* Sensor private data */ | 92 | /* Sensor private data */ |
| 96 | void *sensor_priv; | 93 | void *sensor_priv; |
| 97 | 94 | ||
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c index 74cbd386600b..06fa54c5efb2 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c +++ b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c | |||
| @@ -335,15 +335,16 @@ static int hdcs_set_size(struct sd *sd, | |||
| 335 | 335 | ||
| 336 | static int hdcs_s_ctrl(struct v4l2_ctrl *ctrl) | 336 | static int hdcs_s_ctrl(struct v4l2_ctrl *ctrl) |
| 337 | { | 337 | { |
| 338 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 338 | struct gspca_dev *gspca_dev = |
| 339 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | ||
| 339 | int err = -EINVAL; | 340 | int err = -EINVAL; |
| 340 | 341 | ||
| 341 | switch (ctrl->id) { | 342 | switch (ctrl->id) { |
| 342 | case V4L2_CID_GAIN: | 343 | case V4L2_CID_GAIN: |
| 343 | err = hdcs_set_gain(&sd->gspca_dev, ctrl->val); | 344 | err = hdcs_set_gain(gspca_dev, ctrl->val); |
| 344 | break; | 345 | break; |
| 345 | case V4L2_CID_EXPOSURE: | 346 | case V4L2_CID_EXPOSURE: |
| 346 | err = hdcs_set_exposure(&sd->gspca_dev, ctrl->val); | 347 | err = hdcs_set_exposure(gspca_dev, ctrl->val); |
| 347 | break; | 348 | break; |
| 348 | } | 349 | } |
| 349 | return err; | 350 | return err; |
| @@ -355,7 +356,7 @@ static const struct v4l2_ctrl_ops hdcs_ctrl_ops = { | |||
| 355 | 356 | ||
| 356 | static int hdcs_init_controls(struct sd *sd) | 357 | static int hdcs_init_controls(struct sd *sd) |
| 357 | { | 358 | { |
| 358 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 359 | struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; |
| 359 | 360 | ||
| 360 | v4l2_ctrl_handler_init(hdl, 2); | 361 | v4l2_ctrl_handler_init(hdl, 2); |
| 361 | v4l2_ctrl_new_std(hdl, &hdcs_ctrl_ops, | 362 | v4l2_ctrl_new_std(hdl, &hdcs_ctrl_ops, |
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c index c03b13e70b56..cdfc3d05ab6b 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c +++ b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c | |||
| @@ -87,24 +87,26 @@ static struct v4l2_pix_format pb0100_mode[] = { | |||
| 87 | 87 | ||
| 88 | static int pb0100_s_ctrl(struct v4l2_ctrl *ctrl) | 88 | static int pb0100_s_ctrl(struct v4l2_ctrl *ctrl) |
| 89 | { | 89 | { |
| 90 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 90 | struct gspca_dev *gspca_dev = |
| 91 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | ||
| 92 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 91 | struct pb0100_ctrls *ctrls = sd->sensor_priv; | 93 | struct pb0100_ctrls *ctrls = sd->sensor_priv; |
| 92 | int err = -EINVAL; | 94 | int err = -EINVAL; |
| 93 | 95 | ||
| 94 | switch (ctrl->id) { | 96 | switch (ctrl->id) { |
| 95 | case V4L2_CID_AUTOGAIN: | 97 | case V4L2_CID_AUTOGAIN: |
| 96 | err = pb0100_set_autogain(&sd->gspca_dev, ctrl->val); | 98 | err = pb0100_set_autogain(gspca_dev, ctrl->val); |
| 97 | if (err) | 99 | if (err) |
| 98 | break; | 100 | break; |
| 99 | if (ctrl->val) | 101 | if (ctrl->val) |
| 100 | break; | 102 | break; |
| 101 | err = pb0100_set_gain(&sd->gspca_dev, ctrls->gain->val); | 103 | err = pb0100_set_gain(gspca_dev, ctrls->gain->val); |
| 102 | if (err) | 104 | if (err) |
| 103 | break; | 105 | break; |
| 104 | err = pb0100_set_exposure(&sd->gspca_dev, ctrls->exposure->val); | 106 | err = pb0100_set_exposure(gspca_dev, ctrls->exposure->val); |
| 105 | break; | 107 | break; |
| 106 | case V4L2_CTRL_CLASS_USER + 0x1001: | 108 | case V4L2_CTRL_CLASS_USER + 0x1001: |
| 107 | err = pb0100_set_autogain_target(&sd->gspca_dev, ctrl->val); | 109 | err = pb0100_set_autogain_target(gspca_dev, ctrl->val); |
| 108 | break; | 110 | break; |
| 109 | } | 111 | } |
| 110 | return err; | 112 | return err; |
| @@ -116,7 +118,7 @@ static const struct v4l2_ctrl_ops pb0100_ctrl_ops = { | |||
| 116 | 118 | ||
| 117 | static int pb0100_init_controls(struct sd *sd) | 119 | static int pb0100_init_controls(struct sd *sd) |
| 118 | { | 120 | { |
| 119 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 121 | struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; |
| 120 | struct pb0100_ctrls *ctrls; | 122 | struct pb0100_ctrls *ctrls; |
| 121 | static const struct v4l2_ctrl_config autogain_target = { | 123 | static const struct v4l2_ctrl_config autogain_target = { |
| 122 | .ops = &pb0100_ctrl_ops, | 124 | .ops = &pb0100_ctrl_ops, |
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c b/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c index bbfe8210d590..8a57990dfe0f 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c +++ b/drivers/media/video/gspca/stv06xx/stv06xx_st6422.c | |||
| @@ -67,7 +67,9 @@ static int setexposure(struct sd *sd, s16 expo); | |||
| 67 | 67 | ||
| 68 | static int st6422_s_ctrl(struct v4l2_ctrl *ctrl) | 68 | static int st6422_s_ctrl(struct v4l2_ctrl *ctrl) |
| 69 | { | 69 | { |
| 70 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 70 | struct gspca_dev *gspca_dev = |
| 71 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | ||
| 72 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 71 | int err = -EINVAL; | 73 | int err = -EINVAL; |
| 72 | 74 | ||
| 73 | switch (ctrl->id) { | 75 | switch (ctrl->id) { |
| @@ -98,7 +100,7 @@ static const struct v4l2_ctrl_ops st6422_ctrl_ops = { | |||
| 98 | 100 | ||
| 99 | static int st6422_init_controls(struct sd *sd) | 101 | static int st6422_init_controls(struct sd *sd) |
| 100 | { | 102 | { |
| 101 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 103 | struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; |
| 102 | 104 | ||
| 103 | v4l2_ctrl_handler_init(hdl, 4); | 105 | v4l2_ctrl_handler_init(hdl, 4); |
| 104 | v4l2_ctrl_new_std(hdl, &st6422_ctrl_ops, | 106 | v4l2_ctrl_new_std(hdl, &st6422_ctrl_ops, |
diff --git a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c index 1b7a68a5a43d..748e1421d6d8 100644 --- a/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c +++ b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c | |||
| @@ -46,21 +46,22 @@ static struct v4l2_pix_format vv6410_mode[] = { | |||
| 46 | 46 | ||
| 47 | static int vv6410_s_ctrl(struct v4l2_ctrl *ctrl) | 47 | static int vv6410_s_ctrl(struct v4l2_ctrl *ctrl) |
| 48 | { | 48 | { |
| 49 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 49 | struct gspca_dev *gspca_dev = |
| 50 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); | ||
| 50 | int err = -EINVAL; | 51 | int err = -EINVAL; |
| 51 | 52 | ||
| 52 | switch (ctrl->id) { | 53 | switch (ctrl->id) { |
| 53 | case V4L2_CID_HFLIP: | 54 | case V4L2_CID_HFLIP: |
| 54 | err = vv6410_set_hflip(&sd->gspca_dev, ctrl->val); | 55 | err = vv6410_set_hflip(gspca_dev, ctrl->val); |
| 55 | break; | 56 | break; |
| 56 | case V4L2_CID_VFLIP: | 57 | case V4L2_CID_VFLIP: |
| 57 | err = vv6410_set_vflip(&sd->gspca_dev, ctrl->val); | 58 | err = vv6410_set_vflip(gspca_dev, ctrl->val); |
| 58 | break; | 59 | break; |
| 59 | case V4L2_CID_GAIN: | 60 | case V4L2_CID_GAIN: |
| 60 | err = vv6410_set_analog_gain(&sd->gspca_dev, ctrl->val); | 61 | err = vv6410_set_analog_gain(gspca_dev, ctrl->val); |
| 61 | break; | 62 | break; |
| 62 | case V4L2_CID_EXPOSURE: | 63 | case V4L2_CID_EXPOSURE: |
| 63 | err = vv6410_set_exposure(&sd->gspca_dev, ctrl->val); | 64 | err = vv6410_set_exposure(gspca_dev, ctrl->val); |
| 64 | break; | 65 | break; |
| 65 | } | 66 | } |
| 66 | return err; | 67 | return err; |
| @@ -91,7 +92,7 @@ static int vv6410_probe(struct sd *sd) | |||
| 91 | 92 | ||
| 92 | static int vv6410_init_controls(struct sd *sd) | 93 | static int vv6410_init_controls(struct sd *sd) |
| 93 | { | 94 | { |
| 94 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 95 | struct v4l2_ctrl_handler *hdl = &sd->gspca_dev.ctrl_handler; |
| 95 | 96 | ||
| 96 | v4l2_ctrl_handler_init(hdl, 4); | 97 | v4l2_ctrl_handler_init(hdl, 4); |
| 97 | v4l2_ctrl_new_std(hdl, &vv6410_ctrl_ops, | 98 | v4l2_ctrl_new_std(hdl, &vv6410_ctrl_ops, |
diff --git a/drivers/media/video/gspca/zc3xx.c b/drivers/media/video/gspca/zc3xx.c index a8839fb3c1d6..0d504a7c512c 100644 --- a/drivers/media/video/gspca/zc3xx.c +++ b/drivers/media/video/gspca/zc3xx.c | |||
| @@ -39,7 +39,6 @@ static int force_sensor = -1; | |||
| 39 | struct sd { | 39 | struct sd { |
| 40 | struct gspca_dev gspca_dev; /* !! must be the first item */ | 40 | struct gspca_dev gspca_dev; /* !! must be the first item */ |
| 41 | 41 | ||
| 42 | struct v4l2_ctrl_handler ctrl_handler; | ||
| 43 | struct { /* gamma/brightness/contrast control cluster */ | 42 | struct { /* gamma/brightness/contrast control cluster */ |
| 44 | struct v4l2_ctrl *gamma; | 43 | struct v4l2_ctrl *gamma; |
| 45 | struct v4l2_ctrl *brightness; | 44 | struct v4l2_ctrl *brightness; |
| @@ -6328,8 +6327,9 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
| 6328 | 6327 | ||
| 6329 | static int zcxx_g_volatile_ctrl(struct v4l2_ctrl *ctrl) | 6328 | static int zcxx_g_volatile_ctrl(struct v4l2_ctrl *ctrl) |
| 6330 | { | 6329 | { |
| 6331 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 6330 | struct gspca_dev *gspca_dev = |
| 6332 | struct gspca_dev *gspca_dev = &sd->gspca_dev; | 6331 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); |
| 6332 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 6333 | 6333 | ||
| 6334 | switch (ctrl->id) { | 6334 | switch (ctrl->id) { |
| 6335 | case V4L2_CID_AUTOGAIN: | 6335 | case V4L2_CID_AUTOGAIN: |
| @@ -6343,8 +6343,9 @@ static int zcxx_g_volatile_ctrl(struct v4l2_ctrl *ctrl) | |||
| 6343 | 6343 | ||
| 6344 | static int zcxx_s_ctrl(struct v4l2_ctrl *ctrl) | 6344 | static int zcxx_s_ctrl(struct v4l2_ctrl *ctrl) |
| 6345 | { | 6345 | { |
| 6346 | struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler); | 6346 | struct gspca_dev *gspca_dev = |
| 6347 | struct gspca_dev *gspca_dev = &sd->gspca_dev; | 6347 | container_of(ctrl->handler, struct gspca_dev, ctrl_handler); |
| 6348 | struct sd *sd = (struct sd *)gspca_dev; | ||
| 6348 | int i, qual; | 6349 | int i, qual; |
| 6349 | 6350 | ||
| 6350 | gspca_dev->usb_err = 0; | 6351 | gspca_dev->usb_err = 0; |
| @@ -6404,7 +6405,7 @@ static const struct v4l2_ctrl_ops zcxx_ctrl_ops = { | |||
| 6404 | static int sd_init_controls(struct gspca_dev *gspca_dev) | 6405 | static int sd_init_controls(struct gspca_dev *gspca_dev) |
| 6405 | { | 6406 | { |
| 6406 | struct sd *sd = (struct sd *)gspca_dev; | 6407 | struct sd *sd = (struct sd *)gspca_dev; |
| 6407 | struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler; | 6408 | struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; |
| 6408 | static const u8 gamma[SENSOR_MAX] = { | 6409 | static const u8 gamma[SENSOR_MAX] = { |
| 6409 | [SENSOR_ADCM2700] = 4, | 6410 | [SENSOR_ADCM2700] = 4, |
| 6410 | [SENSOR_CS2102] = 4, | 6411 | [SENSOR_CS2102] = 4, |
