艾腾台式电脑一键系统重装电脑哪个键

原装 宏正 ATEN KVM 切换器 KM0532-中国制造交易网
产品名称:原装 宏正 ATEN KVM 切换器 KM0532
产品链接:
手机版链接:
价格:35000元联系人:陈自强电话:
相容性连接线 :串联连接线 :LIN5-68H1-H11G串连用连接线(0.35m)控制端/电脑端模块 :KAKAKAKAKAKA9120Matrix矩阵式KVM多电脑切换器 :KM0032
5组控制端32端口Matrix矩阵式KVM多电脑切换器ATEN Matrix矩阵式KVM多电脑切换器专为现代的数据中心量身打造,以满足高可靠度、高安全性存取与控管多台服务器的管理需求。通过Non-blocked服务器存取与弹性化扩充能力,矩阵式KVM多电脑切换器提供管理人员安全、实时的高质量影像信号传递,以有效控管数据中心的所有设备。藉由先进的自动色偏补偿与自动信号补偿技术,Matrix矩阵式KVM多电脑切换器具备绝佳的影像质量强化能力,通过Cat 5e/6线材连接,在距离服务器300m远的地点仍可维持Hz的优异视频分辨率。此外,业界首创的全屏图形化使用者接口(GUI)功能,可将安装的设备以树状列表检视,提供流畅的导引与便利的存取控管,大幅节省使用者操作学习时间与成本,并提升管理效益。
专利号码 :CN ZL
,TW 194030 ,US 6160543 ,CN ZL
,TW 150098 ,US 6489854 ,CN ZL
,TW 183765 ,US 7386584 ,US 7640289 ,DE
,JP 3917598 ,TW I276963 ,CN ZL .2 ,US 7415552 ,CN ZL .0 ,TW I237762 ,DE
,US 7613854 ,CN ZL .3 ,TW I269992 ,GB 2412456 ,FR 0500514 ,US 7584309 ,JP 4456936 ,TW I243890 ,JP 4160936 ,DE
,US 7532998 ,CN ZL .8 ,CN ZL .X ,TW D108320
产品特性硬件5组控制端可独立或同步控管32台服务器弹性扩充能力 - 可随服务器数量成长进行弹性化扩充安装1台KVM多电脑切换器主装置可菊链串接7台扩充型多电脑切换器矩阵式KVM多电脑切换器可堆叠串接三层以存取与管理多达8,000台以上的服务器 (可支持KH1508/KH1516经济型切换器方案)Dual root组态设定功能可允许一个架构中同时有10组控制端存取管理所有的服务器支持音频功能以方便使用多媒体设备冗余电源供应以确保24x7的高可靠度运作支持多平台: PC、Mac、Sun与串口控制端存取 - 能以任何类型的控制端控管各种服务器平台;控制端与电脑端皆支持双接口组合(PS/2与USB)精巧的机身设计,仅需占用1U的机架空间简易操作接口首创全屏图形化使用者接口 - 大幅节省使用者操作学习时间与成本,并提升管理效益内嵌式web接口可简易进行系统组态设定与管理树状检视 & 所有连接的设备皆可整合至单一的设备树形图检视,以方便存取管理当机台增加时连接端口列表会自动扩充 - 当机台顺序改变时,连接端口名称会自动进行组态重新设定支持使用者多国语言接口 - 英文、德文、日文、韩文、繁体中文、简体中文与俄罗斯文便利的连接端口操作可通过热键组合或图形化使用者接口(GUI)进行服务器选择连接端口层级存取控管 - 不论是单一连接或通过堆叠/菊链串连的服务器,仅有被授权的使用者能够进行存取使用者可同时执行多台电脑的存取功能 - 例如当第二台电脑正在使用虚拟媒体功能时,使用者可同时于第一台电脑上作业并聆听音乐多元的连接端口执行模式,提供弹性化的服务器管理扫描 - 可自动监控使用中的电脑占用 - 当第一位使用者存取控管连接端口时,其余登录者仅可浏览该连接端口的信号输出共享 - 在合作基础下,可允许多位使用者拥有一个连接端口的控制权支持广播功能 - 使所有连接的服务器同时执行相同指令管理支持多达1024个使用者账号与255个群组账号三层密码安全机制 - 超级管理者、管理者与使用者强化的密码管制功能 - 密码期限、密码更新需求、账号失效与账号期限智能信道分配 - 在菊链或堆叠串接的多信道情况下,主要机台可为使用者分配最佳通道可整合远程电源管理方案(Power Over the NET&)进行电源控管电源整合功能可使切换器的KVM端口连接PN0108的电源插座,从切换器的接口远程控管服务器电源支持RS-232串行端口登入功能,可允许管理人员通过所有连接切换器的控制端存取控管KVM连接端口 - 任何控制端皆可通过单一的接口端被指派到任一KVM连接端口时段管理 - 时段终止功能可提供管理人员强制使用者注销的能力提供备份与修复组态设定以及使用者账号信息所有菊链与堆叠串接的切换器与所连接的电脑端模块可同时进行固件更新电脑端模块ID - 连接端口的组态设定信息可储存于模块中,因此当服务器移至新的连接端口时,毋须再重新进行模块组态设定支持Event Log虚拟媒体虚拟媒体功能可将储存设备资源共享给所有连接的服务器,操作者可通过单一的控制端执行档案传输、应用程序安装或OS修补作业可于操作系统与BIOS层级控管USB接口服务器支持DVD/CD驱动与USB储存设备影像质量使用者的显示设备可随远程服务器的分辨率不同而自动调整高视频分辨率 - Hz达300m自动信号补偿(ASC)功能可确保服务器与控制端距离在300m时,仍拥有最佳的视频分辨率,需调整DIP切换设定控制端模块KA7240与最新的电脑端模块系列(KA7120, KA7170, KA7130, KA7176)皆支持自动色偏补偿(automatic skew compensation)以强化影像质量包装明细1x KM0532 Matrix矩阵式KVM多电脑切换器2x 电源线1x 接地线1x 机架安装配件1x 脚垫(4片)1x 使用者说明书1x 快速安装卡产品连线示意图+View enlargement产品规格电脑连接数直接32最大8,000控制端连接数5连接端口选择图形化使用者接口 (GUI) 、热键接口控制端连接端口5 x RJ-45 母头电脑端连接端口32 x RJ-45 母头菊链串接1 x VHDCI 68 母头 ( 黑 )LAN1 x RJ-45 母头PON1 x RJ-45 母头电源2 x 3-prong AC Socket开关重置1 x 半嵌式按键电源2 x 翘板开关固件更新1 x 滑动开关LED 指示灯控制端连接端口 ( 上线 )5 ( 绿 )电脑端连接端口( 上线 / 已选择 )32 双色 ( 绿 / 红 )电源1 ( 蓝 )I/P Rating100-240V AC, 50/60 Hz; 1A耗电量120V/45W; 240V/46W模拟方式键盘 / 鼠标PS/2; USB扫描区间1-240 秒视频分辨率Hz 最远达 300m作业环境操作温度0 - 50&C储存温度-20 - 60&C湿度0-80% RH, 无凝结机体属性外壳金属重量6.07 kg尺寸( 长 x 宽 x 高 )43.36 x 41.09 x 4.40 cm
【原装 宏正 ATEN KVM 切换器 KM0532】产品信息由【安腾天和(北京)商贸有限公司】提供,【安腾天和(北京)商贸有限公司】主营:&&&&&&&&,您可以查看更多关于【原装 宏正 ATEN KVM 切换器 KM0532】的产品。
联系人:陈自强电话:
86 010 地址:中国
中关村E世界816A网站:主营:&&&&&&&&
广告经营许可证:豫B2-|增值电信业务经营许可证:豫B2-linux(12)
主机:Gentoo Linux 11.2
内核版本:Linux 3.0.6
原创作品,转载请标明出处
以前在Ubuntu下USB转串口驱动已经编译进内核,而编译的Gentoo内核没有编译进去,这里将内核中PL2303驱动 copy出来单独编译出pl2303.ko然后将其复制进/var/lib/(内核版本)/drivers/usb/serial/目录下
然后使用命令
modprobe pl2303
然后将usb转串口接口插入usb,使用命令查看dmesg | tail查看如下
查看内核中驱动,看到usbserial.ko驱动,下面单独编译pl2303.ko
从内核中拷贝的pl2303.h
&&&&&&&&&&&&#define&BENQ_VENDOR_ID&&&&&&&&&&0x04a5&&#define&BENQ_PRODUCT_ID_S81&&&&&0x4027&&&&#define&PL2303_VENDOR_ID&&&&0x067b&&#define&PL2303_PRODUCT_ID&&&0x2303&&#define&PL2303_PRODUCT_ID_RSAQ2&&&&&0x04bb&&#define&PL2303_PRODUCT_ID_DCU11&&&&&0x1234&&#define&PL2303_PRODUCT_ID_PHAROS&&&&0xaaa0&&#define&PL2303_PRODUCT_ID_RSAQ3&&&&&0xaaa2&&#define&PL2303_PRODUCT_ID_ALDIGA&&&&0x0611&&#define&PL2303_PRODUCT_ID_MMX&&&&&&&0x0612&&#define&PL2303_PRODUCT_ID_GPRS&&&&&&0x0609&&#define&PL2303_PRODUCT_ID_HCR331&&&&0x331a&&#define&PL2303_PRODUCT_ID_MOTOROLA&&0x0307&&&&#define&ATEN_VENDOR_ID&&&&&&0x0557&&#define&ATEN_VENDOR_ID2&&&&&0x0547&&#define&ATEN_PRODUCT_ID&&&&&0x2008&&&&#define&IODATA_VENDOR_ID&&&&0x04bb&&#define&IODATA_PRODUCT_ID&&&0x0a03&&#define&IODATA_PRODUCT_ID_RSAQ5&0x0a0e&&&&#define&ELCOM_VENDOR_ID&&&&&0x056e&&#define&ELCOM_PRODUCT_ID&&&&0x5003&&#define&ELCOM_PRODUCT_ID_UCSGT&&0x5004&&&&#define&ITEGNO_VENDOR_ID&&&&0x0eba&&#define&ITEGNO_PRODUCT_ID&&&0x1080&&#define&ITEGNO_PRODUCT_ID_0&&&&#define&MA620_VENDOR_ID&&&&&0x0df7&&#define&MA620_PRODUCT_ID&&&&0x0620&&&&#define&RATOC_VENDOR_ID&&&&&0x0584&&#define&RATOC_PRODUCT_ID&&&&0xb000&&&&#define&TRIPP_VENDOR_ID&&&&&0x2478&&#define&TRIPP_PRODUCT_ID&&&&0x2008&&&&#define&RADIOSHACK_VENDOR_ID&&&&0x1453&&#define&RADIOSHACK_PRODUCT_ID&&&0x4026&&&&#define&DCU10_VENDOR_ID&&&&&0x0731&&#define&DCU10_PRODUCT_ID&&&&0x0528&&&&#define&SITECOM_VENDOR_ID&&&0x6189&&#define&SITECOM_PRODUCT_ID&&0x2068&&&&&&#define&ALCATEL_VENDOR_ID&&&0x11f7&&#define&ALCATEL_PRODUCT_ID&&0x02df&&&&&&#define&SAMSUNG_VENDOR_ID&&&0x04e8&&#define&SAMSUNG_PRODUCT_ID&&0x8001&&&&#define&SIEMENS_VENDOR_ID&&&0x11f5&&#define&SIEMENS_PRODUCT_ID_SX1&&0x0001&&#define&SIEMENS_PRODUCT_ID_X65&&0x0003&&#define&SIEMENS_PRODUCT_ID_X75&&0x0004&&#define&SIEMENS_PRODUCT_ID_EF81&0x0005&&&&#define&SYNTECH_VENDOR_ID&&&0x0745&&#define&SYNTECH_PRODUCT_ID&&0x0001&&&&&&#define&NOKIA_CA42_VENDOR_ID&&&&0x078b&&#define&NOKIA_CA42_PRODUCT_ID&&&0x1234&&&&&&#define&CA_42_CA42_VENDOR_ID&&&&0x10b5&&#define&CA_42_CA42_PRODUCT_ID&&&0xac70&&&&#define&SAGEM_VENDOR_ID&&&&&0x079b&&#define&SAGEM_PRODUCT_ID&&&&0x0027&&&&&&#define&LEADTEK_VENDOR_ID&&&0x0413&&#define&LEADTEK_9531_PRODUCT_ID&0x2101&&&&&&#define&SPEEDDRAGON_VENDOR_ID&&&0x0e55&&#define&SPEEDDRAGON_PRODUCT_ID&&0x110b&&&&&&#define&DATAPILOT_U2_VENDOR_ID&&0x0731&&#define&DATAPILOT_U2_PRODUCT_ID&0x2003&&&&&&#define&BELKIN_VENDOR_ID&&&&0x050d&&#define&BELKIN_PRODUCT_ID&&&0x0257&&&&&&#define&ALCOR_VENDOR_ID&&&&&0x058F&&#define&ALCOR_PRODUCT_ID&&&&0x9720&&&&&&#define&WS002IN_VENDOR_ID&&&0x11f6&&#define&WS002IN_PRODUCT_ID&&0x2001&&&&&&#define&COREGA_VENDOR_ID&&&&0x07aa&&#define&COREGA_PRODUCT_ID&&&0x002a&&&&&&#define&YCCABLE_VENDOR_ID&&&0x05ad&&#define&YCCABLE_PRODUCT_ID&&0x0fba&&&&&&#define&SUPERIAL_VENDOR_ID&&0x5372&&#define&SUPERIAL_PRODUCT_ID&0x2303&&&&&&#define&HP_VENDOR_ID&&&&&&&&0x03f0&&#define&HP_LD220_PRODUCT_ID&0x3524&&&&&&#define&CRESSI_VENDOR_ID&&&&0x04b8&&#define&CRESSI_EDY_PRODUCT_ID&&&0x0521&&&&&&#define&ZEAGLE_VENDOR_ID&&&&0x04b8&&#define&ZEAGLE_N2ITION3_PRODUCT_ID&&0x0522&&&&&&#define&SONY_VENDOR_ID&&&&&&0x054c&&#define&SONY_QN3USB_PRODUCT_ID&&0x0437&&&&&&#define&SANWA_VENDOR_ID&&&&&0x11ad&&#define&SANWA_PRODUCT_ID&&&&0x0001&&&&&&#define&ADLINK_VENDOR_ID&&&&&&&&0x0b63&&#define&ADLINK_ND6530_PRODUCT_ID&&&&0x6530&&&&&&#define&WINCHIPHEAD_VENDOR_ID&&&&&&&0x4348&&#define&WINCHIPHEAD_USBSER_PRODUCT_ID&&&0x5523&&
pl2303.c代码
&&&&&&&&&&&&&&&&&&&#include&&linux/kernel.h&&&#include&&linux/errno.h&&&#include&&linux/init.h&&&#include&&linux/slab.h&&&#include&&linux/tty.h&&&#include&&linux/tty_driver.h&&&#include&&linux/tty_flip.h&&&#include&&linux/serial.h&&&#include&&linux/module.h&&&#include&&linux/moduleparam.h&&&#include&&linux/spinlock.h&&&#include&&linux/uaccess.h&&&#include&&linux/usb.h&&&#include&&linux/usb/serial.h&&&#include&&pl2303.h&&&&&&&&&#define&DRIVER_DESC&&Prolific&PL2303&USB&to&serial&adaptor&driver&&&&&static&int&&&&&#define&PL2303_CLOSING_WAIT&(30*HZ)&&&&static&const&struct&usb_device_id&id_table[]&=&{&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_RSAQ2)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_DCU11)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_RSAQ3)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_PHAROS)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_ALDIGA)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_MMX)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_GPRS)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_HCR331)&},&&&&&&{&USB_DEVICE(PL2303_VENDOR_ID,&PL2303_PRODUCT_ID_MOTOROLA)&},&&&&&&{&USB_DEVICE(IODATA_VENDOR_ID,&IODATA_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(IODATA_VENDOR_ID,&IODATA_PRODUCT_ID_RSAQ5)&},&&&&&&{&USB_DEVICE(ATEN_VENDOR_ID,&ATEN_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ATEN_VENDOR_ID2,&ATEN_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ELCOM_VENDOR_ID,&ELCOM_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ELCOM_VENDOR_ID,&ELCOM_PRODUCT_ID_UCSGT)&},&&&&&&{&USB_DEVICE(ITEGNO_VENDOR_ID,&ITEGNO_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ITEGNO_VENDOR_ID,&ITEGNO_PRODUCT_ID_2080)&},&&&&&&{&USB_DEVICE(MA620_VENDOR_ID,&MA620_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(RATOC_VENDOR_ID,&RATOC_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(TRIPP_VENDOR_ID,&TRIPP_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(RADIOSHACK_VENDOR_ID,&RADIOSHACK_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(DCU10_VENDOR_ID,&DCU10_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SITECOM_VENDOR_ID,&SITECOM_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ALCATEL_VENDOR_ID,&ALCATEL_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SAMSUNG_VENDOR_ID,&SAMSUNG_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SIEMENS_VENDOR_ID,&SIEMENS_PRODUCT_ID_SX1)&},&&&&&&{&USB_DEVICE(SIEMENS_VENDOR_ID,&SIEMENS_PRODUCT_ID_X65)&},&&&&&&{&USB_DEVICE(SIEMENS_VENDOR_ID,&SIEMENS_PRODUCT_ID_X75)&},&&&&&&{&USB_DEVICE(SIEMENS_VENDOR_ID,&SIEMENS_PRODUCT_ID_EF81)&},&&&&&&{&USB_DEVICE(BENQ_VENDOR_ID,&BENQ_PRODUCT_ID_S81)&},&&&&&&&{&USB_DEVICE(SYNTECH_VENDOR_ID,&SYNTECH_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(NOKIA_CA42_VENDOR_ID,&NOKIA_CA42_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(CA_42_CA42_VENDOR_ID,&CA_42_CA42_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SAGEM_VENDOR_ID,&SAGEM_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(LEADTEK_VENDOR_ID,&LEADTEK_9531_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SPEEDDRAGON_VENDOR_ID,&SPEEDDRAGON_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(DATAPILOT_U2_VENDOR_ID,&DATAPILOT_U2_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(BELKIN_VENDOR_ID,&BELKIN_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ALCOR_VENDOR_ID,&ALCOR_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(WS002IN_VENDOR_ID,&WS002IN_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(COREGA_VENDOR_ID,&COREGA_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(YCCABLE_VENDOR_ID,&YCCABLE_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SUPERIAL_VENDOR_ID,&SUPERIAL_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(HP_VENDOR_ID,&HP_LD220_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(CRESSI_VENDOR_ID,&CRESSI_EDY_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ZEAGLE_VENDOR_ID,&ZEAGLE_N2ITION3_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SONY_VENDOR_ID,&SONY_QN3USB_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(SANWA_VENDOR_ID,&SANWA_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(ADLINK_VENDOR_ID,&ADLINK_ND6530_PRODUCT_ID)&},&&&&&&{&USB_DEVICE(WINCHIPHEAD_VENDOR_ID,&WINCHIPHEAD_USBSER_PRODUCT_ID)&},&&&&&&{&}&&&&&&&&&&&&&&&&&&&};&&&&MODULE_DEVICE_TABLE(usb,&id_table);&&&&static&struct&usb_driver&pl2303_driver&=&{&&&&&&.name&=&&&&&&pl2303&,&&&&&&.probe&=&&&&usb_serial_probe,&&&&&&.disconnect&=&&&usb_serial_disconnect,&&&&&&.id_table&=&id_table,&&&&&&.suspend&=&&&&&&usb_serial_suspend,&&&&&&.resume&=&&&&&&&usb_serial_resume,&&&&&&.no_dynamic_id&=&&&&1,&&&&&&.supports_autosuspend&=&1,&&};&&&&#define&SET_LINE_REQUEST_TYPE&&&&&&&0x21&&#define&SET_LINE_REQUEST&&&&&&&&0x20&&&&#define&SET_CONTROL_REQUEST_TYPE&&&&0x21&&#define&SET_CONTROL_REQUEST&&&&&0x22&&#define&CONTROL_DTR&&&&&&&&&0x01&&#define&CONTROL_RTS&&&&&&&&&0x02&&&&#define&BREAK_REQUEST_TYPE&&&&&&0x21&&#define&BREAK_REQUEST&&&&&&&&&&&0x23&&#define&BREAK_ON&&&&&&&&&&&&0xffff&&#define&BREAK_OFF&&&&&&&&&&&0x0000&&&&#define&GET_LINE_REQUEST_TYPE&&&&&&&0xa1&&#define&GET_LINE_REQUEST&&&&&&&&0x21&&&&#define&VENDOR_WRITE_REQUEST_TYPE&&&0x40&&#define&VENDOR_WRITE_REQUEST&&&&&&&&0x01&&&&#define&VENDOR_READ_REQUEST_TYPE&&&&0xc0&&#define&VENDOR_READ_REQUEST&&&&&0x01&&&&#define&UART_STATE&&&&&&&&&&0x08&&#define&UART_STATE_TRANSIENT_MASK&&&0x74&&#define&UART_DCD&&&&&&&&&&&&0x01&&#define&UART_DSR&&&&&&&&&&&&0x02&&#define&UART_BREAK_ERROR&&&&&&&&0x04&&#define&UART_RING&&&&&&&&&&&0x08&&#define&UART_FRAME_ERROR&&&&&&&&0x10&&#define&UART_PARITY_ERROR&&&&&&&0x20&&#define&UART_OVERRUN_ERROR&&&&&&0x40&&#define&UART_CTS&&&&&&&&&&&&0x80&&&&&&enum&pl2303_type&{&&&&&&type_0,&&&&&&&&&&&type_1,&&&&&&&&&&&HX,&&&&&&&};&&&&struct&pl2303_private&{&&&&&&spinlock_t&&&&&&&wait_queue_head_t&delta_msr_&&&&&&u8&line_&&&&&&u8&line_&&&&&&enum&pl2303_type&&&};&&&&static&int&pl2303_vendor_read(__u16&value,&__u16&index,&&&&&&&&&&struct&usb_serial&*serial,&unsigned&char&*buf)&&{&&&&&&int&res&=&usb_control_msg(serial-&dev,&usb_rcvctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&VENDOR_READ_REQUEST,&VENDOR_READ_REQUEST_TYPE,&&&&&&&&&&&&&&value,&index,&buf,&1,&100);&&&&&&dbg(&0x%x:0x%x:0x%x:0x%x&&%d&-&%x&,&VENDOR_READ_REQUEST_TYPE,&&&&&&&&&&&&&&VENDOR_READ_REQUEST,&value,&index,&res,&buf[0]);&&&&&&return&&&}&&&&static&int&pl2303_vendor_write(__u16&value,&__u16&index,&&&&&&&&&&struct&usb_serial&*serial)&&{&&&&&&int&res&=&usb_control_msg(serial-&dev,&usb_sndctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&VENDOR_WRITE_REQUEST,&VENDOR_WRITE_REQUEST_TYPE,&&&&&&&&&&&&&&value,&index,&NULL,&0,&100);&&&&&&dbg(&0x%x:0x%x:0x%x:0x%x&&%d&,&VENDOR_WRITE_REQUEST_TYPE,&&&&&&&&&&&&&&VENDOR_WRITE_REQUEST,&value,&index,&res);&&&&&&return&&&}&&&&static&int&pl2303_startup(struct&usb_serial&*serial)&&{&&&&&&struct&pl2303_private&*&&&&&&enum&pl2303_type&type&=&type_0;&&&&&&unsigned&char&*&&&&&&int&i;&&&&&&&&buf&=&kmalloc(10,&GFP_KERNEL);&&&&&&if&(buf&==&NULL)&&&&&&&&&&return&-ENOMEM;&&&&&&&&if&(serial-&dev-&descriptor.bDeviceClass&==&0x02)&&&&&&&&&&type&=&type_0;&&&&&&else&if&(serial-&dev-&descriptor.bMaxPacketSize0&==&0x40)&&&&&&&&&&type&=&HX;&&&&&&else&if&(serial-&dev-&descriptor.bDeviceClass&==&0x00)&&&&&&&&&&type&=&type_1;&&&&&&else&if&(serial-&dev-&descriptor.bDeviceClass&==&0xFF)&&&&&&&&&&type&=&type_1;&&&&&&dbg(&device&type:&%d&,&type);&&&&&&&&for&(i&=&0;&i&&&serial-&num_&++i)&{&&&&&&&&&&priv&=&kzalloc(sizeof(struct&pl2303_private),&GFP_KERNEL);&&&&&&&&&&if&(!priv)&&&&&&&&&&&&&&goto&&&&&&&&&&&spin_lock_init(&priv-&lock);&&&&&&&&&&init_waitqueue_head(&priv-&delta_msr_wait);&&&&&&&&&&priv-&type&=&&&&&&&&&&&usb_set_serial_port_data(serial-&port[i],&priv);&&&&&&}&&&&&&&&pl2303_vendor_read(0x8484,&0,&serial,&buf);&&&&&&pl2303_vendor_write(0x0404,&0,&serial);&&&&&&pl2303_vendor_read(0x8484,&0,&serial,&buf);&&&&&&pl2303_vendor_read(0x8383,&0,&serial,&buf);&&&&&&pl2303_vendor_read(0x8484,&0,&serial,&buf);&&&&&&pl2303_vendor_write(0x0404,&1,&serial);&&&&&&pl2303_vendor_read(0x8484,&0,&serial,&buf);&&&&&&pl2303_vendor_read(0x8383,&0,&serial,&buf);&&&&&&pl2303_vendor_write(0,&1,&serial);&&&&&&pl2303_vendor_write(1,&0,&serial);&&&&&&if&(type&==&HX)&&&&&&&&&&pl2303_vendor_write(2,&0x44,&serial);&&&&&&else&&&&&&&&&&pl2303_vendor_write(2,&0x24,&serial);&&&&&&&&kfree(buf);&&&&&&return&0;&&&&cleanup:&&&&&&kfree(buf);&&&&&&for&(--i;&i&&=&0;&--i)&{&&&&&&&&&&priv&=&usb_get_serial_port_data(serial-&port[i]);&&&&&&&&&&kfree(priv);&&&&&&&&&&usb_set_serial_port_data(serial-&port[i],&NULL);&&&&&&}&&&&&&return&-ENOMEM;&&}&&&&static&int&set_control_lines(struct&usb_device&*dev,&u8&value)&&{&&&&&&int&&&&&&&&&retval&=&usb_control_msg(dev,&usb_sndctrlpipe(dev,&0),&&&&&&&&&&&&&&&&&&&SET_CONTROL_REQUEST,&SET_CONTROL_REQUEST_TYPE,&&&&&&&&&&&&&&&&&&&value,&0,&NULL,&0,&100);&&&&&&dbg(&%s&-&value&=&%d,&retval&=&%d&,&__func__,&value,&retval);&&&&&&return&&&}&&&&static&void&pl2303_set_termios(struct&tty_struct&*tty,&&&&&&&&&&struct&usb_serial_port&*port,&struct&ktermios&*old_termios)&&{&&&&&&struct&usb_serial&*serial&=&port-&&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&unsigned&long&&&&&&&unsigned&int&&&&&&&unsigned&char&*&&&&&&int&&&&&&&int&i;&&&&&&u8&&&&&&&const&int&baud_sup[]&=&{&75,&150,&300,&600,&,&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,&,&1,&38400,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&5,&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&20,&00000&};&&&&&&int&baud_floor,&baud_&&&&&&int&k;&&&&&&&&dbg(&%s&-&&port&%d&,&__func__,&port-&number);&&&&&&&&&&&&&&&&&&if&(!tty_termios_hw_change(tty-&termios,&old_termios))&&&&&&&&&&return;&&&&&&&&cflag&=&tty-&termios-&c_&&&&&&&&buf&=&kzalloc(7,&GFP_KERNEL);&&&&&&if&(!buf)&{&&&&&&&&&&dev_err(&port-&dev,&&%s&-&out&of&memory.\n&,&__func__);&&&&&&&&&&&&&&&&&&&&*tty-&termios&=&*old_&&&&&&&&&&return;&&&&&&}&&&&&&&&i&=&usb_control_msg(serial-&dev,&usb_rcvctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&&&&&GET_LINE_REQUEST,&GET_LINE_REQUEST_TYPE,&&&&&&&&&&&&&&&&&&0,&0,&buf,&7,&100);&&&&&&dbg(&0xa1:0x21:0:0&&%d&-&%x&%x&%x&%x&%x&%x&%x&,&i,&&&&&&&&&&buf[0],&buf[1],&buf[2],&buf[3],&buf[4],&buf[5],&buf[6]);&&&&&&&&if&(cflag&&&CSIZE)&{&&&&&&&&&&switch&(cflag&&&CSIZE)&{&&&&&&&&&&case&CS5:&&&&&&&&&&&&&&buf[6]&=&5;&&&&&&&&&&&&&&break;&&&&&&&&&&case&CS6:&&&&&&&&&&&&&&buf[6]&=&6;&&&&&&&&&&&&&&break;&&&&&&&&&&case&CS7:&&&&&&&&&&&&&&buf[6]&=&7;&&&&&&&&&&&&&&break;&&&&&&&&&&default:&&&&&&&&&&case&CS8:&&&&&&&&&&&&&&buf[6]&=&8;&&&&&&&&&&&&&&break;&&&&&&&&&&}&&&&&&&&&&dbg(&%s&-&data&bits&=&%d&,&__func__,&buf[6]);&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&baud&=&tty_get_baud_rate(tty);&&&&&&dbg(&%s&-&baud&requested&=&%d&,&__func__,&baud);&&&&&&if&(baud)&{&&&&&&&&&&&&&&&&&&&&for&(k=0;&k&ARRAY_SIZE(baud_sup);&k++)&{&&&&&&&&&&&&&&if&(baud_sup[k]&/&baud)&{&&&&&&&&&&&&&&&&&&baud_ceil&=&baud_sup[k];&&&&&&&&&&&&&&&&&&if&(k==0)&{&&&&&&&&&&&&&&&&&&&&&&baud&=&baud_&&&&&&&&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&&&&&baud_floor&=&baud_sup[k-1];&&&&&&&&&&&&&&&&&&&&&&if&((baud_ceil&%&baud)&&&&&&&&&&&&&&&&&&&&&&&&&&&&(baud&%&baud_floor))&&&&&&&&&&&&&&&&&&&&&&&&&&baud&=&baud_&&&&&&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&&&&&&&&&&baud&=&baud_&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&break;&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&&&&&if&(baud&&&1228800)&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(priv-&type&!=&HX)&&&&&&&&&&&&&&&&&&baud&=&1228800;&&&&&&&&&&&&&&else&if&(baud&&&6000000)&&&&&&&&&&&&&&&&&&baud&=&6000000;&&&&&&&&&&}&&&&&&&&&&dbg(&%s&-&baud&set&=&%d&,&__func__,&baud);&&&&&&&&&&if&(baud&&=&115200)&{&&&&&&&&&&&&&&buf[0]&=&baud&&&0&&&&&&&&&&&&&&buf[1]&=&(baud&&&&8)&&&0&&&&&&&&&&&&&&buf[2]&=&(baud&&&&16)&&&0&&&&&&&&&&&&&&buf[3]&=&(baud&&&&24)&&&0&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&unsigned&tmp&=&12*&/&&&&&&&&&&&&&&&buf[3]&=&0x80;&&&&&&&&&&&&&&buf[2]&=&0;&&&&&&&&&&&&&&buf[1]&=&(tmp&&=&256);&&&&&&&&&&&&&&while&(tmp&&=&256)&{&&&&&&&&&&&&&&&&&&tmp&&&=&2;&&&&&&&&&&&&&&&&&&buf[1]&&&=&1;&&&&&&&&&&&&&&}&&&&&&&&&&&&&&if&(tmp&&&256)&{&&&&&&&&&&&&&&&&&&tmp&%=&256;&&&&&&&&&&&&&&}&&&&&&&&&&&&&&buf[0]&=&&&&&&&&&&&}&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&if&(cflag&&&CSTOPB)&{&&&&&&&&&&&&&&&&&&&&&&if&((cflag&&&CSIZE)&==&CS5)&{&&&&&&&&&&&&&&buf[4]&=&1;&&&&&&&&&&&&&&dbg(&%s&-&stop&bits&=&1.5&,&__func__);&&&&&&&&&&}&else&{&&&&&&&&&&&&&&buf[4]&=&2;&&&&&&&&&&&&&&dbg(&%s&-&stop&bits&=&2&,&__func__);&&&&&&&&&&}&&&&&&}&else&{&&&&&&&&&&buf[4]&=&0;&&&&&&&&&&dbg(&%s&-&stop&bits&=&1&,&__func__);&&&&&&}&&&&&&&&if&(cflag&&&PARENB)&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(cflag&&&PARODD)&{&&&&&&&&&&&&&&if&(cflag&&&CMSPAR)&{&&&&&&&&&&&&&&&&&&buf[5]&=&3;&&&&&&&&&&&&&&&&&&dbg(&%s&-&parity&=&mark&,&__func__);&&&&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&buf[5]&=&1;&&&&&&&&&&&&&&&&&&dbg(&%s&-&parity&=&odd&,&__func__);&&&&&&&&&&&&&&}&&&&&&&&&&}&else&{&&&&&&&&&&&&&&if&(cflag&&&CMSPAR)&{&&&&&&&&&&&&&&&&&&buf[5]&=&4;&&&&&&&&&&&&&&&&&&dbg(&%s&-&parity&=&space&,&__func__);&&&&&&&&&&&&&&}&else&{&&&&&&&&&&&&&&&&&&buf[5]&=&2;&&&&&&&&&&&&&&&&&&dbg(&%s&-&parity&=&even&,&__func__);&&&&&&&&&&&&&&}&&&&&&&&&&}&&&&&&}&else&{&&&&&&&&&&buf[5]&=&0;&&&&&&&&&&dbg(&%s&-&parity&=&none&,&__func__);&&&&&&}&&&&&&&&i&=&usb_control_msg(serial-&dev,&usb_sndctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&&&&&SET_LINE_REQUEST,&SET_LINE_REQUEST_TYPE,&&&&&&&&&&&&&&&&&&0,&0,&buf,&7,&100);&&&&&&dbg(&0x21:0x20:0:0&&%d&,&i);&&&&&&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&control&=&priv-&line_&&&&&&if&((cflag&&&CBAUD)&==&B0)&&&&&&&&&&priv-&line_control&&=&~(CONTROL_DTR&|&CONTROL_RTS);&&&&&&else&&&&&&&&&&priv-&line_control&|=&(CONTROL_DTR&|&CONTROL_RTS);&&&&&&if&(control&!=&priv-&line_control)&{&&&&&&&&&&control&=&priv-&line_&&&&&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&&&&&set_control_lines(serial-&dev,&control);&&&&&&}&else&{&&&&&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&}&&&&&&&&buf[0]&=&buf[1]&=&buf[2]&=&buf[3]&=&buf[4]&=&buf[5]&=&buf[6]&=&0;&&&&&&&&i&=&usb_control_msg(serial-&dev,&usb_rcvctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&&&&&GET_LINE_REQUEST,&GET_LINE_REQUEST_TYPE,&&&&&&&&&&&&&&&&&&0,&0,&buf,&7,&100);&&&&&&dbg(&0xa1:0x21:0:0&&%d&-&%x&%x&%x&%x&%x&%x&%x&,&i,&&&&&&&&&&&buf[0],&buf[1],&buf[2],&buf[3],&buf[4],&buf[5],&buf[6]);&&&&&&&&if&(cflag&&&CRTSCTS)&{&&&&&&&&&&if&(priv-&type&==&HX)&&&&&&&&&&&&&&pl2303_vendor_write(0x0,&0x61,&serial);&&&&&&&&&&else&&&&&&&&&&&&&&pl2303_vendor_write(0x0,&0x41,&serial);&&&&&&}&else&{&&&&&&&&&&pl2303_vendor_write(0x0,&0x0,&serial);&&&&&&}&&&&&&&&&&&&&&if&(baud)&&&&&&&&&&tty_encode_baud_rate(tty,&baud,&baud);&&&&&&&&kfree(buf);&&}&&&&static&void&pl2303_dtr_rts(struct&usb_serial_port&*port,&int&on)&&{&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&unsigned&long&&&&&&&u8&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&&&&&&&if&(on)&&&&&&&&&&priv-&line_control&|=&(CONTROL_DTR&|&CONTROL_RTS);&&&&&&else&&&&&&&&&&priv-&line_control&&=&~(CONTROL_DTR&|&CONTROL_RTS);&&&&&&control&=&priv-&line_&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&set_control_lines(port-&serial-&dev,&control);&&}&&&&static&void&pl2303_close(struct&usb_serial_port&*port)&&{&&&&&&dbg(&%s&-&port&%d&,&__func__,&port-&number);&&&&&&&&usb_serial_generic_close(port);&&&&&&usb_kill_urb(port-&interrupt_in_urb);&&}&&&&static&int&pl2303_open(struct&tty_struct&*tty,&struct&usb_serial_port&*port)&&{&&&&&&struct&ktermios&tmp_&&&&&&struct&usb_serial&*serial&=&port-&&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&int&&&&&&&&&dbg(&%s&-&&port&%d&,&__func__,&port-&number);&&&&&&&&if&(priv-&type&!=&HX)&{&&&&&&&&&&usb_clear_halt(serial-&dev,&port-&write_urb-&pipe);&&&&&&&&&&usb_clear_halt(serial-&dev,&port-&read_urb-&pipe);&&&&&&}&else&{&&&&&&&&&&&&&&&&&&&&pl2303_vendor_write(8,&0,&serial);&&&&&&&&&&pl2303_vendor_write(9,&0,&serial);&&&&&&}&&&&&&&&&&&&&&if&(tty)&&&&&&&&&&pl2303_set_termios(tty,&port,&&tmp_termios);&&&&&&&&dbg(&%s&-&submitting&read&urb&,&__func__);&&&&&&result&=&usb_serial_generic_submit_read_urb(port,&GFP_KERNEL);&&&&&&if&(result)&{&&&&&&&&&&pl2303_close(port);&&&&&&&&&&return&-EPROTO;&&&&&&}&&&&&&&&dbg(&%s&-&submitting&interrupt&urb&,&__func__);&&&&&&result&=&usb_submit_urb(port-&interrupt_in_urb,&GFP_KERNEL);&&&&&&if&(result)&{&&&&&&&&&&dev_err(&port-&dev,&&%s&-&failed&submitting&interrupt&urb,&&&&&&&&&&&&&&&&&error&%d\n&,&__func__,&result);&&&&&&&&&&pl2303_close(port);&&&&&&&&&&return&-EPROTO;&&&&&&}&&&&&&port-&port.drain_delay&=&256;&&&&&&return&0;&&}&&&&static&int&pl2303_tiocmset(struct&tty_struct&*tty,&&&&&&&&&&&&&&&&&unsigned&int&set,&unsigned&int&clear)&&{&&&&&&struct&usb_serial_port&*port&=&tty-&driver_&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&unsigned&long&&&&&&&u8&&&&&&&&&if&(!usb_get_intfdata(port-&serial-&interface))&&&&&&&&&&return&-ENODEV;&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&if&(set&&&TIOCM_RTS)&&&&&&&&&&priv-&line_control&|=&CONTROL_RTS;&&&&&&if&(set&&&TIOCM_DTR)&&&&&&&&&&priv-&line_control&|=&CONTROL_DTR;&&&&&&if&(clear&&&TIOCM_RTS)&&&&&&&&&&priv-&line_control&&=&~CONTROL_RTS;&&&&&&if&(clear&&&TIOCM_DTR)&&&&&&&&&&priv-&line_control&&=&~CONTROL_DTR;&&&&&&control&=&priv-&line_&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&&&return&set_control_lines(port-&serial-&dev,&control);&&}&&&&static&int&pl2303_tiocmget(struct&tty_struct&*tty)&&{&&&&&&struct&usb_serial_port&*port&=&tty-&driver_&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&unsigned&long&&&&&&&unsigned&int&&&&&&&unsigned&int&&&&&&&unsigned&int&&&&&&&&&dbg(&%s&(%d)&,&__func__,&port-&number);&&&&&&&&if&(!usb_get_intfdata(port-&serial-&interface))&&&&&&&&&&return&-ENODEV;&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&mcr&=&priv-&line_&&&&&&status&=&priv-&line_&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&&&result&=&((mcr&&&CONTROL_DTR)&&&&&&&?&TIOCM_DTR&:&0)&&&&&&&&&&&&|&((mcr&&&CONTROL_RTS)&&&&?&TIOCM_RTS&:&0)&&&&&&&&&&&&|&((status&&&UART_CTS)&&&&?&TIOCM_CTS&:&0)&&&&&&&&&&&&|&((status&&&UART_DSR)&&&&?&TIOCM_DSR&:&0)&&&&&&&&&&&&|&((status&&&UART_RING)&&&?&TIOCM_RI&&:&0)&&&&&&&&&&&&|&((status&&&UART_DCD)&&&&?&TIOCM_CD&&:&0);&&&&&&&&dbg(&%s&-&result&=&%x&,&__func__,&result);&&&&&&&&return&&&}&&&&static&int&pl2303_carrier_raised(struct&usb_serial_port&*port)&&{&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&if&(priv-&line_status&&&UART_DCD)&&&&&&&&&&return&1;&&&&&&return&0;&&}&&&&static&int&wait_modem_info(struct&usb_serial_port&*port,&unsigned&int&arg)&&{&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&unsigned&long&&&&&&&unsigned&int&&&&&&&unsigned&int&&&&&&&unsigned&int&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&prevstatus&=&priv-&line_&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&&&while&(1)&{&&&&&&&&&&interruptible_sleep_on(&priv-&delta_msr_wait);&&&&&&&&&&&&&&&&&&&&if&(signal_pending(current))&&&&&&&&&&&&&&return&-ERESTARTSYS;&&&&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&&&&&status&=&priv-&line_&&&&&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&&&&&&&changed&=&prevstatus&^&&&&&&&&&&&&&if&(((arg&&&TIOCM_RNG)&&&&(changed&&&UART_RING))&||&&&&&&&&&&&&&&((arg&&&TIOCM_DSR)&&&&(changed&&&UART_DSR))&||&&&&&&&&&&&&&&((arg&&&TIOCM_CD)&&&&&(changed&&&UART_DCD))&||&&&&&&&&&&&&&&((arg&&&TIOCM_CTS)&&&&(changed&&&UART_CTS)))&{&&&&&&&&&&&&&&return&0;&&&&&&&&&&}&&&&&&&&&&prevstatus&=&&&&&&&}&&&&&&&&&&&&return&0;&&}&&&&static&int&pl2303_ioctl(struct&tty_struct&*tty,&&&&&&&&&&&&&&unsigned&int&cmd,&unsigned&long&arg)&&{&&&&&&struct&serial_struct&&&&&&&struct&usb_serial_port&*port&=&tty-&driver_&&&&&&dbg(&%s&(%d)&cmd&=&0x%04x&,&__func__,&port-&number,&cmd);&&&&&&&&switch&(cmd)&{&&&&&&case&TIOCGSERIAL:&&&&&&&&&&memset(&ser,&0,&sizeof&ser);&&&&&&&&&&ser.type&=&PORT_16654;&&&&&&&&&&ser.line&=&port-&serial-&&&&&&&&&&&ser.port&=&port-&&&&&&&&&&&ser.baud_base&=&460800;&&&&&&&&&&&&if&(copy_to_user((void&__user&*)arg,&&ser,&sizeof&ser))&&&&&&&&&&&&&&return&-EFAULT;&&&&&&&&&&&&return&0;&&&&&&&&case&TIOCMIWAIT:&&&&&&&&&&dbg(&%s&(%d)&TIOCMIWAIT&,&__func__,&&port-&number);&&&&&&&&&&return&wait_modem_info(port,&arg);&&&&&&default:&&&&&&&&&&dbg(&%s&not&supported&=&0x%04x&,&__func__,&cmd);&&&&&&&&&&break;&&&&&&}&&&&&&return&-ENOIOCTLCMD;&&}&&&&static&void&pl2303_break_ctl(struct&tty_struct&*tty,&int&break_state)&&{&&&&&&struct&usb_serial_port&*port&=&tty-&driver_&&&&&&struct&usb_serial&*serial&=&port-&&&&&&&u16&&&&&&&int&&&&&&&&&dbg(&%s&-&port&%d&,&__func__,&port-&number);&&&&&&&&if&(break_state&==&0)&&&&&&&&&&state&=&BREAK_OFF;&&&&&&else&&&&&&&&&&state&=&BREAK_ON;&&&&&&dbg(&%s&-&turning&break&%s&,&__func__,&&&&&&&&&&&&&&state&==&BREAK_OFF&?&&off&&:&&on&);&&&&&&&&result&=&usb_control_msg(serial-&dev,&usb_sndctrlpipe(serial-&dev,&0),&&&&&&&&&&&&&&&&&&&BREAK_REQUEST,&BREAK_REQUEST_TYPE,&state,&&&&&&&&&&&&&&&&&&&0,&NULL,&0,&100);&&&&&&if&(result)&&&&&&&&&&dbg(&%s&-&error&sending&break&=&%d&,&__func__,&result);&&}&&&&static&void&pl2303_release(struct&usb_serial&*serial)&&{&&&&&&int&i;&&&&&&struct&pl2303_private&*&&&&&&&&dbg(&%s&,&__func__);&&&&&&&&for&(i&=&0;&i&&&serial-&num_&++i)&{&&&&&&&&&&priv&=&usb_get_serial_port_data(serial-&port[i]);&&&&&&&&&&kfree(priv);&&&&&&}&&}&&&&static&void&pl2303_update_line_status(struct&usb_serial_port&*port,&&&&&&&&&&&&&&&&&&&&&&&&unsigned&char&*data,&&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&actual_length)&&{&&&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&struct&tty_struct&*&&&&&&unsigned&long&&&&&&&u8&status_idx&=&UART_STATE;&&&&&&u8&length&=&UART_STATE&+&1;&&&&&&u8&prev_line_&&&&&&u16&idv,&&&&&&&&&idv&=&le16_to_cpu(port-&serial-&dev-&descriptor.idVendor);&&&&&&idp&=&le16_to_cpu(port-&serial-&dev-&descriptor.idProduct);&&&&&&&&&&if&(idv&==&SIEMENS_VENDOR_ID)&{&&&&&&&&&&if&(idp&==&SIEMENS_PRODUCT_ID_X65&||&&&&&&&&&&&&&&idp&==&SIEMENS_PRODUCT_ID_SX1&||&&&&&&&&&&&&&&idp&==&SIEMENS_PRODUCT_ID_X75)&{&&&&&&&&&&&&&&&&length&=&1;&&&&&&&&&&&&&&status_idx&=&0;&&&&&&&&&&}&&&&&&}&&&&&&&&if&(actual_length&&&length)&&&&&&&&&&return;&&&&&&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&prev_line_status&=&priv-&line_&&&&&&priv-&line_status&=&data[status_idx];&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&if&(priv-&line_status&&&UART_BREAK_ERROR)&&&&&&&&&&usb_serial_handle_break(port);&&&&&&wake_up_interruptible(&priv-&delta_msr_wait);&&&&&&&&tty&=&tty_port_tty_get(&port-&port);&&&&&&if&(!tty)&&&&&&&&&&return;&&&&&&if&((priv-&line_status&^&prev_line_status)&&&UART_DCD)&&&&&&&&&&usb_serial_handle_dcd_change(port,&tty,&&&&&&&&&&&&&&&&&&priv-&line_status&&&UART_DCD);&&&&&&tty_kref_put(tty);&&}&&&&static&void&pl2303_read_int_callback(struct&urb&*urb)&&{&&&&&&struct&usb_serial_port&*port&=&&urb-&&&&&&&unsigned&char&*data&=&urb-&transfer_&&&&&&unsigned&int&actual_length&=&urb-&actual_&&&&&&int&status&=&urb-&&&&&&&int&&&&&&&&&dbg(&%s&(%d)&,&__func__,&port-&number);&&&&&&&&switch&(status)&{&&&&&&case&0:&&&&&&&&&&&&&&&&&&&&break;&&&&&&case&-ECONNRESET:&&&&&&case&-ENOENT:&&&&&&case&-ESHUTDOWN:&&&&&&&&&&&&&&&&&&&&dbg(&%s&-&urb&shutting&down&with&status:&%d&,&__func__,&&&&&&&&&&&&&&status);&&&&&&&&&&return;&&&&&&default:&&&&&&&&&&dbg(&%s&-&nonzero&urb&status&received:&%d&,&__func__,&&&&&&&&&&&&&&status);&&&&&&&&&&goto&&&&&&&}&&&&&&&&usb_serial_debug_data(debug,&&port-&dev,&__func__,&&&&&&&&&&&&&&&&&&&&urb-&actual_length,&urb-&transfer_buffer);&&&&&&&&pl2303_update_line_status(port,&data,&actual_length);&&&&exit:&&&&&&retval&=&usb_submit_urb(urb,&GFP_ATOMIC);&&&&&&if&(retval)&&&&&&&&&&dev_err(&urb-&dev-&dev,&&&&&&&&&&&&&&&%s&-&usb_submit_urb&failed&with&result&%d\n&,&&&&&&&&&&&&&&__func__,&retval);&&}&&&&static&void&pl2303_process_read_urb(struct&urb&*urb)&&{&&&&&&struct&usb_serial_port&*port&=&urb-&&&&&&&struct&pl2303_private&*priv&=&usb_get_serial_port_data(port);&&&&&&struct&tty_struct&*&&&&&&unsigned&char&*data&=&urb-&transfer_&&&&&&char&tty_flag&=&TTY_NORMAL;&&&&&&unsigned&long&&&&&&&u8&line_&&&&&&int&i;&&&&&&&&&&&&&&spin_lock_irqsave(&priv-&lock,&flags);&&&&&&line_status&=&priv-&line_&&&&&&priv-&line_status&&=&~UART_STATE_TRANSIENT_MASK;&&&&&&spin_unlock_irqrestore(&priv-&lock,&flags);&&&&&&wake_up_interruptible(&priv-&delta_msr_wait);&&&&&&&&if&(!urb-&actual_length)&&&&&&&&&&return;&&&&&&&&tty&=&tty_port_tty_get(&port-&port);&&&&&&if&(!tty)&&&&&&&&&&return;&&&&&&&&&&&&&&&&&&&&if&(line_status&&&UART_BREAK_ERROR)&&&&&&&&&&tty_flag&=&TTY_BREAK;&&&&&&else&if&(line_status&&&UART_PARITY_ERROR)&&&&&&&&&&tty_flag&=&TTY_PARITY;&&&&&&else&if&(line_status&&&UART_FRAME_ERROR)&&&&&&&&&&tty_flag&=&TTY_FRAME;&&&&&&dbg(&%s&-&tty_flag&=&%d&,&__func__,&tty_flag);&&&&&&&&&&&&&&if&(line_status&&&UART_OVERRUN_ERROR)&&&&&&&&&&tty_insert_flip_char(tty,&0,&TTY_OVERRUN);&&&&&&&&if&(port-&port.console&&&&port-&sysrq)&{&&&&&&&&&&for&(i&=&0;&i&&&urb-&actual_&++i)&&&&&&&&&&&&&&if&(!usb_serial_handle_sysrq_char(port,&data[i]))&&&&&&&&&&&&&&&&&&tty_insert_flip_char(tty,&data[i],&tty_flag);&&&&&&}&else&{&&&&&&&&&&tty_insert_flip_string_fixed_flag(tty,&data,&tty_flag,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&urb-&actual_length);&&&&&&}&&&&&&&&tty_flip_buffer_push(tty);&&&&&&tty_kref_put(tty);&&}&&&&&&static&struct&usb_serial_driver&pl2303_device&=&{&&&&&&.driver&=&{&&&&&&&&&&.owner&=&&&&THIS_MODULE,&&&&&&&&&&.name&=&&&&&&pl2303&,&&&&&&},&&&&&&.id_table&=&&&&&id_table,&&&&&&.usb_driver&=&&&&&&&&pl2303_driver,&&&&&&.num_ports&=&&&&&&&&1,&&&&&&.bulk_in_size&=&&&&&256,&&&&&&.bulk_out_size&=&&&&256,&&&&&&.open&=&&&&&&&&&pl2303_open,&&&&&&.close&=&&&&&&&&pl2303_close,&&&&&&.dtr_rts&=&&&&&&pl2303_dtr_rts,&&&&&&.carrier_raised&=&&&pl2303_carrier_raised,&&&&&&.ioctl&=&&&&&&&&pl2303_ioctl,&&&&&&.break_ctl&=&&&&&&&&pl2303_break_ctl,&&&&&&.set_termios&=&&&&&&pl2303_set_termios,&&&&&&.tiocmget&=&&&&&pl2303_tiocmget,&&&&&&.tiocmset&=&&&&&pl2303_tiocmset,&&&&&&.process_read_urb&=&pl2303_process_read_urb,&&&&&&.read_int_callback&=&&&&pl2303_read_int_callback,&&&&&&.attach&=&&&&&&&pl2303_startup,&&&&&&.release&=&&&&&&pl2303_release,&&};&&&&static&int&__init&pl2303_init(void)&&{&&&&&&int&&&&&&&&&retval&=&usb_serial_register(&pl2303_device);&&&&&&if&(retval)&&&&&&&&&&goto&failed_usb_serial_&&&&&&retval&=&usb_register(&pl2303_driver);&&&&&&if&(retval)&&&&&&&&&&goto&failed_usb_&&&&&&printk(KERN_INFO&KBUILD_MODNAME&&:&&&DRIVER_DESC&&\n&);&&&&&&return&0;&&failed_usb_register:&&&&&&usb_serial_deregister(&pl2303_device);&&failed_usb_serial_register:&&&&&&return&&&}&&&&static&void&__exit&pl2303_exit(void)&&{&&&&&&usb_deregister(&pl2303_driver);&&&&&&usb_serial_deregister(&pl2303_device);&&}&&&&module_init(pl2303_init);&&module_exit(pl2303_exit);&&&&MODULE_DESCRIPTION(DRIVER_DESC);&&MODULE_LICENSE(&GPL&);&&&&module_param(debug,&bool,&S_IRUGO&|&S_IWUSR);&&MODULE_PARM_DESC(debug,&&Debug&enabled&or&not&);&&
Makefile文件:
#KVER&=&/usr/src/linux&&KVER&=&/lib/modules/`uname&-r`/build&&CURDIR&=&$(shell&pwd)&&#&Kernel&modules&&obj-m&:=&pl2303.o&&build:&kernel_modules&&kernel_modules:&&&&&&$(MAKE)&-C&$(KVER)&M=$(CURDIR)&modules&&clean:&&&&&&$(MAKE)&-C&$(KVER)&M=$(CURDIR)&clean&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:26147次
排名:千里之外
原创:17篇
(1)(2)(1)(2)(2)(1)(9)(5)

我要回帖

更多关于 台式电脑一键系统重装 的文章

 

随机推荐