Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 261607
b: refs/heads/master
c: f7acc4b
h: refs/heads/master
i:
  261605: 6b2daf6
  261603: 79970cf
  261599: edc0e6a
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Jul 28, 2011
1 parent 105ecc7 commit fc6accf
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cf845297d592339bcf0839298c4319633df3173a
refs/heads/master: f7acc4bb86594d78aa41c07b7670df3e03738b18
41 changes: 29 additions & 12 deletions trunk/drivers/media/video/em28xx/em28xx-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1113,17 +1113,19 @@ EXPORT_SYMBOL_GPL(em28xx_init_isoc);
int em28xx_isoc_dvb_max_packetsize(struct em28xx *dev)
{
unsigned int chip_cfg2;
unsigned int packet_size = 564;

if (dev->chip_id == CHIP_ID_EM2874 || dev->chip_id == CHIP_ID_EM2884) {
/* FIXME - for now assume 564 like it was before, but the
em2874 code should be added to return the proper value... */
packet_size = 564;
} else if (dev->chip_id == CHIP_ID_EM28174) {
/* FIXME same as em2874. 564 was enough for 22 Mbit DVB-T
but too much for 44 Mbit DVB-C. */
packet_size = 752;
} else {
unsigned int packet_size;

switch (dev->chip_id) {
case CHIP_ID_EM2710:
case CHIP_ID_EM2750:
case CHIP_ID_EM2800:
case CHIP_ID_EM2820:
case CHIP_ID_EM2840:
case CHIP_ID_EM2860:
/* No DVB support */
return -EINVAL;
case CHIP_ID_EM2870:
case CHIP_ID_EM2883:
/* TS max packet size stored in bits 1-0 of R01 */
chip_cfg2 = em28xx_read_reg(dev, EM28XX_R01_CHIPCFG2);
switch (chip_cfg2 & EM28XX_CHIPCFG2_TS_PACKETSIZE_MASK) {
Expand All @@ -1140,9 +1142,24 @@ int em28xx_isoc_dvb_max_packetsize(struct em28xx *dev)
packet_size = 752;
break;
}
break;
case CHIP_ID_EM2874:
/*
* FIXME: for now assumes 564 like it was before, but the
* em2874 code should be added to return the proper value
*/
packet_size = 564;
break;
case CHIP_ID_EM2884:
case CHIP_ID_EM28174:
default:
/*
* FIXME: same as em2874. 564 was enough for 22 Mbit DVB-T
* but not enough for 44 Mbit DVB-C.
*/
packet_size = 752;
}

em28xx_coredbg("dvb max packet size=%d\n", packet_size);
return packet_size;
}
EXPORT_SYMBOL_GPL(em28xx_isoc_dvb_max_packetsize);
Expand Down
5 changes: 5 additions & 0 deletions trunk/drivers/media/video/em28xx/em28xx-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,11 @@ static int start_streaming(struct em28xx_dvb *dvb)
return rc;

max_dvb_packet_size = em28xx_isoc_dvb_max_packetsize(dev);
if (max_dvb_packet_size < 0)
return max_dvb_packet_size;
dprintk(1, "Using %d buffers each with %d bytes\n",
EM28XX_DVB_NUM_BUFS,
max_dvb_packet_size);

return em28xx_init_isoc(dev, EM28XX_DVB_MAX_PACKETS,
EM28XX_DVB_NUM_BUFS, max_dvb_packet_size,
Expand Down

0 comments on commit fc6accf

Please sign in to comment.