summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2016-03-31MLK-12277 media: camera: add check for width and height against 0rel_imx_4.1.15_1.1.0_gaRobby Cai
when do vte test it meets follow dump in small probability. Add against-0 check to resovle this. $ v4l_emma.sh 1 1 $ v4l_emma.sh 1 9 ------------[ cut here ]------------ : /dev/video1 Set PARM sucessfulWARNING: CPU: 0 PID: 1123 at /home/bamboo/build/4.1.X-1.0.0_ga/fsl- imx-fb/temp_build_dir/build_fsl-imx-fb/tmp/work-shared/imx6qdlsolo/kernel-source/mm/page_alloc.c:266 5 __alloc_pages_nodemask+0x3c8/0x894() ly v4l_capture_testapp 0 TINModules linked in:FO : /dev/video1 input formatti mx6s_captureng pass v4l_capture_testapp 0 ov5640_camera TINFO : PRP_ENC_ON_D gpRGBcon evbugv_buf malloc pass! CPU: 0 PID: 1123 Comm: v4l2_capture_em Not tainted 4.1.8-1.0.0+g87e6c2f #1 Hardware name: Freescale i.MX6 Ultralite (Device Tree) [<80015d84>] (unwind_backtrace) from [<80012728>] (show_stack+0x10/0x14) [<80012728>] (show_stack) from [<80750a54>] (dump_stack+0x84/0xc4) [<80750a54>] (dump_stack) from [<80032f3c>] (warn_slowpath_common+0x80/0xb0) [<80032f3c>] (warn_slowpath_common) from [<80033008>] (warn_slowpath_null+0x1c/0x24) [<80033008>] (warn_slowpath_null) from [<800b2cc4>] (__alloc_pages_nodemask+0x3c8/0x894) [<800b2cc4>] (__alloc_pages_nodemask) from [<8001ba3c>] (__dma_alloc_buffer.isra.3+0x2c/0x84) [<8001ba3c>] (__dma_alloc_buffer.isra.3) from [<8001bab0>] (__alloc_remap_buffer.isra.6+0x1c/0x8c) [<8001bab0>] (__alloc_remap_buffer.isra.6) from [<8001bd1c>] (__dma_alloc+0x1fc/0x228) [<8001bd1c>] (__dma_alloc) from [<8001be78>] (arm_dma_alloc+0x8c/0xa0) [<8001be78>] (arm_dma_alloc) from [<804cd934>] (vb2_dc_alloc+0x68/0x100) [<804cd934>] (vb2_dc_alloc) from [<804c7df8>] (__vb2_queue_alloc+0x134/0x4d0) [<804c7df8>] (__vb2_queue_alloc) from [<804ca794>] (__reqbufs.isra.17+0x1a8/0x304) [<804ca794>] (__reqbufs.isra.17) from [<804b7ac0>] (__video_do_ioctl+0x2b0/0x324) [<804b7ac0>] (__video_do_ioctl) from [<804b753c>] (video_usercopy+0x1b8/0x480) [<804b753c>] (video_usercopy) from [<804b3f34>] (v4l2_ioctl+0x118/0x150) [<804b3f34>] (v4l2_ioctl) from [<800f8360>] (do_vfs_ioctl+0x3e8/0x608) [<800f8360>] (do_vfs_ioctl) from [<800f85b4>] (SyS_ioctl+0x34/0x5c) [<800f85b4>] (SyS_ioctl) from [<8000f480>] (ret_fast_syscall+0x0/0x3c) ---[ end trace 55ed68f89eca4805 ]--- mx6s-csi 21c4000.csi: dma_alloc_coherent of size 0 failed Signed-off-by: Robby Cai <robby.cai@nxp.com> (cherry picked from commit 2c1fa9347a50e05c79b76de35f84192af796f677)
2016-03-25MGS-1678 [#2269] memleak in GPU driver sysfs interfacegan
Add missing .release callback in file_operations of vidmem_operations in order to release the allocated memory. Date: Mar 18, 2016 Signed-off-by: Yuchou Gan <yuchou.gan@nxp.com> (cherry picked from commit bf8499286426bd48f00e83a7e794b2309da502bc)
2016-03-25MA-7715 fix GPU kernel panic reported by android CTSRichard Liu
The patch removes the dependence between cache flush operation and node. Node is not used anymore when flush cache. Cache flush can work with only logical address passed into underlying functions does not need physical address. Signed-off-by: Richard Liu <r66033@freescale.com> (cherry picked from commit ad65770512d2baeb45f5d0622d985f9856b7cc1e)
2016-03-25MGS-1630 5.0.11.p8 driver can't pass build with kernel 4.1 on Android M6.0Richard Liu
It has converted sync to fence api in kernel_imx/drivers/staging/android/sync.h, so make it done in gpu driver to match kernel. Signed-off-by: Meng Mingming <b51843@freescale.com> Signed-off-by: Richard Liu <xuegang.liu@freescale.com> (cherry picked from commit d69c57557a2ef782d0daa617a30945f41a608fd5)
2016-03-17usb: chipidea: add system interface for ttctrl.tthaPeter Chen
In chipidea IP RTL, there is a very limited design for siTD, the detail like below: There is no Max Packet Size at siTD, so it uses one constant for both Max Packet Size for packet and the packet size for the last transaction when considering schedule. If the ttctrl.ttha does not match against Hub Address field in siTD, this constant is 188 bytes, else this constant is 1023 bytes. If the ttctrl.ttha is non-zero value, RTL will use 188 as this constant, so it will lose the data if the packet size is larger than 188 bytes, eg, if we playback a wav which format is 48khz, 16 bits, 2 channels, the packet size will be 192bytes, but the controller will only send 188 bytes for this packet, the noise will be heared using USB audio card. The use case is single transaction, but higher frame rate. If the ttctr.ttha is zero value, we can send 1023 bytes within one transaction, but the controller will not accept the coming tranaction if it considers the schedule time is less than 1023 bytes. So the limitation is we can't schedule as many as transactions within frame. If the total bytes is already 256 bytes for previous transactions within frame, it can't accept another transaction. The use case is multiple transactions, but less frame rate. Signed-off-by: Peter Chen <peter.chen@kernel.org> Signed-off-by: Peter Chen <peter.chen@nxp.com> (cherry picked from commit 5e07ea7f812f2216263da2acd4f5e677de97fd62)
2016-03-17Revert "usb: chipidea: imx: enable CI_HDRC_SET_NON_ZERO_TTHA"Peter Chen
This reverts commit e765bfb73ff7. In the most of cases, we only use one transaction per frame and the frame rate may be high, If the platforms want to support multiple transactions but less frame rate cases like [1] and [2], it can set "non-zero-ttctrl-ttha" at dts. [1] http://www.spinics.net/lists/linux-usb/msg123125.html [2] http://www.spinics.net/lists/linux-usb/msg118679.html Signed-off-by: Peter Chen <peter.chen@kernel.org> Signed-off-by: Peter Chen <peter.chen@nxp.com> (cherry picked from commit 9e1a14ec6dfe34ae92e9754bbb1a5c470acbcdf1)
2016-03-11 MLK-12475 CAAM: sg pointer updated instead of local copyDan Douglass
Correct error in CAAM driver port. dma_map_sg_chained() had a patch applied to traverse the sg list using a local copy to prevent changing the value of the passed in sg list pointer. Signed-off-by: Dan Douglass <dan.douglass@nxp.com>
2016-03-09MLK-12496 bcmdhd: update driver to Broadcom official released version 141.88Dong Aisheng
Some major fixes delivered by Broadcom. 1. Initialize nd_config parameter of cfg80211_wowlan to NULL 2. Avoid using hardcoded dummy channel number while creating p2p interface 3. Avoid creation of multiple instance of wl_event_handler thread. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 934f70e3af6af4e887a2c3027e19db2122efd1cb)
2016-03-04MLK-12478-1 can: flexcan: add LPSR mode supportDong Aisheng
For MX7D LPSR mode, the controller will lost power and got the configuration state lost after system resume back. So we need to set pinctrl state again and re-start chip to do re-configuration after resume. For wakeup case, we also need re-configure the chip in case the state got lost. For interface is not up before suspend case, we don't need re-configure as it will be configured by user later by interface up. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit c26587d5ba9e30fce318c2fea516e9e4a6bde9ca)
2016-03-02MLK-12462 mmc: sdhci-esdhc-imx: only force remove for available cardsDong Aisheng
Do sanity check before calling mmc_force_remove. BCM WiFi driver will call wifi_card_detect(false) if probe fails due to no card exists on board. This is needed for Android BSP since Android has builtin WiFi drver and some boards may not have WiFi cards pluged. Then the kernel dump likes follows may appear. ---------------------------------------------- dhd_module_init in Power-up adapter 'DHD generic adapter' wifi_platform_bus_enumerate device present 1 mmc1: mmc_rescan_try_freq: trying to init card at 400000 Hz mmc1: mmc_rescan_try_freq: trying to init card at 300000 Hz mmc1: mmc_rescan_try_freq: trying to init card at 200000 Hz mmc1: mmc_rescan_try_freq: trying to init card at 100000 Hz failed to power up DHD generic adapter, 3 retry left wifi_platform_bus_enumerate device present 0 ------------[ cut here ]------------ Kernel BUG at 8051247c [verbose debug info unavailable] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM Modules linked in: bcmdhd(+) ov5642_camera ov5640_camera_mipi_int ov5640_camera_int mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still v4l2_int_device mxc_dcic ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc evbug CPU: 3 PID: 1071 Comm: modprobe Not tainted 4.1.15-01591-g1393481 #1504 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) task: a99be880 ti: a8dd8000 task.ti: a8dd8000 PC is at mmc_sdio_remove+0x70/0x74 LR is at mmc_sdio_force_remove+0xc/0x34 pc : [<8051247c>] lr : [<8051248c>] psr: 60070013 sp : a8dd9d00 ip : 00000000 fp : 00000000 r10: 7f100c98 r9 : 00000000 r8 : 7f0fc410 r7 : a8dd9d48 r6 : a83b1800 r5 : 00000000 r4 : a83b1800 r3 : 00000000 r2 : 00000000 r1 : 809b50c8 r0 : 00000000 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: 38cdc04a DAC: 00000015 Process modprobe (pid: 1071, stack limit = 0xa8dd8210) Stack: (0xa8dd9d00 to 0xa8dda000) 9d00: 00000000 a83b1800 00000000 00000000 a8dd9d48 8051248c 00000000 7f0ca6cc 9d20: a99be880 a90e6280 00000003 7f0ca920 fffffdfb a81af810 80bb570c 00000000 9d40: 00020002 00000000 a8dd9d48 a8dd9d48 00000000 7f100c98 7f100c98 a90e6280 9d60: fffffdfb 00000008 00000000 7f0fe490 56f19f1c 7f0cabe4 80bb6d74 a81af810 9d80: 7f0fe248 8037f864 8037f820 80bb6d74 a81af810 00000000 7f0fe248 8037e118 9da0: a81af810 7f0fe248 a81af844 80b1e8b0 00000000 8037e328 00000000 7f0fe248 9dc0: 8037e29c 8037c660 a8025c5c a8187a34 7f0fe248 a9547780 00000000 8037d8b4 9de0: 7f0f5028 7f0fe248 00000000 7f0fe248 00000000 a90e6280 80ba78f4 8037e92c 9e00: 00000000 7f100c98 00000000 7f0cb02c 00000000 80af7720 80af7720 a90e6280 9e20: 7f124000 00000000 00000001 80009730 00000000 8040003b abc7db80 800e1c68 9e40: 00000000 a935c340 8040003a abc83180 ab757000 80af257c 00000001 8040003a 9e60: 00000001 00000001 a8dd9e7c 80af2260 a8001f00 80af46c0 56f19f1c 800e32a0 9e80: 7f0fe448 a90e6108 a90e6240 7f0fe448 a90e6100 7f0fe490 56f19f1c 8078b2b0 9ea0: 7f0fe448 a90e6100 a8dd9f58 a90e6108 00000001 80092dd8 7f0fe454 00007fff 9ec0: 800902a8 a8928900 7f0fe490 00000000 7f0fe590 000015fa c1754bfc 7f0fe590 9ee0: c16d8000 000c823c 05de516a 00000000 0000000e 00000000 00000000 00000000 9f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 9f20: 00000000 00000000 00000000 00000000 00000648 00000000 00000003 01111348 9f40: 0000017b 8000f644 a8dd8000 00000000 00000073 8009352c c16d8000 000c823c 9f60: c175456c c17543a5 c17957ec 0007ad30 0008f7c0 00000000 00000000 00000000 9f80: 0000002a 0000002b 0000001f 00000023 00000014 00000000 01111348 00000000 9fa0: 00000000 8000f4c0 01111348 00000000 00000003 01111348 00000000 00040000 9fc0: 01111348 00000000 00000000 0000017b 00000000 01111218 00000073 00000073 9fe0: 7ec5d950 7ec5d940 0001f0dc 76ecf610 600d0010 00000003 00000000 00000000 [<8051247c>] (mmc_sdio_remove) from [<8051248c>] (mmc_sdio_force_remove+0xc/0x34) [<8051248c>] (mmc_sdio_force_remove) from [<7f0ca6cc>] (wifi_platform_bus_enumerate+0x54/0x90 [bcmdhd]) [<7f0ca6cc>] (wifi_platform_bus_enumerate [bcmdhd]) from [<7f0ca920>] (dhd_wifi_platform_load+0x17c/0x39c [bcmdhd]) [<7f0ca920>] (dhd_wifi_platform_load [bcmdhd]) from [<7f0cabe4>] (wifi_plat_dev_drv_probe+0xa4/0x124 [bcmdhd]) [<7f0cabe4>] (wifi_plat_dev_drv_probe [bcmdhd]) from [<8037f864>] (platform_drv_probe+0x44/0xa4) [<8037f864>] (platform_drv_probe) from [<8037e118>] (driver_probe_device+0x174/0x2b4) [<8037e118>] (driver_probe_device) from [<8037e328>] (__driver_attach+0x8c/0x90) [<8037e328>] (__driver_attach) from [<8037c660>] (bus_for_each_dev+0x6c/0xa0) [<8037c660>] (bus_for_each_dev) from [<8037d8b4>] (bus_add_driver+0x148/0x1f0) [<8037d8b4>] (bus_add_driver) from [<8037e92c>] (driver_register+0x78/0xf8) [<8037e92c>] (driver_register) from [<7f0cb02c>] (dhd_wifi_platform_register_drv+0x1cc/0x20c [bcmdhd]) [<7f0cb02c>] (dhd_wifi_platform_register_drv [bcmdhd]) from [<80009730>] (do_one_initcall+0x8c/0x1d4) [<80009730>] (do_one_initcall) from [<8078b2b0>] (do_init_module+0x5c/0x1a8) [<8078b2b0>] (do_init_module) from [<80092dd8>] (load_module+0x177c/0x1d4c) [<80092dd8>] (load_module) from [<8009352c>] (SyS_finit_module+0x64/0x74) [<8009352c>] (SyS_finit_module) from [<8000f4c0>] (ret_fast_syscall+0x0/0x3c) Code: e3a03000 e58631f8 e5863228 e8bd80f8 (e7f001f2) ---[ end trace 6f28ec270544e09e ]--- Segmentation fault root@imx6qdlsolo:~# Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 3c5798c62efeac08be34211eaac7c5467cf62894)
2016-03-02MLK-12481 pci: imx: turn off pcie clks when link downRichard Zhu
In order to save power consumption, turn off pcie clks/regulators if there is no pcie link at all. Summit this patch, because of that MLK-12278 doesn't turn off the clks/regulators actually. Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> (cherry picked from commit 841b5c2c6890deebda63ddc119d201b700302262)
2016-03-02Revert "mmc: block: don't use parameter prefix if built as module"Ulf Hansson
This reverts commit 829b6962f7e3cfc06f7c5c26269fd47ad48cf503. Revert this change as it causes a sysfs path to change and therefore introduces and ABI regression. More precisely Android's vold is not being able to access /sys/module/mmcblk/parameters/perdev_minors any more, since the path becomes changed to: "/sys/module/mmc_block/..." Fixes: 829b6962f7e3 ("mmc: block: don't use parameter prefix if built as module") Reported-by: John Stultz <john.stultz@linaro.org> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> (cherry picked from commit a5ebb87db84392edfd3142c3a6a78431d820a789)
2016-03-01MLK-12462-1 mmc: core: add MMC_PM_IGNORE_PM_NOTIFY featureDong Aisheng
With igore pm notify feature, MMC core will not re-detect card after system suspend/resume. This is needed for some special cards like Broadcom WiFi which can't work propertly on card re-detect after system resume. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
2016-03-01MA-7685 [#2124] Fix some remaining DEQP EGL CTS failures on GC400TRichard Liu
The root cause of these failures is related with a hardware ERRATA (onComp2 flop power-up value is 1 instead of 0). Preview patch c086763024a8117beaa8ea27ee88eaeafd03ef3e in issue track #1105 is not a fully fix, here implement a DummyDraw to workaround the hardware ERRATA. Signed-off-by: Richard Liu <r66033@freescale.com> (cherry picked from commit cc78790048a81de6c218c09766277ef3be34ffd0)
2016-03-01MLK-11438-4 lcdif: enable lpsr modeRobby Cai
restore the pinmux when resume from LPSR mode in suspend. Signed-off-by: Robby Cai <r63905@freescale.com> (cherry picked from commit 0462eb2cb8b64508260d9c6daa9f163d68ea6be0) Conflicts: drivers/video/mxsfb.c
2016-02-26MLK-11472 sim: imx: set sim1 IOMUX to default stateGao Pan
SIM1 IOMUX is changed into reset state in LPSR mode.As a result, sim can't work again. This patch sets sim1 IOMUX to default state after existing from LPSR mode. (cherry-picked from commit 8e237775cd413645bfd806e4c648954e1a773a2d) Signed-off-by: Gao Pan <b54642@freescale.com>
2016-02-26MLK-11405 spi: imx : sets spi IOMUX to default stateGao Pan
SPI IOMUX is changed into reset state in LPSR mode. As a result, spi can't work again. This patch sets spi IOMUX to default state. (cherry-picked from commit 2c8603c31831bb355f6be5b015377fb8fbd89844) Signed-off-by: Gao Pan <b54642@freescale.com>
2016-02-22MGS-1633 GPU: Replace CONFIG_PM_RUNTIME with CONFIG_PMShawn Xiao
Since 4.1, linux kernel has dropped CONFIG_PM_RUNTIME macro. And CONFIG_PM is used instead. GPU driver should be synced with the change. Date Feb 22, 2016 Signed-off-by: Shawn Xiao <b49994@freescale.com>
2016-02-19net: fec: fix fec_enet_get_free_txdesc_numTroy Kisky
When first initialized, cur_tx points to the 1st entry in the queue, and dirty_tx points to the last. At this point, fec_enet_get_free_txdesc_num will return tx_ring_size -2. If tx_ring_size -2 entries are now queued, then fec_enet_get_free_txdesc_num should return 0, but it returns tx_ring_size instead. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2016-02-19net: fec: fix rx error countsTroy Kisky
On an overrun, the other flags are not valid, so don't check them. Also, don't pass bad frames up the stack. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2016-02-19net: fec: stop the "rcv is not +last, " error messagesTroy Kisky
Setting the FTRL register will stop the fec from trying to use multiple receive buffers. Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2016-02-19MLK-11051 net: phy: mdio_bus: don't call .phy_suspendi() when netdev is NULLFugang Duan
In .mdio_bus_phy_may_suspend(), there check netdev is NULL to judge to set phy to suspend status. netdev is NULL has three cases: - phy is not found - phy is found, match to general phy driver - phy is found, match to specifical phy driver Case 1: phy is not found, cannot communicate by MDIO bus. Case 2: phy is found: if phy dev driver probe/bind err, netdev is not __open__ status, mdio bus is unregistered. if phy is detached, phy had entered suspended status. Case 3: phy is found, phy is detached, phy had entered suspended status. So, in here, it shouldn't set phy to suspend by calling mdio bus. In i.MX6UL evk/arm2 board, if down the ethx interface and do suspend/resume, system will hang. Because after ethx down all clocks are gated off, for general phy driver, unbind the phy device, for specifical phy driver, no unbind the device, and the original driver call mdio bus to set phy to suspend during system suspend, so system will hang since there have mdio register access. The patch can fix it. Signed-off-by: Fugang Duan <B38611@freescale.com> (cherry picked and merged from commit: ccbbf6172860e310858169a4e551ebf072c2f1a5) Conflicts: drivers/net/phy/mdio_bus.c
2016-02-17MLK-12404-2 mmc: sdhci-esdhc-imx: change SLV_DLY_TARGET to value 0x7Dong Aisheng
Change SLV_DLY_TARGET to IC recommended value 0x7(4/1 cycle) according to spec. The old value 0x1 is not robust and may fail in some critical circumstance. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 3c755f08de810824250c935d099f3f8c7def4946)
2016-02-17MLK-12404-1 mmc: sdhci-esdhc-imx: fix strobe DLL lock wrong clock issueDong Aisheng
When enable DDR, the clock factor definition is changed. e.g. original 200Mhz will be changed to 100Mhz if set MIX_CTRL_DDREN bit. So we need to update the clock setting for strobe dll to lock the correct clock rate. Additionally we also need disable the clock before locking strobe dll. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 4d8095a6e860f773f5d2e4d5b62a6f4ba1a92431)
2016-02-16MLK-12391-4 mmc: sdhci-esdhc-imx: enable hw auto retuning for MAN_TUNINGDong Aisheng
Fake one caps_1 register indicating hw auto retuning support since mx6qdl does not have it and enable auto retuning in post_tuning process. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit b46b1ee480ce731165843f43481809b028203dd1)
2016-02-16MLK-12391-3 mmc: sdhci-esdhc-imx: enable hw auto retuning for STD_TUNINGDong Aisheng
Enable HW auto retuning when set SDHCI_CTRL_EXEC_TUNING and clear it when clear SDHCI_CTRL_TUNED_CLK. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit d07db4fdf967ad8ecebb751f2ea24a578dfb9395)
2016-02-16MLK-12391-2 mmc: sdhci: add standard hw auto retuning supportDong Aisheng
If HW supports SDHCI_TUNING_MODE_3 which is auto retuning, we won't retune during runtime suspend and resume, instead we use Re-tuning Request signaled via SDHCI_INT_RETUNE interrupt to do retuning and hw auto retuning during data transfer to guarantee the signal sample window correction. This can avoid a mass of repeatly retuning during small file system data access and improve the performance. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 89c224b34d3a63797d956969c2fdf4ccb7ff25bf)
2016-02-16MLK-12391-1 mmc: sdhci-esdhc-imx: back to STROBE_DLL_CTRL_SLV_DLY_TARGET of 1Dong Aisheng
We see CRCs with SLV_DLY_TARGET of 7 during driver runtime suspend/resume if disable sw auto retuning. Back to SLV_DLY_TARGET of 1 which is used in 3.14 kernel and don't have such issue. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit cfcd9c369186ddc8c9e25e7c7573f91a4516449d)
2016-02-16MLK-12360-3 bcmdhd: fix bcmdhd blocks system suspend issueDong Aisheng
When enable WIFi and connected with AP, the system is unable to suspend. root@imx6qdlsolo:~# echo standby > /sys/power/state PM: Syncing filesystems ... done. Freezing user space processes ... (elapsed 0.001 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. dhdsdio_isr: Enter dhdsdio_isr: Enter dhdsdio_isr: disable SDIO interrupts Calling dhdsdio_dpc() from dhdsdio_isr dhdsdio_dpc: Enter dhdsdio_bussleep: request WAKE (currently SLEEP) (Keypress still response here.... ) It's caused by Broadcom WiFi driver will keep handling SDIO irq even after the driver is already suspended. This weird behavior will block the MMC host suspend during its irq synchronize operation in free_irq(), then the system suspend is blocked too and hanged. Add SDHCI_QUIRK2_SDIO_IRQ_THREAD for BCM WiFi to use kernel thread to process sdio interrupts which won't block system suspend and process freeze operation. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 66b534082968214707d54d96ba142bc528a6e1de)
2016-02-16MLK-12360-2 mmc: sdhci: get runtime pm when sdio irq is enabledDong Aisheng
SDIO cards may need clock to send the card interrupt to host. Thus, we get runtime pm when sdio irq is enabled to prevent the clock resource is released and put it when sdio irq is disabled. This patch can allow sdio irq disable (mmc_signal_sdio_irq()) to be called in interrupt context due to sdhci_runtime_pm_put() is atomic safe. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 250899a9ca2fdb31fc8d9d5405ac7b1c86beef44)
2016-02-16MLK-12360-1 mmc: sdhci: add sdio thread irq supportDong Aisheng
Some special SDIO devices like Broadcom WiFi driver will keep handling SDIO irq even after the driver is already suspended. This weird behavior will block the MMC host suspend during its irq synchronize operation in free_irq(), then the system suspend is blocked too and hanged. We add back sdio thread irq support for such WiFi driver to handle SDIO irqs since the sdio thread is kernel thread which does not block the process freeze operation during suspend. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit a7e3d205da821c880ab62c21f81e2573c0b621b6)
2016-02-16MLK-12077-3 bcmdhd: fix bcmdhd system resume crash issue.Dong Aisheng
bcmdhd can't support removing host during suspend and driver crash when detect card after resume due to no response to CMD7. It looks bcmdhd has a special requirement to enumerate card by itself which is incompatible with current MMC core. So implement post-cd feature to allow driver to detect card as it wants, then we add back non-removable capability to avoid MMC core to redetect card after resume. root@imx6qdlsolo:~# echo standby > /sys/power/state PM: Syncing filesystems ... done. PM: Preparing system for standby sleep Freezing user space processes ... (elapsed 0.001 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. PM: Entering standby sleep evbug: Event. Dev: input3, Type: 0, Code: 0, Value: 1 evbug: Event. Dev: input2, Type: 0, Code: 0, Value: 1 PM: suspend of devices complete after 652.363 msecs PM: suspend devices took 0.660 seconds PM: late suspend of devices complete after 1.148 msecs PM: noirq suspend of devices complete after 1.043 msecs Disabling non-boot CPUs ... CPU1: shutdown Enabling non-boot CPUs ... CPU1 is up PM: noirq resume of devices complete after 0.534 msecs PM: early resume of devices complete after 0.553 msecs evbug: Event. Dev: input2, Type: 1, Code: 116, Value: 1 evbug: Event. Dev: input2, Type: 0, Code: 0, Value: 0 evbug: Event. Dev: input2, Type: 1, Code: 116, Value: 0 evbug: Event. Dev: input2, Type: 0, Code: 0, Value: 0 mmc1: error -110 during resume (card was removed?) PM: resume of devices complete after 605.525 msecs PM: resume devices took 0.610 seconds PM: Finishing wakeup. Restarting tasks ... done. WARNING: driver bcmsdh_sdmmc did not remove its interrupt handler! root@imx6qdlsolo:~# Unable to handle kernel NULL pointer dereference at virtual address 0000022c pgd = 80004000 [0000022c] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP ARM Modules linked in: bcmdhd evbug ov5647_camera_mipi mxc_mipi_csi mx6s_capture CPU: 1 PID: 780 Comm: kworker/u4:4 Not tainted 4.1.15-01434-g70f4b36 #1310 Hardware name: Freescale i.MX7 Dual (Device Tree) Workqueue: kmmcd mmc_rescan task: a974af80 ti: a846e000 task.ti: a846e000 PC is at _raw_spin_lock_irqsave+0x1c/0x5c LR is at get_parent_ip+0x10/0x2c pc : [<8077b9d4>] lr : [<8005207c>] psr: 60050093 sp : a846fc20 ip : 0001001f fp : a800b000 r10: 00000000 r9 : 00000001 r8 : 0000022c r7 : 00000002 r6 : 0000022c r5 : a0050013 r4 : 0000022c r3 : a974af80 r2 : 00000001 r1 : a846fc44 r0 : 00000000 Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: a951406a DAC: 00000015 Process kworker/u4:4 (pid: 780, stack limit = 0xa846e210) Stack: (0xa846fc20 to 0xa8470000) fc20: 00000000 a846fc50 a846fc44 80061808 00000000 000001dc 00000000 805037fc fc40: 8d89d5ec 00000000 a974af80 80053e88 00000000 00000000 ab7293c0 00000000 fc60: 7f09c828 000000c9 7f09c828 a916a804 00000001 0001001f a800b000 7f0698a4 fc80: a974afc8 00000001 00000000 00000000 00012ebc a974af80 00000001 80ad46c0 fca0: a974af80 00000000 a8eeccc0 00000001 0001001f a846fd04 00000000 7f099440 fcc0: a800b000 7f0699c4 a846fcdf 00000000 00000001 7f068834 a937c900 0105c688 fce0: a846fd04 a8e20000 00000000 00000001 00000000 7f071f08 a846fd04 a80a0000 fd00: ffffffff 00000000 ffffffff a8e20000 a8e20000 00000000 7f099440 00000000 fd20: 00000000 7f099440 a800b000 7f072f4c a974af80 00000000 00000000 80778564 fd40: a846fd54 a9346550 80330028 00000001 a846e000 a8e20000 7f099440 00000000 fd60: 18005000 a8eeccc0 00000000 7f099440 a800b000 7f073744 a846fd8c 80052130 fd80: a9273898 00000000 a800b000 a8e20000 7f099440 00000001 a8eec200 a9270000 fda0: 00000000 7f099440 a800b000 7f07cd3c 80b81100 8040003f a800b000 00000000 fdc0: 00000000 a8e20000 7f099440 a9270000 a9273000 a9270000 00000000 7f099440 fde0: a800b000 7f02df4c 00000001 a8e20000 7f099440 a8eec200 00000000 a916e008 fe00: 00000000 a90bfb00 a800b000 7f074cbc a9270000 7f099440 a8e20000 00000000 fe20: a8f81610 7f0765ec 7f0765b0 a8eeccc0 a855df40 7f069310 a916a800 a8eec200 fe40: 7f09b414 7f06a950 7f06a908 a8f81608 a8f81600 8050e8b8 a8f81608 7f09b414 fe60: 80b22c70 80379744 a974af80 a8f8163c a8f81608 803797d4 00000005 a81ce930 fe80: a8f81608 8037923c a8f81608 a8f81608 80b93cf4 80376504 a846fea0 800e0e3c fea0: 00000000 00000000 a8f81608 000000bd a833f000 00000000 00000000 8050ed04 fec0: 00000001 8050dd8c 400f8c0f a833f000 ffffff92 a833f000 a81ce600 8050de30 fee0: 8050ddbc a833f240 a833f1dc 80506048 a90bfb00 a833f240 a800b000 a81ce600 ff00: 00000000 800462f0 a81ce600 80043c94 00000000 a800b000 a90bfb18 a800b014 ff20: a846e000 00000088 80b39379 a90bfb00 a800b000 8004654c 80ad4100 a800b164 ff40: a90bfb00 00000000 a84856c0 a90bfb00 80046500 00000000 00000000 00000000 ff60: 00000000 8004b1e8 2df9acc7 00000000 b5f3ff89 a90bfb00 00000000 00000000 ff80: a846ff80 a846ff80 00000000 00000000 a846ff90 a846ff90 a846ffac a84856c0 ffa0: 8004b10c 00000000 00000000 8000f568 00000000 00000000 00000000 00000000 ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 ecd61557 f82769f5 [<8077b9d4>] (_raw_spin_lock_irqsave) from [<80061808>] (add_wait_queue+0x20/0x48) [<80061808>] (add_wait_queue) from [<805037fc>] (__mmc_claim_host+0x58/0x1b0) [<805037fc>] (__mmc_claim_host) from [<7f0698a4>] (sdioh_request_byte+0x1cc/0x2a4 [bcmdhd]) [<7f0698a4>] (sdioh_request_byte [bcmdhd]) from [<7f0699c4>] (sdioh_cfg_write+0x20/0x28 [bcmdhd]) [<7f0699c4>] (sdioh_cfg_write [bcmdhd]) from [<7f068834>] (bcmsdh_cfg_write+0x90/0xdc [bcmdhd]) [<7f068834>] (bcmsdh_cfg_write [bcmdhd]) from [<7f071f08>] (dhdsdio_clk_kso_enab+0x38/0x168 [bcmdhd]) [<7f071f08>] (dhdsdio_clk_kso_enab [bcmdhd]) from [<7f072f4c>] (dhdsdio_clk_devsleep_iovar+0xf4/0x5f4 [bcmdhd]) [<7f072f4c>] (dhdsdio_clk_devsleep_iovar [bcmdhd]) from [<7f073744>] (dhdsdio_bussleep+0x2f8/0x4dc [bcmdhd]) [<7f073744>] (dhdsdio_bussleep [bcmdhd]) from [<7f07cd3c>] (dhd_bus_stop+0x2e8/0x3f0 [bcmdhd]) [<7f07cd3c>] (dhd_bus_stop [bcmdhd]) from [<7f02df4c>] (dhd_detach+0x2a4/0x438 [bcmdhd]) [<7f02df4c>] (dhd_detach [bcmdhd]) from [<7f074cbc>] (dhdsdio_release+0x4c/0x1dc [bcmdhd]) [<7f074cbc>] (dhdsdio_release [bcmdhd]) from [<7f0765ec>] (dhdsdio_disconnect+0x3c/0xa0 [bcmdhd]) [<7f0765ec>] (dhdsdio_disconnect [bcmdhd]) from [<7f069310>] (bcmsdh_remove+0x3c/0x60 [bcmdhd]) [<7f069310>] (bcmsdh_remove [bcmdhd]) from [<7f06a950>] (bcmsdh_sdmmc_remove+0x48/0x60 [bcmdhd]) [<7f06a950>] (bcmsdh_sdmmc_remove [bcmdhd]) from [<8050e8b8>] (sdio_bus_remove+0x30/0xf8) [<8050e8b8>] (sdio_bus_remove) from [<80379744>] (__device_release_driver+0x70/0xe4) [<80379744>] (__device_release_driver) from [<803797d4>] (device_release_driver+0x1c/0x28) [<803797d4>] (device_release_driver) from [<8037923c>] (bus_remove_device+0xd8/0x104) [<8037923c>] (bus_remove_device) from [<80376504>] (device_del+0x10c/0x210) [<80376504>] (device_del) from [<8050ed04>] (sdio_remove_func+0x1c/0x28) [<8050ed04>] (sdio_remove_func) from [<8050dd8c>] (mmc_sdio_remove+0x40/0x70) [<8050dd8c>] (mmc_sdio_remove) from [<8050de30>] (mmc_sdio_detect+0x74/0x100) [<8050de30>] (mmc_sdio_detect) from [<80506048>] (mmc_rescan+0xb8/0x314) [<80506048>] (mmc_rescan) from [<800462f0>] (process_one_work+0x120/0x330) [<800462f0>] (process_one_work) from [<8004654c>] (worker_thread+0x4c/0x480) [<8004654c>] (worker_thread) from [<8004b1e8>] (kthread+0xdc/0xf4) [<8004b1e8>] (kthread) from [<8000f568>] (ret_from_fork+0x14/0x2c) Code: f10c0080 e3a00001 ebe359b1 f594f000 (e1943f9f) Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 8f998ca4d07aa93460ac7769c1f2b3be0c36fc78)
2016-02-16MLK-12077-2 bcmdhd: fix module re-load crash issueDong Aisheng
Fix the following crash during module removing. root@imx6qdlsolo:~# modprobe -r bcmdhd dhd_prot_ioctl : bus is down. we have nothing to do dhd_wlfc_deinit():3271, ampdu_hostreorder get failed Err = -1 dhd_prot_ioctl : bus is down. we have nothing to do dhd_wlfc_deinit():3294 failed to enable/disable bdcv2 tlv signaling Err = -1 dhd_detach(): thread:dhd_watchdog_thread:34f terminated OK dhd_dpc_thread: Unexpected up_cnt 0 dhd_detach(): thread:dhd_dpc:350 terminated OK CFG80211-ERROR) wl_event_handler : was terminated wl_destroy_event_handler(): thread:wl_event_handler:34e terminated OK ------------[ cut here ]------------ Kernel BUG at 800e0f40 [verbose debug info unavailable] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM Modules linked in: bcmdhd(-) evbug ov5647_camera_mipi mxc_mipi_csi mx6s_capture [last unloaded: bcmdhd] CPU: 0 PID: 854 Comm: modprobe Not tainted 4.1.15-01434-g70f4b36 #1311 Hardware name: Freescale i.MX7 Dual (Device Tree) task: a97fc4c0 ti: a912e000 task.ti: a912e000 PC is at kfree+0x188/0x18c LR is at wiphy_unregister+0x17c/0x204 pc : [<800e0f40>] lr : [<80712184>] psr: 400d0013 sp : a912fe30 ip : 00080353 fp : a8647970 r10: 7f219440 r9 : a9420140 r8 : ac75fa60 r7 : a9420000 r6 : 00000000 r5 : 00000000 r4 : a9420140 r3 : 00000000 r2 : 00000000 r1 : 07ffffff r0 : 00353443 Flags: nZcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: a940c06a DAC: 00000015 Process modprobe (pid: 854, stack limit = 0xa912e210) Stack: (0xa912fe30 to 0xa9130000) fe20: 7f219440 a9420140 00000000 00000000 fe40: a9420000 a94203a0 a9420140 7f219440 a8647970 80712184 00000000 7f219440 fe60: a8647970 805e1994 7f21d5d8 a8500000 a8574840 a94203a0 00000000 a8647000 fe80: a94203a0 7f1cb9ec 00000000 00000000 a8644000 a8647000 a8644000 7f21d5d8 fea0: 7f219440 7f1adf28 00000001 a956d000 7f219440 a9770440 00000000 8000f644 fec0: a912e000 00000000 002691a0 7f1f4cbc a8644000 7f219440 a956d000 00000000 fee0: 00000081 7f1f65ec 7f1f65b0 a9770b40 a9770b00 7f1e9310 a96f6000 a9770440 ff00: 7f21b414 7f1ea950 7f1ea908 a8fdba08 a8fdba00 8050ee74 a8fdba08 7f21b414 ff20: a8fdba3c 80379744 7f21b414 a8fdba08 7f21b414 80379ed4 7f21b414 002691dc ff40: 002691a0 803794a4 7f21b478 7f1ff6bc 7f1ff690 8008fec0 00000000 646d6362 ff60: c0006468 00000000 a97fc8b8 00000000 a97fc8b8 00000000 80b41528 a97fc4c0 ff80: 002691a0 80049c60 a8576540 a912e000 8000f644 0012ffb0 00000006 002691a0 ffa0: 002691dc 8000f4c0 002691a0 002691dc 002691dc 00000800 76e72f78 00000000 ffc0: 002691a0 002691dc 002691a0 00000081 00000001 00000000 00000001 002691a0 ffe0: 76e388a0 7ec089f4 0001f008 76e388ac 600d0010 002691dc 00656e6f 635f6c77 [<800e0f40>] (kfree) from [<80712184>] (wiphy_unregister+0x17c/0x204) [<80712184>] (wiphy_unregister) from [<7f1cb9ec>] (wl_free_wdev+0x40/0x148 [bcmdhd]) [<7f1cb9ec>] (wl_free_wdev [bcmdhd]) from [<7f1adf28>] (dhd_detach+0x280/0x438 [bcmdhd]) [<7f1adf28>] (dhd_detach [bcmdhd]) from [<7f1f4cbc>] (dhdsdio_release+0x4c/0x1dc [bcmdhd]) [<7f1f4cbc>] (dhdsdio_release [bcmdhd]) from [<7f1f65ec>] (dhdsdio_disconnect+0x3c/0xa0 [bcmdhd]) [<7f1f65ec>] (dhdsdio_disconnect [bcmdhd]) from [<7f1e9310>] (bcmsdh_remove+0x3c/0x60 [bcmdhd]) [<7f1e9310>] (bcmsdh_remove [bcmdhd]) from [<7f1ea950>] (bcmsdh_sdmmc_remove+0x48/0x60 [bcmdhd]) [<7f1ea950>] (bcmsdh_sdmmc_remove [bcmdhd]) from [<8050ee74>] (sdio_bus_remove+0x30/0xf8) [<8050ee74>] (sdio_bus_remove) from [<80379744>] (__device_release_driver+0x70/0xe4) [<80379744>] (__device_release_driver) from [<80379ed4>] (driver_detach+0xac/0xb0) [<80379ed4>] (driver_detach) from [<803794a4>] (bus_remove_driver+0x4c/0xa0) [<803794a4>] (bus_remove_driver) from [<7f1ff6bc>] (dhd_module_cleanup+0x2c/0x3c [bcmdhd]) [<7f1ff6bc>] (dhd_module_cleanup [bcmdhd]) from [<8008fec0>] (SyS_delete_module+0x174/0x1b8) [<8008fec0>] (SyS_delete_module) from [<8000f4c0>] (ret_fast_syscall+0x0/0x3c) Code: e1a03007 e28dd004 e8bd4ff0 eafffd59 (e7f001f2) ---[ end trace 49de84cadd3d030b ]--- Segmentation fault root@imx6qdlsolo:~# Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit ae2685263abef87f6be50e62c9422500a8af2e45)
2016-02-16MLK-12077-1 bcmdhd: add Broadcom bcmdhd engineering release for 4.1 kernelDong Aisheng
Broadcom bcmdhd engineering release for 4.1 kernel Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> (cherry picked from commit 3db5d6ddb1201ab31f63994a1027a4915419783e)
2016-02-16MLK-12345 mmc: sdhci-esdhc-imx: reset tuning circurt when insert sd cardHaibo Chen
Current driver do not clear the tuning related register setting, this will impact the timing and let the card inserted later meet CRC error. Take the DDR50 card as example, if plug out an SDR104 card and then plug in this DDR50 card, we will meet the following error log: mmc2: new ultra high speed DDR50 SDHC card at address aaaa mmcblk2: mmc2:aaaa SE08G 7.40 GiB mmcblk2: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00 mmc2: tried to reset card mmcblk2: p1 p2 Logictally, we should reset the tuning circurt everytime when we plug in a sd card. Signed-off-by: Haibo Chen <haibo.chen@nxp.com> (cherry picked from commit 1f47730e8e30f37ed0289b2900e524db60456ae4)
2016-02-16MLK-12397 mmc: sdhci: disable irq in sdhci host suspend ranther than free ↵Haibo Chen
this irq Currently sdhci driver free irq in host suspend, and call request_threaded_irq() in host resume. But during host resume, Ctrl+C can impact sdhci host resume, see the error log: CPU1 is up PM: noirq resume of devices complete after 0.637 msecs imx-sdma 30bd0000.sdma: loaded firmware 4.1 PM: early resume of devices complete after 0.774 msecs dpm_run_callback(): platform_pm_resume+0x0/0x44 returns -4 PM: Device 30b40000.usdhc failed to resume: error -4 dpm_run_callback(): platform_pm_resume+0x0/0x44 returns -4 PM: Device 30b50000.usdhc failed to resume: error -4 dpm_run_callback(): platform_pm_resume+0x0/0x44 returns -4 PM: Device 30b60000.usdhc failed to resume: error -4 fec 30be0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx mmc0: Timeout waiting for hardware interrupt. mmc0: Timeout waiting for hardware interrupt. mmc0: Timeout waiting for hardware interrupt. mmc0: Timeout waiting for hardware interrupt. mmc0: Timeout waiting for hardware interrupt. mmc0: Timeout waiting for hardware interrupt. mmc0: error -110 during resume (card was removed?) mmc2: Timeout waiting for hardware interrupt. mmc2: Timeout waiting for hardware interrupt. mmc2: error -110 during resume (card was removed?) In request_threaded_irq-> __setup_irq-> kthread_create ->kthread_create_on_node, the comment shows that SIGKILLed will impact the kthread create, and return -EINTR. This patch replace them with disable|enable_irq(), that will prevent IRQs from being propagated to the sdhci driver. Signed-off-by: Haibo Chen <haibo.chen@nxp.com> (cherry picked from commit eaa3b974832ef65d55330156475586bed5647ad7)
2016-02-16MLK-12344-3 usb: chipidea: update power lost handling for gadgetLi Jun
After we put gadget disconnect and connect in id switch handling, update power lost work accordingly. Acked-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2016-02-16MLK-12344-2 usb: chipidea: otg: add vbus disconnect for gadget after sleepLi Jun
During system sleep, if we switch otg role from gadget to host, and host vbus is directly controlled by ID signal, we will lose vbus drop event after resume because the vbus is on both at system suspend and resume, so we will miss gadget disconnect handling before start host role. This patch is to fix it by adding gadget disconnect for this case. Acked-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2016-02-16MLK-12344-1 usb: chipidea: otg: add vbus connect for gadget after sleepLi Jun
During system sleep, if we switch otg role from host to gadget, because the vbus is on both at system suspend and resume, we will lose vbus connect event after system resume, thus, no chance to setup vbus session for gadget so enumeration will not happen. This patch is to fix it by adding vbus connect handling for this case. Acked-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2016-02-12MLK-12395: mtd: gpmi: add debugfs flag to indicate NAND driver use new raw ↵Han Xu
access mode For backward compatibility, kobs-ng need to know if the driver use legacy raw mode or new bch layout raw mode, add a new flag in debugfs to indicate the raw access mode. Signed-off-by: Han Xu <han.xu@nxp.com> (cherry picked from commit 6d59a643a1716b59528315ffa31b8228bae8eedc)
2016-02-12MLK-12394-2: mtd: gpmi: update NAND new raw page access functionsHan Xu
support the bch layout with dedicate ecc for meta Signed-off-by: Han Xu <han.xu@nxp.com> (cherry picked from commit f4294fb54849245c8e2d3e87f1f7e5caa7efdcad)
2016-02-12MLK-12394-1: Revert "MLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND boot"Han Xu
This reverts commit 76babd7d075c9c22a27e6bc272bb57b6327cfbd3. Signed-off-by: Han Xu <han.xu@nxp.com> (cherry picked from commit ff5b08523a42bb7f44c4a2b52994efedf9165ce5)
2016-02-10MLK-12340: CAAM: system hang during cryptomgr_testUlises Cardenas
During the crypto manager self test, a aead encryption opertation is carried out. This operations allocates a aead request, which is handed to the CAAM driver. The CAAM driver allocates and maps the required structures. During the allocation aead extended descriptor, a DMA to device mapping and synchronization are required. The order of this two operations matter, which should be map and then sync. Otherwise, there will be NULL pointer exception. This patch fix the order of this two operations, from sync-then-map to map-then-sync. Signed-off-by: Ulises Cardenas <raul.casas@nxp.com>
2016-02-01MLK-12343 MX6SL-EVK missing hardware random number generator.Dan Douglass
ENGR00292341 imx6sl hwrng Add hwrng support for i.MX6SL. 1. Add RNG driver. This driver originated as fsl-rngc.c. It has been modified to support device tree. The name has been changed since it supports both b and c variants of RNG. 2. Added clock and compatible info to the device tree data. 3. Added the entry in the options in the Kconfig for hwrng. (cherry picked from commit 1f3f2c0647b7319c4e23293a61512e4191593513) [<vicki.milhoan@freescale.com>: Edited to apply to 3.14] Signed-off-by: Dan Douglass <dan.douglass@freescale.com> Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
2016-01-29MLK-12278 pci: imx: turn off pcie clks when link is downRichard Zhu
In order to save power assumption, turn off the pcie clks when there is no pcie link up at all. add the option CONFIG_PCI_IMX6_COMPLIANCE_TEST, enable it when the image is used to do the pcie compliance tests Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
2016-01-28MLK-12328 cpufreq: imx: put the cpufreq policy after usedBai Ping
The cpufreq_cpu_get() and cpufreq_cpu_put() should be called in pairs. Otherwise, system will dump when enabling lock debug config. Signed-off-by: Bai Ping <ping.bai@nxp.com>
2016-01-25crypto: caam: fix the DMA handle checking for the DMA maintainanceJason Liu
Fix the DMA handle checking for the DMA maintainance. Should not call the dma_sync_single_for_device if the handle is NULL, otherwise, kernel will throw out the following complains: when do the following test: insmod ./tcrypt.ko mode=402 Unable to handle kernel paging request at virtual address 70000000 pgd = d8c64000 [70000000] *pgd=00000000 Internal error: Oops: 805 [#1] PREEMPT SMP ARM Modules linked in: tcrypt(+) CPU: 1 PID: 789 Comm: insmod Not tainted 4.1.15-01516-g116e2fc-dirty #14 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) task: d8b54280 ti: d8882000 task.ti: d8882000 PC is at v7_dma_clean_range+0x20/0x38 LR is at dma_cache_maint_page+0xc8/0x22c pc : [<8001e81c>] lr : [<8001b018>] psr: 200b0013 sp : d8883d08 ip : 8001e86c fp : 000004c0 r10: 80b8b000 r9 : 80b244f8 r8 : ee557000 r7 : 00000000 r6 : 80b8f41c r5 : 00000000 r4 : 70000000 r3 : 0000001f r2 : 00000020 r1 : 70000000 r0 : 70000000 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: 68c6404a DAC: 00000015 Process insmod (pid: 789, stack limit = 0xd8882210) Stack: (0xd8883d08 to 0xd8884000) 3d00: ef26bfe0 00000002 00000018 00000001 00000000 00000000 3d20: ee557000 00000001 00000000 d86f0a10 00000000 d8bc2040 d8a7f5c4 8001b1a0 3d40: 8001e86c 8001b2c8 d88a5c40 d88a5c40 80b28bc4 d8a7f400 80beec48 8057f1dc 3d60: 00000002 00000000 00000000 00000038 00000018 80bdc1c0 68bc2128 d8a7f480 3d80: 00000000 80068c10 600b0013 00000100 00000000 d8a7f400 00000040 00000004 3da0: d871ca00 00000040 00000000 8057a9b0 8057a9a4 7f000d14 00000100 80068c10 3dc0: 7f005580 d8883de4 00000100 00000004 d8a7f400 7f005e80 7f005eb0 0000000c 3de0: d871ca00 00000040 00000100 7f0015ec 00000004 80b24648 00000000 00000000 3e00: d8bc2000 d8bc2040 00000008 ef26fa80 00000000 00001000 68c54000 ef26ae80 3e20: 00000000 00001000 00000000 ef270bc0 00000000 00001000 00000000 ef26db02 3e40: 00000000 00001000 00000000 00000000 02880288 d8883e54 d8883e54 00000000 3e60: 00000000 00000010 7f0062f8 80b27698 80b27698 d871ca00 d8882000 00000000 3e80: 00000008 7f003124 7f0062f8 80b27698 00000010 7f0062f8 80b27698 80b27698 3ea0: d871ca00 d8882000 00000000 7f009048 7f009000 00000000 80b27698 80009704 3ec0: 000000d0 ef26fa80 00000000 8040003e 00000001 00000001 d8883eec ef2709c0 3ee0: d8001f00 80b246bc 00000001 8040003e d8883f04 800905a8 00000001 00000001 3f00: d8883f14 d8001f00 000000d0 80b23260 00000008 7f0061a0 d871c3c0 0131e008 3f20: 0000017b 8000f684 d8882000 00000000 00000008 8008f968 00000000 00000000 3f40: 00000003 00000000 00000003 0131e008 0000017b 800906fc f0679000 0000b857 3f60: f0680070 f067ff25 f06840d0 0000671c 00006e8c 00000000 00000000 00000000 3f80: 0000001f 00000020 00000017 00000014 00000012 00000000 0131e018 00000008 3fa0: 0131e008 8000f500 0131e018 00000008 00000003 0131e008 00000000 00000000 3fc0: 0131e018 00000008 0131e008 0000017b 00000003 00000008 0131e008 00000008 3fe0: 7e8a6c38 7e8a6c28 0001f2c0 76f22340 600d0010 00000003 00000000 00000000 [<8001e81c>] (v7_dma_clean_range) from [<8001b018>] (dma_cache_maint_page+0xc8/0x22c) [<8001b018>] (dma_cache_maint_page) from [<8001b1a0>] (__dma_page_cpu_to_dev+0x24/0x88) [<8001b1a0>] (__dma_page_cpu_to_dev) from [<8057f1dc>] (ahash_update_first+0x3cc/0x6f4) [<8057f1dc>] (ahash_update_first) from [<8057a9b0>] (ahash_update+0xc/0x10) [<8057a9b0>] (ahash_update) from [<7f000d14>] (test_ahash_cycles+0x70/0x220 [tcrypt]) [<7f000d14>] (test_ahash_cycles [tcrypt]) from [<7f0015ec>] (test_ahash_speed.constprop.1+0x19c/0x25c [tcrypt]) [<7f0015ec>] (test_ahash_speed.constprop.1 [tcrypt]) from [<7f003124>] (do_test+0xff8/0x301c [tcrypt]) [<7f003124>] (do_test [tcrypt]) from [<7f009048>] (tcrypt_mod_init+0x48/0xa0 [tcrypt]) [<7f009048>] (tcrypt_mod_init [tcrypt]) from [<80009704>] (do_one_initcall+0x80/0x1d0) [<80009704>] (do_one_initcall) from [<8008f968>] (do_init_module+0x58/0x1b4) [<8008f968>] (do_init_module) from [<800906fc>] (SyS_finit_module+0x68/0x6c) [<800906fc>] (SyS_finit_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c) Code: e1a02312 e2423001 e1c00003 f57ff04f (ee070f3a) ---[ end trace 63ad5840e079f2a5 ]--- Signed-off-by: Jason Liu <jason.hui.liu@nxp.com>
2016-01-25spi: imx: fix spi resource leak with dma transferGao Pan
In spi_imx_dma_transfer(), when desc_rx = dmaengine_prep_slave_sg() fails, the context goes to label no_dma and then return. However, the memory allocated for desc_tx has not been freed yet, which leads to resource leak. Signed-off-by: Gao Pan <pandy.gao@nxp.com> Reviewed-by: Fugang Duan <B38611@freescale.com> Signed-off-by: Mark Brown <broonie@kernel.org>
2016-01-22MLK-12312: CAAM hash algorithms fail registration during initializationRussell King
Fix cherry-picked from 5ec908319ab53072d3a2188e62ed2e5d7b846951 crypto: caam - only export the state we really need to export Avoid exporting lots of state by only exporting what we really require, which is the buffer containing the set of pending bytes to be hashed, number of pending bytes, the context buffer, and the function pointer state. This reduces down the exported state size to 216 bytes from 576 bytes. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2016-01-21MLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND bootHan Xu
new implementation of GPMI NAND raw access functions was added in kernel 4.1 which changes the way from writing data in mirror mode to writing data with BCH layout mode. New implementation can help third party tools to analysis the data since all data were written in same layout, with or without ECC, but this implementation doesn't work for NAND boot. Kobs-ng, the tool for NAND boot will create the boot configuration data for each specific platform and need to write the data to NAND in mirror mode. In this workaround, we will keep using the previous raw NAND access function to fix the issue. Signed-off-by: Han Xu <han.xu@nxp.com>