linux 下安装装串口驱动,Linux下安装USB转串口驱动(PL2303)

本文档详细介绍了如何在Linux系统下安装和配置PL2303 USB到串口适配器的驱动程序。内容包括驱动的版本信息、设备识别与初始化、控制线设置、波特率调整、信号状态获取、中断处理回调函数等,旨在为用户提供完整的驱动安装流程和操作步骤。
摘要由CSDN通过智能技术生成

/*

* Prolific PL2303 USB to serial adaptor driver

*

* Copyright (C) 2001-2007 Greg Kroah-Hartman (greg@kroah.com)

* Copyright (C) 2003 IBM Corp.

*

* Original driver for 2.2.x by anonymous

*

*  This program is free software; you can redistribute it and/or

*  modify it under the terms of the GNU General Public License version

*  2 as published by the Free Software Foundation.

*

* See Documentation/usb/usb-serial.txt for more information on using this

* driver

*

*/

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include "pl2303.h"

/*

* Version Information

*/

#define DRIVER_DESC "Prolific PL2303 USB to serial adaptor driver"

staticintdebug;

#define PL2303_CLOSING_WAIT (30*HZ)

staticconststructusb_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) },/* Benq/Siemens 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) },

{ }/* Terminating entry */

};

MODULE_DEVICE_TABLE(usb, id_table);

staticstructusb_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

enumpl2303_type {

type_0,/* don't know the difference between type 0 and */

type_1,/* type 1, until someone from prolific tells us... */

HX,/* HX version of the pl2303 chip */

};

structpl2303_private {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值