summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-06-24MLK-11151 usb: chipidea: otg: drive vbus off if fsm.drv_vbus is truerel_imx_3.14.38_6qp_betaPeter Chen
The current condition may not true even we have driven vbus on already. The vbus drive operation may be async, eg through i2c gpio expendor, so the vbus may not be valid when we unload usb module. We meet this issue when we do fast load/unload usb module test. Signed-off-by: Peter Chen <peter.chen@freescale.com>
2015-06-24MLK-11137 usb: chipidea: host: add own hc_driver for each hcdPeter Chen
There are several benefits for doing like this: - hc_driver can be customized for each hcd - Other hcd hc_driver's initialization will not affect current one. We run out NULL pointer dereference problem when one hcd is started by module_init, and the other is started by otg thread at SMP platform. The reason for this problem is ehci_init_driver will do memory copy for current uniform hc_driver, and this memory copy will do memset (as 0) first, so when the first hcd is running usb_add_hcd, and the second hcd may clear the uniform hc_driver's space (at ehci_init_driver), then the first hcd will meet NULL pointer at the same time. See below two logs: LOG_1: ci_hdrc ci_hdrc.0: EHCI Host Controller ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 ci_hdrc ci_hdrc.1: doesn't support gadget Unable to handle kernel NULL pointer dereference at virtual address 00000014 pgd = 80004000 [00000014] *pgd=00000000 Internal error: Oops: 805 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 108 Comm: kworker/u8:2 Not tainted 3.14.38-222193-g24b2734-dirty #25 Workqueue: ci_otg ci_otg_work task: d839ec00 ti: d8400000 task.ti: d8400000 PC is at ehci_run+0x4c/0x284 LR is at _raw_spin_unlock_irqrestore+0x28/0x54 pc : [<8041f9a0>] lr : [<8070ea84>] psr: 60000113 sp : d8401e30 ip : 00000000 fp : d8004400 r10: 00000001 r9 : 00000001 r8 : 00000000 r7 : 00000000 r6 : d8419940 r5 : 80dd24c0 r4 : d8419800 r3 : 8001d060 r2 : 00000000 r1 : 00000001 r0 : 00000000 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 1000404a DAC: 00000015 Process kworker/u8:2 (pid: 108, stack limit = 0xd8400238) Stack: (0xd8401e30 to 0xd8402000) 1e20: d87523c0 d8401e48 66667562 d8419800 1e40: 00000000 00000000 d8419800 00000000 00000000 00000000 d84198b0 8040fcdc 1e60: 00000000 80dd320c d8477610 d8419c00 d803d010 d8419800 00000000 00000000 1e80: d8004400 00000000 d8400008 80431494 80431374 d803d100 d803d010 d803d1ac 1ea0: 00000000 80432428 804323d4 d803d100 00000001 80435eb8 80e0d0bc d803d100 1ec0: 00000006 80436458 00000000 d803d100 80e92ec8 80436f44 d803d010 d803d100 1ee0: d83fde00 8043292c d8752710 d803d1f4 d803d010 8042ddfc 8042ddb8 d83f3b00 1f00: d803d1f4 80042b60 00000000 00000003 00000001 00000001 80054598 d83f3b00 1f20: d8004400 d83f3b18 d8004414 d8400000 80e3957b 00000089 d8004400 80043814 1f40: d839ec00 00000000 d83fcd80 d83f3b00 800436e4 00000000 00000000 00000000 1f60: 00000000 80048f34 00000000 00000000 00000000 d83f3b00 00000000 00000000 1f80: d8401f80 d8401f80 00000000 00000000 d8401f90 d8401f90 d8401fac d83fcd80 1fa0: 80048e68 00000000 00000000 8000e538 00000000 00000000 00000000 00000000 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [<8041f9a0>] (ehci_run) from [<8040fcdc>] (usb_add_hcd+0x248/0x6e8) [<8040fcdc>] (usb_add_hcd) from [<80431494>] (host_start+0x120/0x2e4) [<80431494>] (host_start) from [<80432428>] (ci_otg_start_host+0x54/0xbc) [<80432428>] (ci_otg_start_host) from [<80435eb8>] (otg_set_protocol+0xa4/0xd0) [<80435eb8>] (otg_set_protocol) from [<80436458>] (otg_set_state+0x574/0xc58) [<80436458>] (otg_set_state) from [<80436f44>] (otg_statemachine+0x408/0x46c) [<80436f44>] (otg_statemachine) from [<8043292c>] (ci_otg_fsm_work+0x3c/0x190) [<8043292c>] (ci_otg_fsm_work) from [<8042ddfc>] (ci_otg_work+0x44/0x1c4) [<8042ddfc>] (ci_otg_work) from [<80042b60>] (process_one_work+0xf4/0x35c) [<80042b60>] (process_one_work) from [<80043814>] (worker_thread+0x130/0x3bc) [<80043814>] (worker_thread) from [<80048f34>] (kthread+0xcc/0xe4) [<80048f34>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c) Code: e5953018 e3530000 0a000000 e12fff33 (e5878014) LOG_2: ci_hdrc ci_hdrc.0: EHCI Host Controller ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 ci_hdrc ci_hdrc.1: doesn't support gadget Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = 80004000 [00000000] *pgd=00000000 In Online 00:00ternal e Offline rror: Oops: 80000005 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 108 Comm: kworker/u8:2 Not tainted 3.14.38-02007-g24b2734-dirty #127 Workque Online 00:00ue: ci_o Offline tg ci_otg_work Online 00:00task: d8 Offline 39ec00 ti: d83ea000 task.ti: d83ea000 PC is at 0x0 LR is at usb_add_hcd+0x248/0x6e8 pc : [<00000000>] lr : [<8040f644>] psr: 60000113 sp : d83ebe60 ip : 00000000 fp : d8004400 r10: 00000001 r9 : 00000001 r8 : d85fd4b0 r7 : 00000000 r6 : 00000000 r5 : 00000000 r4 : d85fd400 r3 : 00000000 r2 : d85fd4f4 r1 : 80410178 r0 : d85fd400 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 1000404a DAC: 00000015 Process kworker/u8:2 (pid: 108, stack limit = 0xd83ea238) Stack: (0xd83ebe60 to 0xd83ec000) be60: 00000000 80dd920c d8654e10 d85fd800 d803e010 d85fd400 00000000 00000000 be80: d8004400 00000000 d83ea008 80430e34 80430d14 d803e100 d803e010 d803e1ac bea0: 00000000 80431dc8 80431d74 d803e100 00000001 80435858 80e130bc d803e100 bec0: 00000006 80435df8 00000000 d803e100 80e98ec8 804368e4 d803e010 d803e100 bee0: d86e8100 804322cc d86cf050 d803e1f4 d803e010 8042d79c 8042d758 d83cf900 bf00: d803e1f4 80042b78 00000000 00000003 00000001 00000001 800545e8 d83cf900 bf20: d8004400 d83cf918 d8004414 d83ea000 80e3f57b 00000089 d8004400 8004382c bf40: d839ec00 00000000 d8393780 d83cf900 800436fc 00000000 00000000 00000000 bf60: 00000000 80048f50 80e019f4 00000000 0000264c d83cf900 00000000 00000000 bf80: d83ebf80 d83ebf80 00000000 00000000 d83ebf90 d83ebf90 d83ebfac d8393780 bfa0: 80048e84 00000000 00000000 8000e538 00000000 00000000 00000000 00000000 bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 ee66e85d 133ebd03 [<804 Online 00:000f644>] Offline (usb_add_hcd) from [<80430e34>] (host_start+0x120/0x2e4) [<80430e34>] (host_start) from [<80431dc8>] (ci_otg_start_host+0x54/0xbc) [<80431dc8>] (ci_otg_start_host) from [<80435858>] (otg_set_protocol+0xa4/0xd0) [<80435858>] (otg_set_protocol) from [<80435df8>] (otg_set_state+0x574/0xc58) [<80435df8>] (otg_set_state) from [<804368e4>] (otg_statemachine+0x408/0x46c) [<804368e4>] (otg_statemachine) from [<804322cc>] (ci_otg_fsm_work+0x3c/0x190) [<804322cc>] (ci_otg_fsm_work) from [<8042d79c>] (ci_otg_work+0x44/0x1c4) [<8042d79c>] (ci_otg_work) from [<80042b78>] (process_one_work+0xf4/0x35c) [<80042b78>] (process_one_work) from [<8004382c>] (worker_thread+0x130/0x3bc) [<8004382c>] (worker_thread) from [<80048f50>] (kthread+0xcc/0xe4) [<80048f50>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c) Code: bad PC value Signed-off-by: Peter Chen <peter.chen@freescale.com>
2015-06-24MLK-11159-2 Revert "MLK-11092 ARM: imx6: set pl310 l2 cache prefetch offset ↵Robby Cai
to zero" This reverts commit 34ff6ab4e6af5e87eb3edc0420b204bf09e859e6. After further investigation, find L2 prefetch offset setting of 0xF is not the root cause for USB stress reboot failure. With the fix in USB driver, and L2 prefetch offset setting of 0xF, the reboot stress test has passed 4-days both on imx6q and imx6qp sabreauto board. Signed-off-by: Robby Cai <r63905@freescale.com>
2015-06-24MLK-11159-1 Revert "MLK-11114 ARM: imx6: disable double linefill feature on 6QP"Robby Cai
This reverts commit b16930c52cb512f4d53dd222715a65aa530cc6fe. After further investigation, find the L2 cache double line fill is not the root cause for USB or SD3.0 stress reboot failure. With the fix in USB driver, and the L2 double line fill enabled, the reboot stress test has passed 4-days. So revert the patch to make L2 double line fill enabled on imx6qp by default. Signed-off-by: Robby Cai <r63905@freescale.com>
2015-06-24MLK-11160 pci: imx: enlarge the delay time after resumeRichard Zhu
some pcie pe devices maybe still failed resime back, after pcie rc is resumed, when the pcie ep devices have a heavy loading task. Enlarge the delay time after imx6qp pcie rc resume back. Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com> (cherry picked from commit e0f3836149889b1db7cce76218c76efbf0347e0e)
2015-06-24MLK-11132 usb: chipidea: otg: delay suspend for a_wait_vfallLi Jun
While A device as peripheral ends session by a_bus_drop, it will go back to host role by transition to a_wait_vfall state, then ehci host driver may access portsc status after controller enters suspend , this will result in system hang since its clock is gated off. This patch use existing autosuspend to delay the controller suspend if it comes to a_wait_vfall state. Signed-off-by: Li Jun <jun.li@freescale.com> (cherry picked from commit b140fa6803ef6ececec17e435212a960a3169cc2)
2015-06-23MLK-9897-2 usb: otg-fsm: check B-device state before sending polling requestLi Jun
While system resume, the connected udev as B-device may not has been resumed, if HNP polling request is sent to it, HNP polling may fail, this patch adds check of the udev state to make sure it finished resume and to be configured state before sending host request message, otherwise try next HNP polling request. Acked-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Li Jun <jun.li@freescale.com> (cherry picked from commit 2cff5eb7bd4feb70cd28ac4655e7433e57a17938)
2015-06-23mmc: sdhci-esdhc-imx: avoid DMA to kernel stackRussell King
sdhci-esdhc-imx tries to DMA to the kernel stack when tuning the interface, which causes dma-debug to complain. Fix this by kmallocing a buffer to hold the received tuning pattern. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Tested-by: Markus Pargmann <mpa@pengutronix.de> Tested-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Chris Ball <chris@printf.net>
2015-06-16MLK-11114 ARM: imx6: disable double linefill feature on 6QPBai Ping
With L2 double linefill enabled, the stress reboot test failure is met on USB(MLK10738) or SD3.0(MLK11072). By disabling L2 double line fill, the stress reboot can pass. Note we are still investigating on this issue to find the evidence how these issues are corelated with L2 double line fill Signed-off-by: Bai Ping <b51503@freescale.com>
2015-06-15MLK-10945 ARM: imx: correct busfreq flow for i.mx6qp/dq/dlAnson Huang
When busfreq transit to low bus mode and back to normal mode, the delay line settings should be restored, but the software flow is entering the med setpoint path which is NOT supported now, it will lead to incorrect delay line settings for normal mode when busfreq is ever switching to other mode and back to normal mode; Store MMDC1 ODT setting as well and improve those MMDC settings to align with ddr script in uboot, recommended by design team. During DLL On/Off switch, pre-charge command should be only issued to those open banks, otherwise, some boards busfreq stress test will be failed. Signed-off-by: Anson Huang <b20788@freescale.com>
2015-06-15MGS-755 [#1779] fix vg context buffer memory leakXianzhong
gcoVGHARDWARE_FreeVideoMemory user space implementation has some problem, the asynchronous unlock/free is required by kernel memory managment, by not available in this function. because user command buffer & struct cannot be freed through committing new vg command to hardware, the new workaround is to double unlock the video memory for gcvHAL_RELEASE_VIDEO_MEMORY, also removed the database as the asynchronous unlock is not available in vg user space driver. Date: Jun 15, 2015 Signed-off-by: Xianzhong <b07117@freescale.com> (cherry picked from commit af30773d184e4b370ae577fd624f3ea8aec97a50)
2015-06-12MGS-577 ARM: Export the cache management symbols when !MULTI_CACHEShawn Xiao
When compiling a GPU module without CONFIG_MULTI_CACHE enabled, the compiler prompt warning which says symbol v7_dma_map_area and v7_dma_flush_area not exported. And when insmod GPU module, it also warns the above two symbols not found, which cause insmod module failed. This patch export these dma access functions and fix these issues. Signed-off-by: Shawn Xiao <b49994@freescale.com> (cherry picked from commit c5a859e73d7c9f87ebd487fd473f56503d65d60f)
2015-06-12MLK-11098: arm: imx: set imx6qp eim_slow to 132MhzGao Pan
eim_slow is 66MHz on imx6qp and 132MHz on imx6q. As a result, imx6qp weim nor read performance is half of imx6q. To eliminate the performance difference, imx6qp eim_slow is set to 132Mhz. Signed-off-by: Gao Pan <b54642@freescale.com>
2015-06-12MLK-11092 ARM: imx6: set pl310 l2 cache prefetch offset to zeroBai Ping
Set the L2 cache prefetch offset to zero due to the system instability issue. Signed-off-by: Bai Ping <b51503@freescale.com>
2015-06-12MLK-10828 thermal: imx: update the temperature calibration data for i.mx6Bai Ping
According to the design team: After a thorough accuracy study of the Temp sense circuit,we found that with our current equation, an average part can read 7 degrees lower than a known forced temperature. We also found out that the standard variance was around 2C; which is the tightest distribution that we could create. We need to change the temp sense equation to center the average part around the target temperature. Old Equation: Temp = Troom,cal - slope*(Count measured - Count room fuse) Where Troom,cal = 25C and Slope = 0.4297157 - (0.0015974 * Count room fuse) New Equation: Temp = Troom,cal - slope*(Count measured - Count room fuse) +offset Where Troom,cal = 25C and Slope = 0.4148468 - (0.0015423 * Count room fuse) Offset = 3.580661 Signed-off-by: Bai Ping <b51503@freescale.com>
2015-06-11MLK-11082 mxc IPUv3: common: Explicitly set IDMAC0/1/2/3 AXI ID for various SoCsLiu Ying
The IDMAC0/1/2/3 channels are real time channels for video input capture via the SMFC0/1/2/3 channels respectively. These IDMAC channels should have high priority in IPUv3(controlled by the register IDMAC_CH_PRI_1) to make sure the capture channels may access memory whenever they want. Accordingly, the AXI ID of the IDMAC channels should reflect it's high priority nature in the fabric settings(controlled by IPUx_IDy_RD/WR_QoS fields) with a relatively good QoS value. This patch explicitly sets IDMAC0/1/2/3 AXI ID for various SoCs to match the fabric settings(programmed in machine layer or bootloader). Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 70dfca096aa1be07dc6eb83c0a11998a9c69804d)
2015-06-10MGS-797 [#1772] fix gpu hang with the loadable galcoreXianzhong
GPU hang with repeat insmod/rmmod galcore when run all 3D applications, The issue is identifed and related with the workaround of keeping PU always on to avoid PRE hang, It is confirmed that GPU hardware reset is not available on i.mx6qp due to PRE Errata, The SW wokaround is applied to remove soft reset during GPU hardware initialization. Date: Jun 10, 2015 Signed-off-by: Xianzhong <b07117@freescale.com> (cherry picked from commit a1072144162dfa281a78d9e2c2e657e464aa5ea9)
2015-06-10MLK-11078 video: mxc ipuv3 fb: reduce debug level for PRE allocation failureLiu Ying
Upon PRE allocation failure, the function ipu_pre_alloc() would return a dedicated value to reflect the reason of the failure. So, it should be ok to reduce debug level for the failure from dev_err to dev_dbg so that dmesg would be less noisy. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit e37c94006b4b84670500c4113ad841e5fda68141)
2015-06-09MLK-11066 video: mxc ipuv3 fb: check tile block after blank check in pan displayLiu Ying
We may wrongly check tile block in pan display for a linear framebuffer in the following case: step 1) framebuffer works in linear RGB24 pixel format(unblanked) step 2) blank the framebuffer step 3) change framebuffer to be a GPU tile format step 4) change framebuffer back to linear RGB24 pixel format The cached variable mxc_fbi->cur_var will not change in all of the 4 steps because the framebuffer is blanked in step 2). In step 3), the format change is successful since step 2) to 3) would definitely changes the pixel format from linear RGB24 to a GPU tile format - mxc_fbi->cur_var is not the same to fbi->var, which leads to mxcfb_need_to_set_par() returns true. However, in step 4), the format change is not successful since mxc_fbi->cur_var and fbi->var is the same, which leads to mxcfb_need_to_set_par() returns false. Note that we set mxc_fbi->resolve to be true in step 3), so it keeps to be true in step 4) as we return at mxcfb_need_to_set_par() before we may change it to be false. Finally, in step 4), after doing ->fb_set_par() in fb_set_var(), we do fb_pan_display() and wrongly check tile block for the linear RGB24 pixel format as mxc_fbi->resolve is true - hit the BUG_ON() in fmt_to_tile_block(). To fix this issue, this patch moves the code for tile block check down below blank check in ->fb_pan_display(). Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit f1889f599400d9cc766fba09e709434cbca33fd2)
2015-06-08ENGR00298052-5 ARM: dts: imx6qdl-sabresd: support Hannstar CABCLiu Ying
This patch adds a device tree node for the Hannstar CABC function. We currently disable the CABC feature since it makes a panel's backlight unstable when display content varies considerably from time to time. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 49fd539b3fad6df44a5eb04eefeb237bfde8da5e) (cherry picked from commit ca441de4ec6edb05c2030052e7440b1f70011575)
2015-06-08ENGR00264465-1 arm: dts: imx6qdl-sabresd:Add LVDS CABC pinmuxLiu Ying
This patch adds pinmux entries for LVDS0 and LVDS1 to control the Hannstar LVDS panel CABC function. Pin NANDF_CS2 and pin NANDF_CS3 are configured to be gpio so that they can control the CABC function. Conflicts: arch/arm/boot/dts/imx6qdl-sabresd.dtsi Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit e5607e333915ddd8650af02895979fde3a82197d) (cherry picked from commit ad9488a6a85053866cc5898923e3e670e901dc68) (cherry picked from commit 9b10a0063c739a34b74ee1a022c9ea204d1747bd)
2015-06-05MLK-11055 video: mxc ipuv3 fb: Fix wrong pixel component map when PRE is enabledLiu Ying
In the on-the-fly cases to enable PRE, to make sure the pixel may be correctly deciphered by IPU after the framebuffer configuration is done, we probably need to use PRE pixel component mapping feature since the original framebuffer pixel format is likely not the same as the one we use in the last run. However, in the non on-the-fly cases to enable PRE, we should have PRE generate an appropriate pixel format for IPU to consume which doesn't include PRE pxiel component mapping feature. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit d87af060ae03a24cfa120ffe7047354cc0110d68)
2015-06-05MLK-10923 arm: pci: use the i2c expansion perst on imx6qpRichard Zhu
Base on the following commit, use the i2c expansion gpio as the pcie perst on imx6qp ard board. "ab13b0e11c50021905de00a0f3c0df7e0a36a3f0" i2c: imx: add irqf_no_suspend The i2c irq is masked when pcie starts a i2c transfer process during noirq suspend stage. As a result, i2c transfer fails. To solve the problem, IRQF_NO_SUSPEND is added to i2c bus. Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com> (cherry picked from commit df02e66e628b108cb802370924f40dcdcadd6da9)
2015-06-05MLK-10994-5 usb: chipidea: otg: fix NULL pointer dereference when unload modulePeter Chen
With commit "95b62fe MLK-10750 usb: chipidea: otg: remove otg fsm before destory gdaget and host", the otg fsm will be removed first, but when the host is removing, it will trigger pcd interrupt, and otg work is still queued to ci_otg workqueue(otg state is OTG_STATE_A_HOST), but at that time, ci_otg workqueue has been destroyed. In this commit, we make sure the otg work is not queued if ci->wq is NULL, and keep otg state is OTG_STATE_UNDEFINED after otg fsm has been removed. The NULL pointer deference error like belows: Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = a873c000 [00000000] *pgd=a90f9831, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: usb_f_ecm u_ether libcomposite configfs ci_hdrc_imx(-) ci_hdrc udc_core ehci_hcd mxc_vadc mx6s_capture mxc_dcic ov5640_camera usbmisc_imx phy_mxs_usb evbug [last unloaded: usb_f_rndis] CPU: 0 PID: 162 Comm: udevd Not tainted 3.14.38-02187-g5639985-dirty #160 task: a863e880 ti: a872e000 task.ti: a872e000 PC is at __queue_work+0x68/0x268 LR is at __queue_work+0x68/0x268 pc : [<80045060>] lr : [<80045060>] psr: 600e0193 sp : a872fed0 ip : 00000000 fp : 00000000 r10: 00000004 r9 : a872e000 r8 : 0000004b r7 : 80e4c804 r6 : a9295000 r5 : a87f8294 r4 : 00000000 r3 : a80690e0 r2 : 00000000 r1 : a8069108 r0 : a8003400 Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: a873c04a DAC: 00000015 Process udevd (pid: 162, stack limit = 0xa872e238) Stack: (0xa872fed0 to 0xa8730000) fec0: 00ff3d34 80743750 00000000 600e0193 fee0: a87f8294 a9295000 00000004 0000004b a8008900 80eb51ff 00ff3d34 800452a8 ff00: 00000000 a87f8010 00000000 00000000 00000000 7f060ac0 a8dfced0 a87f8010 ff20: 00002e20 7f059730 a8e7e2c0 a800895c 00000000 8006c1b4 80e46080 80e40458 ff40: a8008900 a800895c a8e7e2c0 c0802100 00fc40e8 00000000 00000048 8006c320 ff60: a8008900 a800895c 00000000 8006f1c4 8006f140 0000004b 0000004b 8006b92c ff80: 80e40e54 8000f9cc c080210c 80e4c970 a872ffb0 8000856c 00fc4308 76d9c890 ffa0: 600e0010 ffffffff 7edef480 800130bc 00fc4308 00ff3d70 00000000 000000ff ffc0: 00000671 00000000 00ff3b90 7edef480 00fc40e8 00000000 00000048 00ff3d34 ffe0: 000321b8 7edef140 000240a0 76d9c890 600e0010 ffffffff abf5e821 abf5ec21 [<80045060>] (__queue_work) from [<800452a8>] (queue_work_on+0x48/0x54) [<800452a8>] (queue_work_on) from [<7f060ac0>] (ci_otg_fsm_irq+0x108/0x310 [ci_hdrc]) [<7f060ac0>] (ci_otg_fsm_irq [ci_hdrc]) from [<7f059730>] (ci_irq+0x94/0x158 [ci_hdrc]) [<7f059730>] (ci_irq [ci_hdrc]) from [<8006c1b4>] (handle_irq_event_percpu+0x50/0x180) [<8006c1b4>] (handle_irq_event_percpu) from [<8006c320>] (handle_irq_event+0x3c/0x5c) [<8006c320>] (handle_irq_event) from [<8006f1c4>] (handle_fasteoi_irq+0x84/0x14c) [<8006f1c4>] (handle_fasteoi_irq) from [<8006b92c>] (generic_handle_irq+0x2c/0x3c) [<8006b92c>] (generic_handle_irq) from [<8000f9cc>] (handle_IRQ+0x40/0x90) [<8000f9cc>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c) [<8000856c>] (gic_handle_irq) from [<800130bc>] (__irq_usr+0x3c/0x60) Exception stack(0xa872ffb0 to 0xa872fff8) ffa0: 00fc4308 00ff3d70 00000000 000000ff ffc0: 00000671 00000000 00ff3b90 7edef480 00fc40e8 00000000 00000048 00ff3d34 ffe0: 000321b8 7edef140 000240a0 76d9c890 600e0010 ffffffff Code: e5964084 e0844003 e1a00005 ebfffa14 (e5943000) ---[ end trace 53dc25e918ff7216 ]--- Kernel panic - not syncing: Fatal exception in interrupt Signed-off-by: Peter Chen <peter.chen@freescale.com> (cherry picked from commit c5b8111e4178387e1a6e9c700fdf887a944a5129)
2015-06-05MLK-10903-2: ASoC: imx_spdif: add snd_soc_pm_opsShengjiu Wang
Add snd_soc_pm_ops in machine driver to make the trigger suspend/resume be called in suspend/resume. Remove platform_set_drvdata for redundance, When register card, it has been called. Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com> (cherry picked from commit fe21119eed18804b2bc7c47216b6f4478de0268d)
2015-06-05MLK-10903-1: ASoC: fsl_spdif: remove cache only in suspend/resumeShengjiu Wang
In imx6qp, there is no mega fast. After suspend, but before resume, there will be spdif interrupt, if set cache only in suspend, then we can't clear the interrupt, because regmap_write only write to cache. So the system will hang for the interrupt can't be cleared. Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com> (cherry picked from commit 2a6a522c86d6c0fe80023c4327ca7ce4792035c8)
2015-06-05ASoC: Replace list_empty(&card->codec_dev_list) with !card->instantiatedLars-Peter Clausen
With componentization we no longer necessarily need a snd_soc_codec struct for a card. Instead of checking if the card's CODEC list is empty just use card->instantiated to check if the card has been instantiated yet. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit c5599b87a8317738a541d8893cb327df5d04b007) (cherry picked from commit f5759b126788abb9c1ac371ce86cc2fbe1f241c3)
2015-06-03MLK-10960 thermal: imx: add a mutex to make sure tempmon setting changed safelyBai Ping
The busfreq notifier and thermal_zone updating run asynchronously. In some critical situaiton, the notifier callback may be interrupted by thermal_zone kthread, it will lead to the TEMPMON setting uncompleted when the get_temp function reads the temp sensor value. Signed-off-by: Bai Ping <b51503@freescale.com>
2015-06-01MLK-11007 Revert "MLK-10998 video: mxc ipuv3 fb: Fix wrong pixel component ↵Robby Cai
map when PRE is enabled" This reverts commit 543b0799a446ecddedaa33847021bfc87d8262e1. Because this patch will introduce the following error: If only use /dev/video18 to display the video, it will print IPU warning and gst dqueue failed. imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x40000000 imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_10 = 0x00100000 imx-ipuv3 2400000.ipu: IPU Warning - IPU_INT_STAT_5 = 0x00800000 mxc_sdc_fb fb.24: timeout when waiting for flip irq .... Signed-off-by: Robby Cai <r63905@freescale.com> (cherry picked from commit 316c2a399871eaafff0a2f2b5a35e5398cebb41a)
2015-05-29MLK-10934 mtd: use memcpy to replace the memcpy_fromioHuang Shijie
During the read of NOR, the kernel actually calls the inline_map_copy_from() to read the data out. And inline_map_copy_from() will use the memcpy_fromio() to do the real job. The memcpy_fromio macro maps _memcpy_fromio() in the current code. But the _memcpy_fromio() will use readb() to do the copy work one byte by one byte. This makes the read performance of NOR very slow(about 2~3MB/s). A similiar discussion could be found in: http://lists.infradead.org/pipermail/linux-arm-kernel/2009-November/003860.html This patch replace the memcpy_fromio with memcpy which is optimized by the kernel. The following is the result from mtd_speedtest with M29W256GL7AN6E: ================================================= mtd_speedtest: MTD device: 2 mtd_speedtest: not NAND flash, assume page size is 512 bytes. mtd_speedtest: MTD device size 4194304, eraseblock size 131072, page size 512, count of eraseblocks 32, pages per eraseblock 256, OOB size 0 mtd_speedtest: testing eraseblock write speed mtd_speedtest: eraseblock write speed is 845 KiB/s mtd_speedtest: testing eraseblock read speed mtd_speedtest: eraseblock read speed is 19504 KiB/s mtd_speedtest: testing page write speed mtd_speedtest: page write speed is 845 KiB/s mtd_speedtest: testing page read speed mtd_speedtest: page read speed is 19140 KiB/s mtd_speedtest: testing 2 page write speed mtd_speedtest: 2 page write speed is 846 KiB/s mtd_speedtest: testing 2 page read speed mtd_speedtest: 2 page read speed is 19320 KiB/s mtd_speedtest: Testing erase speed mtd_speedtest: erase speed is 233 KiB/s mtd_speedtest: Testing 2x multi-block erase speed mtd_speedtest: 2x multi-block erase speed is 225 KiB/s mtd_speedtest: Testing 4x multi-block erase speed mtd_speedtest: 4x multi-block erase speed is 224 KiB/s mtd_speedtest: Testing 8x multi-block erase speed mtd_speedtest: 8x multi-block erase speed is 225 KiB/s mtd_speedtest: Testing 16x multi-block erase speed mtd_speedtest: 16x multi-block erase speed is 225 KiB/s mtd_speedtest: Testing 32x multi-block erase speed mtd_speedtest: 32x multi-block erase speed is 225 KiB/s mtd_speedtest: Testing 64x multi-block erase speed mtd_speedtest: 64x multi-block erase speed is 224 KiB/s mtd_speedtest: finished ================================================= (cherry-picked from: f1e5914ffd82d5326cbd30507d4f37d02a0da099) Signed-off-by: Huang Shijie <b32955@freescale.com>
2015-05-29MLK-10998 video: mxc ipuv3 fb: Fix wrong pixel component map when PRE is enabledLiu Ying
In the on-the-fly cases to enable PRE, the PRE input/output pixel formats are likely not the same, hence, we need to use PRE pixel component mapping feature to make sure the pixel may be correctly deciphered by IPU. However, in the non on-the-fly cases to enable PRE, we should have PRE generate the original fb pixel format for IPU to consume as long as the pixel format is one that IPU can process. The PRE specific input pixel formats(NV21, NV61 and GPU tile formats) are not one of them, thus, we have to use PRE to convert them into dedicated IPU formats. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 0c33038319b71464dae0d894902e6e6da4dd42a9)
2015-05-28MGS-622 [#1729] Suspend/resume test cause GPU hangShawn Xiao
Signal will cause some GPU kernel call return with error status gcvSTATUS_INTERRUPTED. If adding interruptcount first, the signal will cause the number not align with actual event, and the monitor funciton will make a fake GPU hang judgement based on this. Date May 21, 2015 Signed-off-by: Shawn Xiao <b49994@freescale.com> (cherry picked from commit 4ac2e19117d3c2349cab50e58a2b33606c3d5bdd)
2015-05-28MLK-9606-1 usb: otg: test: add otg test device into otg and EH TPLLi Jun
This patch add otg test device with VID(0x1a0a) and PID(0x0200) into otg and EH TPL. Acked-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Li Jun <b47624@freescale.com> (cherry picked from commit b88ee5e2cbf55aaed3b6c5dd0aff7f826f9e357d)
2015-05-28MLK-9617-19 usb: otg: test: show warning message for unsupported otg test devLi Jun
According to "USB On-The-Go and Embedded Host Automated Compliance Plan Version 1.2", chapter 6.7.23, unknown Device Not Supporting HNP:'Unsupported Device'; chapter 6.7.24 unknown Device Supporting HNP: 'Device No Response' Signed-off-by: Li Jun <b47624@freescale.com> (cherry picked from commit 32df700386fff1d1eef90007604055f1d013aaf3)
2015-05-28MLK-9829 usb: core: print suggested message if failed to get device descriptorLi Jun
This is required for USB OTG and EH compliance test 6.7.22(A-UUT “Device No Response” for connection timeout). When the connected usb device(PET) does not response to transactions, host will fail to get device descriptor. Signed-off-by: Li Jun <jun.li@freescale.com> (cherry picked from commit 86d0bd661ecbbdf97dd9a8ddbaf0d3811de7f39e)
2015-05-28MLK-10983 : ARM: imx: gpc: wait PU LDO ramp before GPU power up on i.mx6qpRobin Gong
Wait PU LDO ramp before GPU power on once system resume back on i.mx6qp, otherwise, GPU resume may hang. Signed-off-by: Robin Gong <b38343@freescale.com> (cherry picked from commit f9cc58435590b5427a0a1bfac8b27d3ca1620b4a)
2015-05-25MLK-10742 ARM: dts: imx6qp-sabreauto: Enable prefetch for the four mxcfbsLiu Ying
This patch enables the prefetch feature for the four mxcfbs. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit cc47a33b7be9a2317d4c64cb4e9b7e6341db2e9d)
2015-05-25MLK-10957 : ARM: imx: gpc: do not turn off PU in GPC probeRobin Gong
There is narrow window that PRE driver is ready but GPU driver probe later, and the later GPU driver turn on PU may cause 'PRE hang' issue. To simplify thing, do not turn off PU in u-boot and PU power domain register. check more information from below commit: MLK-10465: ARM: imx6qp: keep PU always on for TKT259465 Signed-off-by: Robin Gong <b38343@freescale.com> (cherry picked from commit c6b7d7aabbccaf8cdf25cf6bb317a725cdedf140)
2015-05-22MLK-10937 video: mxc ipuv3 fb: Correct cur_blank for set_par bailout if no ↵Liu Ying
PRE available We should set cur_blank to be FB_BLANK_POWERDOWN for set_par's bailout path if no PRE is available and we are not in the 'on_the_fly' cases, because the framebuffer is still in unblanked status even if we fail to allocate PRE in the 'on_the_fly' cases. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 79623a7509bf9c81c9b6722f120cde9a5e9a8a38)
2015-05-22MLK-10862-2 mxc IPUv3: cpmem: SMFC chan 12bit 3 planar burst size fixupLiu Ying
There are some little horizontal stripes on the I420 interlaced frames captured by i.MX6QP SMFC channels but not i.MX6Q Rev1. Changing the IDMAC burst size from 32pixel to 16pixel may workaround this issue which is recorded by TKT266260. The capture performance is expected to be dropped as the burst size is half. The exact performance drop data is not known since the video input device's output is not tough enough to push the capture to it's boundary. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit dc7ba9d506e7a438cd342e02977f3455fbe05cd2)
2015-05-22MLK-10862-1 mxc IPUv3: common: Move the helper _ipu_is_smfc_chan() to ipu_prv.hLiu Ying
The helper _ipu_is_smfc_chan() needs to be used outside ipu_common.c so move it to ipu_prv.h. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit fa12f70fb32e52982d17bdc69fbdad0c232046f9)
2015-05-20MLK-10929 media: mxc: vout: fix the vout->task_lock dead lock issueJason Liu
with the task_lock mutext to avoid the open/release race condition, which will have the deadlock issue when the release process try to destory the workqueue while the display work queued want to get the task_lock to finish the pending work, this lead to the AB-BA dead lock. To simplify the design, let's use the dedicated mutext for open/release. Signed-off-by: Jason Liu <r64343@freescale.com> (cherry picked from commit 86c9372395b3752a6395639d1ce584b8c79759f7)
2015-05-18MLK-10894 pci: imx: Error message and kernel dump happens after resumeRichard Zhu
phenomena: There is no such kind of phenomen when the "no_consol_suspend" is added into kernel cmd line. But there maybe kernel dump when the "no_consol_suspend" is removed from kernel cmd line. Root cause: After the RC resume back and link is up, delay for a while is required to let ep to resume from D3 mode Regarding to RM DOC, no status bit can be used to make a check on it, thus a while delay had been added. Test results: Over weekend stress tests are passed. Signed-off-by: Richard Zhu <Richard.Zhu@freescale.com>
2015-05-14MLK-10893: i2c: imx: add irqf_no_suspendgaopan
The i2c irq is masked when pcie starts a i2c transfer process during noirq suspend stage. As a result, i2c transfer fails. To solve the problem, IRQF_NO_SUSPEND is added to i2c bus. Signed-off-by: Gao Pan <b54642@freescale.com>
2015-05-13MLK-10750 usb: chipidea: otg: remove otg fsm before destory gdaget and hostLi Jun
If unload ci_hdrc driver while otg fsm is running as A-device, we should firstly clean otg fsm and stop all otg fsm timers before destroy gadget and host. Signed-off-by: Li Jun <jun.li@freescale.com>
2015-05-13MLK-10803 media: mxc: vout: fix the race condition for multiple disaplayJason Liu
There will some race condition such as the followings: - multiple open concurrence will cause the vout refer to the stall vout-> v4l_wq or the vout-> v4l_wq is not initialized correctly. - multiple open concurrence will cause the global fb setting race-condition, thus, it will have the “set_crop error exceeds width/height” or “mxc_v4l2_output v4l2_out.30: can not find output” This patch fix the above issue by adding the protection for the critical section. Reviewed-by: Liu Ying <b17645@freescale.com> Signed-off-by: Jason Liu <r64343@freescale.com> (cherry picked from commit 226bc39341bc2526f4d36b88c65ad27c5fac157c)
2015-05-12MLK-10837 dts: imx6qp-sabreauto: enable cut power of usdhc3 slotDong Aisheng
On old i.MX6Q/DL Sabreauto board, we can not use external regulator for card slot by default since the card power is shared with card detect pullup. Disabling the vmmc regulator will cause unexpected card detect interrupts. HW rework is needed to fix this isssue. So the using of external regulator is disabled by default in dts as follows: /* vmmc-supply = <&reg_sd3_vmmc>; */ On imx6qp-sabreauto board, this HW issue is fixed already, so enable it in imx6qp-sabreauto dts to use this function. This is needed for a SD3.0 card re-enumeration working on UHS mode. Otherwise the card may be re-enumerated as SD2.0 mode after system suspend/resume due to not cut off power/reset card. Signed-off-by: Dong Aisheng <b29396@freescale.com> (cherry picked from commit 9838bd00c8318f96ef139746b3c131f7ac820686)
2015-05-08MLK-10819 dts: imx6qp-sabreaudo: add flexcan1 supportDong Aisheng
Flexcan1 is conflict with fec, so a new dts imx6qp-sabreauto-flexcan1.dts is introduced which has flexcan1 enabled while fec disabled. BTW, the patch also fixes a typo of adding imx6qp-sabreauto-gpmi-weim.dtb in Makefile. Signed-off-by: Dong Aisheng <b29396@freescale.com> (cherry picked from commit af9f3293e568284d7610f82458e8ee529bec68db)
2015-05-08MLK-10786 mxc ipuv3 fb: Correct ->cur_blank in bailout of ->set_par due to ↵Liu Ying
no PRE We should set mxcfbi->cur_blank to be FB_BLANK_POWERDOWN in the bailout path of ops->set_par due to no PRE is available since the engine will be stopped scanning out frames in this case. Otherwise, the users may call the PAN_DISPLAY ioctrl to switch buffer right after the bailout path and accidently access the IPUv3 registers without the IPUv3 HSP clock being enabled - the system hangs up. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 9f6b5d5a2f56bd6eb8717bd5469d298fd729a65f)
2015-05-08MLK-10785 mxc ipuv3 fb: Correct ->resolve in bailout of ->set_par due to no PRELiu Ying
We should set mxcfbi->resolve to be false in the bailout path of ops->set_par due to no PRE is available. Otherwise, the users may call the PAN_DISPLAY ioctrl to switch buffer right after the bailout path and accidently runs the resolving logic for switching buffer. Signed-off-by: Liu Ying <Ying.Liu@freescale.com> (cherry picked from commit 26e5c1d73e3bd17384130647bc55757ff10cb3a5)