📄 mcci_usb.c
字号:
case TIOCSERGSTRUCT: O111111001 ( printk ("\124I\117\103\123E\122\107S\124\122U\103T\012")); break; case TIOCSERGETLSR: O111111001 ( printk ( "\124\111OC\123\105RG\105TL\123\122\012")); break; case TIOCSERGETMULTI: O111111001 ( printk ("\124\111OC\123\105R\107\105TM\125L\124\111\012")); break; case TIOCSERSETMULTI: O111111001 ( printk ("\124IO\103\123ER\123ET\115\125L\124I\012")); break; default: O111111001 ( printk ("\165nr\145\143ogn\151ze\144 i\157c\164l \060x%\170\012", l1000000101)); break; } return l1000011100;}#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)static void l1000000111 ( struct usb_serial_port * l1000000001, struct termios * O1000110111){ struct usb_serial * l1000001100; struct O111111011 * O1000011101; O1000111000 O1000111001 ; l1000111010 * O1000111011; int l1000111100; int l1000111101; int l1000111110; int O1000100111; int l1000011100; int O1000111111; int O1001000000; 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 = ( struct O111111011 * ) 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;// int O1001000000=O1000110111->c_iflag; O1001000000=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); { int l1001000111 = (l1000111100 & CBAUD); if ( l1001000111==B0) { O1000111111=1; } else { O1000111111=0; } switch (l1001000111) { case B110: O1000100111=BAUD_CLK/0x6e; break; case B150: O1000100111=BAUD_CLK/0x96; break; case B300: O1000100111=BAUD_CLK/0x12c; break; case B600: O1000100111=BAUD_CLK/01130; break; case B1200: O1000100111=BAUD_CLK/02260; break; case B1800: O1000100111=BAUD_CLK/03410; break; case B2400: O1000100111=BAUD_CLK/04540; break; case B4800: O1000100111=BAUD_CLK/011300; break; case B9600: O1000100111=BAUD_CLK/022600; break; case B19200: O1000100111=BAUD_CLK/045400; O111111001 ( printk ("\045d b\141\165d \162at\145\0401\0712\0600\012",__LINE__)); break; case B38400: O1000100111=BAUD_CLK/0x9600; break; case B57600: O1000100111=BAUD_CLK/0xe100; break; case B115200: O1000100111=BAUD_CLK/0341000; break; case B230400: 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) ) { case 0: 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; else O1000011101->l111111101=O1000011110; } if (((l1000111100 & CSIZE) != (l1000111101 & CSIZE))) { switch ( l1000111100&CSIZE) { case CS5: O1000011101->O111111111=l1001001100; break; case CS6: O1000011101->O111111111=l1001001101; break; case CS7: O1000011101->O111111111=l1001001110; break; case CS8: 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; } else if ( 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,(unsigned long)O1000111001.O1001000011,(unsigned long)O1000111001.O1001000100,(unsigned long)O1000111001.l1001000101, (unsigned long)O1000111001.O1001000110) ); kfree ( O1000111011); return;}static void O1000001001 ( struct usb_serial_port * l1000000001, int l1001011100){ struct usb_serial * l1000001100; int l1000011100; 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);}static int O1000001011 ( struct usb_serial * l1000001100 ){ int l1001011110; char l1001011111 [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 (struct O111111011),GFP_KERNEL); if ( l1000001100->port[l1001011110].private==NULL) return -ENOMEM; create_proc_read_entry ( l1001011111,0,NULL,O1000010000,(void *)l1000001100); return 0;}static void O1000001101 ( struct usb_serial * l1000001100){ int l1001011110; char l1001011111[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",(unsigned long)&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;}static int l1001100000 ( void ){ int l1001011110; 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); return 0;}static void O1001100001 (void){ O111111001 ( printk("m\143ci_\143\154ea\156u\160\012")); usb_serial_deregister(&O1000011011);}#if 0static void O1001100010 ( struct urb * 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]); }}#endifint O1000010000 ( char * O1000010001, char ** O1000010010, off_t l1000010011, int O1000010100, int * O1000010101 ,void * l1000010110) { int O1001100101 = 0; int l1000011100 ; struct usb_serial * serial=( struct usb_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,(unsigned long)*O1000010010,(unsigned long)l1000010011,(unsigned long)l1000010110) ); if ( l1000010011!=0) { *O1000010101=1; *O1000010010=NULL; return 0; } 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; return O1001100101+1;}int l1000001110 ( char * O1000001111, int size, char * format, ... ){ va_list ap; int O1001100110; char O1001100111 [ 0xc8 ]; va_start ( ap, format); vsprintf ( O1001100111, format, ap); O1001100110 = strlen ( O1001100111 ); if ( size < O1001100110 ) { printk ( "%s", O1001100111); return 0; } else if ( O1001100110>0) { sprintf ( O1000001111, "\045\163", O1001100111); return O1001100110; } else return 0;}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 + -