diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-23 15:44:58 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-23 15:44:58 -0700 |
| commit | 5d5d193f7d75d30ae848a96129cb521b41f62693 (patch) | |
| tree | 1280928a5f26ab9714ba0271d00ec141a50ebce3 /usb.current | |
| parent | 542fc82d283978333985aa403c4638e44698bacf (diff) | |
| download | patches-5d5d193f7d75d30ae848a96129cb521b41f62693.tar.gz | |
start working on my to-apply queue
Diffstat (limited to 'usb.current')
8 files changed, 451 insertions, 0 deletions
diff --git a/usb.current/usb-ehci-update-toggle-state-for-linked-qhs.patch b/usb.current/usb-ehci-update-toggle-state-for-linked-qhs.patch new file mode 100644 index 00000000000000..635a14f9593494 --- /dev/null +++ b/usb.current/usb-ehci-update-toggle-state-for-linked-qhs.patch @@ -0,0 +1,134 @@ +From stern@rowland.harvard.edu Tue Jun 23 14:59:05 2009 +From: Alan Stern <stern@rowland.harvard.edu> +Date: Thu, 11 Jun 2009 14:56:22 -0400 (EDT) +Subject: USB: EHCI: update toggle state for linked QHs +To: Greg KH <gregkh@suse.de> +Cc: David Brownell <david-b@pacbell.net>, David <david@unsolicited.net> +Message-ID: <Pine.LNX.4.44L0.0906111452080.4875-100000@iolanthe.rowland.org> + + +This is an update to the "usb-ehci-update-toggle-state-for-linked-qhs" +patch. Since an HCD's endpoint_reset method can be called in +interrupt context, it mustn't assume that interrupts are enabled or +that it can sleep. + +So we revert to the original way of refreshing QHs' toggle bits. Now +the endpoint_reset method merely clears the toggle flag in the device +structure (as was done before) and starts an async QH unlink. When the +QH is linked again, after the unlink finishes and an URB is queued, +the qh_refresh() routine will update the QH's toggle bit. + +Signed-off-by: Alan Stern <stern@rowland.harvard.edu> +Tested-by: David <david@unsolicited.net> +CC: David Brownell <david-b@pacbell.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + drivers/usb/host/ehci-hcd.c | 35 ++++++++++++++++------------------- + drivers/usb/host/ehci-q.c | 19 ++++++++++++++++++- + 2 files changed, 34 insertions(+), 20 deletions(-) + +--- a/drivers/usb/host/ehci-hcd.c ++++ b/drivers/usb/host/ehci-hcd.c +@@ -1030,12 +1030,14 @@ ehci_endpoint_reset(struct usb_hcd *hcd, + struct ehci_hcd *ehci = hcd_to_ehci(hcd); + struct ehci_qh *qh; + int eptype = usb_endpoint_type(&ep->desc); ++ int epnum = usb_endpoint_num(&ep->desc); ++ int is_out = usb_endpoint_dir_out(&ep->desc); ++ unsigned long flags; + + if (eptype != USB_ENDPOINT_XFER_BULK && eptype != USB_ENDPOINT_XFER_INT) + return; + +- rescan: +- spin_lock_irq(&ehci->lock); ++ spin_lock_irqsave(&ehci->lock, flags); + qh = ep->hcpriv; + + /* For Bulk and Interrupt endpoints we maintain the toggle state +@@ -1044,29 +1046,24 @@ ehci_endpoint_reset(struct usb_hcd *hcd, + * the toggle bit in the QH. + */ + if (qh) { ++ usb_settoggle(qh->dev, epnum, is_out, 0); + if (!list_empty(&qh->qtd_list)) { + WARN_ONCE(1, "clear_halt for a busy endpoint\n"); +- } else if (qh->qh_state == QH_STATE_IDLE) { +- qh->hw_token &= ~cpu_to_hc32(ehci, QTD_TOGGLE); +- } else { +- /* It's not safe to write into the overlay area +- * while the QH is active. Unlink it first and +- * wait for the unlink to complete. ++ } else if (qh->qh_state == QH_STATE_LINKED) { ++ ++ /* The toggle value in the QH can't be updated ++ * while the QH is active. Unlink it now; ++ * re-linking will call qh_refresh(). + */ +- if (qh->qh_state == QH_STATE_LINKED) { +- if (eptype == USB_ENDPOINT_XFER_BULK) { +- unlink_async(ehci, qh); +- } else { +- intr_deschedule(ehci, qh); +- (void) qh_schedule(ehci, qh); +- } ++ if (eptype == USB_ENDPOINT_XFER_BULK) { ++ unlink_async(ehci, qh); ++ } else { ++ intr_deschedule(ehci, qh); ++ (void) qh_schedule(ehci, qh); + } +- spin_unlock_irq(&ehci->lock); +- schedule_timeout_uninterruptible(1); +- goto rescan; + } + } +- spin_unlock_irq(&ehci->lock); ++ spin_unlock_irqrestore(&ehci->lock, flags); + } + + static int ehci_get_frame (struct usb_hcd *hcd) +--- a/drivers/usb/host/ehci-q.c ++++ b/drivers/usb/host/ehci-q.c +@@ -93,6 +93,22 @@ qh_update (struct ehci_hcd *ehci, struct + qh->hw_qtd_next = QTD_NEXT(ehci, qtd->qtd_dma); + qh->hw_alt_next = EHCI_LIST_END(ehci); + ++ /* Except for control endpoints, we make hardware maintain data ++ * toggle (like OHCI) ... here (re)initialize the toggle in the QH, ++ * and set the pseudo-toggle in udev. Only usb_clear_halt() will ++ * ever clear it. ++ */ ++ if (!(qh->hw_info1 & cpu_to_hc32(ehci, 1 << 14))) { ++ unsigned is_out, epnum; ++ ++ is_out = !(qtd->hw_token & cpu_to_hc32(ehci, 1 << 8)); ++ epnum = (hc32_to_cpup(ehci, &qh->hw_info1) >> 8) & 0x0f; ++ if (unlikely (!usb_gettoggle (qh->dev, epnum, is_out))) { ++ qh->hw_token &= ~cpu_to_hc32(ehci, QTD_TOGGLE); ++ usb_settoggle (qh->dev, epnum, is_out, 1); ++ } ++ } ++ + /* HC must see latest qtd and qh data before we clear ACTIVE+HALT */ + wmb (); + qh->hw_token &= cpu_to_hc32(ehci, QTD_TOGGLE | QTD_STS_PING); +@@ -834,6 +850,7 @@ done: + qh->qh_state = QH_STATE_IDLE; + qh->hw_info1 = cpu_to_hc32(ehci, info1); + qh->hw_info2 = cpu_to_hc32(ehci, info2); ++ usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), !is_input, 1); + qh_refresh (ehci, qh); + return qh; + } +@@ -864,7 +881,7 @@ static void qh_link_async (struct ehci_h + } + } + +- /* clear halt and maybe recover from silicon quirk */ ++ /* clear halt and/or toggle; and maybe recover from silicon quirk */ + if (qh->qh_state == QH_STATE_IDLE) + qh_refresh (ehci, qh); + diff --git a/usb.current/usb-fhci-mutually-exclusive-port_status.patch b/usb.current/usb-fhci-mutually-exclusive-port_status.patch new file mode 100644 index 00000000000000..d5ecec774c133f --- /dev/null +++ b/usb.current/usb-fhci-mutually-exclusive-port_status.patch @@ -0,0 +1,46 @@ +From akpm@linux-foundation.org Tue Jun 23 14:50:48 2009 +From: Roel Kluin <roel.kluin@gmail.com> +Date: Wed, 10 Jun 2009 12:57:35 -0700 +Subject: USB: fhci: mutually exclusive port_status +To: greg@kroah.com +Cc: linux-usb@vger.kernel.org, akpm@linux-foundation.org, roel.kluin@gmail.com, avorontsov@ru.mvista.com, gregkh@suse.de +Message-ID: <200906101957.n5AJvZGX010533@imap1.linux-foundation.org> + + +From: Roel Kluin <roel.kluin@gmail.com> + +FHCI_PORT_DISABLED, -LOW and -FULL are mutually exclusive as status. + +Signed-off-by: Roel Kluin <roel.kluin@gmail.com> +Cc: Anton Vorontsov <avorontsov@ru.mvista.com> +Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/fhci-sched.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +--- a/drivers/usb/host/fhci-sched.c ++++ b/drivers/usb/host/fhci-sched.c +@@ -576,9 +576,7 @@ irqreturn_t fhci_irq(struct usb_hcd *hcd + out_be16(&usb->fhci->regs->usb_event, + usb->saved_msk); + } else if (usb->port_status == FHCI_PORT_DISABLED) { +- if (fhci_ioports_check_bus_state(fhci) == 1 && +- usb->port_status != FHCI_PORT_LOW && +- usb->port_status != FHCI_PORT_FULL) ++ if (fhci_ioports_check_bus_state(fhci) == 1) + fhci_device_connected_interrupt(fhci); + } + usb_er &= ~USB_E_RESET_MASK; +@@ -605,9 +603,7 @@ irqreturn_t fhci_irq(struct usb_hcd *hcd + } + + if (usb_er & USB_E_IDLE_MASK) { +- if (usb->port_status == FHCI_PORT_DISABLED && +- usb->port_status != FHCI_PORT_LOW && +- usb->port_status != FHCI_PORT_FULL) { ++ if (usb->port_status == FHCI_PORT_DISABLED) { + usb_er &= ~USB_E_RESET_MASK; + fhci_device_connected_interrupt(fhci); + } else if (usb->port_status == diff --git a/usb.current/usb-ftdi_sio-product-id-s-for-ccs-pic-programmers.patch b/usb.current/usb-ftdi_sio-product-id-s-for-ccs-pic-programmers.patch new file mode 100644 index 00000000000000..28d263c5959d60 --- /dev/null +++ b/usb.current/usb-ftdi_sio-product-id-s-for-ccs-pic-programmers.patch @@ -0,0 +1,46 @@ +From jan@ccsinfo.com Tue Jun 23 14:49:44 2009 +From: Jan Capek <jan@ccsinfo.com> +Date: Wed, 10 Jun 2009 18:58:52 +0200 +Subject: USB: ftdi_sio - product ID's for CCS PIC programmers +To: linux-usb@vger.kernel.org +Cc: steven@ccsinfo.com, Jan Capek <jan@ccsinfo.com> +Message-ID: <1244653132-32254-2-git-send-email-jan@ccsinfo.com> + + +The product ID's for the following devices have been added: +- LOAD-n-GO +- ICD-U64 +- PRIME-8 + +Signed-off-by: Jan Capek <jan@ccsinfo.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/ftdi_sio.c | 3 +++ + drivers/usb/serial/ftdi_sio.h | 3 +++ + 2 files changed, 6 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -579,6 +579,9 @@ static struct usb_device_id id_table_com + { USB_DEVICE(FTDI_VID, FTDI_CCSICDU20_0_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CCSICDU40_1_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CCSMACHX_2_PID) }, ++ { USB_DEVICE(FTDI_VID, FTDI_CCSLOAD_N_GO_3_PID) }, ++ { USB_DEVICE(FTDI_VID, FTDI_CCSICDU64_4_PID) }, ++ { USB_DEVICE(FTDI_VID, FTDI_CCSPRIME8_5_PID) }, + { USB_DEVICE(FTDI_VID, INSIDE_ACCESSO) }, + { USB_DEVICE(INTREPID_VID, INTREPID_VALUECAN_PID) }, + { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, +--- a/drivers/usb/serial/ftdi_sio.h ++++ b/drivers/usb/serial/ftdi_sio.h +@@ -614,6 +614,9 @@ + #define FTDI_CCSICDU20_0_PID 0xF9D0 + #define FTDI_CCSICDU40_1_PID 0xF9D1 + #define FTDI_CCSMACHX_2_PID 0xF9D2 ++#define FTDI_CCSLOAD_N_GO_3_PID 0xF9D3 ++#define FTDI_CCSICDU64_4_PID 0xF9D4 ++#define FTDI_CCSPRIME8_5_PID 0xF9D5 + + /* Inside Accesso contactless reader (http://www.insidefr.com) */ + #define INSIDE_ACCESSO 0xFAD0 diff --git a/usb.current/usb-gadget-fix-imx_udc-entry-in-kconfig.patch b/usb.current/usb-gadget-fix-imx_udc-entry-in-kconfig.patch new file mode 100644 index 00000000000000..ea4ea1847dd686 --- /dev/null +++ b/usb.current/usb-gadget-fix-imx_udc-entry-in-kconfig.patch @@ -0,0 +1,76 @@ +From paulius.zaleckas@teltonika.lt Tue Jun 23 14:46:30 2009 +From: Paulius Zaleckas <paulius.zaleckas@teltonika.lt> +Date: Tue, 09 Jun 2009 11:11:16 +0300 +Subject: USB: gadget: fix imx_udc entry in Kconfig +To: linux-usb@vger.kernel.org +Message-ID: <20090609081115.7553.89639.stgit@Programuotojas> + + +Move USB_GADGET_IMX to the right section of Kconfig as this +controller is available only as integrated on i.MX CPU. + +Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/gadget/Kconfig | 42 +++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 21 deletions(-) + +--- a/drivers/usb/gadget/Kconfig ++++ b/drivers/usb/gadget/Kconfig +@@ -286,6 +286,27 @@ config USB_S3C_HSOTG + default USB_GADGET + select USB_GADGET_SELECTED + ++config USB_GADGET_IMX ++ boolean "Freescale IMX USB Peripheral Controller" ++ depends on ARCH_MX1 ++ help ++ Freescale's IMX series include an integrated full speed ++ USB 1.1 device controller. The controller in the IMX series ++ is register-compatible. ++ ++ It has Six fixed-function endpoints, as well as endpoint ++ zero (for control transfers). ++ ++ Say "y" to link the driver statically, or "m" to build a ++ dynamically linked module called "imx_udc" and force all ++ gadget drivers to also be dynamically linked. ++ ++config USB_IMX ++ tristate ++ depends on USB_GADGET_IMX ++ default USB_GADGET ++ select USB_GADGET_SELECTED ++ + config USB_GADGET_S3C2410 + boolean "S3C2410 USB Device Controller" + depends on ARCH_S3C2410 +@@ -321,27 +342,6 @@ config USB_GADGET_MUSB_HDRC + This OTG-capable silicon IP is used in dual designs including + the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin + +-config USB_GADGET_IMX +- boolean "Freescale IMX USB Peripheral Controller" +- depends on ARCH_MX1 +- help +- Freescale's IMX series include an integrated full speed +- USB 1.1 device controller. The controller in the IMX series +- is register-compatible. +- +- It has Six fixed-function endpoints, as well as endpoint +- zero (for control transfers). +- +- Say "y" to link the driver statically, or "m" to build a +- dynamically linked module called "imx_udc" and force all +- gadget drivers to also be dynamically linked. +- +-config USB_IMX +- tristate +- depends on USB_GADGET_IMX +- default USB_GADGET +- select USB_GADGET_SELECTED +- + config USB_GADGET_M66592 + boolean "Renesas M66592 USB Peripheral Controller" + select USB_GADGET_DUALSPEED diff --git a/usb.current/usb-isp1760-use-__devexit_p-for-remove-function.patch b/usb.current/usb-isp1760-use-__devexit_p-for-remove-function.patch new file mode 100644 index 00000000000000..4ce5f6678f2584 --- /dev/null +++ b/usb.current/usb-isp1760-use-__devexit_p-for-remove-function.patch @@ -0,0 +1,29 @@ +From vapier@gentoo.org Tue Jun 23 14:59:34 2009 +From: Mike Frysinger <vapier@gentoo.org> +Date: Thu, 11 Jun 2009 21:59:00 -0400 +Subject: USB: isp1760: use __devexit_p() for remove function +To: linux-usb@vger.kernel.org +Message-ID: <1244771940-15276-1-git-send-email-vapier@gentoo.org> + + +The isp1760_plat_remove function is declared with __devexit, so the +.remove assignment needs to be wrapped with __devexit_p(). + +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/isp1760-if.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/host/isp1760-if.c ++++ b/drivers/usb/host/isp1760-if.c +@@ -361,7 +361,7 @@ static int __devexit isp1760_plat_remove + + static struct platform_driver isp1760_plat_driver = { + .probe = isp1760_plat_probe, +- .remove = isp1760_plat_remove, ++ .remove = __devexit_p(isp1760_plat_remove), + .driver = { + .name = "isp1760", + }, diff --git a/usb.current/usb-option.c-add-qualcomm-option-icon-210-modem.patch b/usb.current/usb-option.c-add-qualcomm-option-icon-210-modem.patch new file mode 100644 index 00000000000000..7720a495b30dac --- /dev/null +++ b/usb.current/usb-option.c-add-qualcomm-option-icon-210-modem.patch @@ -0,0 +1,30 @@ +From kaie@kuix.de Tue Jun 23 15:00:11 2009 +From: Kai Engert <kaie@kuix.de> +Date: Fri, 12 Jun 2009 08:51:37 +0200 +Subject: USB: option.c: add Qualcomm/Option iCON 210 modem +Message-ID: <4A31FAF9.7000500@kuix.de> + + +Add modem portion of USB device labeled: +Model iCON 210, Qualcomm 3G HSDPA, designed in EU by Option + +Device starts in usb-storage mode (1e0e:f000) and requires the use of a tool +like usb_modeswitch to switch it to modem mode (1e0e:9000). + +Signed-off-by: Kai Engert <kaie@kuix.de> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/option.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -531,6 +531,7 @@ static struct usb_device_id option_ids[] + { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, + { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */ + { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_HSDPA_MINICARD ) }, /* Toshiba 3G HSDPA == Novatel Expedite EU870D MiniCard */ ++ { USB_DEVICE(0x1e0e, 0x9000) }, + { } /* Terminating entry */ + }; + MODULE_DEVICE_TABLE(usb, option_ids); diff --git a/usb.current/usb-option.c-to-support-qisda-h21-h20-usb-modem.patch b/usb.current/usb-option.c-to-support-qisda-h21-h20-usb-modem.patch new file mode 100644 index 00000000000000..e3a80b7e14116d --- /dev/null +++ b/usb.current/usb-option.c-to-support-qisda-h21-h20-usb-modem.patch @@ -0,0 +1,46 @@ +From Brad.Lu@Qisda.com Tue Jun 23 15:03:06 2009 +From: "Brad Lu" <Brad.Lu@Qisda.com> +Date: Tue, 16 Jun 2009 18:04:00 +0800 +Subject: USB: option.c to support Qisda H21/H20 usb modem +Message-ID: <FC3A70CA9A615C47B4A175DB6C4B395FD26BA6@QTT-MSV10.Qisda.qcorp.com> + +From: Brad Lu <Brad.Lu@Qisda.com> + + +This patch added Qisda(VID) & H21/H20(PID) into to supporting list. +Please help to check this patch, + +From: Brad Lu <Brad.Lu@Qisda.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/option.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -307,6 +307,12 @@ static int option_resume(struct usb_ser + #define DLINK_VENDOR_ID 0x1186 + #define DLINK_PRODUCT_DWM_652 0x3e04 + ++#define QISDA_VENDOR_ID 0x1da5 ++#define QISDA_PRODUCT_H21_4512 0x4512 ++#define QISDA_PRODUCT_H21_4523 0x4523 ++#define QISDA_PRODUCT_H20_4515 0x4515 ++#define QISDA_PRODUCT_H20_4519 0x4519 ++ + + /* TOSHIBA PRODUCTS */ + #define TOSHIBA_VENDOR_ID 0x0930 +@@ -529,7 +535,10 @@ static struct usb_device_id option_ids[] + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) }, + { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, + { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, +- { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */ ++ { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4512) }, ++ { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4523) }, ++ { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H20_4515) }, ++ { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H20_4519) }, + { USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_HSDPA_MINICARD ) }, /* Toshiba 3G HSDPA == Novatel Expedite EU870D MiniCard */ + { USB_DEVICE(0x1e0e, 0x9000) }, + { } /* Terminating entry */ diff --git a/usb.current/usb-pl2303-new-vendor-and-product-id-for-the-prolific-driver.patch b/usb.current/usb-pl2303-new-vendor-and-product-id-for-the-prolific-driver.patch new file mode 100644 index 00000000000000..7fe478443d215e --- /dev/null +++ b/usb.current/usb-pl2303-new-vendor-and-product-id-for-the-prolific-driver.patch @@ -0,0 +1,44 @@ +From gianpaoloc@gmail.com Tue Jun 23 14:43:34 2009 +From: Gianpaolo Cugola <gianpaoloc@gmail.com> +Date: Fri, 5 Jun 2009 22:57:52 +0200 +Subject: USB: pl2303: New vendor and product id for the prolific driver +To: greg@kroah.com +Message-ID: <9f576be20906051357h5e5098dcs62af11999cf5f13e@mail.gmail.com> + + +I recently bought a PC interface for the Cressi Edy dive computer +(www.cressi.it) and discovered that it uses the pl2303 chip, albeit +with ad-hoc vendor and product ids (04b8, 0521 respectively). Being in +the process of writing a linux software for such device (cressi only +provides a windows software), I patched the pl2303 linux driver to +have the interface recognized. I am submitting you the patch (very +basic) for inclusion in next kernel version. + +From: Gianpaolo Cugola <gianpaoloc@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/serial/pl2303.c | 1 + + drivers/usb/serial/pl2303.h | 4 ++++ + 2 files changed, 5 insertions(+) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -94,6 +94,7 @@ static struct usb_device_id id_table [] + { 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) }, + { } /* Terminating entry */ + }; + +--- a/drivers/usb/serial/pl2303.h ++++ b/drivers/usb/serial/pl2303.h +@@ -122,3 +122,7 @@ + /* Hewlett-Packard LD220-HP POS Pole Display */ + #define HP_VENDOR_ID 0x03f0 + #define HP_LD220_PRODUCT_ID 0x3524 ++ ++/* Cressi Edy (diving computer) PC interface */ ++#define CRESSI_VENDOR_ID 0x04b8 ++#define CRESSI_EDY_PRODUCT_ID 0x0521 |
