diff options
-rw-r--r-- | drivers/media/usb/au0828/au0828-video.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c index 85d83ca5a4cd..385894a1ff68 100644 --- a/drivers/media/usb/au0828/au0828-video.c +++ b/drivers/media/usb/au0828/au0828-video.c | |||
@@ -791,7 +791,7 @@ static int au0828_i2s_init(struct au0828_dev *dev) | |||
791 | static int au0828_analog_stream_enable(struct au0828_dev *d) | 791 | static int au0828_analog_stream_enable(struct au0828_dev *d) |
792 | { | 792 | { |
793 | struct usb_interface *iface; | 793 | struct usb_interface *iface; |
794 | int ret; | 794 | int ret, h, w; |
795 | 795 | ||
796 | dprintk(1, "au0828_analog_stream_enable called\n"); | 796 | dprintk(1, "au0828_analog_stream_enable called\n"); |
797 | 797 | ||
@@ -806,20 +806,21 @@ static int au0828_analog_stream_enable(struct au0828_dev *d) | |||
806 | } | 806 | } |
807 | } | 807 | } |
808 | 808 | ||
809 | /* FIXME: size should be calculated using d->width, d->height */ | 809 | h = d->height / 2 + 2; |
810 | w = d->width * 2; | ||
810 | 811 | ||
811 | au0828_writereg(d, AU0828_SENSORCTRL_VBI_103, 0x00); | 812 | au0828_writereg(d, AU0828_SENSORCTRL_VBI_103, 0x00); |
812 | au0828_writereg(d, 0x106, 0x00); | 813 | au0828_writereg(d, 0x106, 0x00); |
813 | /* set x position */ | 814 | /* set x position */ |
814 | au0828_writereg(d, 0x110, 0x00); | 815 | au0828_writereg(d, 0x110, 0x00); |
815 | au0828_writereg(d, 0x111, 0x00); | 816 | au0828_writereg(d, 0x111, 0x00); |
816 | au0828_writereg(d, 0x114, 0xa0); | 817 | au0828_writereg(d, 0x114, w & 0xff); |
817 | au0828_writereg(d, 0x115, 0x05); | 818 | au0828_writereg(d, 0x115, w >> 8); |
818 | /* set y position */ | 819 | /* set y position */ |
819 | au0828_writereg(d, 0x112, 0x00); | 820 | au0828_writereg(d, 0x112, 0x00); |
820 | au0828_writereg(d, 0x113, 0x00); | 821 | au0828_writereg(d, 0x113, 0x00); |
821 | au0828_writereg(d, 0x116, 0xf2); | 822 | au0828_writereg(d, 0x116, h & 0xff); |
822 | au0828_writereg(d, 0x117, 0x00); | 823 | au0828_writereg(d, 0x117, h >> 8); |
823 | au0828_writereg(d, AU0828_SENSORCTRL_100, 0xb3); | 824 | au0828_writereg(d, AU0828_SENSORCTRL_100, 0xb3); |
824 | 825 | ||
825 | return 0; | 826 | return 0; |
@@ -1725,6 +1726,7 @@ static int vidioc_streamoff(struct file *file, void *priv, | |||
1725 | dev->vid_timeout_running = 0; | 1726 | dev->vid_timeout_running = 0; |
1726 | del_timer_sync(&dev->vid_timeout); | 1727 | del_timer_sync(&dev->vid_timeout); |
1727 | 1728 | ||
1729 | au0828_analog_stream_disable(dev); | ||
1728 | v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0); | 1730 | v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0); |
1729 | rc = au0828_stream_interrupt(dev); | 1731 | rc = au0828_stream_interrupt(dev); |
1730 | if (rc != 0) | 1732 | if (rc != 0) |
@@ -1930,7 +1932,8 @@ int au0828_analog_register(struct au0828_dev *dev, | |||
1930 | struct usb_endpoint_descriptor *endpoint; | 1932 | struct usb_endpoint_descriptor *endpoint; |
1931 | int i, ret; | 1933 | int i, ret; |
1932 | 1934 | ||
1933 | dprintk(1, "au0828_analog_register called!\n"); | 1935 | dprintk(1, "au0828_analog_register called for intf#%d!\n", |
1936 | interface->cur_altsetting->desc.bInterfaceNumber); | ||
1934 | 1937 | ||
1935 | /* set au0828 usb interface0 to as5 */ | 1938 | /* set au0828 usb interface0 to as5 */ |
1936 | retval = usb_set_interface(dev->usbdev, | 1939 | retval = usb_set_interface(dev->usbdev, |
@@ -1954,6 +1957,9 @@ int au0828_analog_register(struct au0828_dev *dev, | |||
1954 | dev->max_pkt_size = (tmp & 0x07ff) * | 1957 | dev->max_pkt_size = (tmp & 0x07ff) * |
1955 | (((tmp & 0x1800) >> 11) + 1); | 1958 | (((tmp & 0x1800) >> 11) + 1); |
1956 | dev->isoc_in_endpointaddr = endpoint->bEndpointAddress; | 1959 | dev->isoc_in_endpointaddr = endpoint->bEndpointAddress; |
1960 | dprintk(1, | ||
1961 | "Found isoc endpoint 0x%02x, max size = %d\n", | ||
1962 | dev->isoc_in_endpointaddr, dev->max_pkt_size); | ||
1957 | } | 1963 | } |
1958 | } | 1964 | } |
1959 | if (!(dev->isoc_in_endpointaddr)) { | 1965 | if (!(dev->isoc_in_endpointaddr)) { |