📄 mcci_usb.c.org
字号:
"\165nr\145\143ogn\151ze\144 i\157c\164l \060x%\170\012",l1000000101));break;}returnl1000011100;}#define \O1000110100( \l1000000001 \) \ \(((l1000000001)[3] << 0x18) | ((l1000000001)[2] << 020) | ((l1000000001)[1] << 8) | (l1000000001)[0])#define \l1000110101( \l1000000001 \, \l1000110110 \) \ \do { (l1000000001)[0] = (unsigned char)(l1000110110); (l1000000001)[1] = (unsigned char)((l1000110110) >> 8); (l1000000001)[2] = (unsigned char)((l1000110110) >> 0x10); (l1000000001)[3] = (unsigned char)((l1000110110) >> 030); } while (0)staticvoidl1000000111(structusb_serial_port*l1000000001,structtermios*O1000110111){structusb_serial*l1000001100;structO111111011*O1000011101;O1000111000O1000111001;l1000111010*O1000111011;intl1000111100;intl1000111101;intl1000111110;intO1000100111;intl1000011100;intO1000111111;if(l1000000001==NULL){printk("%d \155cc\151\137s\145\164_\164\145r\155io\163 \143\141l\154ed\040\167\151th\040N\125L\114 \160o\151n\164er\040\012",__LINE__);return;}O1000011101=(structO111111011*)l1000000001->private;if(O1000011101==NULL){printk("\045d m\143\143i_\163et\137\164e\162mi\157s \143a\154\154e\144 w\151t\150 \116U\114L\040p\162iv\141t\145 \160o\151n\164e\162 \012",__LINE__);return;}l1000001100=l1000000001->serial;if(l1000001100==NULL){printk("%d\040\155cc\151\137s\145\164_\164\145r\155io\163 c\141l\154\145d\040w\151t\150 \116\125L\114 \165s\040p\157i\156t\145r\040\012",__LINE__);return;}if((l1000000001 -> tty == 0)||(l1000000001 -> tty -> termios == 0)){O111111001(printk("m\143ci_\163\145t_\164er\155io\163 \160as\163ed\040nu\154l\040\160\157i\156t\145rs\012"));return;}l1000111100=l1000000001->tty->termios->c_cflag;l1000111110=l1000000001->tty->termios->c_iflag;if(O1000110111){l1000111101=O1000110111->c_cflag;intO1001000000=O1000110111->c_iflag;if(l1000111100==l1000111101&&(RELEVANT_IFLAG ( l1000111110 ) == RELEVANT_IFLAG ( O1001000000 ))){O111111001(printk("\045\163: \156\157t\150\151n\147\040t\157 c\150an\147e\012",__FUNCTION__));return;}}else{l1000111101=~l1000111100;}O111111001(printk("\155cc\151\137set\137te\162mi\157s\040\143f\163 0\170%x\040i\146s\040\060x\045x\012",l1000111100,l1000111110));memset(&O1000111001,0,sizeof(O1000111001));O1000111011=kmalloc(sizeof(* O1000111011),GFP_KERNEL);if(O1000111011==NULL){printk("\045s: \045\144: \143an\047\164 \141\154\154o\143at\145 \126\123PFL\117W\103T\114_W\111R\105\012",__FUNCTION__,__LINE__);return;}memset(O1000111011,0,sizeof(* O1000111011));l1000011100=usb_control_msg(l1000001100->dev,usb_rcvctrlpipe(l1000001100->dev,0),l1001000001,O1000101001,0,0,O1000111011,O1001000010,3*HZ);if(l1000011100<0){O111111001(printk("\045s\072\040\045d\072 V\123\120_\142R\145\161u\145st\137GE\124_\106LOW\040f\141i\154e\144\040%\144\012",__FUNCTION__,__LINE__,-l1000011100));memset(O1000111011,0,sizeof(* O1000111011));}O1000111001.O1001000011=O1000110100(O1000111011->O1001000011);O1000111001.O1001000100=O1000110100(O1000111011->O1001000100);O1000111001.l1001000101=O1000110100(O1000111011->l1001000101);O1000111001.O1001000110=O1000110100(O1000111011->O1001000110);{intl1001000111=(l1000111100 & CBAUD);if(l1001000111==B0){O1000111111=1;}else{O1000111111=0;}switch(l1001000111){caseB110:O1000100111=BAUD_CLK/0x6e;break;caseB150:O1000100111=BAUD_CLK/0x96;break;caseB300:O1000100111=BAUD_CLK/0x12c;break;caseB600:O1000100111=BAUD_CLK/01130;break;caseB1200:O1000100111=BAUD_CLK/02260;break;caseB1800:O1000100111=BAUD_CLK/03410;break;caseB2400:O1000100111=BAUD_CLK/04540;break;caseB4800:O1000100111=BAUD_CLK/011300;break;caseB9600:O1000100111=BAUD_CLK/022600;break;caseB19200:O1000100111=BAUD_CLK/045400;O111111001(printk("\045d b\141\165d \162at\145\0401\0712\0600\012",__LINE__));break;caseB38400:O1000100111=BAUD_CLK/0x9600;break;caseB57600:O1000100111=BAUD_CLK/0xe100;break;caseB115200:O1000100111=BAUD_CLK/0341000;break;caseB230400:O1000100111=BAUD_CLK/0x38400;break;default:O111111001(printk("\157ops\040\165nk\156ow\156\040b\141u\144 r\141t\145\0400\170%x\012",l1001000111));O1000100111=BAUD_CLK/022600;break;}if(l1001000111!=B0){O111111001(printk("s\145\164ti\156\147 \142\141u\144r\141te\040to\0400\170\045x\012",O1000100111));l1000011100=usb_control_msg(l1000001100->dev,usb_sndctrlpipe(l1000001100->dev,0),O1001001000,O1000100010,O1000100111,0,0,0,3*HZ);if(l1000011100<0)printk("\045\144\040usb\137co\156tr\157\154\137ms\147 r\145t\165\162n\145\144 %\144 \012",__LINE__,-l1000011100);}}if(((l1000111100 & (PARENB | PARODD)) != (l1000111101 & (PARENB | PARODD)))){O111111001(printk("sett\151\156g \160\141r\151\164y\0400\170%x\012",l1000111100));switch(l1000111100&(PARODD | PARODD)){case0:case(PARODD):O1000011101->O111111110=O1000011111;break;case(PARENB):O1000011101->O111111110=l1001001001;break;case(PARENB | PARODD):O1000011101->O111111110=l1001001010;break;}}if(((l1000111100 & CSTOPB) != (l1000111101 & CSTOPB))){if(l1000111100&CSTOPB)O1000011101->l111111101=O1001001011;elseO1000011101->l111111101=O1000011110;}if(((l1000111100 & CSIZE) != (l1000111101 & CSIZE))){switch(l1000111100&CSIZE){caseCS5:O1000011101->O111111111=l1001001100;break;caseCS6:O1000011101->O111111111=l1001001101;break;caseCS7:O1000011101->O111111111=l1001001110;break;caseCS8:O1000011101->O111111111=l1000100000;break;}}if(((l1000111100 & (PARENB | PARODD | CSTOPB | CSIZE)) != (l1000111101 & (PARENB | PARODD | CSTOPB | CSIZE)))){O1000100111=(O1000011101 -> l111111101 & l1001001111)|(O1000011101 -> O111111110 & O1001010000)|((O1000011101 -> O111111111 << l1001010001) & l1001010010);l1000011100=usb_control_msg(l1000001100->dev,usb_sndctrlpipe(l1000001100->dev,0),O1001010011,O1000100010,O1000100111,0,0,0,3*HZ);if(l1000011100<0)printk("%d u\163b\137\143o\156\164\162ol\137\155sg\040r\145\164u\162n\145\144 \045d\012",__LINE__,-l1000011100);}if(O1000111111){O1000111001.O1001000011&=~(l1001010100 | l1001010101 | l1001010110);O1000111001.O1001000100=0;}elseif(l1000111100&CRTSCTS){O1000111001.O1001000011&=~(l1001010100 | l1001010101 | l1001010110);O1000111001.O1001000011|=O1001010111|O1001011000;O1000111001.O1001000100=l1001011001;}else{O1000111001.O1001000011&=~(l1001010100 | l1001010101 | l1001010110);O1000111001.O1001000011|=O1001010111;O1000111001.O1001000100|=O1001011010;}l1000110101(O1000111011->O1001000011,O1000111001.O1001000011);l1000110101(O1000111011->O1001000100,O1000111001.O1001000100);l1000110101(O1000111011->l1001000101,O1000111001.l1001000101);l1000110101(O1000111011->O1001000110,O1000111001.O1001000110);l1000011100=usb_control_msg(l1000001100->dev,usb_sndctrlpipe(l1000001100->dev,0),l1001011011,O1000100010,0,0,O1000111011,O1001000010,3*HZ);if(l1000011100<0)printk("\045\163:%\144\072 \165sb\137co\156\164r\157\154_\155sg\040r\145\164u\162n\145d\040%\144\012",__FUNCTION__,__LINE__,-l1000011100);O111111001(printk("\144e\166\040%d \163et\040mo\144e\155 c\157n\164\162o\154s \164o \060\170%\154x\054 0\170%\154x\054 \060x\045\154x\054 \060x\045\154x\012",l1000001100->port[0].number,(unsignedlong)O1000111001.O1001000011,(unsignedlong)O1000111001.O1001000100,(unsignedlong)O1000111001.l1001000101,(unsignedlong)O1000111001.O1001000110));kfree(O1000111011);return;}staticvoidO1000001001(structusb_serial_port*l1000000001,intl1001011100){structusb_serial*l1000001100;intl1000011100;if(l1000000001==NULL){printk("\045\163:%d\072\040c\141\154l\145d w\151th\040NU\114L\040\160o\151\156\164\145r\040\012",__FUNCTION__,__LINE__);return;}l1000001100=l1000000001->serial;if(l1000001100==NULL){printk("%\163\072%d:\040\143a\154le\144 w\151th\040N\125\114L\040us\040p\157i\156t\145r \012",__FUNCTION__,__LINE__);return;}O111111001(printk("\155c\143\151_br\145ak\137\143t\154 \163\164a\164e \075 0\170%\170\012",l1001011100));l1000011100=usb_control_msg(l1000001100->dev,usb_sndctrlpipe(l1000001100->dev,0),l1001011101,O1000100010,l1001011100?1:0,0,0,0,3*HZ);if(l1000011100<0)printk("\045\144\040us\142_\143on\164\162\157l\137\155s\147 r\145t\165\162n\145d\040\045d\012",__LINE__,-l1000011100);}staticintO1000001011(structusb_serial*l1000001100){intl1001011110;charl1001011111[0310];if(l1000001100==NULL){printk("%s:\045d:\040\143a\154le\144\040\167i\164\150 \116ULL\040u\163 po\151\156t\145\162 \012",__FUNCTION__,__LINE__);return-EINVAL;}O111111001(printk("m\143\143i_\163\164a\162tu\160\040num\040of\040po\162ts\040=\040%\144\012",l1000001100->num_ports));l1001011110=0;O111111001(printk("\155c\143\151\137s\164ar\164\165p\040t\164yU\123B%\144\012",l1000001100->port[l1001011110].number));sprintf(l1001011111,"\155cc\151\137%d",l1000001100->port[l1001011110].number);l1000001100->port[l1001011110].private=(void*)kmalloc(sizeof(structO111111011),GFP_KERNEL);if(l1000001100->port[l1001011110].private==NULL)return-ENOMEM;create_proc_read_entry(l1001011111,0,NULL,O1000010000,(void*)l1000001100);return0;}staticvoidO1000001101(structusb_serial*l1000001100){intl1001011110;charl1001011111[0xc8];if(l1000001100==NULL){printk("\045s:%\144\072 c\141ll\145\144 \167i\164h\040\116U\114L \165s\040\160o\151n\164e\162\040\012",__FUNCTION__,__LINE__);return;}O111111001(printk("m\143\143i_\163\150u\164\144o\167n\040nu\155 o\146 p\157rt\163 \075 \045d\012",l1000001100->num_ports));l1001011110=0;O111111001(printk("\155\143ci\137\163h\165\164d\157\167n\040t\164\171U\123B%\144\012",l1000001100->port[l1001011110].number));if(l1000001100->port[l1001011110].private==NULL){printk("\164r\171\151ng \164o \162\145-\146re\145 @\0400x\045lx\054 \151s\040\116U\114L\012",(unsignedlong)&l1000001100->port[l1001011110].private);}else{kfree(l1000001100->port[l1001011110].private);l1000001100->port[l1001011110].private=NULL;}sprintf(l1001011111,"mcc\151_%\144",l1000001100->port[l1001011110].number);remove_proc_entry(l1001011111,NULL);return;}staticintl1001100000(void){intl1001011110;l1001011110=0;while((mcci_vids [ l1001011110 ] != 0)&&(mcci_pids [ l1001011110 ] != 0)&&(l1001011110 < O111110111)){l1000011001[l1001011110].match_flags=USB_DEVICE_ID_MATCH_DEVICE;l1000011001[l1001011110].idVendor=mcci_vids[l1001011110];l1000011001[l1001011110].idProduct=mcci_pids[l1001011110];l1001011110++;}O111111001(printk("\155\143ci_\151\156i\164\012"));usb_serial_register(&O1000011011);return0;}staticvoidO1001100001(void){O111111001(printk("m\143ci_\143\154ea\156u\160\012"));usb_serial_deregister(&O1000011011);}#if \0staticvoidO1001100010(structurb*urb){if(urb==NULL){printk("\165rb\040\075\040\060\012");}else{printk("\165rb\055\076st\141tu\163 =\0400x\045\170\012",urb->O1000100100);printk("\165rb\055\076tr\141ns\146\145r\137le\156g\164\150 \075 0\170%\170\012",urb->l1001100011);printk("\165r\142\055>t\162\141n\163\146e\162_d\141ta\040=\040\060x\045x\012",(( int * ) (urb -> O1001100100))[0]);}}#endifintO1000010000(char*O1000010001,char**O1000010010,off_tl1000010011,intO1000010100,int*O1000010101,void*l1000010110){intO1001100101=0;intl1000011100;structusb_serial*serial=(structusb_serial*)l1000010110;O111111001(printk("\155\143\143i_r\145ad\137\160r\157c\040ca\154le\144 c\157u\156t =\040\045d\040\163t\141r\164 \075 \060x\045l\170 \157f\146s\145t = \045l\165\040d\141\164a\040\075 \060\170%l\170\012",O1000010100,(unsignedlong)*O1000010010,(unsignedlong)l1000010011,(unsignedlong)l1000010110));if(l1000010011!=0){*O1000010101=1;*O1000010010=NULL;return0;}if(verbose){}l1000011100=l1000001110(O1000010001,O1000010100,"\141t\164\141\143h\145d \164\157 \164t\171\125S\102%d\012",serial->port[0].number);O1000010001+=l1000011100;O1000010100-=l1000011100;O1001100101+=l1000011100;*O1000010101=1;*O1000010010=NULL;returnO1001100101+1;}intl1000001110(char*O1000001111,intsize,char*format,...){va_listap;intO1001100110;charO1001100111[0xc8];va_start(ap,format);vsprintf(O1001100111,format,ap);O1001100110=strlen(O1001100111);if(size<O1001100110){printk("%s",O1001100111);return0;}elseif(O1001100110>0){sprintf(O1000001111,"\045\163",O1001100111);returnO1001100110;}elsereturn0;}module_init(l1001100000);module_exit(O1001100001);MODULE_PARM(verbose,"\151");MODULE_PARM_DESC(verbose,"p\162\151nt \155\157\162e \163tu\146\146 \157\156 \164he\040l\157\147");MODULE_DESCRIPTION("M\103\103I \165\163b\040\163e\162i\141\154 \141da\160te\162");MODULE_LICENSE("GPL");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -