Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: imx27.dtsi: change the clock information for usb

For imx27, it needs three clocks to let the controller work,
the old code is wrong, and usbmisc has not included clock handling
code any more. Without this patch, it will cause below data
abort when accessing usbmisc registers.

usbcore: registered new interface driver usb-storage
Unhandled fault: external abort on non-linefetch (0x008) at 0xf4424600
pgd = c0004000
[f4424600] *pgd=10000452(bad)
Internal error: : 8 [#1] PREEMPT ARM
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 4.1.0-next-20150701-dirty #3089
Hardware name: Freescale i.MX27 (Device Tree Support)
task: c7832b60 ti: c783e000 task.ti: c783e000
PC is at usbmisc_imx27_init+0x4c/0xbc
LR is at usbmisc_imx27_init+0x40/0xbc
pc : [<c03cb5c0>] lr : [<c03cb5b4>] psr: 60000093
sp : c783fe08 ip : 00000000 fp : 00000000
r10: c0576434 r9 : 0000009c r8 : c7a773a0
r7 : 01000000 r6 : 60000013 r5 : c7a776f0 r4 : c7a773f0
r3 : f4424600 r2 : 00000000 r1 : 00000001 r0 : 00000001
Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: a0004000 DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc783e190)
Stack: (0xc783fe08 to 0xc7840000)

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Reported-by: Fabio Estevam <fabio.estevam@freescale.com>
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
Cc: <stable@vger.kernel.org> #v4.1+
Acked-by: Shawn Guo <shawnguo@kernel.org>

+12 -4
+12 -4
arch/arm/boot/dts/imx27.dtsi
··· 486 486 compatible = "fsl,imx27-usb"; 487 487 reg = <0x10024000 0x200>; 488 488 interrupts = <56>; 489 - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; 489 + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, 490 + <&clks IMX27_CLK_USB_AHB_GATE>, 491 + <&clks IMX27_CLK_USB_DIV>; 492 + clock-names = "ipg", "ahb", "per"; 490 493 fsl,usbmisc = <&usbmisc 0>; 491 494 status = "disabled"; 492 495 }; ··· 498 495 compatible = "fsl,imx27-usb"; 499 496 reg = <0x10024200 0x200>; 500 497 interrupts = <54>; 501 - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; 498 + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, 499 + <&clks IMX27_CLK_USB_AHB_GATE>, 500 + <&clks IMX27_CLK_USB_DIV>; 501 + clock-names = "ipg", "ahb", "per"; 502 502 fsl,usbmisc = <&usbmisc 1>; 503 503 dr_mode = "host"; 504 504 status = "disabled"; ··· 511 505 compatible = "fsl,imx27-usb"; 512 506 reg = <0x10024400 0x200>; 513 507 interrupts = <55>; 514 - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; 508 + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, 509 + <&clks IMX27_CLK_USB_AHB_GATE>, 510 + <&clks IMX27_CLK_USB_DIV>; 511 + clock-names = "ipg", "ahb", "per"; 515 512 fsl,usbmisc = <&usbmisc 2>; 516 513 dr_mode = "host"; 517 514 status = "disabled"; ··· 524 515 #index-cells = <1>; 525 516 compatible = "fsl,imx27-usbmisc"; 526 517 reg = <0x10024600 0x200>; 527 - clocks = <&clks IMX27_CLK_USB_AHB_GATE>; 528 518 }; 529 519 530 520 sahara2: sahara@10025000 {