mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
0de174b56b
USB_MUSB_HDRC depends on USB_GADGET_DUALSPEED. If HDRC is selected but DUALSPEED is not, the kernel oopses: [ 3.132781] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 3.141296] pgd = c0004000 [ 3.144134] [00000000] *pgd=00000000 [ 3.147918] Internal error: Oops: 5 [#1] SMP [ 3.152404] Modules linked in: [ 3.155609] CPU: 0 Not tainted (3.1.0-rc9-wl+ #417) [ 3.161132] PC is at composite_setup+0x738/0xbb4 [ 3.165985] LR is at vprintk+0x400/0x47c [ 3.170135] pc : [<c031df90>] lr : [<c004c150>] psr: 60000093 [ 3.170135] sp : c065dd50 ip : dfb1f0fc fp : c065ddbc [ 3.182220] r10: 00000000 r9 : df8fcae8 r8 : df8fcaa0 [ 3.187713] r7 : 00000000 r6 : df8eaa20 r5 : dfae8ea0 r4 : 00000000 [ 3.194580] r3 : df8fcae8 r2 : 00010002 r1 : c065dc40 r0 : 00000047 [ 3.201446] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel [ 3.209228] Control: 10c53c7d Table: 8000404a DAC: 00000015 [ 3.215270] Process swapper (pid: 0, stack limit = 0xc065c2f8) [ 3.221405] Stack: (0xc065dd50 to 0xc065e000) [...] [ 3.415405] [<c031df90>] (composite_setup+0x738/0xbb4) from [<c0310d18>] (musb_g_ep0_irq+0x9d0/0xaf8) [ 3.425109] [<c0310d18>] (musb_g_ep0_irq+0x9d0/0xaf8) from [<c030fb04>] (musb_interrupt+0xb48/0xc74) [ 3.434722] [<c030fb04>] (musb_interrupt+0xb48/0xc74) from [<c030fc98>] (generic_interrupt+0x68/0x80) [ 3.444458] [<c030fc98>] (generic_interrupt+0x68/0x80) from [<c0095204>] (handle_irq_event_percpu+0x9c/0x234) [ 3.454925] [<c0095204>] (handle_irq_event_percpu+0x9c/0x234) from [<c00953e8>] (handle_irq_event+0x4c/0x6c) [ 3.465270] [<c00953e8>] (handle_irq_event+0x4c/0x6c) from [<c0097e10>] (handle_fasteoi_irq+0xd8/0x110) [ 3.475158] [<c0097e10>] (handle_fasteoi_irq+0xd8/0x110) from [<c0094d2c>] (generic_handle_irq+0x34/0x3c) [ 3.485260] [<c0094d2c>] (generic_handle_irq+0x34/0x3c) from [<c0014ae4>] (handle_IRQ+0x88/0xc8) [ 3.494537] [<c0014ae4>] (handle_IRQ+0x88/0xc8) from [<c00085b0>] (asm_do_IRQ+0x18/0x1c) [ 3.503051] [<c00085b0>] (asm_do_IRQ+0x18/0x1c) from [<c0429e78>] (__irq_svc+0x38/0xc0) This patch changes Kconfig so that USB_GADGET_DUALSPEED is selected automatically by USB_MUSB_HDRC. Signed-off-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
111 lines
2.9 KiB
Plaintext
111 lines
2.9 KiB
Plaintext
#
|
|
# USB Dual Role (OTG-ready) Controller Drivers
|
|
# for silicon based on Mentor Graphics INVENTRA designs
|
|
#
|
|
|
|
# (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
|
|
config USB_MUSB_HDRC
|
|
depends on USB && USB_GADGET
|
|
depends on (ARM || (BF54x && !BF544) || (BF52x && !BF522 && !BF523))
|
|
select NOP_USB_XCEIV if (ARCH_DAVINCI || MACH_OMAP3EVM || BLACKFIN)
|
|
select TWL4030_USB if MACH_OMAP_3430SDP
|
|
select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA
|
|
select USB_OTG_UTILS
|
|
select USB_GADGET_DUALSPEED
|
|
tristate 'Inventra Highspeed Dual Role Controller (TI, ADI, ...)'
|
|
help
|
|
Say Y here if your system has a dual role high speed USB
|
|
controller based on the Mentor Graphics silicon IP. Then
|
|
configure options to match your silicon and the board
|
|
it's being used with, including the USB peripheral role,
|
|
or the USB host role, or both.
|
|
|
|
Texas Instruments familiies using this IP include DaVinci
|
|
(35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010.
|
|
|
|
Analog Devices parts using this IP include Blackfin BF54x,
|
|
BF525 and BF527.
|
|
|
|
If you do not know what this is, please say N.
|
|
|
|
To compile this driver as a module, choose M here; the
|
|
module will be called "musb-hdrc".
|
|
|
|
choice
|
|
prompt "Platform Glue Layer"
|
|
depends on USB_MUSB_HDRC
|
|
|
|
config USB_MUSB_DAVINCI
|
|
tristate "DaVinci"
|
|
depends on ARCH_DAVINCI_DMx
|
|
|
|
config USB_MUSB_DA8XX
|
|
tristate "DA8xx/OMAP-L1x"
|
|
depends on ARCH_DAVINCI_DA8XX
|
|
|
|
config USB_MUSB_TUSB6010
|
|
tristate "TUSB6010"
|
|
depends on ARCH_OMAP
|
|
|
|
config USB_MUSB_OMAP2PLUS
|
|
tristate "OMAP2430 and onwards"
|
|
depends on ARCH_OMAP2PLUS
|
|
|
|
config USB_MUSB_AM35X
|
|
tristate "AM35x"
|
|
depends on ARCH_OMAP
|
|
|
|
config USB_MUSB_BLACKFIN
|
|
tristate "Blackfin"
|
|
depends on (BF54x && !BF544) || (BF52x && ! BF522 && !BF523)
|
|
|
|
config USB_MUSB_UX500
|
|
tristate "U8500 and U5500"
|
|
depends on (ARCH_U8500 && AB8500_USB)
|
|
|
|
endchoice
|
|
|
|
config MUSB_PIO_ONLY
|
|
bool 'Disable DMA (always use PIO)'
|
|
depends on USB_MUSB_HDRC
|
|
default USB_MUSB_TUSB6010 || USB_MUSB_DA8XX || USB_MUSB_AM35X
|
|
help
|
|
All data is copied between memory and FIFO by the CPU.
|
|
DMA controllers are ignored.
|
|
|
|
Do not select 'n' here unless DMA support for your SOC or board
|
|
is unavailable (or unstable). When DMA is enabled at compile time,
|
|
you can still disable it at run time using the "use_dma=n" module
|
|
parameter.
|
|
|
|
config USB_UX500_DMA
|
|
bool
|
|
depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
|
|
default USB_MUSB_UX500
|
|
help
|
|
Enable DMA transfers on UX500 platforms.
|
|
|
|
config USB_INVENTRA_DMA
|
|
bool
|
|
depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
|
|
default USB_MUSB_OMAP2PLUS || USB_MUSB_BLACKFIN
|
|
help
|
|
Enable DMA transfers using Mentor's engine.
|
|
|
|
config USB_TI_CPPI_DMA
|
|
bool
|
|
depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
|
|
default USB_MUSB_DAVINCI
|
|
help
|
|
Enable DMA transfers when TI CPPI DMA is available.
|
|
|
|
config USB_TUSB_OMAP_DMA
|
|
bool
|
|
depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
|
|
depends on USB_MUSB_TUSB6010
|
|
depends on ARCH_OMAP
|
|
default y
|
|
help
|
|
Enable DMA transfers on TUSB 6010 when OMAP DMA is available.
|
|
|