Hi, I'd like to apply this patch, which basically removes unused variables from some structs. However, I am not sure whether there are drivers outside the linuxtv tree using them. If so, then please tell me which parts shall not be removed. Regards, Andreas Index: linux/drivers/media/dvb/dvb-core/demux.h =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/demux.h,v retrieving revision 1.14 diff -u -r1.14 demux.h --- linux/drivers/media/dvb/dvb-core/demux.h 2 Mar 2005 21:42:00 -0000 1.14 +++ linux/drivers/media/dvb/dvb-core/demux.h 17 Mar 2005 04:43:10 -0000 @@ -124,9 +124,7 @@ u16 pid, int type, enum dmx_ts_pes pes_type, - size_t callback_length, size_t circular_buffer_size, - int descramble, struct timespec timeout); int (*start_filtering) (struct dmx_ts_feed* feed); int (*stop_filtering) (struct dmx_ts_feed* feed); @@ -147,7 +145,6 @@ struct dmx_section_feed { int is_filtering; /* Set to non-zero when filtering in progress */ struct dmx_demux* parent; /* Back-pointer */ - void* priv; /* Pointer to private data of the API client */ int check_crc; u32 crc_val; @@ -159,7 +156,6 @@ int (*set) (struct dmx_section_feed* feed, u16 pid, size_t circular_buffer_size, - int descramble, int check_crc); int (*allocate_filter) (struct dmx_section_feed* feed, struct dmx_section_filter** filter); @@ -207,7 +203,6 @@ struct list_head connectivity_list; /* List of front-ends that can be connected to a particular demux */ - void* priv; /* Pointer to private data of the API client */ enum dmx_frontend_source source; }; @@ -225,8 +220,6 @@ #define DMX_MEMORY_BASED_FILTERING 8 /* write() available */ #define DMX_CRC_CHECKING 16 #define DMX_TS_DESCRAMBLING 32 -#define DMX_SECTION_PAYLOAD_DESCRAMBLING 64 -#define DMX_MAC_ADDRESS_DESCRAMBLING 128 /* * Demux resource type identifier. @@ -244,9 +237,7 @@ struct dmx_demux { u32 capabilities; /* Bitfield of capability flags */ struct dmx_frontend* frontend; /* Front-end connected to the demux */ - struct list_head reg_list; /* List of registered demuxes */ void* priv; /* Pointer to private data of the API client */ - int users; /* Number of users */ int (*open) (struct dmx_demux* demux); int (*close) (struct dmx_demux* demux); int (*write) (struct dmx_demux* demux, const char* buf, size_t count); @@ -260,17 +251,6 @@ dmx_section_cb callback); int (*release_section_feed) (struct dmx_demux* demux, struct dmx_section_feed* feed); - int (*descramble_mac_address) (struct dmx_demux* demux, - u8* buffer1, - size_t buffer1_length, - u8* buffer2, - size_t buffer2_length, - u16 pid); - int (*descramble_section_payload) (struct dmx_demux* demux, - u8* buffer1, - size_t buffer1_length, - u8* buffer2, size_t buffer2_length, - u16 pid); int (*add_frontend) (struct dmx_demux* demux, struct dmx_frontend* frontend); int (*remove_frontend) (struct dmx_demux* demux, @@ -286,16 +266,4 @@ u64 *stc, unsigned int *base); }; -/*--------------------------------------------------------------------------*/ -/* Demux directory */ -/*--------------------------------------------------------------------------*/ - -/* - * DMX_DIR_ENTRY(): Casts elements in the list of registered - * demuxes from the generic type struct list_head* to the type struct dmx_demux - *. - */ - -#define DMX_DIR_ENTRY(list) list_entry(list, struct dmx_demux, reg_list) - #endif /* #ifndef __DEMUX_H */ Index: linux/drivers/media/dvb/dvb-core/dmxdev.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dmxdev.c,v retrieving revision 1.39 diff -u -r1.39 dmxdev.c --- linux/drivers/media/dvb/dvb-core/dmxdev.c 13 Mar 2005 23:30:36 -0000 1.39 +++ linux/drivers/media/dvb/dvb-core/dmxdev.c 17 Mar 2005 04:43:10 -0000 @@ -577,7 +577,7 @@ return ret; } - ret=(*secfeed)->set(*secfeed, para->pid, 32768, 0, + ret=(*secfeed)->set(*secfeed, para->pid, 32768, (para->flags & DMX_CHECK_CRC) ? 1 : 0); if (ret<0) { @@ -660,7 +660,7 @@ (*tsfeed)->priv = (void *) filter; ret = (*tsfeed)->set(*tsfeed, para->pid, ts_type, ts_pes, - 188, 32768, 0, timeout); + 32768, timeout); if (ret < 0) { dmxdev->demux->release_ts_feed(dmxdev->demux, *tsfeed); Index: linux/drivers/media/dvb/dvb-core/dvb_demux.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_demux.c,v retrieving revision 1.63 diff -u -r1.63 dvb_demux.c --- linux/drivers/media/dvb/dvb-core/dvb_demux.c 2 Mar 2005 21:42:00 -0000 1.63 +++ linux/drivers/media/dvb/dvb-core/dvb_demux.c 17 Mar 2005 04:43:10 -0000 @@ -39,33 +39,6 @@ // #define DVB_DEMUX_SECTION_LOSS_LOG -static LIST_HEAD(dmx_muxs); - - -static int dmx_register_demux(struct dmx_demux *demux) -{ - demux->users = 0; - list_add(&demux->reg_list, &dmx_muxs); - return 0; -} - -static int dmx_unregister_demux(struct dmx_demux* demux) -{ - struct list_head *pos, *n, *head=&dmx_muxs; - - list_for_each_safe (pos, n, head) { - if (DMX_DIR_ENTRY(pos) == demux) { - if (demux->users>0) - return -EINVAL; - list_del(pos); - return 0; - } - } - - return -ENODEV; -} - - /****************************************************************************** * static inlined helper functions ******************************************************************************/ @@ -605,8 +578,8 @@ } static int dmx_ts_feed_set (struct dmx_ts_feed* ts_feed, u16 pid, int ts_type, - enum dmx_ts_pes pes_type, size_t callback_length, - size_t circular_buffer_size, int descramble, + enum dmx_ts_pes pes_type, + size_t circular_buffer_size, struct timespec timeout) { struct dvb_demux_feed *feed = (struct dvb_demux_feed *) ts_feed; @@ -638,17 +611,10 @@ feed->pid = pid; feed->buffer_size = circular_buffer_size; - feed->descramble = descramble; feed->timeout = timeout; - feed->cb_length = callback_length; feed->ts_type = ts_type; feed->pes_type = pes_type; - if (feed->descramble) { - up(&demux->mutex); - return -ENOSYS; - } - if (feed->buffer_size) { #ifdef NOBUFS feed->buffer=NULL; @@ -847,7 +813,7 @@ static int dmx_section_feed_set(struct dmx_section_feed* feed, u16 pid, size_t circular_buffer_size, - int descramble, int check_crc) + int check_crc) { struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *) feed; struct dvb_demux *dvbdmx = dvbdmxfeed->demux; @@ -862,12 +828,6 @@ dvbdmxfeed->pid = pid; dvbdmxfeed->buffer_size = circular_buffer_size; - dvbdmxfeed->descramble = descramble; - if (dvbdmxfeed->descramble) { - up(&dvbdmx->mutex); - return -ENOSYS; - } - dvbdmxfeed->feed.sec.check_crc = check_crc; #ifdef NOBUFS @@ -1044,7 +1004,6 @@ (*feed)=&dvbdmxfeed->feed.sec; (*feed)->is_filtering = 0; (*feed)->parent = demux; - (*feed)->priv = NULL; (*feed)->set = dmx_section_feed_set; (*feed)->allocate_filter = dmx_section_feed_allocate_filter; @@ -1136,7 +1095,7 @@ struct dvb_demux *dvbdemux = (struct dvb_demux *) demux; struct list_head *head = &dvbdemux->frontend_list; - list_add(&(frontend->connectivity_list), head); + list_add(&frontend->connectivity_list, head); return 0; } @@ -1208,7 +1167,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux) { - int i, err; + int i; struct dmx_demux *dmx = &dvbdemux->dmx; dvbdemux->users = 0; @@ -1230,9 +1189,9 @@ dvbdemux->feed[i].state = DMX_STATE_FREE; dvbdemux->feed[i].index = i; } - dvbdemux->frontend_list.next= - dvbdemux->frontend_list.prev= - &dvbdemux->frontend_list; + + INIT_LIST_HEAD(&dvbdemux->frontend_list); + for (i=0; i<DMX_TS_PES_OTHER; i++) { dvbdemux->pesfilter[i] = NULL; dvbdemux->pids[i] = 0xffff; @@ -1240,8 +1199,6 @@ INIT_LIST_HEAD(&dvbdemux->feed_list); - dvbdemux->playing = 0; - dvbdemux->recording = 0; dvbdemux->tsbufp = 0; if (!dvbdemux->check_crc32) @@ -1251,8 +1208,7 @@ dvbdemux->memcopy = dvb_dmx_memcopy; dmx->frontend = NULL; - dmx->reg_list.prev = dmx->reg_list.next = &dmx->reg_list; - dmx->priv = (void *) dvbdemux; + dmx->priv = dvbdemux; dmx->open = dvbdmx_open; dmx->close = dvbdmx_close; dmx->write = dvbdmx_write; @@ -1261,9 +1217,6 @@ dmx->allocate_section_feed = dvbdmx_allocate_section_feed; dmx->release_section_feed = dvbdmx_release_section_feed; - dmx->descramble_mac_address = NULL; - dmx->descramble_section_payload = NULL; - dmx->add_frontend = dvbdmx_add_frontend; dmx->remove_frontend = dvbdmx_remove_frontend; dmx->get_frontends = dvbdmx_get_frontends; @@ -1274,21 +1227,14 @@ sema_init(&dvbdemux->mutex, 1); spin_lock_init(&dvbdemux->lock); - if ((err = dmx_register_demux(dmx)) < 0) - return err; - return 0; } EXPORT_SYMBOL(dvb_dmx_init); -int dvb_dmx_release(struct dvb_demux *dvbdemux) +void dvb_dmx_release(struct dvb_demux *dvbdemux) { - struct dmx_demux *dmx = &dvbdemux->dmx; - - dmx_unregister_demux(dmx); vfree(dvbdemux->filter); vfree(dvbdemux->feed); - return 0; } EXPORT_SYMBOL(dvb_dmx_release); Index: linux/drivers/media/dvb/dvb-core/dvb_demux.h =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_demux.h,v retrieving revision 1.24 diff -u -r1.24 dvb_demux.h --- linux/drivers/media/dvb/dvb-core/dvb_demux.h 2 Mar 2005 21:42:00 -0000 1.24 +++ linux/drivers/media/dvb/dvb-core/dvb_demux.h 17 Mar 2005 04:43:10 -0000 @@ -54,12 +54,8 @@ int index; int state; int type; - int pesto; - u16 handle; - u16 hw_handle; struct timer_list timer; - int ts_state; }; @@ -87,7 +83,6 @@ struct timespec timeout; struct dvb_demux_filter *filter; - int cb_length; int ts_type; enum dmx_ts_pes pes_type; @@ -98,7 +93,8 @@ u16 peslen; struct list_head list_head; - int index; /* a unique index for each feed (can be used as hardware pid filter index) */ + + unsigned int index; /* a unique index for each feed (can be used as hardware pid filter index) */ }; struct dvb_demux { @@ -124,8 +120,6 @@ struct dvb_demux_feed *pesfilter[DMX_TS_PES_OTHER]; u16 pids[DMX_TS_PES_OTHER]; - int playing; - int recording; #define DMX_MAX_PID 0x2000 struct list_head feed_list; @@ -138,7 +132,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux); -int dvb_dmx_release(struct dvb_demux *dvbdemux); +void dvb_dmx_release(struct dvb_demux *dvbdemux); void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, size_t count); void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count); void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count); Index: linux/drivers/media/dvb/dvb-core/dvb_net.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_net.c,v retrieving revision 1.57 diff -u -r1.57 dvb_net.c --- linux/drivers/media/dvb/dvb-core/dvb_net.c 12 Feb 2005 01:24:28 -0000 1.57 +++ linux/drivers/media/dvb/dvb-core/dvb_net.c 17 Mar 2005 04:43:10 -0000 @@ -891,7 +891,7 @@ return ret; } - ret = priv->secfeed->set(priv->secfeed, priv->pid, 32768, 0, 1); + ret = priv->secfeed->set(priv->secfeed, priv->pid, 32768, 1); if (ret<0) { printk("%s: could not set section feed\n", dev->name); @@ -943,9 +943,7 @@ priv->tsfeed->priv = (void *)dev; ret = priv->tsfeed->set(priv->tsfeed, priv->pid, TS_PACKET, DMX_TS_PES_OTHER, - 188 * 100, /* nr. of bytes delivered per callback */ 32768, /* circular buffer size */ - 0, /* descramble */ timeout); if (ret < 0) { Index: linux/drivers/media/dvb/ttpci/av7110.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/ttpci/av7110.c,v retrieving revision 1.178 diff -u -r1.178 av7110.c --- linux/drivers/media/dvb/ttpci/av7110.c 17 Mar 2005 03:16:11 -0000 1.178 +++ linux/drivers/media/dvb/ttpci/av7110.c 17 Mar 2005 04:43:11 -0000 @@ -416,7 +416,7 @@ break; case DATA_PES_RECORD: - if (av7110->demux.recording) + if (av7110->rec_mode) av7110_record_cb(&av7110->p2t[handle], (u8 *) av7110->debi_virt, av7110->debilen); @@ -835,12 +835,12 @@ "ret %x handle %04x\n", __FUNCTION__, buf[0], buf[1], buf[2], buf[3], ret, handle); - dvbdmxfilter->hw_handle = 0xffff; + av7110->handle[dvbdmxfilter->index] = 0xffff; return -1; } av7110->handle2filter[handle] = dvbdmxfilter; - dvbdmxfilter->hw_handle = handle; + av7110->handle[dvbdmxfilter->index] = handle; return ret; } @@ -855,7 +855,7 @@ dprintk(4, "%p\n", av7110); - handle = dvbdmxfilter->hw_handle; + handle = av7110->handle[dvbdmxfilter->index]; if (handle >= 32) { printk("%s tried to stop invalid filter %04x, filter type = %x\n", __FUNCTION__, handle, dvbdmxfilter->type); @@ -921,13 +921,9 @@ dprintk(4, "%p\n", av7110); - if (dvbdmxfeed->pes_type <= 1) { + if (dvbdmxfeed->pes_type <= 1) av7110_av_stop(av7110, dvbdmxfeed->pes_type ? RP_VIDEO : RP_AUDIO); - if (!av7110->rec_mode) - dvbdmx->recording = 0; - if (!av7110->playing) - dvbdmx->playing = 0; - } + npids[0] = npids[1] = npids[2] = npids[3] = npids[4] = 0xffff; i = dvbdmxfeed->pes_type; switch (i) { @@ -972,7 +968,6 @@ dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); av7110_av_start_play(av7110,RP_AV); - demux->playing = 1; } break; default: Index: linux/drivers/media/dvb/ttpci/av7110.h =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/ttpci/av7110.h,v retrieving revision 1.40 diff -u -r1.40 av7110.h --- linux/drivers/media/dvb/ttpci/av7110.h 17 Mar 2005 03:16:11 -0000 1.40 +++ linux/drivers/media/dvb/ttpci/av7110.h 17 Mar 2005 04:43:11 -0000 @@ -185,6 +185,7 @@ struct audio_status audiostate; struct dvb_demux_filter *handle2filter[32]; + u16 handle[MAXFILT]; struct av7110_p2t p2t_filter[MAXFILT]; struct dvb_filter_pes2ts p2t[2]; struct ipack ipack[2]; Index: linux/drivers/media/dvb/ttpci/av7110_av.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/ttpci/av7110_av.c,v retrieving revision 1.15 diff -u -r1.15 av7110_av.c --- linux/drivers/media/dvb/ttpci/av7110_av.c 17 Mar 2005 03:16:11 -0000 1.15 +++ linux/drivers/media/dvb/ttpci/av7110_av.c 17 Mar 2005 04:43:11 -0000 @@ -128,7 +128,6 @@ if (av7110->playing || (av7110->rec_mode & av)) return -EBUSY; av7110_fw_cmd(av7110, COMTYPE_REC_PLAY, __Stop, 0); - dvbdmx->recording = 1; av7110->rec_mode |= av; switch (av7110->rec_mode) {