From: Greg Kroah-Hartman Date: Thu, 19 Apr 2012 18:25:15 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.2.16~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4764a9de3ac0ae3cc283b8d28501be25f533ba5a;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: acpica-fix-to-allow-region-arguments-to-reference-other-scopes.patch security-fix-compile-error-in-commoncap.c.patch usb-gadget-pch_udc-fix-disconnect-issue.patch usb-gadget-pch_udc-fix-usb-gadget-pch_udc-fix-ether.patch usb-gadget-pch_udc-fix-usb-suspend-issue.patch usb-gadget-pch_udc-fix-wrong-return-value.patch usb-gadget-pch_udc-reduce-redundant-interrupt.patch usb-pch_udc-support-new-device-lapis-semiconductor-ml7831-ioh.patch --- diff --git a/queue-3.0/acpica-fix-to-allow-region-arguments-to-reference-other-scopes.patch b/queue-3.0/acpica-fix-to-allow-region-arguments-to-reference-other-scopes.patch new file mode 100644 index 00000000000..d65ad3578e8 --- /dev/null +++ b/queue-3.0/acpica-fix-to-allow-region-arguments-to-reference-other-scopes.patch @@ -0,0 +1,75 @@ +From 8931d9ea78848b073bf299594f148b83abde4a5e Mon Sep 17 00:00:00 2001 +From: Lin Ming +Date: Mon, 28 Nov 2011 09:46:02 +0800 +Subject: ACPICA: Fix to allow region arguments to reference other scopes + +From: Lin Ming + +commit 8931d9ea78848b073bf299594f148b83abde4a5e upstream. + +Allow referenced objects to be in a different scope. + +http://www.acpica.org/bugzilla/show_bug.cgi?id=937 +http://marc.info/?l=linux-acpi&m=131636632718222&w=2 + +ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) +ACPI Exception: AE_NOT_FOUND, Could not execute arguments for [RAMW] (Region) (20110112/nsinit-349) + + Scope (_SB) + { + Name (RAMB, 0xDF5A1018) + OperationRegion (\RAMW, SystemMemory, RAMB, 0x00010000) + } + +For above ASL code, we need to save scope node(\_SB) to lookup +the argument node(\_SB.RAMB). + +Reported-by: Jim Green +Signed-off-by: Lin Ming +Signed-off-by: Bob Moore +Signed-off-by: Len Brown +Cc: Herton Ronaldo Krzesinski +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/acpica/acobject.h | 1 + + drivers/acpi/acpica/dsargs.c | 2 +- + drivers/acpi/acpica/excreate.c | 6 ++++++ + 3 files changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/acpi/acpica/acobject.h ++++ b/drivers/acpi/acpica/acobject.h +@@ -358,6 +358,7 @@ typedef enum { + */ + struct acpi_object_extra { + ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */ ++ struct acpi_namespace_node *scope_node; + void *region_context; /* Region-specific data */ + u8 *aml_start; + u32 aml_length; +--- a/drivers/acpi/acpica/dsargs.c ++++ b/drivers/acpi/acpica/dsargs.c +@@ -384,7 +384,7 @@ acpi_status acpi_ds_get_region_arguments + + /* Execute the argument AML */ + +- status = acpi_ds_execute_arguments(node, node->parent, ++ status = acpi_ds_execute_arguments(node, extra_desc->extra.scope_node, + extra_desc->extra.aml_length, + extra_desc->extra.aml_start); + if (ACPI_FAILURE(status)) { +--- a/drivers/acpi/acpica/excreate.c ++++ b/drivers/acpi/acpica/excreate.c +@@ -330,6 +330,12 @@ acpi_ex_create_region(u8 * aml_start, + region_obj2 = obj_desc->common.next_object; + region_obj2->extra.aml_start = aml_start; + region_obj2->extra.aml_length = aml_length; ++ if (walk_state->scope_info) { ++ region_obj2->extra.scope_node = ++ walk_state->scope_info->scope.node; ++ } else { ++ region_obj2->extra.scope_node = node; ++ } + + /* Init the region from the operands */ + diff --git a/queue-3.0/security-fix-compile-error-in-commoncap.c.patch b/queue-3.0/security-fix-compile-error-in-commoncap.c.patch new file mode 100644 index 00000000000..23334db3d88 --- /dev/null +++ b/queue-3.0/security-fix-compile-error-in-commoncap.c.patch @@ -0,0 +1,35 @@ +From 51b79bee627d526199b2f6a6bef8ee0c0739b6d1 Mon Sep 17 00:00:00 2001 +From: Jonghwan Choi +Date: Wed, 18 Apr 2012 17:23:04 -0400 +Subject: security: fix compile error in commoncap.c + +From: Jonghwan Choi + +commit 51b79bee627d526199b2f6a6bef8ee0c0739b6d1 upstream. + +Add missing "personality.h" +security/commoncap.c: In function 'cap_bprm_set_creds': +security/commoncap.c:510: error: 'PER_CLEAR_ON_SETID' undeclared (first use in this function) +security/commoncap.c:510: error: (Each undeclared identifier is reported only once +security/commoncap.c:510: error: for each function it appears in.) + +Signed-off-by: Jonghwan Choi +Acked-by: Serge Hallyn +Signed-off-by: James Morris +Cc: Eric Paris +Signed-off-by: Greg Kroah-Hartman + +--- + security/commoncap.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/security/commoncap.c ++++ b/security/commoncap.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + /* + * If a non-root user executes a setuid-root binary in diff --git a/queue-3.0/series b/queue-3.0/series index 44c59c88420..b5f65c2fd45 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -35,3 +35,11 @@ bluetooth-hci_core-fix-null-pointer-dereference-at.patch pch_phub-fix-register-miss-setting-issue.patch pch_phub-care-funcsel-register-in-pm.patch pch_phub-improve-ade-address-decode-enable-control.patch +usb-gadget-pch_udc-fix-disconnect-issue.patch +usb-gadget-pch_udc-fix-wrong-return-value.patch +usb-gadget-pch_udc-fix-usb-suspend-issue.patch +usb-gadget-pch_udc-fix-usb-gadget-pch_udc-fix-ether.patch +usb-gadget-pch_udc-reduce-redundant-interrupt.patch +usb-pch_udc-support-new-device-lapis-semiconductor-ml7831-ioh.patch +acpica-fix-to-allow-region-arguments-to-reference-other-scopes.patch +security-fix-compile-error-in-commoncap.c.patch diff --git a/queue-3.0/usb-gadget-pch_udc-fix-disconnect-issue.patch b/queue-3.0/usb-gadget-pch_udc-fix-disconnect-issue.patch new file mode 100644 index 00000000000..b6ea20cfb89 --- /dev/null +++ b/queue-3.0/usb-gadget-pch_udc-fix-disconnect-issue.patch @@ -0,0 +1,40 @@ +From c50a3bff0edb0acd49d8033a12ea4668e09a31ad Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Thu, 12 Jan 2012 11:27:05 +0900 +Subject: usb: gadget: pch_udc: Fix disconnect issue + +From: Tomoya MORINAGA + +commit c50a3bff0edb0acd49d8033a12ea4668e09a31ad upstream. + +ISSUE: +When the driver notifies a gadget of a disconnect event, a system +rarely freezes. + +CAUSE: +When the driver calls dev->driver->disconnect(), it is not calling +spin_unlock(). + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/pch_udc.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -2338,8 +2338,11 @@ static void pch_udc_svc_ur_interrupt(str + /* Complete request queue */ + empty_req_queue(ep); + } +- if (dev->driver && dev->driver->disconnect) ++ if (dev->driver && dev->driver->disconnect) { ++ spin_unlock(&dev->lock); + dev->driver->disconnect(&dev->gadget); ++ spin_lock(&dev->lock); ++ } + } + + /** diff --git a/queue-3.0/usb-gadget-pch_udc-fix-usb-gadget-pch_udc-fix-ether.patch b/queue-3.0/usb-gadget-pch_udc-fix-usb-gadget-pch_udc-fix-ether.patch new file mode 100644 index 00000000000..60f2fd1bec8 --- /dev/null +++ b/queue-3.0/usb-gadget-pch_udc-fix-usb-gadget-pch_udc-fix-ether.patch @@ -0,0 +1,150 @@ +From 1c575d2d2e3ff2a7cb3c2e2165064199cfd8ad32 Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Thu, 12 Jan 2012 11:27:08 +0900 +Subject: usb: gadget: pch_udc: Fix usb/gadget/pch_udc: Fix ether gadget connect/disconnect issue + +From: Tomoya MORINAGA + +commit 1c575d2d2e3ff2a7cb3c2e2165064199cfd8ad32 upstream. + +ISSUE: +After a USB cable is connect/disconnected, the system rarely freezes. + +CAUSE: +Since the USB device controller cannot know to disconnect the USB cable, when +it is used without detecting VBUS by GPIO, the UDC driver does not notify to +USB Gadget. + +Since USB Gadget cannot know to disconnect, a false setting occurred when the +USB cable is connected/disconnect repeatedly. + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/pch_udc.c | 70 ++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 66 insertions(+), 4 deletions(-) + +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -320,6 +320,7 @@ struct pch_udc_ep { + * @registered: driver regsitered with system + * @suspended: driver in suspended state + * @connected: gadget driver associated ++ * @vbus_session: required vbus_session state + * @set_cfg_not_acked: pending acknowledgement 4 setup + * @waiting_zlp_ack: pending acknowledgement 4 ZLP + * @data_requests: DMA pool for data requests +@@ -346,6 +347,7 @@ struct pch_udc_dev { + registered:1, + suspended:1, + connected:1, ++ vbus_session:1, + set_cfg_not_acked:1, + waiting_zlp_ack:1; + struct pci_pool *data_requests; +@@ -562,6 +564,31 @@ static void pch_udc_clear_disconnect(str + } + + /** ++ * pch_udc_reconnect() - This API initializes usb device controller, ++ * and clear the disconnect status. ++ * @dev: Reference to pch_udc_regs structure ++ */ ++static void pch_udc_init(struct pch_udc_dev *dev); ++static void pch_udc_reconnect(struct pch_udc_dev *dev) ++{ ++ pch_udc_init(dev); ++ ++ /* enable device interrupts */ ++ /* pch_udc_enable_interrupts() */ ++ pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR, ++ UDC_DEVINT_UR | UDC_DEVINT_US | ++ UDC_DEVINT_ENUM | ++ UDC_DEVINT_SI | UDC_DEVINT_SC); ++ ++ /* Clear the disconnect */ ++ pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); ++ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD); ++ mdelay(1); ++ /* Resume USB signalling */ ++ pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); ++} ++ ++/** + * pch_udc_vbus_session() - set or clearr the disconnect status. + * @dev: Reference to pch_udc_regs structure + * @is_active: Parameter specifying the action +@@ -571,10 +598,18 @@ static void pch_udc_clear_disconnect(str + static inline void pch_udc_vbus_session(struct pch_udc_dev *dev, + int is_active) + { +- if (is_active) +- pch_udc_clear_disconnect(dev); +- else ++ if (is_active) { ++ pch_udc_reconnect(dev); ++ dev->vbus_session = 1; ++ } else { ++ if (dev->driver && dev->driver->disconnect) { ++ spin_unlock(&dev->lock); ++ dev->driver->disconnect(&dev->gadget); ++ spin_lock(&dev->lock); ++ } + pch_udc_set_disconnect(dev); ++ dev->vbus_session = 0; ++ } + } + + /** +@@ -1134,7 +1169,17 @@ static int pch_udc_pcd_pullup(struct usb + if (!gadget) + return -EINVAL; + dev = container_of(gadget, struct pch_udc_dev, gadget); +- pch_udc_vbus_session(dev, is_on); ++ if (is_on) { ++ pch_udc_reconnect(dev); ++ } else { ++ if (dev->driver && dev->driver->disconnect) { ++ spin_unlock(&dev->lock); ++ dev->driver->disconnect(&dev->gadget); ++ spin_lock(&dev->lock); ++ } ++ pch_udc_set_disconnect(dev); ++ } ++ + return 0; + } + +@@ -2485,6 +2530,15 @@ static void pch_udc_dev_isr(struct pch_u + dev->driver->suspend(&dev->gadget); + spin_lock(&dev->lock); + } ++ ++ if (dev->vbus_session == 0) { ++ if (dev->driver && dev->driver->disconnect) { ++ spin_unlock(&dev->lock); ++ dev->driver->disconnect(&dev->gadget); ++ spin_lock(&dev->lock); ++ } ++ pch_udc_reconnect(dev); ++ } + dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n"); + } + /* Clear the SOF interrupt, if enabled */ +@@ -2512,6 +2566,14 @@ static irqreturn_t pch_udc_isr(int irq, + dev_intr = pch_udc_read_device_interrupts(dev); + ep_intr = pch_udc_read_ep_interrupts(dev); + ++ /* For a hot plug, this find that the controller is hung up. */ ++ if (dev_intr == ep_intr) ++ if (dev_intr == pch_udc_readl(dev, UDC_DEVCFG_ADDR)) { ++ dev_dbg(&dev->pdev->dev, "UDC: Hung up\n"); ++ /* The controller is reset */ ++ pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR); ++ return IRQ_HANDLED; ++ } + if (dev_intr) + /* Clear device interrupts */ + pch_udc_write_device_interrupts(dev, dev_intr); diff --git a/queue-3.0/usb-gadget-pch_udc-fix-usb-suspend-issue.patch b/queue-3.0/usb-gadget-pch_udc-fix-usb-suspend-issue.patch new file mode 100644 index 00000000000..b4395c4f95d --- /dev/null +++ b/queue-3.0/usb-gadget-pch_udc-fix-usb-suspend-issue.patch @@ -0,0 +1,43 @@ +From 84566abba058b2aae8d603dfa90b5a3778a6714f Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Thu, 12 Jan 2012 11:27:07 +0900 +Subject: usb: gadget: pch_udc: Fix USB suspend issue + +From: Tomoya MORINAGA + +commit 84566abba058b2aae8d603dfa90b5a3778a6714f upstream. + +ISSUE: +After USB Suspend, a system rarely freezes. + +CAUSE: +When USB Suspend occurred, the driver is not notifying +a gadget of the event. + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/pch_udc.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -2478,8 +2478,15 @@ static void pch_udc_dev_isr(struct pch_u + if (dev_intr & UDC_DEVINT_SC) + pch_udc_svc_cfg_interrupt(dev); + /* USB Suspend interrupt */ +- if (dev_intr & UDC_DEVINT_US) ++ if (dev_intr & UDC_DEVINT_US) { ++ if (dev->driver ++ && dev->driver->suspend) { ++ spin_unlock(&dev->lock); ++ dev->driver->suspend(&dev->gadget); ++ spin_lock(&dev->lock); ++ } + dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n"); ++ } + /* Clear the SOF interrupt, if enabled */ + if (dev_intr & UDC_DEVINT_SOF) + dev_dbg(&dev->pdev->dev, "SOF\n"); diff --git a/queue-3.0/usb-gadget-pch_udc-fix-wrong-return-value.patch b/queue-3.0/usb-gadget-pch_udc-fix-wrong-return-value.patch new file mode 100644 index 00000000000..4089edd84a3 --- /dev/null +++ b/queue-3.0/usb-gadget-pch_udc-fix-wrong-return-value.patch @@ -0,0 +1,40 @@ +From c802672cd36cd063bfd54d54c8c34825ab5b2357 Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Thu, 12 Jan 2012 11:27:06 +0900 +Subject: usb: gadget: pch_udc: Fix wrong return value + +From: Tomoya MORINAGA + +commit c802672cd36cd063bfd54d54c8c34825ab5b2357 upstream. + +ISSUE: +If the return value of pch_udc_pcd_init() is False, the return value of +this function is unsettled. +Since pch_udc_pcd_init() always returns 0, there is not actually the issue. + +CAUSE: +If pch_udc_pcd_init() is True, the variable, retval, is not set for an +appropriate value. + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/pch_udc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -2918,8 +2918,10 @@ static int pch_udc_probe(struct pci_dev + } + pch_udc = dev; + /* initialize the hardware */ +- if (pch_udc_pcd_init(dev)) ++ if (pch_udc_pcd_init(dev)) { ++ retval = -ENODEV; + goto finished; ++ } + if (request_irq(pdev->irq, pch_udc_isr, IRQF_SHARED, KBUILD_MODNAME, + dev)) { + dev_err(&pdev->dev, "%s: request_irq(%d) fail\n", __func__, diff --git a/queue-3.0/usb-gadget-pch_udc-reduce-redundant-interrupt.patch b/queue-3.0/usb-gadget-pch_udc-reduce-redundant-interrupt.patch new file mode 100644 index 00000000000..e65708365ee --- /dev/null +++ b/queue-3.0/usb-gadget-pch_udc-reduce-redundant-interrupt.patch @@ -0,0 +1,53 @@ +From 833310402c54ad9b676b465fc53ad276b13d36be Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Thu, 12 Jan 2012 11:27:09 +0900 +Subject: usb: gadget: pch_udc: Reduce redundant interrupt + +From: Tomoya MORINAGA + +commit 833310402c54ad9b676b465fc53ad276b13d36be upstream. + +ISSUE: +USB Suspend interrupts occur frequently. + +CAUSE: +When it is called pch_udc_reconnect() in USB Suspend, it repeats reset and +Suspend. + +SOLUTION: +pch_udc_reconnect() does not enable all interrupts. When an enumeration event +occurred the driver enables all interrupts. + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/pch_udc.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -576,9 +576,7 @@ static void pch_udc_reconnect(struct pch + /* enable device interrupts */ + /* pch_udc_enable_interrupts() */ + pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR, +- UDC_DEVINT_UR | UDC_DEVINT_US | +- UDC_DEVINT_ENUM | +- UDC_DEVINT_SI | UDC_DEVINT_SC); ++ UDC_DEVINT_UR | UDC_DEVINT_ENUM); + + /* Clear the disconnect */ + pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); +@@ -2422,6 +2420,11 @@ static void pch_udc_svc_enum_interrupt(s + pch_udc_set_dma(dev, DMA_DIR_TX); + pch_udc_set_dma(dev, DMA_DIR_RX); + pch_udc_ep_set_rrdy(&(dev->ep[UDC_EP0OUT_IDX])); ++ ++ /* enable device interrupts */ ++ pch_udc_enable_interrupts(dev, UDC_DEVINT_UR | UDC_DEVINT_US | ++ UDC_DEVINT_ES | UDC_DEVINT_ENUM | ++ UDC_DEVINT_SI | UDC_DEVINT_SC); + } + + /** diff --git a/queue-3.0/usb-pch_udc-support-new-device-lapis-semiconductor-ml7831-ioh.patch b/queue-3.0/usb-pch_udc-support-new-device-lapis-semiconductor-ml7831-ioh.patch new file mode 100644 index 00000000000..db8e3c45fd4 --- /dev/null +++ b/queue-3.0/usb-pch_udc-support-new-device-lapis-semiconductor-ml7831-ioh.patch @@ -0,0 +1,66 @@ +From 731ad81e2dd97e3f222361f7b3ff4b35639e46af Mon Sep 17 00:00:00 2001 +From: Tomoya MORINAGA +Date: Fri, 28 Oct 2011 09:37:34 +0900 +Subject: USB: pch_udc: Support new device LAPIS Semiconductor ML7831 IOH + +From: Tomoya MORINAGA + +commit 731ad81e2dd97e3f222361f7b3ff4b35639e46af upstream. + +ML7831 is companion chip for Intel Atom E6xx series. + +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Tomoya MORINAGA +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/usb/gadget/Kconfig | 7 ++++--- + drivers/usb/gadget/pch_udc.c | 6 ++++++ + 2 files changed, 10 insertions(+), 3 deletions(-) + +--- a/drivers/usb/gadget/Kconfig ++++ b/drivers/usb/gadget/Kconfig +@@ -544,7 +544,7 @@ config USB_LANGWELL + select USB_GADGET_SELECTED + + config USB_GADGET_EG20T +- boolean "Intel EG20T PCH/OKI SEMICONDUCTOR ML7213 IOH UDC" ++ tristate "Intel EG20T PCH/OKI SEMICONDUCTOR IOH(ML7213/ML7831) UDC" + depends on PCI + select USB_GADGET_DUALSPEED + help +@@ -562,8 +562,9 @@ config USB_GADGET_EG20T + + This driver also can be used for OKI SEMICONDUCTOR's ML7213 which is + for IVI(In-Vehicle Infotainment) use. +- ML7213 is companion chip for Intel Atom E6xx series. +- ML7213 is completely compatible for Intel EG20T PCH. ++ ML7831 is for general purpose use. ++ ML7213/ML7831 is companion chip for Intel Atom E6xx series. ++ ML7213/ML7831 is completely compatible for Intel EG20T PCH. + + config USB_EG20T + tristate +--- a/drivers/usb/gadget/pch_udc.c ++++ b/drivers/usb/gadget/pch_udc.c +@@ -365,6 +365,7 @@ struct pch_udc_dev { + #define PCI_DEVICE_ID_INTEL_EG20T_UDC 0x8808 + #define PCI_VENDOR_ID_ROHM 0x10DB + #define PCI_DEVICE_ID_ML7213_IOH_UDC 0x801D ++#define PCI_DEVICE_ID_ML7831_IOH_UDC 0x8808 + + static const char ep0_string[] = "ep0in"; + static DEFINE_SPINLOCK(udc_stall_spinlock); /* stall spin lock */ +@@ -3048,6 +3049,11 @@ static DEFINE_PCI_DEVICE_TABLE(pch_udc_p + .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, + .class_mask = 0xffffffff, + }, ++ { ++ PCI_DEVICE(PCI_VENDOR_ID_ROHM, PCI_DEVICE_ID_ML7831_IOH_UDC), ++ .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, ++ .class_mask = 0xffffffff, ++ }, + { 0 }, + }; +