Commit a8a47860 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 98684298
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -174,6 +174,7 @@ struct gspca_dev {
	const struct sd_desc *sd_desc;		/* subdriver description */
	unsigned ctrl_dis;		/* disabled controls (bit map) */
	unsigned ctrl_inac;		/* inactive controls (bit map) */
	struct v4l2_ctrl_handler ctrl_handler;

	/* autogain and exposure or gain control cluster, these are global as
	   the autogain/exposure functions in autogain_functions.c use them */
+10 −10
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ MODULE_LICENSE("GPL");
struct sd {
	struct gspca_dev gspca_dev;	/* !! must be the first item */

	struct v4l2_ctrl_handler ctrl_handler;
	struct v4l2_ctrl *brightness;
	struct v4l2_ctrl *saturation;
	struct v4l2_ctrl *sharpness;
@@ -161,8 +160,9 @@ static void setilluminators(struct gspca_dev *gspca_dev, bool top, bool bottom)

static int mars_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
	struct gspca_dev *gspca_dev = &sd->gspca_dev;
	struct gspca_dev *gspca_dev =
		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
	struct sd *sd = (struct sd *)gspca_dev;

	gspca_dev->usb_err = 0;

@@ -179,20 +179,20 @@ static int mars_s_ctrl(struct v4l2_ctrl *ctrl)

	switch (ctrl->id) {
	case V4L2_CID_BRIGHTNESS:
		setbrightness(&sd->gspca_dev, ctrl->val);
		setbrightness(gspca_dev, ctrl->val);
		break;
	case V4L2_CID_SATURATION:
		setcolors(&sd->gspca_dev, ctrl->val);
		setcolors(gspca_dev, ctrl->val);
		break;
	case V4L2_CID_GAMMA:
		setgamma(&sd->gspca_dev, ctrl->val);
		setgamma(gspca_dev, ctrl->val);
		break;
	case V4L2_CID_ILLUMINATORS_1:
		setilluminators(&sd->gspca_dev, sd->illum_top->val,
		setilluminators(gspca_dev, sd->illum_top->val,
					   sd->illum_bottom->val);
		break;
	case V4L2_CID_SHARPNESS:
		setsharpness(&sd->gspca_dev, ctrl->val);
		setsharpness(gspca_dev, ctrl->val);
		break;
	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
		jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
@@ -211,7 +211,7 @@ static const struct v4l2_ctrl_ops mars_ctrl_ops = {
static int sd_init_controls(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;

	gspca_dev->vdev.ctrl_handler = hdl;
	v4l2_ctrl_handler_init(hdl, 7);
+13 −13
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ MODULE_LICENSE("GPL");
struct sd {
	struct gspca_dev gspca_dev;

	struct v4l2_ctrl_handler ctrl_handler;
	struct { /* color control cluster */
		struct v4l2_ctrl *brightness;
		struct v4l2_ctrl *contrast;
@@ -1694,8 +1693,9 @@ static int sd_config(struct gspca_dev *gspca_dev,

static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
{
	struct sd *sd = container_of(ctrl->handler, struct sd, ctrl_handler);
	struct gspca_dev *gspca_dev = &sd->gspca_dev;
	struct gspca_dev *gspca_dev =
		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
	struct sd *sd = (struct sd *)gspca_dev;

	gspca_dev->usb_err = 0;

@@ -1705,37 +1705,37 @@ static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
	switch (ctrl->id) {
	/* color control cluster */
	case V4L2_CID_BRIGHTNESS:
		set_cmatrix(&sd->gspca_dev, sd->brightness->val,
		set_cmatrix(gspca_dev, sd->brightness->val,
			sd->contrast->val, sd->saturation->val, sd->hue->val);
		break;
	case V4L2_CID_GAMMA:
		set_gamma(&sd->gspca_dev, ctrl->val);
		set_gamma(gspca_dev, ctrl->val);
		break;
	/* blue/red balance cluster */
	case V4L2_CID_BLUE_BALANCE:
		set_redblue(&sd->gspca_dev, sd->blue->val, sd->red->val);
		set_redblue(gspca_dev, sd->blue->val, sd->red->val);
		break;
	/* h/vflip cluster */
	case V4L2_CID_HFLIP:
		set_hvflip(&sd->gspca_dev, sd->hflip->val, sd->vflip->val);
		set_hvflip(gspca_dev, sd->hflip->val, sd->vflip->val);
		break;
	/* standalone exposure control */
	case V4L2_CID_EXPOSURE:
		set_exposure(&sd->gspca_dev, ctrl->val);
		set_exposure(gspca_dev, ctrl->val);
		break;
	/* standalone gain control */
	case V4L2_CID_GAIN:
		set_gain(&sd->gspca_dev, ctrl->val);
		set_gain(gspca_dev, ctrl->val);
		break;
	/* autogain + exposure or gain control cluster */
	case V4L2_CID_AUTOGAIN:
		if (sd->sensor == SENSOR_SOI968)
			set_gain(&sd->gspca_dev, sd->gain->val);
			set_gain(gspca_dev, sd->gain->val);
		else
			set_exposure(&sd->gspca_dev, sd->exposure->val);
			set_exposure(gspca_dev, sd->exposure->val);
		break;
	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
		set_quality(&sd->gspca_dev, ctrl->val);
		set_quality(gspca_dev, ctrl->val);
		break;
	}
	return gspca_dev->usb_err;
@@ -1748,7 +1748,7 @@ static const struct v4l2_ctrl_ops sd_ctrl_ops = {
static int sd_init_controls(struct gspca_dev *gspca_dev)
{
	struct sd *sd = (struct sd *) gspca_dev;
	struct v4l2_ctrl_handler *hdl = &sd->ctrl_handler;
	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;

	gspca_dev->vdev.ctrl_handler = hdl;
	v4l2_ctrl_handler_init(hdl, 13);
+1 −1
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ static int stv06xx_init_controls(struct gspca_dev *gspca_dev)

	PDEBUG(D_PROBE, "Initializing controls");

	gspca_dev->vdev.ctrl_handler = &sd->ctrl_handler;
	gspca_dev->vdev.ctrl_handler = &gspca_dev->ctrl_handler;
	return sd->sensor->init_controls(sd);
}

+0 −3
Original line number Diff line number Diff line
@@ -89,9 +89,6 @@ struct sd {
	/* A pointer to the currently connected sensor */
	const struct stv06xx_sensor *sensor;

	/* Control handler */
	struct v4l2_ctrl_handler ctrl_handler;

	/* Sensor private data */
	void *sensor_priv;

Loading