diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-25 13:09:33 -0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-25 13:09:33 -0800 |
| commit | 53aa7b785b8cd367068f565006620f9e3eb68108 (patch) | |
| tree | 32aa4e93145e77647ac484edb5a0362024521812 /usb.current | |
| parent | 4ded3df0a291c4217b76288e8817ee52d3c12945 (diff) | |
| download | patches-53aa7b785b8cd367068f565006620f9e3eb68108.tar.gz | |
usb musb patches, finally...
Diffstat (limited to 'usb.current')
| -rw-r--r-- | usb.current/usb-musb-cppi-bugfixes.patch | 75 | ||||
| -rw-r--r-- | usb.current/usb-musb-cppi-dma-fix.patch | 33 | ||||
| -rw-r--r-- | usb.current/usb-musb-davinci-buildfix.patch | 60 | ||||
| -rw-r--r-- | usb.current/usb-musb-free_irq-bugfix.patch | 38 | ||||
| -rw-r--r-- | usb.current/usb-musb-tusb6010-buildfix.patch | 39 | ||||
| -rw-r--r-- | usb.current/usb-musb-uses-endpoint-functions.patch | 110 | ||||
| -rw-r--r-- | usb.current/usb-musb_hdrc-another-davinci-buildfix.patch | 66 | ||||
| -rw-r--r-- | usb.current/usb-omap1-ohci-buildfix.patch | 57 | ||||
| -rw-r--r-- | usb.current/usb-prevent-musb-init-oops.patch | 39 |
9 files changed, 517 insertions, 0 deletions
diff --git a/usb.current/usb-musb-cppi-bugfixes.patch b/usb.current/usb-musb-cppi-bugfixes.patch new file mode 100644 index 00000000000000..a1f6a8fdc2d787 --- /dev/null +++ b/usb.current/usb-musb-cppi-bugfixes.patch @@ -0,0 +1,75 @@ +From david-b@pacbell.net Sun Jan 25 12:55:57 2009 +From: Hugo Villeneuve <hugo@hugovil.com> +Date: Sat, 24 Jan 2009 17:57:30 -0800 +Subject: USB: musb cppi bugfixes +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Hugo Villeneuve <hugo@hugovil.com> +Message-ID: <200901241757.30836.david-b@pacbell.net> +Content-Disposition: inline + + +From: Hugo Villeneuve <hugo@hugovil.com> + +These compilation errors are related to incorrect +debugging macro and variable names and generated the +following errors: + + drivers/usb/musb/cppi_dma.c:437:5: warning: "MUSB_DEBUG" is not defined + drivers/usb/musb/cppi_dma.c: In function 'cppi_next_rx_segment': + drivers/usb/musb/cppi_dma.c:884: error: 'debug' undeclared (first use in this function) + +Signed-off-by: Hugo Villeneuve <hugo@hugovil.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/cppi_dma.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +--- a/drivers/usb/musb/cppi_dma.c ++++ b/drivers/usb/musb/cppi_dma.c +@@ -9,6 +9,7 @@ + #include <linux/usb.h> + + #include "musb_core.h" ++#include "musb_debug.h" + #include "cppi_dma.h" + + +@@ -423,6 +424,7 @@ cppi_rndis_update(struct cppi_channel *c + } + } + ++#ifdef CONFIG_USB_MUSB_DEBUG + static void cppi_dump_rxbd(const char *tag, struct cppi_descriptor *bd) + { + pr_debug("RXBD/%s %08x: " +@@ -431,10 +433,11 @@ static void cppi_dump_rxbd(const char *t + bd->hw_next, bd->hw_bufp, bd->hw_off_len, + bd->hw_options); + } ++#endif + + static void cppi_dump_rxq(int level, const char *tag, struct cppi_channel *rx) + { +-#if MUSB_DEBUG > 0 ++#ifdef CONFIG_USB_MUSB_DEBUG + struct cppi_descriptor *bd; + + if (!_dbg_level(level)) +@@ -881,12 +884,14 @@ cppi_next_rx_segment(struct musb *musb, + bd->hw_options |= CPPI_SOP_SET; + tail->hw_options |= CPPI_EOP_SET; + +- if (debug >= 5) { ++#ifdef CONFIG_USB_MUSB_DEBUG ++ if (_dbg_level(5)) { + struct cppi_descriptor *d; + + for (d = rx->head; d; d = d->next) + cppi_dump_rxbd("S", d); + } ++#endif + + /* in case the preceding transfer left some state... */ + tail = rx->last_processed; diff --git a/usb.current/usb-musb-cppi-dma-fix.patch b/usb.current/usb-musb-cppi-dma-fix.patch new file mode 100644 index 00000000000000..274f4c28c3e7ba --- /dev/null +++ b/usb.current/usb-musb-cppi-dma-fix.patch @@ -0,0 +1,33 @@ +From david-b@pacbell.net Sun Jan 25 12:56:13 2009 +From: Swaminathan S <swami.iyer@ti.com> +Date: Sat, 24 Jan 2009 17:57:37 -0800 +Subject: USB: musb cppi dma fix +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net> +Message-ID: <200901241757.37411.david-b@pacbell.net> +Content-Disposition: inline + + +From: Swaminathan S <swami.iyer@ti.com> + +Initializes the actual_len field to 0 before every DMA transaction. + +Signed-off-by: Swaminathan S <swami.iyer@ti.com> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/cppi_dma.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/musb/cppi_dma.c ++++ b/drivers/usb/musb/cppi_dma.c +@@ -995,6 +995,7 @@ static int cppi_channel_program(struct d + cppi_ch->offset = 0; + cppi_ch->maxpacket = maxpacket; + cppi_ch->buf_len = len; ++ cppi_ch->channel.actual_len = 0; + + /* TX channel? or RX? */ + if (cppi_ch->transmit) diff --git a/usb.current/usb-musb-davinci-buildfix.patch b/usb.current/usb-musb-davinci-buildfix.patch new file mode 100644 index 00000000000000..b4551e48cf3336 --- /dev/null +++ b/usb.current/usb-musb-davinci-buildfix.patch @@ -0,0 +1,60 @@ +From david-b@pacbell.net Sun Jan 25 12:53:56 2009 +From: David Brownell <david-b@pacbell.net> +Date: Sat, 24 Jan 2009 17:56:17 -0800 +Subject: USB: musb davinci buildfix +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Kevin Hilman <khilman@deeprootsystems.com> +Message-ID: <200901241756.17172.david-b@pacbell.net> +Content-Disposition: inline + + +From: David Brownell <dbrownell@users.sourceforge.net> + +Trying once more to get this merged. The original was submitted +for 2.6.27-rc2 or so, and never got correctly merged. Neither +were any of the numerous subsequent resends. Sigh. + + CC drivers/usb/musb/davinci.o +drivers/usb/musb/davinci.c:35:32: error: mach/arch/hardware.h: No such file or directory +drivers/usb/musb/davinci.c:36:30: error: mach/arch/memory.h: No such file or directory +drivers/usb/musb/davinci.c:37:28: error: mach/arch/gpio.h: No such file or directory +drivers/usb/musb/davinci.c:373: error: redefinition of 'musb_platform_set_mode' +drivers/usb/musb/davinci.c:368: error: previous definition of 'musb_platform_set_mode' was here + +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/davinci.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/drivers/usb/musb/davinci.c ++++ b/drivers/usb/musb/davinci.c +@@ -32,9 +32,10 @@ + #include <linux/io.h> + #include <linux/gpio.h> + +-#include <mach/arch/hardware.h> +-#include <mach/arch/memory.h> +-#include <mach/arch/gpio.h> ++#include <mach/hardware.h> ++#include <mach/memory.h> ++#include <mach/gpio.h> ++ + #include <asm/mach-types.h> + + #include "musb_core.h" +@@ -370,12 +371,6 @@ int musb_platform_set_mode(struct musb * + return -EIO; + } + +-int musb_platform_set_mode(struct musb *musb, u8 mode) +-{ +- /* EVM can't do this (right?) */ +- return -EIO; +-} +- + int __init musb_platform_init(struct musb *musb) + { + void __iomem *tibase = musb->ctrl_base; diff --git a/usb.current/usb-musb-free_irq-bugfix.patch b/usb.current/usb-musb-free_irq-bugfix.patch new file mode 100644 index 00000000000000..0e86c86de558ae --- /dev/null +++ b/usb.current/usb-musb-free_irq-bugfix.patch @@ -0,0 +1,38 @@ +From david-b@pacbell.net Sun Jan 25 12:54:30 2009 +From: Ajay Kumar Gupta <ajay.gupta@ti.com> +Date: Sat, 24 Jan 2009 17:56:39 -0800 +Subject: USB: musb free_irq bugfix +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Ajay Kumar Gupta <ajay.gupta@ti.com> +Message-ID: <200901241756.39927.david-b@pacbell.net> +Content-Disposition: inline + + +From: Ajay Kumar Gupta <ajay.gupta@ti.com> + +Fixes insert module failure as free_irq() was not +done in previous rmmod. + +Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/musb_core.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/usb/musb/musb_core.c ++++ b/drivers/usb/musb/musb_core.c +@@ -1824,8 +1824,9 @@ static void musb_free(struct musb *musb) + musb_gadget_cleanup(musb); + #endif + +- if (musb->nIrq >= 0 && musb->irq_wake) { +- disable_irq_wake(musb->nIrq); ++ if (musb->nIrq >= 0) { ++ if (musb->irq_wake) ++ disable_irq_wake(musb->nIrq); + free_irq(musb->nIrq, musb); + } + if (is_dma_capable() && musb->dma_controller) { diff --git a/usb.current/usb-musb-tusb6010-buildfix.patch b/usb.current/usb-musb-tusb6010-buildfix.patch new file mode 100644 index 00000000000000..14a6c1c6174594 --- /dev/null +++ b/usb.current/usb-musb-tusb6010-buildfix.patch @@ -0,0 +1,39 @@ +From david-b@pacbell.net Sun Jan 25 12:55:14 2009 +From: Kalle Valo <kalle.valo@nokia.com> +Date: Sat, 24 Jan 2009 17:57:15 -0800 +Subject: USB: musb: tusb6010 buildfix +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Kalle Valo <kalle.valo@nokia.com> +Message-ID: <200901241757.15282.david-b@pacbell.net> +Content-Disposition: inline + + +From: Kalle Valo <kalle.valo@nokia.com> + +drivers/usb/musb/tusb6010_omap.c:18:26: error: asm/arch/dma.h: + No such file or directory +drivers/usb/musb/tusb6010_omap.c:19:26: error: asm/arch/mux.h: + No such file or directory + +Signed-off-by: Kalle Valo <kalle.valo@nokia.com> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/tusb6010_omap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/musb/tusb6010_omap.c ++++ b/drivers/usb/musb/tusb6010_omap.c +@@ -15,8 +15,8 @@ + #include <linux/usb.h> + #include <linux/platform_device.h> + #include <linux/dma-mapping.h> +-#include <asm/arch/dma.h> +-#include <asm/arch/mux.h> ++#include <mach/dma.h> ++#include <mach/mux.h> + + #include "musb_core.h" + diff --git a/usb.current/usb-musb-uses-endpoint-functions.patch b/usb.current/usb-musb-uses-endpoint-functions.patch new file mode 100644 index 00000000000000..d85b9c80a80e68 --- /dev/null +++ b/usb.current/usb-musb-uses-endpoint-functions.patch @@ -0,0 +1,110 @@ +From david-b@pacbell.net Sun Jan 25 12:55:33 2009 +From: Julia Lawall <julia@diku.dk> +Date: Sat, 24 Jan 2009 17:57:24 -0800 +Subject: USB: musb uses endpoint functions +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Julia Lawall <julia@diku.dk> +Message-ID: <200901241757.25111.david-b@pacbell.net> +Content-Disposition: inline + + +From: Julia Lawall <julia@diku.dk> + +This set of patches introduces calls to the following set of functions: + +usb_endpoint_dir_in(epd) +usb_endpoint_dir_out(epd) +usb_endpoint_is_bulk_in(epd) +usb_endpoint_is_bulk_out(epd) +usb_endpoint_is_int_in(epd) +usb_endpoint_is_int_out(epd) +usb_endpoint_num(epd) +usb_endpoint_type(epd) +usb_endpoint_xfer_bulk(epd) +usb_endpoint_xfer_control(epd) +usb_endpoint_xfer_int(epd) +usb_endpoint_xfer_isoc(epd) + +In some cases, introducing one of these functions is not possible, and it +just replaces an explicit integer value by one of the following constants: + +USB_ENDPOINT_XFER_BULK +USB_ENDPOINT_XFER_CONTROL +USB_ENDPOINT_XFER_INT +USB_ENDPOINT_XFER_ISOC + +An extract of the semantic patch that makes these changes is as follows: +(http://www.emn.fr/x-info/coccinelle/) + +// <smpl> +@r1@ struct usb_endpoint_descriptor *epd; @@ + +- ((epd->bmAttributes & \(USB_ENDPOINT_XFERTYPE_MASK\|3\)) == +- \(USB_ENDPOINT_XFER_CONTROL\|0\)) ++ usb_endpoint_xfer_control(epd) + +@r5@ struct usb_endpoint_descriptor *epd; @@ + +- ((epd->bEndpointAddress & \(USB_ENDPOINT_DIR_MASK\|0x80\)) == +- \(USB_DIR_IN\|0x80\)) ++ usb_endpoint_dir_in(epd) + +@inc@ +@@ + +#include <linux/usb.h> + +@depends on !inc && (r1||r5)@ +@@ + ++ #include <linux/usb.h> + #include <linux/usb/...> +// </smpl> + +Signed-off-by: Julia Lawall <julia@diku.dk> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/musb_gadget.c | 6 +++--- + drivers/usb/musb/musb_host.c | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +--- a/drivers/usb/musb/musb_gadget.c ++++ b/drivers/usb/musb/musb_gadget.c +@@ -874,10 +874,10 @@ static int musb_gadget_enable(struct usb + status = -EBUSY; + goto fail; + } +- musb_ep->type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; ++ musb_ep->type = usb_endpoint_type(desc); + + /* check direction and (later) maxpacket size against endpoint */ +- if ((desc->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK) != epnum) ++ if (usb_endpoint_num(desc) != epnum) + goto fail; + + /* REVISIT this rules out high bandwidth periodic transfers */ +@@ -890,7 +890,7 @@ static int musb_gadget_enable(struct usb + * packet size (or fail), set the mode, clear the fifo + */ + musb_ep_select(mbase, epnum); +- if (desc->bEndpointAddress & USB_DIR_IN) { ++ if (usb_endpoint_dir_in(desc)) { + u16 int_txe = musb_readw(mbase, MUSB_INTRTXE); + + if (hw_ep->is_shared_fifo) +--- a/drivers/usb/musb/musb_host.c ++++ b/drivers/usb/musb/musb_host.c +@@ -1847,8 +1847,8 @@ static int musb_urb_enqueue( + goto done; + } + +- qh->epnum = epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; +- qh->type = epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; ++ qh->epnum = usb_endpoint_num(epd); ++ qh->type = usb_endpoint_type(epd); + + /* NOTE: urb->dev->devnum is wrong during SET_ADDRESS */ + qh->addr_reg = (u8) usb_pipedevice(urb->pipe); diff --git a/usb.current/usb-musb_hdrc-another-davinci-buildfix.patch b/usb.current/usb-musb_hdrc-another-davinci-buildfix.patch new file mode 100644 index 00000000000000..9bd7ee93ae114c --- /dev/null +++ b/usb.current/usb-musb_hdrc-another-davinci-buildfix.patch @@ -0,0 +1,66 @@ +From david-b@pacbell.net Sun Jan 25 12:54:12 2009 +From: David Brownell <david-b@pacbell.net> +Date: Sat, 24 Jan 2009 17:56:25 -0800 +Subject: USB: musb_hdrc: another davinci buildfix (otg related) +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Kevin Hilman <khilman@deeprootsystems.com> +Message-ID: <200901241756.25190.david-b@pacbell.net> +Content-Disposition: inline + + +From: David Brownell <dbrownell@users.sourceforge.net> + +The DaVinci code had an implementation of the OTG transceiver glue +too; make it use the new-standard one. + +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + arch/arm/mach-davinci/usb.c | 23 ----------------------- + drivers/usb/musb/Kconfig | 1 + + 2 files changed, 1 insertion(+), 23 deletions(-) + +--- a/arch/arm/mach-davinci/usb.c ++++ b/arch/arm/mach-davinci/usb.c +@@ -76,29 +76,6 @@ static struct platform_device usb_dev = + .num_resources = ARRAY_SIZE(usb_resources), + }; + +-#ifdef CONFIG_USB_MUSB_OTG +- +-static struct otg_transceiver *xceiv; +- +-struct otg_transceiver *otg_get_transceiver(void) +-{ +- if (xceiv) +- get_device(xceiv->dev); +- return xceiv; +-} +-EXPORT_SYMBOL(otg_get_transceiver); +- +-int otg_set_transceiver(struct otg_transceiver *x) +-{ +- if (xceiv && x) +- return -EBUSY; +- xceiv = x; +- return 0; +-} +-EXPORT_SYMBOL(otg_set_transceiver); +- +-#endif +- + void __init setup_usb(unsigned mA, unsigned potpgt_msec) + { + usb_data.power = mA / 2; +--- a/drivers/usb/musb/Kconfig ++++ b/drivers/usb/musb/Kconfig +@@ -11,6 +11,7 @@ config USB_MUSB_HDRC + depends on (USB || USB_GADGET) && HAVE_CLK + depends on !SUPERH + select TWL4030_USB if MACH_OMAP_3430SDP ++ select USB_OTG_UTILS + tristate 'Inventra Highspeed Dual Role Controller (TI, ADI, ...)' + help + Say Y here if your system has a dual role high speed USB diff --git a/usb.current/usb-omap1-ohci-buildfix.patch b/usb.current/usb-omap1-ohci-buildfix.patch new file mode 100644 index 00000000000000..4b535f83d12cd7 --- /dev/null +++ b/usb.current/usb-omap1-ohci-buildfix.patch @@ -0,0 +1,57 @@ +From david-b@pacbell.net Sun Jan 25 12:53:37 2009 +From: David Brownell <david-b@pacbell.net> +Date: Sat, 24 Jan 2009 17:55:57 -0800 +Subject: USB: omap1 ohci buildfix (otg related) +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Russell King <rmk@arm.linux.org.uk>, Tony Lindgren <tony@atomide.com> +Message-ID: <200901241755.57741.david-b@pacbell.net> +Content-Disposition: inline + + +From: David Brownell <dbrownell@users.sourceforge.net> + + > > drivers/built-in.o: In function `ohci_omap_init': + > > hid-quirks.c:(.text+0x6c608): undefined reference to `otg_get_transceiver' + > > drivers/built-in.o: In function `omap_udc_probe': + > > hid-quirks.c:(.init.text+0x34c0): undefined reference to `otg_get_transceiver' + > > hid-quirks.c:(.init.text+0x3d40): undefined reference to `otg_put_transceiver' + +Reported-by: Russell King <linux@arm.linux.org.uk> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Acked-by: Tony Lindgren <tony@atomide.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/host/Kconfig | 1 + + drivers/usb/otg/Kconfig | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/usb/host/Kconfig ++++ b/drivers/usb/host/Kconfig +@@ -140,6 +140,7 @@ config USB_OHCI_HCD + tristate "OHCI HCD support" + depends on USB && USB_ARCH_HAS_OHCI + select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 ++ select USB_OTG_UTILS if ARCH_OMAP + ---help--- + The Open Host Controller Interface (OHCI) is a standard for accessing + USB 1.1 host controller hardware. It does more in hardware than Intel's +--- a/drivers/usb/otg/Kconfig ++++ b/drivers/usb/otg/Kconfig +@@ -6,14 +6,14 @@ + + comment "OTG and related infrastructure" + +-if USB || USB_GADGET +- + config USB_OTG_UTILS + bool + help + Select this to make sure the build includes objects from + the OTG infrastructure directory. + ++if USB || USB_GADGET ++ + # + # USB Transceiver Drivers + # diff --git a/usb.current/usb-prevent-musb-init-oops.patch b/usb.current/usb-prevent-musb-init-oops.patch new file mode 100644 index 00000000000000..359e9c31b2aa3f --- /dev/null +++ b/usb.current/usb-prevent-musb-init-oops.patch @@ -0,0 +1,39 @@ +From david-b@pacbell.net Sun Jan 25 12:54:56 2009 +From: Ajay Kumar Gupta <ajay.gupta@ti.com> +Date: Sat, 24 Jan 2009 17:57:06 -0800 +Subject: USB: prevent musb init oops (otg related) +To: linux-usb@vger.kernel.org +Cc: Greg KH <greg@kroah.com>, Felipe Balbi <felipebalbi@users.sourceforge.net>, Ajay Kumar Gupta <ajay.gupta@ti.com> +Message-ID: <200901241757.06185.david-b@pacbell.net> +Content-Disposition: inline + + +From: Ajay Kumar Gupta <ajay.gupta@ti.com> + +Subject: usb: musb: fix null pointer check in musb_platform_init() + +Fixes kernel panic when musb is selected for OMAP35x EVM but twl4030 is not +selected as in this case otg_get_transceiver() returns null. + +Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com> +Acked-by: Felipe Balbi <felipe.balbi@nokia.com> +Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/musb/omap2430.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/usb/musb/omap2430.c ++++ b/drivers/usb/musb/omap2430.c +@@ -231,6 +231,10 @@ int __init musb_platform_init(struct mus + #if defined(CONFIG_ARCH_OMAP2430) + omap_cfg_reg(AE5_2430_USB0HS_STP); + #endif ++ if (!x) { ++ pr_err("omap: musb: null transceiver found\n"); ++ return -ENODEV; ++ } + + musb_platform_resume(musb); + |
