diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-27 12:23:59 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-27 12:23:59 -0400 |
| commit | d0d87aae795bfad0a9f8cc1e8faff5a016e71ad4 (patch) | |
| tree | 1f0ca16422120a0c6fc0ce8d45558e54a3ee713b | |
| parent | 5158074971220eeaa0677942a4bad3b3439a9638 (diff) | |
| parent | 09d4895488d4df5c58b739573846f514ceabc911 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
V4L/DVB (5472): Isl6421: don't reference freed memory
V4L/DVB (5441): Saa7146: Fix allocation of clipping memory
V4L/DVB (5421): Fix suspend/resume in msp3400 and tuner
V4L/DVB (5415): Msp_attach must return 0 if no msp3400 was found.
V4L/DVB (5408): Fix SECAM handling on saa7115
V4L/DVB (5400): Core: fix several locking related problems
V4L/DVB (5390): Radio: Fix error in Kbuild file
V4L/DVB (5332): Ir_rc5_timer_end decoder lockup fix
| -rw-r--r-- | drivers/media/common/ir-functions.c | 6 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dmxdev.c | 12 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_demux.c | 21 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvbdev.c | 9 | ||||
| -rw-r--r-- | drivers/media/dvb/frontends/isl6421.c | 1 | ||||
| -rw-r--r-- | drivers/media/radio/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/media/video/msp3400-driver.c | 14 | ||||
| -rw-r--r-- | drivers/media/video/saa7115.c | 2 | ||||
| -rw-r--r-- | drivers/media/video/tuner-core.c | 10 | ||||
| -rw-r--r-- | include/media/saa7146_vv.h | 3 |
10 files changed, 32 insertions, 48 deletions
diff --git a/drivers/media/common/ir-functions.c b/drivers/media/common/ir-functions.c index cbf7c0564889..fcb194135627 100644 --- a/drivers/media/common/ir-functions.c +++ b/drivers/media/common/ir-functions.c | |||
| @@ -310,13 +310,15 @@ void ir_rc5_timer_end(unsigned long data) | |||
| 310 | tv.tv_usec - ir->base_time.tv_usec; | 310 | tv.tv_usec - ir->base_time.tv_usec; |
| 311 | } | 311 | } |
| 312 | 312 | ||
| 313 | /* Allow some timmer jitter (RC5 is ~24ms anyway so this is ok) */ | 313 | /* signal we're ready to start a new code */ |
| 314 | ir->active = 0; | ||
| 315 | |||
| 316 | /* Allow some timer jitter (RC5 is ~24ms anyway so this is ok) */ | ||
| 314 | if (gap < 28000) { | 317 | if (gap < 28000) { |
| 315 | dprintk(1, "ir-common: spurious timer_end\n"); | 318 | dprintk(1, "ir-common: spurious timer_end\n"); |
| 316 | return; | 319 | return; |
| 317 | } | 320 | } |
| 318 | 321 | ||
| 319 | ir->active = 0; | ||
| 320 | if (ir->last_bit < 20) { | 322 | if (ir->last_bit < 20) { |
| 321 | /* ignore spurious codes (caused by light/other remotes) */ | 323 | /* ignore spurious codes (caused by light/other remotes) */ |
| 322 | dprintk(1, "ir-common: short code: %x\n", ir->code); | 324 | dprintk(1, "ir-common: short code: %x\n", ir->code); |
diff --git a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c index fc77de45ca4d..a5c0e1a3e6d1 100644 --- a/drivers/media/dvb/dvb-core/dmxdev.c +++ b/drivers/media/dvb/dvb-core/dmxdev.c | |||
| @@ -180,8 +180,7 @@ static int dvb_dvr_release(struct inode *inode, struct file *file) | |||
| 180 | struct dvb_device *dvbdev = file->private_data; | 180 | struct dvb_device *dvbdev = file->private_data; |
| 181 | struct dmxdev *dmxdev = dvbdev->priv; | 181 | struct dmxdev *dmxdev = dvbdev->priv; |
| 182 | 182 | ||
| 183 | if (mutex_lock_interruptible(&dmxdev->mutex)) | 183 | mutex_lock(&dmxdev->mutex); |
| 184 | return -ERESTARTSYS; | ||
| 185 | 184 | ||
| 186 | if ((file->f_flags & O_ACCMODE) == O_WRONLY) { | 185 | if ((file->f_flags & O_ACCMODE) == O_WRONLY) { |
| 187 | dmxdev->demux->disconnect_frontend(dmxdev->demux); | 186 | dmxdev->demux->disconnect_frontend(dmxdev->demux); |
| @@ -673,13 +672,8 @@ static int dvb_demux_open(struct inode *inode, struct file *file) | |||
| 673 | static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev, | 672 | static int dvb_dmxdev_filter_free(struct dmxdev *dmxdev, |
| 674 | struct dmxdev_filter *dmxdevfilter) | 673 | struct dmxdev_filter *dmxdevfilter) |
| 675 | { | 674 | { |
| 676 | if (mutex_lock_interruptible(&dmxdev->mutex)) | 675 | mutex_lock(&dmxdev->mutex); |
| 677 | return -ERESTARTSYS; | 676 | mutex_lock(&dmxdevfilter->mutex); |
| 678 | |||
| 679 | if (mutex_lock_interruptible(&dmxdevfilter->mutex)) { | ||
| 680 | mutex_unlock(&dmxdev->mutex); | ||
| 681 | return -ERESTARTSYS; | ||
| 682 | } | ||
| 683 | 677 | ||
| 684 | dvb_dmxdev_filter_stop(dmxdevfilter); | 678 | dvb_dmxdev_filter_stop(dmxdevfilter); |
| 685 | dvb_dmxdev_filter_reset(dmxdevfilter); | 679 | dvb_dmxdev_filter_reset(dmxdevfilter); |
diff --git a/drivers/media/dvb/dvb-core/dvb_demux.c b/drivers/media/dvb/dvb-core/dvb_demux.c index fcff5eab21a3..6d8d1c3df863 100644 --- a/drivers/media/dvb/dvb-core/dvb_demux.c +++ b/drivers/media/dvb/dvb-core/dvb_demux.c | |||
| @@ -673,8 +673,7 @@ static int dmx_ts_feed_stop_filtering(struct dmx_ts_feed *ts_feed) | |||
| 673 | struct dvb_demux *demux = feed->demux; | 673 | struct dvb_demux *demux = feed->demux; |
| 674 | int ret; | 674 | int ret; |
| 675 | 675 | ||
| 676 | if (mutex_lock_interruptible(&demux->mutex)) | 676 | mutex_lock(&demux->mutex); |
| 677 | return -ERESTARTSYS; | ||
| 678 | 677 | ||
| 679 | if (feed->state < DMX_STATE_GO) { | 678 | if (feed->state < DMX_STATE_GO) { |
| 680 | mutex_unlock(&demux->mutex); | 679 | mutex_unlock(&demux->mutex); |
| @@ -748,8 +747,7 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx, | |||
| 748 | struct dvb_demux *demux = (struct dvb_demux *)dmx; | 747 | struct dvb_demux *demux = (struct dvb_demux *)dmx; |
| 749 | struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed; | 748 | struct dvb_demux_feed *feed = (struct dvb_demux_feed *)ts_feed; |
| 750 | 749 | ||
| 751 | if (mutex_lock_interruptible(&demux->mutex)) | 750 | mutex_lock(&demux->mutex); |
| 752 | return -ERESTARTSYS; | ||
| 753 | 751 | ||
| 754 | if (feed->state == DMX_STATE_FREE) { | 752 | if (feed->state == DMX_STATE_FREE) { |
| 755 | mutex_unlock(&demux->mutex); | 753 | mutex_unlock(&demux->mutex); |
| @@ -916,8 +914,7 @@ static int dmx_section_feed_stop_filtering(struct dmx_section_feed *feed) | |||
| 916 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; | 914 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; |
| 917 | int ret; | 915 | int ret; |
| 918 | 916 | ||
| 919 | if (mutex_lock_interruptible(&dvbdmx->mutex)) | 917 | mutex_lock(&dvbdmx->mutex); |
| 920 | return -ERESTARTSYS; | ||
| 921 | 918 | ||
| 922 | if (!dvbdmx->stop_feed) { | 919 | if (!dvbdmx->stop_feed) { |
| 923 | mutex_unlock(&dvbdmx->mutex); | 920 | mutex_unlock(&dvbdmx->mutex); |
| @@ -942,8 +939,7 @@ static int dmx_section_feed_release_filter(struct dmx_section_feed *feed, | |||
| 942 | struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; | 939 | struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; |
| 943 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; | 940 | struct dvb_demux *dvbdmx = dvbdmxfeed->demux; |
| 944 | 941 | ||
| 945 | if (mutex_lock_interruptible(&dvbdmx->mutex)) | 942 | mutex_lock(&dvbdmx->mutex); |
| 946 | return -ERESTARTSYS; | ||
| 947 | 943 | ||
| 948 | if (dvbdmxfilter->feed != dvbdmxfeed) { | 944 | if (dvbdmxfilter->feed != dvbdmxfeed) { |
| 949 | mutex_unlock(&dvbdmx->mutex); | 945 | mutex_unlock(&dvbdmx->mutex); |
| @@ -1016,8 +1012,7 @@ static int dvbdmx_release_section_feed(struct dmx_demux *demux, | |||
| 1016 | struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; | 1012 | struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *)feed; |
| 1017 | struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; | 1013 | struct dvb_demux *dvbdmx = (struct dvb_demux *)demux; |
| 1018 | 1014 | ||
| 1019 | if (mutex_lock_interruptible(&dvbdmx->mutex)) | 1015 | mutex_lock(&dvbdmx->mutex); |
| 1020 | return -ERESTARTSYS; | ||
| 1021 | 1016 | ||
| 1022 | if (dvbdmxfeed->state == DMX_STATE_FREE) { | 1017 | if (dvbdmxfeed->state == DMX_STATE_FREE) { |
| 1023 | mutex_unlock(&dvbdmx->mutex); | 1018 | mutex_unlock(&dvbdmx->mutex); |
| @@ -1126,8 +1121,7 @@ static int dvbdmx_connect_frontend(struct dmx_demux *demux, | |||
| 1126 | if (demux->frontend) | 1121 | if (demux->frontend) |
| 1127 | return -EINVAL; | 1122 | return -EINVAL; |
| 1128 | 1123 | ||
| 1129 | if (mutex_lock_interruptible(&dvbdemux->mutex)) | 1124 | mutex_lock(&dvbdemux->mutex); |
| 1130 | return -ERESTARTSYS; | ||
| 1131 | 1125 | ||
| 1132 | demux->frontend = frontend; | 1126 | demux->frontend = frontend; |
| 1133 | mutex_unlock(&dvbdemux->mutex); | 1127 | mutex_unlock(&dvbdemux->mutex); |
| @@ -1138,8 +1132,7 @@ static int dvbdmx_disconnect_frontend(struct dmx_demux *demux) | |||
| 1138 | { | 1132 | { |
| 1139 | struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; | 1133 | struct dvb_demux *dvbdemux = (struct dvb_demux *)demux; |
| 1140 | 1134 | ||
| 1141 | if (mutex_lock_interruptible(&dvbdemux->mutex)) | 1135 | mutex_lock(&dvbdemux->mutex); |
| 1142 | return -ERESTARTSYS; | ||
| 1143 | 1136 | ||
| 1144 | demux->frontend = NULL; | 1137 | demux->frontend = NULL; |
| 1145 | mutex_unlock(&dvbdemux->mutex); | 1138 | mutex_unlock(&dvbdemux->mutex); |
diff --git a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c index 490337b5ee3e..14a372a0fe8b 100644 --- a/drivers/media/dvb/dvb-core/dvbdev.c +++ b/drivers/media/dvb/dvb-core/dvbdev.c | |||
| @@ -203,8 +203,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev, | |||
| 203 | 203 | ||
| 204 | int id; | 204 | int id; |
| 205 | 205 | ||
| 206 | if (mutex_lock_interruptible(&dvbdev_register_lock)) | 206 | mutex_lock(&dvbdev_register_lock); |
| 207 | return -ERESTARTSYS; | ||
| 208 | 207 | ||
| 209 | if ((id = dvbdev_get_free_id (adap, type)) < 0){ | 208 | if ((id = dvbdev_get_free_id (adap, type)) < 0){ |
| 210 | mutex_unlock(&dvbdev_register_lock); | 209 | mutex_unlock(&dvbdev_register_lock); |
| @@ -294,8 +293,7 @@ int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct modu | |||
| 294 | { | 293 | { |
| 295 | int num; | 294 | int num; |
| 296 | 295 | ||
| 297 | if (mutex_lock_interruptible(&dvbdev_register_lock)) | 296 | mutex_lock(&dvbdev_register_lock); |
| 298 | return -ERESTARTSYS; | ||
| 299 | 297 | ||
| 300 | if ((num = dvbdev_get_free_adapter_num ()) < 0) { | 298 | if ((num = dvbdev_get_free_adapter_num ()) < 0) { |
| 301 | mutex_unlock(&dvbdev_register_lock); | 299 | mutex_unlock(&dvbdev_register_lock); |
| @@ -323,8 +321,7 @@ EXPORT_SYMBOL(dvb_register_adapter); | |||
| 323 | 321 | ||
| 324 | int dvb_unregister_adapter(struct dvb_adapter *adap) | 322 | int dvb_unregister_adapter(struct dvb_adapter *adap) |
| 325 | { | 323 | { |
| 326 | if (mutex_lock_interruptible(&dvbdev_register_lock)) | 324 | mutex_lock(&dvbdev_register_lock); |
| 327 | return -ERESTARTSYS; | ||
| 328 | list_del (&adap->list_head); | 325 | list_del (&adap->list_head); |
| 329 | mutex_unlock(&dvbdev_register_lock); | 326 | mutex_unlock(&dvbdev_register_lock); |
| 330 | return 0; | 327 | return 0; |
diff --git a/drivers/media/dvb/frontends/isl6421.c b/drivers/media/dvb/frontends/isl6421.c index ef319369ec26..c967148a5945 100644 --- a/drivers/media/dvb/frontends/isl6421.c +++ b/drivers/media/dvb/frontends/isl6421.c | |||
| @@ -122,6 +122,7 @@ struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter | |||
| 122 | /* detect if it is present or not */ | 122 | /* detect if it is present or not */ |
| 123 | if (isl6421_set_voltage(fe, SEC_VOLTAGE_OFF)) { | 123 | if (isl6421_set_voltage(fe, SEC_VOLTAGE_OFF)) { |
| 124 | kfree(isl6421); | 124 | kfree(isl6421); |
| 125 | fe->sec_priv = NULL; | ||
| 125 | return NULL; | 126 | return NULL; |
| 126 | } | 127 | } |
| 127 | 128 | ||
diff --git a/drivers/media/radio/Kconfig b/drivers/media/radio/Kconfig index 920b63f8cf05..af66a5d5ecd8 100644 --- a/drivers/media/radio/Kconfig +++ b/drivers/media/radio/Kconfig | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | menu "Radio Adapters" | 5 | menu "Radio Adapters" |
| 6 | depends on VIDEO_DEV!=n | 6 | depends on VIDEO_DEV |
| 7 | 7 | ||
| 8 | config RADIO_CADET | 8 | config RADIO_CADET |
| 9 | tristate "ADS Cadet AM/FM Tuner" | 9 | tristate "ADS Cadet AM/FM Tuner" |
diff --git a/drivers/media/video/msp3400-driver.c b/drivers/media/video/msp3400-driver.c index 2fb9fe6a1ae7..ba1af3c8525e 100644 --- a/drivers/media/video/msp3400-driver.c +++ b/drivers/media/video/msp3400-driver.c | |||
| @@ -780,18 +780,16 @@ static int msp_command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
| 780 | return 0; | 780 | return 0; |
| 781 | } | 781 | } |
| 782 | 782 | ||
| 783 | static int msp_suspend(struct device * dev, pm_message_t state) | 783 | static int msp_suspend(struct i2c_client *client, pm_message_t state) |
| 784 | { | 784 | { |
| 785 | struct i2c_client *client = container_of(dev, struct i2c_client, dev); | ||
| 786 | 785 | ||
| 787 | v4l_dbg(1, msp_debug, client, "suspend\n"); | 786 | v4l_dbg(1, msp_debug, client, "suspend\n"); |
| 788 | msp_reset(client); | 787 | msp_reset(client); |
| 789 | return 0; | 788 | return 0; |
| 790 | } | 789 | } |
| 791 | 790 | ||
| 792 | static int msp_resume(struct device * dev) | 791 | static int msp_resume(struct i2c_client *client) |
| 793 | { | 792 | { |
| 794 | struct i2c_client *client = container_of(dev, struct i2c_client, dev); | ||
| 795 | 793 | ||
| 796 | v4l_dbg(1, msp_debug, client, "resume\n"); | 794 | v4l_dbg(1, msp_debug, client, "resume\n"); |
| 797 | msp_wake_thread(client); | 795 | msp_wake_thread(client); |
| @@ -825,7 +823,7 @@ static int msp_attach(struct i2c_adapter *adapter, int address, int kind) | |||
| 825 | if (msp_reset(client) == -1) { | 823 | if (msp_reset(client) == -1) { |
| 826 | v4l_dbg(1, msp_debug, client, "msp3400 not found\n"); | 824 | v4l_dbg(1, msp_debug, client, "msp3400 not found\n"); |
| 827 | kfree(client); | 825 | kfree(client); |
| 828 | return -1; | 826 | return 0; |
| 829 | } | 827 | } |
| 830 | 828 | ||
| 831 | state = kmalloc(sizeof(*state), GFP_KERNEL); | 829 | state = kmalloc(sizeof(*state), GFP_KERNEL); |
| @@ -859,7 +857,7 @@ static int msp_attach(struct i2c_adapter *adapter, int address, int kind) | |||
| 859 | v4l_dbg(1, msp_debug, client, "not an msp3400 (cannot read chip version)\n"); | 857 | v4l_dbg(1, msp_debug, client, "not an msp3400 (cannot read chip version)\n"); |
| 860 | kfree(state); | 858 | kfree(state); |
| 861 | kfree(client); | 859 | kfree(client); |
| 862 | return -1; | 860 | return 0; |
| 863 | } | 861 | } |
| 864 | 862 | ||
| 865 | msp_set_audio(client); | 863 | msp_set_audio(client); |
| @@ -996,11 +994,11 @@ static struct i2c_driver i2c_driver = { | |||
| 996 | .id = I2C_DRIVERID_MSP3400, | 994 | .id = I2C_DRIVERID_MSP3400, |
| 997 | .attach_adapter = msp_probe, | 995 | .attach_adapter = msp_probe, |
| 998 | .detach_client = msp_detach, | 996 | .detach_client = msp_detach, |
| 997 | .suspend = msp_suspend, | ||
| 998 | .resume = msp_resume, | ||
| 999 | .command = msp_command, | 999 | .command = msp_command, |
| 1000 | .driver = { | 1000 | .driver = { |
| 1001 | .name = "msp3400", | 1001 | .name = "msp3400", |
| 1002 | .suspend = msp_suspend, | ||
| 1003 | .resume = msp_resume, | ||
| 1004 | }, | 1002 | }, |
| 1005 | }; | 1003 | }; |
| 1006 | 1004 | ||
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c index 7735b6758921..4d5bbd859de1 100644 --- a/drivers/media/video/saa7115.c +++ b/drivers/media/video/saa7115.c | |||
| @@ -961,7 +961,7 @@ static void saa711x_set_v4lstd(struct i2c_client *client, v4l2_std_id std) | |||
| 961 | reg |= 0x10; | 961 | reg |= 0x10; |
| 962 | } else if (std == V4L2_STD_NTSC_M_JP) { | 962 | } else if (std == V4L2_STD_NTSC_M_JP) { |
| 963 | reg |= 0x40; | 963 | reg |= 0x40; |
| 964 | } else if (std == V4L2_STD_SECAM) { | 964 | } else if (std & V4L2_STD_SECAM) { |
| 965 | reg |= 0x50; | 965 | reg |= 0x50; |
| 966 | } | 966 | } |
| 967 | saa711x_write(client, R_0E_CHROMA_CNTL_1, reg); | 967 | saa711x_write(client, R_0E_CHROMA_CNTL_1, reg); |
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index 7be73e3763de..15dbc6bf42a7 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
| @@ -804,9 +804,8 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
| 804 | return 0; | 804 | return 0; |
| 805 | } | 805 | } |
| 806 | 806 | ||
| 807 | static int tuner_suspend(struct device *dev, pm_message_t state) | 807 | static int tuner_suspend(struct i2c_client *c, pm_message_t state) |
| 808 | { | 808 | { |
| 809 | struct i2c_client *c = container_of (dev, struct i2c_client, dev); | ||
| 810 | struct tuner *t = i2c_get_clientdata (c); | 809 | struct tuner *t = i2c_get_clientdata (c); |
| 811 | 810 | ||
| 812 | tuner_dbg ("suspend\n"); | 811 | tuner_dbg ("suspend\n"); |
| @@ -814,9 +813,8 @@ static int tuner_suspend(struct device *dev, pm_message_t state) | |||
| 814 | return 0; | 813 | return 0; |
| 815 | } | 814 | } |
| 816 | 815 | ||
| 817 | static int tuner_resume(struct device *dev) | 816 | static int tuner_resume(struct i2c_client *c) |
| 818 | { | 817 | { |
| 819 | struct i2c_client *c = container_of (dev, struct i2c_client, dev); | ||
| 820 | struct tuner *t = i2c_get_clientdata (c); | 818 | struct tuner *t = i2c_get_clientdata (c); |
| 821 | 819 | ||
| 822 | tuner_dbg ("resume\n"); | 820 | tuner_dbg ("resume\n"); |
| @@ -837,10 +835,10 @@ static struct i2c_driver driver = { | |||
| 837 | .attach_adapter = tuner_probe, | 835 | .attach_adapter = tuner_probe, |
| 838 | .detach_client = tuner_detach, | 836 | .detach_client = tuner_detach, |
| 839 | .command = tuner_command, | 837 | .command = tuner_command, |
| 838 | .suspend = tuner_suspend, | ||
| 839 | .resume = tuner_resume, | ||
| 840 | .driver = { | 840 | .driver = { |
| 841 | .name = "tuner", | 841 | .name = "tuner", |
| 842 | .suspend = tuner_suspend, | ||
| 843 | .resume = tuner_resume, | ||
| 844 | }, | 842 | }, |
| 845 | }; | 843 | }; |
| 846 | static struct i2c_client client_template = { | 844 | static struct i2c_client client_template = { |
diff --git a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h index 83fe2e3d1e25..50e33b0e9349 100644 --- a/include/media/saa7146_vv.h +++ b/include/media/saa7146_vv.h | |||
| @@ -239,7 +239,8 @@ void saa7146_res_free(struct saa7146_fh *fh, unsigned int bits); | |||
| 239 | #define SAA7146_HPS_SYNC_PORT_B 0x01 | 239 | #define SAA7146_HPS_SYNC_PORT_B 0x01 |
| 240 | 240 | ||
| 241 | /* some memory sizes */ | 241 | /* some memory sizes */ |
| 242 | #define SAA7146_CLIPPING_MEM (14*PAGE_SIZE) | 242 | /* max. 16 clipping rectangles */ |
| 243 | #define SAA7146_CLIPPING_MEM (16 * 4 * sizeof(u32)) | ||
| 243 | 244 | ||
| 244 | /* some defines for the various clipping-modes */ | 245 | /* some defines for the various clipping-modes */ |
| 245 | #define SAA7146_CLIPPING_RECT 0x4 | 246 | #define SAA7146_CLIPPING_RECT 0x4 |
