aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/sn9c20x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/gspca/sn9c20x.c')
-rw-r--r--drivers/media/video/gspca/sn9c20x.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 644a7fd4701a..83a718f0f3f9 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -20,7 +20,6 @@
20 20
21#ifdef CONFIG_INPUT 21#ifdef CONFIG_INPUT
22#include <linux/input.h> 22#include <linux/input.h>
23#include <linux/slab.h>
24#endif 23#endif
25 24
26#include "gspca.h" 25#include "gspca.h"
@@ -89,7 +88,7 @@ struct sd {
89 u8 hstart; 88 u8 hstart;
90 u8 vstart; 89 u8 vstart;
91 90
92 u8 *jpeg_hdr; 91 u8 jpeg_hdr[JPEG_HDR_SZ];
93 u8 quality; 92 u8 quality;
94 93
95 u8 flags; 94 u8 flags;
@@ -2162,10 +2161,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
2162 int height = gspca_dev->height; 2161 int height = gspca_dev->height;
2163 u8 fmt, scale = 0; 2162 u8 fmt, scale = 0;
2164 2163
2165 sd->jpeg_hdr = kmalloc(JPEG_HDR_SZ, GFP_KERNEL);
2166 if (sd->jpeg_hdr == NULL)
2167 return -ENOMEM;
2168
2169 jpeg_define(sd->jpeg_hdr, height, width, 2164 jpeg_define(sd->jpeg_hdr, height, width,
2170 0x21); 2165 0x21);
2171 jpeg_set_qual(sd->jpeg_hdr, sd->quality); 2166 jpeg_set_qual(sd->jpeg_hdr, sd->quality);
@@ -2197,8 +2192,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
2197 } 2192 }
2198 2193
2199 configure_sensor_output(gspca_dev, mode); 2194 configure_sensor_output(gspca_dev, mode);
2200 reg_w(gspca_dev, 0x1100, sd->jpeg_hdr + JPEG_QT0_OFFSET, 64); 2195 reg_w(gspca_dev, 0x1100, &sd->jpeg_hdr[JPEG_QT0_OFFSET], 64);
2201 reg_w(gspca_dev, 0x1140, sd->jpeg_hdr + JPEG_QT1_OFFSET, 64); 2196 reg_w(gspca_dev, 0x1140, &sd->jpeg_hdr[JPEG_QT1_OFFSET], 64);
2202 reg_w(gspca_dev, 0x10fb, CLR_WIN(width, height), 5); 2197 reg_w(gspca_dev, 0x10fb, CLR_WIN(width, height), 5);
2203 reg_w(gspca_dev, 0x1180, HW_WIN(mode, sd->hstart, sd->vstart), 6); 2198 reg_w(gspca_dev, 0x1180, HW_WIN(mode, sd->hstart, sd->vstart), 6);
2204 reg_w1(gspca_dev, 0x1189, scale); 2199 reg_w1(gspca_dev, 0x1189, scale);
@@ -2226,12 +2221,6 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
2226 reg_w1(gspca_dev, 0x1061, gspca_dev->usb_buf[0] & ~0x02); 2221 reg_w1(gspca_dev, 0x1061, gspca_dev->usb_buf[0] & ~0x02);
2227} 2222}
2228 2223
2229static void sd_stop0(struct gspca_dev *gspca_dev)
2230{
2231 struct sd *sd = (struct sd *) gspca_dev;
2232 kfree(sd->jpeg_hdr);
2233}
2234
2235static void do_autoexposure(struct gspca_dev *gspca_dev, u16 avg_lum) 2224static void do_autoexposure(struct gspca_dev *gspca_dev, u16 avg_lum)
2236{ 2225{
2237 struct sd *sd = (struct sd *) gspca_dev; 2226 struct sd *sd = (struct sd *) gspca_dev;
@@ -2397,7 +2386,6 @@ static const struct sd_desc sd_desc = {
2397 .init = sd_init, 2386 .init = sd_init,
2398 .start = sd_start, 2387 .start = sd_start,
2399 .stopN = sd_stopN, 2388 .stopN = sd_stopN,
2400 .stop0 = sd_stop0,
2401 .pkt_scan = sd_pkt_scan, 2389 .pkt_scan = sd_pkt_scan,
2402#ifdef CONFIG_INPUT 2390#ifdef CONFIG_INPUT
2403 .int_pkt_scan = sd_int_pkt_scan, 2391 .int_pkt_scan = sd_int_pkt_scan,