diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-04-25 12:29:01 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:55 -0400 |
commit | 49cb6b046da812d9c1d1f8c958b741126ee4eece (patch) | |
tree | 40a4dd9950286cfea562e02bd3325e53e53c7879 /drivers/media/video/gspca | |
parent | 59746e1390835ce889e56fa4e792019462465623 (diff) |
V4L/DVB (11715): gspca - main: Set the number of packets per ISOC message.
The number of packets per isochronous message may now be set by the subdrivers
(default value 32).
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca')
-rw-r--r-- | drivers/media/video/gspca/gspca.c | 6 | ||||
-rw-r--r-- | drivers/media/video/gspca/gspca.h | 4 | ||||
-rw-r--r-- | drivers/media/video/gspca/sonixb.c | 2 | ||||
-rw-r--r-- | drivers/media/video/gspca/sonixj.c | 1 | ||||
-rw-r--r-- | drivers/media/video/gspca/vc032x.c | 14 |
5 files changed, 21 insertions, 6 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index ebeae6bdacc8..ae0e14033d66 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c | |||
@@ -513,9 +513,9 @@ static int create_urbs(struct gspca_dev *gspca_dev, | |||
513 | 513 | ||
514 | /* See paragraph 5.9 / table 5-11 of the usb 2.0 spec. */ | 514 | /* See paragraph 5.9 / table 5-11 of the usb 2.0 spec. */ |
515 | psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); | 515 | psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); |
516 | npkt = ISO_MAX_SIZE / psize; | 516 | npkt = gspca_dev->cam.npkt; |
517 | if (npkt > ISO_MAX_PKT) | 517 | if (npkt == 0) |
518 | npkt = ISO_MAX_PKT; | 518 | npkt = 32; /* default value */ |
519 | bsize = psize * npkt; | 519 | bsize = psize * npkt; |
520 | PDEBUG(D_STREAM, | 520 | PDEBUG(D_STREAM, |
521 | "isoc %d pkts size %d = bsize:%d", | 521 | "isoc %d pkts size %d = bsize:%d", |
diff --git a/drivers/media/video/gspca/gspca.h b/drivers/media/video/gspca/gspca.h index 85bb0feddd10..bd1faff88644 100644 --- a/drivers/media/video/gspca/gspca.h +++ b/drivers/media/video/gspca/gspca.h | |||
@@ -44,8 +44,6 @@ extern int gspca_debug; | |||
44 | #define GSPCA_MAX_FRAMES 16 /* maximum number of video frame buffers */ | 44 | #define GSPCA_MAX_FRAMES 16 /* maximum number of video frame buffers */ |
45 | /* image transfers */ | 45 | /* image transfers */ |
46 | #define MAX_NURBS 4 /* max number of URBs */ | 46 | #define MAX_NURBS 4 /* max number of URBs */ |
47 | #define ISO_MAX_PKT 32 /* max number of packets in an ISOC transfer */ | ||
48 | #define ISO_MAX_SIZE 0x8000 /* max size of one URB buffer (32 Kb) */ | ||
49 | 47 | ||
50 | /* device information - set at probe time */ | 48 | /* device information - set at probe time */ |
51 | struct cam { | 49 | struct cam { |
@@ -57,6 +55,8 @@ struct cam { | |||
57 | * - when 0 and bulk_size != 0 means | 55 | * - when 0 and bulk_size != 0 means |
58 | * 1 URB and submit done by subdriver */ | 56 | * 1 URB and submit done by subdriver */ |
59 | u8 bulk; /* image transfer by 0:isoc / 1:bulk */ | 57 | u8 bulk; /* image transfer by 0:isoc / 1:bulk */ |
58 | u8 npkt; /* number of packets in an ISOC message | ||
59 | * 0 is the default value: 32 packets */ | ||
60 | u32 input_flags; /* value for ENUM_INPUT status flags */ | 60 | u32 input_flags; /* value for ENUM_INPUT status flags */ |
61 | }; | 61 | }; |
62 | 62 | ||
diff --git a/drivers/media/video/gspca/sonixb.c b/drivers/media/video/gspca/sonixb.c index 153d0a91d4b5..cf3af8de6e97 100644 --- a/drivers/media/video/gspca/sonixb.c +++ b/drivers/media/video/gspca/sonixb.c | |||
@@ -877,6 +877,8 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
877 | cam->cam_mode = sif_mode; | 877 | cam->cam_mode = sif_mode; |
878 | cam->nmodes = ARRAY_SIZE(sif_mode); | 878 | cam->nmodes = ARRAY_SIZE(sif_mode); |
879 | } | 879 | } |
880 | cam->npkt = 36; /* 36 packets per ISOC message */ | ||
881 | |||
880 | sd->brightness = BRIGHTNESS_DEF; | 882 | sd->brightness = BRIGHTNESS_DEF; |
881 | sd->gain = GAIN_DEF; | 883 | sd->gain = GAIN_DEF; |
882 | sd->exposure = EXPOSURE_DEF; | 884 | sd->exposure = EXPOSURE_DEF; |
diff --git a/drivers/media/video/gspca/sonixj.c b/drivers/media/video/gspca/sonixj.c index c72e19d3ac37..e58ac891b208 100644 --- a/drivers/media/video/gspca/sonixj.c +++ b/drivers/media/video/gspca/sonixj.c | |||
@@ -1280,6 +1280,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
1280 | cam = &gspca_dev->cam; | 1280 | cam = &gspca_dev->cam; |
1281 | cam->cam_mode = vga_mode; | 1281 | cam->cam_mode = vga_mode; |
1282 | cam->nmodes = ARRAY_SIZE(vga_mode); | 1282 | cam->nmodes = ARRAY_SIZE(vga_mode); |
1283 | cam->npkt = 24; /* 24 packets per ISOC message */ | ||
1283 | 1284 | ||
1284 | sd->bridge = id->driver_info >> 16; | 1285 | sd->bridge = id->driver_info >> 16; |
1285 | sd->sensor = id->driver_info >> 8; | 1286 | sd->sensor = id->driver_info >> 8; |
diff --git a/drivers/media/video/gspca/vc032x.c b/drivers/media/video/gspca/vc032x.c index e4e933c400bc..30872cd047cc 100644 --- a/drivers/media/video/gspca/vc032x.c +++ b/drivers/media/video/gspca/vc032x.c | |||
@@ -42,7 +42,7 @@ struct sd { | |||
42 | char bridge; | 42 | char bridge; |
43 | #define BRIDGE_VC0321 0 | 43 | #define BRIDGE_VC0321 0 |
44 | #define BRIDGE_VC0323 1 | 44 | #define BRIDGE_VC0323 1 |
45 | char sensor; | 45 | u8 sensor; |
46 | #define SENSOR_HV7131R 0 | 46 | #define SENSOR_HV7131R 0 |
47 | #define SENSOR_MI0360 1 | 47 | #define SENSOR_MI0360 1 |
48 | #define SENSOR_MI1310_SOC 2 | 48 | #define SENSOR_MI1310_SOC 2 |
@@ -2453,6 +2453,17 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
2453 | struct usb_device *dev = gspca_dev->dev; | 2453 | struct usb_device *dev = gspca_dev->dev; |
2454 | struct cam *cam; | 2454 | struct cam *cam; |
2455 | int sensor; | 2455 | int sensor; |
2456 | static u8 npkt[] = { /* number of packets per ISOC message */ | ||
2457 | 64, /* HV7131R 0 */ | ||
2458 | 32, /* MI0360 1 */ | ||
2459 | 32, /* MI1310_SOC 2 */ | ||
2460 | 64, /* MI1320 3 */ | ||
2461 | 128, /* MI1320_SOC 4 */ | ||
2462 | 32, /* OV7660 5 */ | ||
2463 | 64, /* OV7670 6 */ | ||
2464 | 128, /* PO1200 7 */ | ||
2465 | 128, /* PO3130NC 8 */ | ||
2466 | }; | ||
2456 | 2467 | ||
2457 | cam = &gspca_dev->cam; | 2468 | cam = &gspca_dev->cam; |
2458 | sd->bridge = id->driver_info; | 2469 | sd->bridge = id->driver_info; |
@@ -2515,6 +2526,7 @@ static int sd_config(struct gspca_dev *gspca_dev, | |||
2515 | break; | 2526 | break; |
2516 | } | 2527 | } |
2517 | } | 2528 | } |
2529 | cam->npkt = npkt[sd->sensor]; | ||
2518 | 2530 | ||
2519 | sd->hflip = HFLIP_DEF; | 2531 | sd->hflip = HFLIP_DEF; |
2520 | sd->vflip = VFLIP_DEF; | 2532 | sd->vflip = VFLIP_DEF; |