Commit 1fe3a8fe authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] au0828: don't hardcode height/width

While this device doesn't have a scaler (or have it disabled),
the screen dimentions are a function of the standard. Ok, right
now, only 480 lines standards are implemented, although it
supports other ones. Yet, let's calculate the size, to make
easier to add more standards latter.
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 64ea37bb
...@@ -791,7 +791,7 @@ static int au0828_i2s_init(struct au0828_dev *dev) ...@@ -791,7 +791,7 @@ static int au0828_i2s_init(struct au0828_dev *dev)
static int au0828_analog_stream_enable(struct au0828_dev *d) static int au0828_analog_stream_enable(struct au0828_dev *d)
{ {
struct usb_interface *iface; struct usb_interface *iface;
int ret; int ret, h, w;
dprintk(1, "au0828_analog_stream_enable called\n"); dprintk(1, "au0828_analog_stream_enable called\n");
...@@ -806,20 +806,21 @@ static int au0828_analog_stream_enable(struct au0828_dev *d) ...@@ -806,20 +806,21 @@ static int au0828_analog_stream_enable(struct au0828_dev *d)
} }
} }
/* FIXME: size should be calculated using d->width, d->height */ h = d->height / 2 + 2;
w = d->width * 2;
au0828_writereg(d, AU0828_SENSORCTRL_VBI_103, 0x00); au0828_writereg(d, AU0828_SENSORCTRL_VBI_103, 0x00);
au0828_writereg(d, 0x106, 0x00); au0828_writereg(d, 0x106, 0x00);
/* set x position */ /* set x position */
au0828_writereg(d, 0x110, 0x00); au0828_writereg(d, 0x110, 0x00);
au0828_writereg(d, 0x111, 0x00); au0828_writereg(d, 0x111, 0x00);
au0828_writereg(d, 0x114, 0xa0); au0828_writereg(d, 0x114, w & 0xff);
au0828_writereg(d, 0x115, 0x05); au0828_writereg(d, 0x115, w >> 8);
/* set y position */ /* set y position */
au0828_writereg(d, 0x112, 0x00); au0828_writereg(d, 0x112, 0x00);
au0828_writereg(d, 0x113, 0x00); au0828_writereg(d, 0x113, 0x00);
au0828_writereg(d, 0x116, 0xf2); au0828_writereg(d, 0x116, h & 0xff);
au0828_writereg(d, 0x117, 0x00); au0828_writereg(d, 0x117, h >> 8);
au0828_writereg(d, AU0828_SENSORCTRL_100, 0xb3); au0828_writereg(d, AU0828_SENSORCTRL_100, 0xb3);
return 0; return 0;
...@@ -1725,6 +1726,7 @@ static int vidioc_streamoff(struct file *file, void *priv, ...@@ -1725,6 +1726,7 @@ static int vidioc_streamoff(struct file *file, void *priv,
dev->vid_timeout_running = 0; dev->vid_timeout_running = 0;
del_timer_sync(&dev->vid_timeout); del_timer_sync(&dev->vid_timeout);
au0828_analog_stream_disable(dev);
v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0); v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
rc = au0828_stream_interrupt(dev); rc = au0828_stream_interrupt(dev);
if (rc != 0) if (rc != 0)
...@@ -1930,7 +1932,8 @@ int au0828_analog_register(struct au0828_dev *dev, ...@@ -1930,7 +1932,8 @@ int au0828_analog_register(struct au0828_dev *dev,
struct usb_endpoint_descriptor *endpoint; struct usb_endpoint_descriptor *endpoint;
int i, ret; int i, ret;
dprintk(1, "au0828_analog_register called!\n"); dprintk(1, "au0828_analog_register called for intf#%d!\n",
interface->cur_altsetting->desc.bInterfaceNumber);
/* set au0828 usb interface0 to as5 */ /* set au0828 usb interface0 to as5 */
retval = usb_set_interface(dev->usbdev, retval = usb_set_interface(dev->usbdev,
...@@ -1954,6 +1957,9 @@ int au0828_analog_register(struct au0828_dev *dev, ...@@ -1954,6 +1957,9 @@ int au0828_analog_register(struct au0828_dev *dev,
dev->max_pkt_size = (tmp & 0x07ff) * dev->max_pkt_size = (tmp & 0x07ff) *
(((tmp & 0x1800) >> 11) + 1); (((tmp & 0x1800) >> 11) + 1);
dev->isoc_in_endpointaddr = endpoint->bEndpointAddress; dev->isoc_in_endpointaddr = endpoint->bEndpointAddress;
dprintk(1,
"Found isoc endpoint 0x%02x, max size = %d\n",
dev->isoc_in_endpointaddr, dev->max_pkt_size);
} }
} }
if (!(dev->isoc_in_endpointaddr)) { if (!(dev->isoc_in_endpointaddr)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment