rpms/kernel/devel kernel.spec, 1.1483, 1.1484 linux-2.6-v4l-dvb-experimental.patch, 1.7, 1.8 linux-2.6-v4l-dvb-fixes.patch, 1.11, 1.12

Mauro Carvalho Chehab mchehab at fedoraproject.org
Mon Mar 30 12:12:20 UTC 2009


Author: mchehab

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24066

Modified Files:
	kernel.spec linux-2.6-v4l-dvb-experimental.patch 
	linux-2.6-v4l-dvb-fixes.patch 
Log Message:
A few driver/media cleanups and fixes, due to v4l2 subdev conversion:

V4L/DVB (11308): msp3400: use the V4L2 header since no V4L1 code is there
V4L/DVB (11309): cx25840: cleanup: remove intermediate 'ioctl' step
V4L/DVB (11310): cx18: remove intermediate 'ioctl' step
V4L/DVB (11311): v4l: replace 'ioctl' references in v4l i2c drivers
V4L/DVB (11312): tuner: remove V4L1 code from this driver.
V4L/DVB (11313): v4l2-subdev: add enum_framesizes and enum_frameintervals.
V4L/DVB (11314): au8522: remove unused I2C_DRIVERID
V4L/DVB (11315): cx25840: fix 'unused variable' warning.
V4L/DVB (11316): saa7191: tuner ops wasn't set.




Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1483
retrieving revision 1.1484
diff -u -r1.1483 -r1.1484
--- kernel.spec	30 Mar 2009 08:56:10 -0000	1.1483
+++ kernel.spec	30 Mar 2009 12:11:43 -0000	1.1484
@@ -1844,6 +1844,9 @@
 # and build.
 
 %changelog
+* Mon Mar 30 2009 Mauro Carvalho Chehab <mchehab at redhat.com>
+- some fixes of troubles caused by v4l2 subdev conversion
+
 * Mon Mar 30 2009 Mark McLoughlin <markmc at redhat.com> 2.6.29-21
 - Fix guest->remote network stall with virtio/GSO (#490266)
 

linux-2.6-v4l-dvb-experimental.patch:

Index: linux-2.6-v4l-dvb-experimental.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-experimental.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- linux-2.6-v4l-dvb-experimental.patch	30 Mar 2009 04:10:36 -0000	1.7
+++ linux-2.6-v4l-dvb-experimental.patch	30 Mar 2009 12:11:44 -0000	1.8
@@ -14281,7 +14281,7 @@
 +}
 +#endif
 diff --git a/drivers/media/video/cx25840/cx25840-audio.c b/drivers/media/video/cx25840/cx25840-audio.c
-index d199d80..95e3f95 100644
+index 93d74be..2f846f5 100644
 --- a/drivers/media/video/cx25840/cx25840-audio.c
 +++ b/drivers/media/video/cx25840/cx25840-audio.c
 @@ -32,7 +32,7 @@ static int set_audclk_freq(struct i2c_client *client, u32 freq)
@@ -14420,7 +14420,7 @@
  
  static int get_volume(struct i2c_client *client)
 diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c
-index a9b8e52..5884daf 100644
+index 737ee4e..f8ed3c0 100644
 --- a/drivers/media/video/cx25840/cx25840-core.c
 +++ b/drivers/media/video/cx25840/cx25840-core.c
 @@ -345,6 +345,77 @@ static void cx23885_initialize(struct i2c_client *client)
@@ -14613,7 +14613,7 @@
  	}
  
  	return 0;
-@@ -1120,6 +1206,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
+@@ -1118,6 +1204,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
  			cx25836_initialize(client);
  		else if (state->is_cx23885)
  			cx23885_initialize(client);
@@ -14622,7 +14622,7 @@
  		else
  			cx25840_initialize(client);
  	}
-@@ -1175,7 +1263,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+@@ -1159,7 +1247,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
  	v4l_dbg(1, cx25840_debug, client, "%s output\n",
  			enable ? "enable" : "disable");
  	if (enable) {
@@ -14631,7 +14631,7 @@
  			u8 v = (cx25840_read(client, 0x421) | 0x0b);
  			cx25840_write(client, 0x421, v);
  		} else {
-@@ -1185,7 +1273,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+@@ -1169,7 +1257,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
  					state->is_cx25836 ? 0x04 : 0x07);
  		}
  	} else {
@@ -14640,7 +14640,7 @@
  			u8 v = cx25840_read(client, 0x421) & ~(0x0b);
  			cx25840_write(client, 0x421, v);
  		} else {
-@@ -1366,6 +1454,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
+@@ -1350,6 +1438,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
  		cx25836_initialize(client);
  	else if (state->is_cx23885)
  		cx23885_initialize(client);
@@ -14649,7 +14649,7 @@
  	else
  		cx25840_initialize(client);
  	return 0;
-@@ -1465,6 +1555,8 @@ static int cx25840_probe(struct i2c_client *client,
+@@ -1449,6 +1539,8 @@ static int cx25840_probe(struct i2c_client *client,
  		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
  	} else if (device_id == 0x1313) {
  		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
@@ -14658,7 +14658,7 @@
  	}
  	else {
  		v4l_dbg(1, cx25840_debug, client, "cx25840 not found\n");
-@@ -1487,6 +1579,7 @@ static int cx25840_probe(struct i2c_client *client,
+@@ -1471,6 +1563,7 @@ static int cx25840_probe(struct i2c_client *client,
  	state->c = client;
  	state->is_cx25836 = ((device_id & 0xff00) == 0x8300);
  	state->is_cx23885 = (device_id == 0x0000) || (device_id == 0x1313);
@@ -14667,7 +14667,7 @@
  	state->aud_input = CX25840_AUDIO8;
  	state->audclk_freq = 48000;
 diff --git a/drivers/media/video/cx25840/cx25840-core.h b/drivers/media/video/cx25840/cx25840-core.h
-index be05582..93941be 100644
+index 9ad0eb8..814b565 100644
 --- a/drivers/media/video/cx25840/cx25840-core.h
 +++ b/drivers/media/video/cx25840/cx25840-core.h
 @@ -50,6 +50,7 @@ struct cx25840_state {

linux-2.6-v4l-dvb-fixes.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.11 -r 1.12 linux-2.6-v4l-dvb-fixes.patch
Index: linux-2.6-v4l-dvb-fixes.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-fixes.patch,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- linux-2.6-v4l-dvb-fixes.patch	30 Mar 2009 04:10:36 -0000	1.11
+++ linux-2.6-v4l-dvb-fixes.patch	30 Mar 2009 12:11:45 -0000	1.12
@@ -182,7 +182,7 @@
       V4L/DVB (11026): sh-mobile-ceu-camera: set field to the value, configured at open()
       V4L/DVB (11027): soc-camera: configure drivers with a default format at probe time
 
-Hans Verkuil (163):
+Hans Verkuil (171):
       V4L/DVB (10231): v4l2-subdev: add v4l2_ext_controls support
       V4L/DVB (10244): v4l2: replace a few snprintfs with strlcpy
       V4L/DVB (10246): saa6752hs: convert to v4l2_subdev.
@@ -346,6 +346,14 @@
       V4L/DVB (11303): tda7432: remove legacy code for old-style i2c API
       V4L/DVB (11304): v4l2: remove v4l2_subdev_command calls where they are no longer needed.
       V4L/DVB (11305): cx88: prevent probing rtc and ir devices
+      V4L/DVB (11309): cx25840: cleanup: remove intermediate 'ioctl' step
+      V4L/DVB (11310): cx18: remove intermediate 'ioctl' step
+      V4L/DVB (11311): v4l: replace 'ioctl' references in v4l i2c drivers
+      V4L/DVB (11312): tuner: remove V4L1 code from this driver.
+      V4L/DVB (11313): v4l2-subdev: add enum_framesizes and enum_frameintervals.
+      V4L/DVB (11314): au8522: remove unused I2C_DRIVERID
+      V4L/DVB (11315): cx25840: fix 'unused variable' warning.
+      V4L/DVB (11316): saa7191: tuner ops wasn't set.
 
 Hans Werner (1):
       V4L/DVB (10392): lnbp21: documentation about the system register
@@ -534,7 +542,7 @@
       V4L/DVB (10823): saa7134: add DVB support for Avermedia A700 cards
       V4L/DVB (10948): flexcop-pci: Print a message in case the new stream watchdog detects a problem
 
-Mauro Carvalho Chehab (48):
+Mauro Carvalho Chehab (49):
       V4L/DVB (10211): vivi: Implements 4 inputs on vivi
       V4L/DVB (10298): remove err macro from few usb devices
       V4L/DVB (10305): videobuf-vmalloc: Fix: videobuf memory were never freed
@@ -583,6 +591,7 @@
       V4L/DVB (11225): v4lgrab: fix compilation warnings
       V4L/DVB (11226): avoid warnings for request_ihex_firmware on dabusb and vicam
       V4L/DVB (11227): ce6230: avoid using unitialized var
+      V4L/DVB (11308): msp3400: use the V4L2 header since no V4L1 code is there
 
 Michael Krufky (36):
       V4L/DVB (10415): dib0700: add data debug to dib0700_i2c_xfer_new
@@ -11437,10 +11446,10 @@
  /*
 diff --git a/drivers/media/dvb/frontends/au8522_decoder.c b/drivers/media/dvb/frontends/au8522_decoder.c
 new file mode 100644
-index 0000000..2617f68
+index 0000000..d63e152
 --- /dev/null
 +++ b/drivers/media/dvb/frontends/au8522_decoder.c
-@@ -0,0 +1,836 @@
+@@ -0,0 +1,835 @@
 +/*
 + * Auvitek AU8522 QAM/8VSB demodulator driver and video decoder
 + *
@@ -12272,7 +12281,6 @@
 +
 +static struct v4l2_i2c_driver_data v4l2_i2c_data = {
 +	.name = "au8522",
-+	.driverid = I2C_DRIVERID_AU8522,
 +	.probe = au8522_probe,
 +	.remove = au8522_remove,
 +	.id_table = au8522_id,
@@ -47719,8 +47727,152 @@
  int cx18_audio_set_io(struct cx18 *cx);
 -void cx18_audio_set_route(struct cx18 *cx, struct v4l2_routing *route);
 -void cx18_audio_set_audio_clock_freq(struct cx18 *cx, u8 freq);
+diff --git a/drivers/media/video/cx18/cx18-av-audio.c b/drivers/media/video/cx18/cx18-av-audio.c
+index a2f0ad5..9e30983 100644
+--- a/drivers/media/video/cx18/cx18-av-audio.c
++++ b/drivers/media/video/cx18/cx18-av-audio.c
+@@ -464,82 +464,76 @@ static void set_mute(struct cx18 *cx, int mute)
+ 	}
+ }
+ 
+-int cx18_av_audio(struct cx18 *cx, unsigned int cmd, void *arg)
++int cx18_av_s_clock_freq(struct v4l2_subdev *sd, u32 freq)
+ {
++	struct cx18 *cx = v4l2_get_subdevdata(sd);
+ 	struct cx18_av_state *state = &cx->av_state;
+-	struct v4l2_control *ctrl = arg;
+ 	int retval;
++	u8 v;
+ 
+-	switch (cmd) {
+-	case VIDIOC_INT_AUDIO_CLOCK_FREQ:
+-	{
+-		u8 v;
+-		if (state->aud_input > CX18_AV_AUDIO_SERIAL2) {
+-			v = cx18_av_read(cx, 0x803) & ~0x10;
+-			cx18_av_write_expect(cx, 0x803, v, v, 0x1f);
+-			cx18_av_write(cx, 0x8d3, 0x1f);
+-		}
+-		v = cx18_av_read(cx, 0x810) | 0x1;
+-		cx18_av_write_expect(cx, 0x810, v, v, 0x0f);
++	if (state->aud_input > CX18_AV_AUDIO_SERIAL2) {
++		v = cx18_av_read(cx, 0x803) & ~0x10;
++		cx18_av_write_expect(cx, 0x803, v, v, 0x1f);
++		cx18_av_write(cx, 0x8d3, 0x1f);
++	}
++	v = cx18_av_read(cx, 0x810) | 0x1;
++	cx18_av_write_expect(cx, 0x810, v, v, 0x0f);
+ 
+-		retval = set_audclk_freq(cx, *(u32 *)arg);
++	retval = set_audclk_freq(cx, freq);
+ 
+-		v = cx18_av_read(cx, 0x810) & ~0x1;
+-		cx18_av_write_expect(cx, 0x810, v, v, 0x0f);
+-		if (state->aud_input > CX18_AV_AUDIO_SERIAL2) {
+-			v = cx18_av_read(cx, 0x803) | 0x10;
+-			cx18_av_write_expect(cx, 0x803, v, v, 0x1f);
+-		}
+-		return retval;
++	v = cx18_av_read(cx, 0x810) & ~0x1;
++	cx18_av_write_expect(cx, 0x810, v, v, 0x0f);
++	if (state->aud_input > CX18_AV_AUDIO_SERIAL2) {
++		v = cx18_av_read(cx, 0x803) | 0x10;
++		cx18_av_write_expect(cx, 0x803, v, v, 0x1f);
+ 	}
++	return retval;
++}
+ 
+-	case VIDIOC_G_CTRL:
+-		switch (ctrl->id) {
+-		case V4L2_CID_AUDIO_VOLUME:
+-			ctrl->value = get_volume(cx);
+-			break;
+-		case V4L2_CID_AUDIO_BASS:
+-			ctrl->value = get_bass(cx);
+-			break;
+-		case V4L2_CID_AUDIO_TREBLE:
+-			ctrl->value = get_treble(cx);
+-			break;
+-		case V4L2_CID_AUDIO_BALANCE:
+-			ctrl->value = get_balance(cx);
+-			break;
+-		case V4L2_CID_AUDIO_MUTE:
+-			ctrl->value = get_mute(cx);
+-			break;
+-		default:
+-			return -EINVAL;
+-		}
++int cx18_av_audio_g_ctrl(struct cx18 *cx, struct v4l2_control *ctrl)
++{
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_VOLUME:
++		ctrl->value = get_volume(cx);
+ 		break;
+-
+-	case VIDIOC_S_CTRL:
+-		switch (ctrl->id) {
+-		case V4L2_CID_AUDIO_VOLUME:
+-			set_volume(cx, ctrl->value);
+-			break;
+-		case V4L2_CID_AUDIO_BASS:
+-			set_bass(cx, ctrl->value);
+-			break;
+-		case V4L2_CID_AUDIO_TREBLE:
+-			set_treble(cx, ctrl->value);
+-			break;
+-		case V4L2_CID_AUDIO_BALANCE:
+-			set_balance(cx, ctrl->value);
+-			break;
+-		case V4L2_CID_AUDIO_MUTE:
+-			set_mute(cx, ctrl->value);
+-			break;
+-		default:
+-			return -EINVAL;
+-		}
++	case V4L2_CID_AUDIO_BASS:
++		ctrl->value = get_bass(cx);
++		break;
++	case V4L2_CID_AUDIO_TREBLE:
++		ctrl->value = get_treble(cx);
++		break;
++	case V4L2_CID_AUDIO_BALANCE:
++		ctrl->value = get_balance(cx);
++		break;
++	case V4L2_CID_AUDIO_MUTE:
++		ctrl->value = get_mute(cx);
+ 		break;
+-
+ 	default:
+ 		return -EINVAL;
+ 	}
++	return 0;
++}
+ 
++int cx18_av_audio_s_ctrl(struct cx18 *cx, struct v4l2_control *ctrl)
++{
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_VOLUME:
++		set_volume(cx, ctrl->value);
[...2231 lines suppressed...]
-+		vpx3220_write_fp_block(sd, init_pal, sizeof(init_pal) >> 1);
-+		v4l2_dbg(1, debug, sd, "norm switched to PAL\n");
-+	} else if (std & V4L2_STD_SECAM) {
-+		vpx3220_write_fp_block(sd, init_secam, sizeof(init_secam) >> 1);
-+		v4l2_dbg(1, debug, sd, "norm switched to SECAM\n");
-+	} else {
-+		return -EINVAL;
- 	}
+-	}
++	v4l2_dbg(1, debug, sd, "input switched to %s\n", inputs[route->input]);
  
 -	case DECODER_SET_NORM:
 -	{
@@ -101744,27 +103003,28 @@
 -					       sizeof(init_ntsc) >> 1);
 -			v4l_dbg(1, debug, client, "norm switched to NTSC\n");
 -			break;
-+	decoder->norm = std;
++	vpx3220_write(sd, 0x33, input[route->input][0]);
  
 -		case VIDEO_MODE_PAL:
 -			vpx3220_write_fp_block(client, init_pal,
 -					       sizeof(init_pal) >> 1);
 -			v4l_dbg(1, debug, client, "norm switched to PAL\n");
 -			break;
-+	/* And here we set the backed up video input again */
-+	vpx3220_fp_write(sd, 0xf2, temp_input | 0x0010);
-+	udelay(10);
-+	return 0;
-+}
++	data = vpx3220_fp_read(sd, 0xf2) & ~(0x0020);
++	if (data < 0)
++		return data;
++	/* 0x0010 is required to latch the setting */
++	vpx3220_fp_write(sd, 0xf2,
++			data | (input[route->input][1] << 5) | 0x0010);
  
 -		case VIDEO_MODE_SECAM:
 -			vpx3220_write_fp_block(client, init_secam,
 -					       sizeof(init_secam) >> 1);
 -			v4l_dbg(1, debug, client, "norm switched to SECAM\n");
 -			break;
-+static int vpx3220_s_routing(struct v4l2_subdev *sd, const struct v4l2_routing *route)
-+{
-+	int data;
++	udelay(10);
++	return 0;
++}
  
 -		case VIDEO_MODE_AUTO:
 -			/* FIXME This is only preliminary support */
@@ -101772,79 +103032,57 @@
 -			vpx3220_fp_write(client, 0xf2, 0x00c0 | data);
 -			v4l_dbg(1, debug, client, "norm switched to AUTO\n");
 -			break;
-+	/* RJ:   route->input = 0: ST8 (PCTV) input
-+		 route->input = 1: COMPOSITE  input
-+		 route->input = 2: SVHS       input  */
++static int vpx3220_s_stream(struct v4l2_subdev *sd, int enable)
++{
++	v4l2_dbg(1, debug, sd, "s_stream %s\n", enable ? "on" : "off");
  
 -		default:
 -			return -EINVAL;
 -		}
 -		decoder->norm = *iarg;
-+	const int input[3][2] = {
-+		{0x0c, 0},
-+		{0x0d, 0},
-+		{0x0e, 1}
-+	};
++	vpx3220_write(sd, 0xf2, (enable ? 0x1b : 0x00));
++	return 0;
++}
  
 -		/* And here we set the backed up video input again */
 -		vpx3220_fp_write(client, 0xf2, temp_input | 0x0010);
 -		udelay(10);
--		break;
++static int vpx3220_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
++{
++	switch (qc->id) {
++	case V4L2_CID_BRIGHTNESS:
++		v4l2_ctrl_query_fill(qc, -128, 127, 1, 0);
+ 		break;
 -	}
-+	if (route->input < 0 || route->input > 2)
-+		return -EINVAL;
- 
+-
 -	case DECODER_SET_INPUT:
 -	{
 -		int *iarg = arg, data;
-+	v4l2_dbg(1, debug, sd, "input switched to %s\n", inputs[route->input]);
- 
+-
 -		/* RJ:  *iarg = 0: ST8 (PCTV) input
 -		 *iarg = 1: COMPOSITE  input
 -		 *iarg = 2: SVHS       input  */
-+	vpx3220_write(sd, 0x33, input[route->input][0]);
- 
+-
 -		const int input[3][2] = {
 -			{0x0c, 0},
 -			{0x0d, 0},
 -			{0x0e, 1}
 -		};
-+	data = vpx3220_fp_read(sd, 0xf2) & ~(0x0020);
-+	if (data < 0)
-+		return data;
-+	/* 0x0010 is required to latch the setting */
-+	vpx3220_fp_write(sd, 0xf2,
-+			data | (input[route->input][1] << 5) | 0x0010);
  
 -		if (*iarg < 0 || *iarg > 2)
 -			return -EINVAL;
-+	udelay(10);
-+	return 0;
-+}
- 
+-
 -		v4l_dbg(1, debug, client, "input switched to %s\n", inputs[*iarg]);
-+static int vpx3220_s_stream(struct v4l2_subdev *sd, int enable)
-+{
-+	v4l2_dbg(1, debug, sd, "VIDIOC_STREAM%s\n", enable ? "ON" : "OFF");
- 
+-
 -		vpx3220_write(client, 0x33, input[*iarg][0]);
-+	vpx3220_write(sd, 0xf2, (enable ? 0x1b : 0x00));
-+	return 0;
-+}
- 
+-
 -		data = vpx3220_fp_read(client, 0xf2) & ~(0x0020);
 -		if (data < 0)
 -			return data;
 -		/* 0x0010 is required to latch the setting */
 -		vpx3220_fp_write(client, 0xf2,
 -				 data | (input[*iarg][1] << 5) | 0x0010);
-+static int vpx3220_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
-+{
-+	switch (qc->id) {
-+	case V4L2_CID_BRIGHTNESS:
-+		v4l2_ctrl_query_fill(qc, -128, 127, 1, 0);
-+		break;
- 
+-
 -		udelay(10);
 +	case V4L2_CID_CONTRAST:
 +		v4l2_ctrl_query_fill(qc, 0, 63, 1, 32);
@@ -111472,7 +112710,7 @@
  				    int id, const char *name);
  /* Prints the ioctl in a human-readable format */
 diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
-index 37b09e5..d7a72d2 100644
+index 37b09e5..1d181b4 100644
 --- a/include/media/v4l2-subdev.h
 +++ b/include/media/v4l2-subdev.h
 @@ -78,6 +78,9 @@ struct v4l2_subdev_core_ops {
@@ -111485,7 +112723,7 @@
  	int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm);
  	long (*ioctl)(struct v4l2_subdev *sd, unsigned int cmd, void *arg);
  #ifdef CONFIG_VIDEO_ADV_DEBUG
-@@ -112,9 +115,15 @@ struct v4l2_subdev_video_ops {
+@@ -112,9 +115,17 @@ struct v4l2_subdev_video_ops {
  	int (*g_vbi_data)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_data *vbi_data);
  	int (*g_sliced_vbi_cap)(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_cap *cap);
  	int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std);
@@ -111499,10 +112737,12 @@
 +	int (*s_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt);
 +	int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
 +	int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
++	int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize);
++	int (*enum_frameintervals)(struct v4l2_subdev *sd, struct v4l2_frmivalenum *fival);
  };
  
  struct v4l2_subdev_ops {
-@@ -132,7 +141,7 @@ struct v4l2_subdev_ops {
+@@ -132,7 +143,7 @@ struct v4l2_subdev_ops {
  struct v4l2_subdev {
  	struct list_head list;
  	struct module *owner;
@@ -111511,7 +112751,7 @@
  	const struct v4l2_subdev_ops *ops;
  	/* name must be unique */
  	char name[V4L2_SUBDEV_NAME_SIZE];
-@@ -171,7 +180,7 @@ static inline void v4l2_subdev_init(struct v4l2_subdev *sd,
+@@ -171,7 +182,7 @@ static inline void v4l2_subdev_init(struct v4l2_subdev *sd,
  	/* ops->core MUST be set */
  	BUG_ON(!ops || !ops->core);
  	sd->ops = ops;
@@ -111520,7 +112760,7 @@
  	sd->name[0] = '\0';
  	sd->grp_id = 0;
  	sd->priv = NULL;
-@@ -186,4 +195,9 @@ static inline void v4l2_subdev_init(struct v4l2_subdev *sd,
+@@ -186,4 +197,9 @@ static inline void v4l2_subdev_init(struct v4l2_subdev *sd,
  	(!(sd) ? -ENODEV : (((sd) && (sd)->ops->o && (sd)->ops->o->f) ?	\
  		(sd)->ops->o->f((sd) , ##args) : -ENOIOCTLCMD))
  




More information about the fedora-extras-commits mailing list