📄 dvb-cwidx-old.diff
字号:
diff -ur linux/drivers/media/dvb/ttpci/av7110_ca.c linux/drivers/media/dvb/ttpci/av7110_ca.c--- linux/drivers/media/dvb/ttpci/av7110_ca.c 2004-01-09 14:44:57.000000000 +0100+++ linux/drivers/media/dvb/ttpci/av7110_ca.c 2005-09-02 16:52:08.000000000 +0200@@ -263,10 +263,31 @@ } case CA_GET_MSG:- break;+ {+ ca_pid_t *arg = (ca_pid_t*) parg;+ u16 buf[4], res[2];+ buf[0]=0x0745;+ buf[1]=2;+ buf[2]=arg->pid >> 16;+ buf[3]=arg->pid & 0xFFFF;+ av7110_fw_request(av7110,buf,sizeof(buf),res,2);+ arg->index=(res[0]<<16) + res[1];+ break;+ } case CA_SEND_MSG:- break;+ {+ ca_pid_t *arg = (ca_pid_t*) parg;+ u16 buf[6], res[2];+ buf[0]=0x0746;+ buf[1]=4;+ buf[2]=arg->pid >> 16;+ buf[3]=arg->pid & 0xFFFF;+ buf[4]=arg->index >> 16;+ buf[5]=arg->index & 0xFFFF;+ av7110_fw_request(av7110,buf,sizeof(buf),res,2);+ break;+ } case CA_GET_DESCR_INFO: {@@ -295,6 +316,37 @@ break; } + case CA_SET_PID:+ {+ int handle;+ ca_pid_t *pid = (ca_pid_t*) parg;++ if (pid->pid >= 0x1fff)+ return -EINVAL;+ if (pid->index < 0 || pid->index >= 16)+ return -EINVAL;++ if (down_interruptible (&av7110->demux.mutex))+ return -ERESTARTSYS;++ for(handle=0; handle<32; handle++) {+ struct dvb_demux_filter *dvbdmxfilter=av7110->handle2filter[handle];+ if(dvbdmxfilter) {+ struct dvb_demux_feed *feed=dvbdmxfilter->feed;+ if(feed && feed->state==DMX_STATE_GO && feed->pid==pid->pid) {+ /* we map the new cmd to CacheError as it's not+ implemented anyways, i.e. free. */+ av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, CacheError, 1,+ (handle<<8)|pid->index); /* hw handle / cw index*/+ break;+ }+ }+ }++ up(&av7110->demux.mutex);+ break;+ }+ default: return -EINVAL; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -