linux.git
7 years agoMLK-12360-3 bcmdhd: fix bcmdhd blocks system suspend issue
Dong Aisheng [Fri, 29 Jan 2016 13:34:45 +0000 (21:34 +0800)]
MLK-12360-3 bcmdhd: fix bcmdhd blocks system suspend issue

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>
7 years agoMLK-12360-1 mmc: sdhci: add sdio thread irq support
Dong Aisheng [Tue, 26 Jan 2016 14:20:08 +0000 (22:20 +0800)]
MLK-12360-1 mmc: sdhci: add sdio thread irq support

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>
7 years agoMLK-12077-4 dts: imx6: add cd-post property for BCM WiFi devices
Dong Aisheng [Fri, 5 Feb 2016 11:42:57 +0000 (19:42 +0800)]
MLK-12077-4 dts: imx6: add cd-post property for BCM WiFi devices

BCM WiFi driver needs to take care of card detect by itself.
Using cd-post property to tell MMC core not detect card automatically
during host driver probe and post it untill client driver tells it to
do it.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
7 years agoMLK-12077-3 bcmdhd: fix bcmdhd system resume crash issue.
Dong Aisheng [Thu, 14 Jan 2016 12:29:26 +0000 (20:29 +0800)]
MLK-12077-3 bcmdhd: fix bcmdhd system resume crash issue.

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>
7 years agoMLK-12077-2 bcmdhd: fix module re-load crash issue
Dong Aisheng [Thu, 21 Jan 2016 10:15:14 +0000 (18:15 +0800)]
MLK-12077-2 bcmdhd: fix module re-load crash issue

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>
7 years agoMLK-12077-1 bcmdhd: add Broadcom bcmdhd engineering release for 4.1 kernel
Dong Aisheng [Tue, 5 Jan 2016 10:08:31 +0000 (18:08 +0800)]
MLK-12077-1 bcmdhd: add Broadcom bcmdhd engineering release for 4.1 kernel

Broadcom bcmdhd engineering release for 4.1 kernel

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
7 years agoMLK-12395: mtd: gpmi: add debugfs flag to indicate NAND driver use new raw access...
Han Xu [Wed, 10 Feb 2016 22:10:54 +0000 (16:10 -0600)]
MLK-12395: mtd: gpmi: add debugfs flag to indicate NAND driver use new raw 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>
7 years agoMLK-12394-2: mtd: gpmi: update NAND new raw page access functions
Han Xu [Tue, 9 Feb 2016 20:33:41 +0000 (14:33 -0600)]
MLK-12394-2: mtd: gpmi: update NAND new raw page access functions

support the bch layout with dedicate ecc for meta

Signed-off-by: Han Xu <han.xu@nxp.com>
7 years agoMLK-12394-1: Revert "MLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND boot"
Han Xu [Wed, 27 Jan 2016 22:41:37 +0000 (16:41 -0600)]
MLK-12394-1: Revert "MLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND boot"

This reverts commit 76babd7d075c9c22a27e6bc272bb57b6327cfbd3.

Signed-off-by: Han Xu <han.xu@nxp.com>
7 years agoMLK-12392: arm: imx6q: fix lpddr2 build error if SMP is disabled
Adrian Alonso [Fri, 5 Feb 2016 20:26:33 +0000 (14:26 -0600)]
MLK-12392: arm: imx6q: fix lpddr2 build error if SMP is disabled

Fix build error if CONFIG_SMP is disabled:

arch/arm/mach-imx/busfreq_lpddr2.c: In function â€˜update_lpddr2_freq_smp’:
arch/arm/mach-imx/busfreq_lpddr2.c:236:67: error: â€˜me’ undeclared (first
use in this function)
  printk(KERN_DEBUG "Bus freq set to %d done! cpu=%d\n", ddr_rate, me);

Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
7 years agoMLK-12374: ASoC: fsl_sai: Change the dev_warn to dev_dbg
Shengjiu Wang [Thu, 4 Feb 2016 07:07:57 +0000 (15:07 +0800)]
MLK-12374: ASoC: fsl_sai: Change the dev_warn to dev_dbg

When audio stop, it will first stop dma, then stop cpu_dai.
If there is delay between dma stop and cpu dai stop, there
will be underrun error, the print will cost time, then will
cause another underrun error, it is a infinite loop.
Which will cause the cpu dai can't stop.

Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
7 years agoMLK-12311: ARM: imx: imx6q lpddr2 busfreq single channel support
Adrian Alonso [Thu, 21 Jan 2016 23:38:22 +0000 (17:38 -0600)]
MLK-12311: ARM: imx: imx6q lpddr2 busfreq single channel support

Add imx6q lpddr2 busfreq support for single channel memory
types, perform ddr frequency scaling taking into account if
ddr uses single or dual channel mode by checking
MMDC0_MDMISC[LPDDR2_2CH] state.

Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12307: ARM: imx: imx6q arm2 use lpddr2 in 2 channel fixed mode
Adrian Alonso [Mon, 18 Jan 2016 23:34:29 +0000 (17:34 -0600)]
MLK-12307: ARM: imx: imx6q arm2 use lpddr2 in 2 channel fixed mode

Set usable memory to 2 channel fixed mode
MMDC0 0x80000000 512M
MMDC1 0x10000000 512M
MMDC 2 channel fixed mode is enabled by setting
BOOT_CFG3[5:4] = 01 for Fixed 2x32 map

Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
7 years agoMLK-12306: ARM: imx: imx6 lpddr2 two channel suspend support
Adrian Alonso [Thu, 7 Jan 2016 01:05:19 +0000 (19:05 -0600)]
MLK-12306: ARM: imx: imx6 lpddr2 two channel suspend support

Add lpddr2 two channel suspend support
- save/restore mmdc io pads for channel 2
- Set mmdc channe 2 on self refresh and auto power saving mode
  only if mmdc channel 2 is enabled
- Perform a reset fifo on resume_io when restoring mmdc io pads

Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
(cherry picked from commit 2e5982e82edc8fc7de0aebc8894a9f0a41e01965)

7 years agoMLK-12023-3: arm: imx6q: add lpddr2 bus frequency support
Adrian Alonso [Mon, 25 Jan 2016 21:20:06 +0000 (15:20 -0600)]
MLK-12023-3: arm: imx6q: add lpddr2 bus frequency support

Add busfreq support for imx6q lpddr2 pop target platform
DDR scaling support for low bus frequency and high bus
frequency mode (24Mhz/400Mhz)
Update Copyrigth year info

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Anson Huang <b20788@freescale.com>
(cherry picked from commit 91cff834d4f5d065fe8e7e60c1c1799f00990654)

7 years agoMLK-12023-2: arm: imx6: refactor wfe ddr3 freq change low power mode
Adrian Alonso [Mon, 25 Jan 2016 20:54:22 +0000 (14:54 -0600)]
MLK-12023-2: arm: imx6: refactor wfe ddr3 freq change low power mode

Refactor wfe_ddr3_freq_change to wfe_smp_freq_change in order
to reuse enter/exit wfe standby low power mode.

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Anson Huang <b20788@freescale.com>
(cherry picked from commit 4d92e1f5bab3480cb145821dce27960887e7a3ea)

7 years agoMLK-12023-1: ARM: dts: imx: imx6q add busfreq device node label
Adrian Alonso [Thu, 10 Dec 2015 19:17:28 +0000 (13:17 -0600)]
MLK-12023-1: ARM: dts: imx: imx6q add busfreq device node label

Add busfreq device node label to allow override busfreq
properties on machine device tree descriptor

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Anson Huang <b20788@freescale.com>
(cherry picked from commit fd8faeb7a40fc2f9fb331d6ca6a60b64c95d7ee6)

7 years agoMLK-11890: ARM: dts: imx: add imx6q arm2 lpddr2 target
Adrian Alonso [Wed, 18 Nov 2015 15:26:13 +0000 (09:26 -0600)]
MLK-11890: ARM: dts: imx: add imx6q arm2 lpddr2 target

Add device tree for imx6q arm2 lpddr2 pop target platform
Enable common imx6q features, uart, usb, usdhc, fec.
Set DDR max frequency to 400Mhz which is the clock rate
for MT42L128M64D2-25

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Anson Huang <b20788@freescale.com>
(cherry picked from commit 06783aba18bda32f25107485891fc4bafc609abf)

7 years agoMLK-11889: arm: imx6: low power mode support for imx6q lpddr2
Adrian Alonso [Tue, 10 Nov 2015 23:43:18 +0000 (17:43 -0600)]
MLK-11889: arm: imx6: low power mode support for imx6q lpddr2

Add low power suspend mode support for imx6q lpddr2
Save/restore mmdc iomux pads relevant to dual channel
lpddr2 memory when enter/exit low power suspend mode.
Remove unused macros in suspend-imx6.

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Anson Huang <b20788@freescale.com>
(cherry picked from commit 5ebac6d425b859c51d570489d03684e0c976ef60)

7 years agoMLK-12013 arm: imx: set eim_slow clk to 132Mhz only for MXC_CPU_IMX6Q
Gao Pan [Mon, 14 Dec 2015 13:43:55 +0000 (21:43 +0800)]
MLK-12013 arm: imx: set eim_slow clk to 132Mhz only for MXC_CPU_IMX6Q

A patch(set imx6qp eim_slow to 132Mh) was pushed to eliminate
the weim nor read performance drop cause by the IP difference
between imx6q & imx6qp.

However, the patch impacted the performance of imx6dl-ard.
In succession, AXI clk is set to 270M which exceeds the max
value(264M).

This patch sets eim_slow to 132M only for MXC_CPU_IMX6Q. So
the performance difference between imx6q & imx6qp decreases
while no impact for imx6dl-ard.

please see the following summary of weim nor read performance.

clk(performance) 6q-sabreauto 6qp-sabreauto 6dl-ard
imx_3.10         132M(18.9MB/s)      â€”—       135M(19.1MB/s)
imx_3.14.y       132M(18.9MB/s) 132M(16.8MB/s) 135M(19.1MB/s)

Signed-off-by: Gao Pan <b54642@freescale.com>
(cherry picked from commit f19e9899eacddb5343e7a7d476a500cd4551dffe)

7 years ago MLK-11262-5: ARM: imx: Change A7 MU ready timing
Teo Hall [Thu, 21 Jan 2016 19:36:02 +0000 (13:36 -0600)]
 MLK-11262-5: ARM: imx: Change A7 MU ready timing

 Change when A7 signal M4 to make sure busfreq is
 always up when the M4 send high bus release.
 This prevents race condition for Low Power Demo

Signed-off-by: Teo Hall <teo.hall@nxp.com>
7 years agoMLK-12372: ASoC: fsl_asrc: fix dma task timeout after suspend/resume
Shengjiu Wang [Mon, 1 Feb 2016 06:44:44 +0000 (14:44 +0800)]
MLK-12372: ASoC: fsl_asrc: fix dma task timeout after suspend/resume

commit 743cead0f8c4ac6311ffb500efd6146c40124310 is not a complete fix.
There is low possibility that this issue still occur.

Last commit add init_completion() in the suspend function, but if the
dma callback function is called after convert error, the complete is
done, the init_completion will not be called, so the complete state is
not correct in the next conversion.

This patch is to move init_completion to the beginning of conversion
to fix the issue.

Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
7 years agoMLK-12370 ARM: dts: imx7d-12x12-lpddr3-arm2: disable sim1 node in flexcan dts file
Fugang Duan [Mon, 1 Feb 2016 08:10:44 +0000 (16:10 +0800)]
MLK-12370 ARM: dts: imx7d-12x12-lpddr3-arm2: disable sim1 node in flexcan dts file

The sim1 has pin conflicts with flexcan1,flexcan2 and sai1.
By default, imx7d 12x12 lpddr3 arm2 default dts enable sim1 node
and disable flexcan1, flexcan2, sai1 nodes.

The patch do two things:
- disable sim1 node in extended flexcan dts file
- remove redundant sim1 node in default dts file

Signed-off-by: Fugang Duan <B38611@freescale.com>
7 years agoMLK-12343 MX6SL-EVK missing hardware random number generator.
Dan Douglass [Thu, 20 Feb 2014 17:25:56 +0000 (11:25 -0600)]
MLK-12343 MX6SL-EVK missing hardware random number generator.

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>
7 years agoMLK-12364-2: DTS: Add pmic 5v supply to i.MX6qdl sabresd
Sandor Yu [Wed, 27 Jan 2016 08:00:37 +0000 (16:00 +0800)]
MLK-12364-2: DTS: Add pmic 5v supply to i.MX6qdl sabresd

Add pmic 5v supply to i.MX6qdl sabresd dts.

Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>
7 years agoMLK-12364-1: HDMI: Add hdmi power supply management
Sandor Yu [Wed, 27 Jan 2016 07:58:43 +0000 (15:58 +0800)]
MLK-12364-1: HDMI: Add hdmi power supply management

Add HDMI power supply management in hdmi driver.

Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>
7 years agoMLK-12358: ARM: dts: imx7d-val-m4: disable sim1 and reg_can2_3v3
Richard Zhu [Mon, 1 Feb 2016 05:05:21 +0000 (13:05 +0800)]
MLK-12358: ARM: dts: imx7d-val-m4: disable sim1 and reg_can2_3v3

- Disable the sim1 on imx7d val board, because that there
are pin conflictions between sim1 and flexcan2 used by M4.
- Disable can2 is not enough, since the reg_can2_3v3 will be
turned off by the regulator framework and that will impact
can2 in m4 side even if can2 driver disabled in A7 side.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Tested-by: Ge Wang <G.Wang@nxp.com>
7 years agoMLK-12350: ARM: anatop: disable PU regulator on i.mx6qp before suspend
Robin Gong [Mon, 1 Feb 2016 03:24:58 +0000 (11:24 +0800)]
MLK-12350: ARM: anatop: disable PU regulator on i.mx6qp before suspend

To eliminate the power number, need turn off PU regulator before suspend
since it's turned on always on i.mx6qp.

Signed-off-by: Robin Gong <yibin.gong@nxp.com>
7 years agoMLK-12349 ARM: imx: skip RBC workaround for standby mode on i.MX7D
Anson Huang [Fri, 29 Jan 2016 05:59:20 +0000 (13:59 +0800)]
MLK-12349 ARM: imx: skip RBC workaround for standby mode on i.MX7D

For standby mode, RBC workaround is NOT necessary as ARM platform
is NOT powered down;

Correct GIC register offset(0x1000) for disabling distributor.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12278 pci: imx: turn off pcie clks when link is down
Richard Zhu [Wed, 20 Jan 2016 08:13:28 +0000 (16:13 +0800)]
MLK-12278 pci: imx: turn off pcie clks when link is down

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>
7 years agoMLK-12339 Security: Missing caam support.
Dan Douglass [Thu, 28 Jan 2016 20:48:52 +0000 (14:48 -0600)]
MLK-12339 Security: Missing caam support.

Added CAAM to the device tree for imx6sx in imx6sx.dtsi.

Signed-off-by: Dan Douglass <dan.douglass@nxp.com>
7 years agoMLK-12262-6 ARM: imx: enable memory power down for i.MX7D TO1.1
Anson Huang [Tue, 26 Jan 2016 07:53:28 +0000 (15:53 +0800)]
MLK-12262-6 ARM: imx: enable memory power down for i.MX7D TO1.1

Enable memory power down for i.MX7D TO1.1 to save power, TO1.0
has issue of entering DSM by mistake, so it is disabled as a
solution, now that this issue is fixed on TO1.1, enable it.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12262-5 ARM: imx: add RBC workaround for i.MX7D DSM
Anson Huang [Wed, 27 Jan 2016 02:58:21 +0000 (10:58 +0800)]
MLK-12262-5 ARM: imx: add RBC workaround for i.MX7D DSM

Same as low power idle, during GPC shutting down ARM core,
interrupts must be hold until the process done, apply RBC
workaround and disable GIC during GPC powering down ARM
core.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12262-4 ARM: imx: fix low power idle issue on i.MX7D TO1.1
Anson Huang [Tue, 26 Jan 2016 07:41:01 +0000 (15:41 +0800)]
MLK-12262-4 ARM: imx: fix low power idle issue on i.MX7D TO1.1

For low power idle with ARM power gated, per hardware requirement,
there must be no interrupt coming during the power down
process of ARM core, so RBC counter is enabled to hold interrupts
and GIC must be disabled at the moment;

The hardware design team recommends ~240us is required during ARM
core power down, so we update the RBC counter value to 8(~240us);

Update GPC SCU and CPU power up/down timing according to design
team's recommendation.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12262-3 ARM: imx: reduce DDR3 normal frequency to 400MHz for i.MX7D TO1.1
Anson Huang [Tue, 26 Jan 2016 07:37:15 +0000 (15:37 +0800)]
MLK-12262-3 ARM: imx: reduce DDR3 normal frequency to 400MHz for i.MX7D TO1.1

i.MX7D TO1.1 only supports DDR3 running at max frequency of 400MHz,
update busfreq driver accordingly.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12262-2 ARM: imx: adjust LPDDR2 frequency scale flow for i.MX7D TO1.1
Anson Huang [Mon, 25 Jan 2016 14:19:03 +0000 (22:19 +0800)]
MLK-12262-2 ARM: imx: adjust LPDDR2 frequency scale flow for i.MX7D TO1.1

LPDDR2 frequency scale flow needs to be updated for i.MX7D
TO1.1 due to the CKE timing change.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12262-1 ARM: imx: enable ddr auto self-refresh for i.MX7D
Anson Huang [Mon, 25 Jan 2016 14:16:48 +0000 (22:16 +0800)]
MLK-12262-1 ARM: imx: enable ddr auto self-refresh for i.MX7D

Enable DDR auto self-refresh for i.MX7D, when doing DDR
frequency scale or suspend/resume, DDR self-refresh will
be disabled, this is incorrect for saving power, enable it
for all these scenarios.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
7 years agoMLK-12328 cpufreq: imx: put the cpufreq policy after used
Bai Ping [Wed, 27 Jan 2016 07:43:39 +0000 (15:43 +0800)]
MLK-12328 cpufreq: imx: put the cpufreq policy after used

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>
7 years agoMLK-12256: firmware: imx: sdma: fix bugs in uart script code
Robin Gong [Thu, 14 Jan 2016 03:40:40 +0000 (11:40 +0800)]
MLK-12256: firmware: imx: sdma: fix bugs in uart script code

Fix two below bugs in script:
  -- check error flag in FIFO data, thus dma will stop once the error happen
     when real HW error triggered by switch boundrate, overun,etc. Actrually,
     no need to check in script since UART driver will handle this.
  -- clear other status bit in USR1.

Signed-off-by: Robin Gong <yibin.gong@nxp.com>
7 years agoMLK-11830 ARM: dts: add tcm address info for imx7d 12x12 lpddr3 board
Anson Huang [Fri, 6 Nov 2015 14:31:25 +0000 (22:31 +0800)]
MLK-11830 ARM: dts: add tcm address info for imx7d 12x12 lpddr3 board

When M4 is enabled, Linux has to do save/restore for M4 TCM during
suspend/resume, dtb should pass the TCM address for kernel, without
this TCM info, kernel will boot up fail:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at arch/arm/mach-imx/pm-imx7.c:1030 imx7d_pm_init+0x58/0)
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.52-02791-g1babdb1-dirty #2093
[<80014b40>] (unwind_backtrace) from [<80011798>] (show_stack+0x10/0x14)
[<80011798>] (show_stack) from [<807199ec>] (dump_stack+0x7c/0xbc)
[<807199ec>] (dump_stack) from [<80032d78>] (warn_slowpath_common+0x6c/0x88)
[<80032d78>] (warn_slowpath_common) from [<80032e30>] (warn_slowpath_null+0x1c/)
[<80032e30>] (warn_slowpath_null) from [<80a09760>] (imx7d_pm_init+0x58/0x67c)
[<80a09760>] (imx7d_pm_init) from [<80a08d3c>] (imx7d_init_machine+0x3c/0xe4)
[<80a08d3c>] (imx7d_init_machine) from [<809e52e4>] (customize_machine+0x20/0x4)
[<809e52e4>] (customize_machine) from [<800089bc>] (do_one_initcall+0xf8/0x144)
[<800089bc>] (do_one_initcall) from [<809e2c4c>] (kernel_init_freeable+0x138/0x)
[<809e2c4c>] (kernel_init_freeable) from [<807159b8>] (kernel_init+0x8/0xf0)
[<807159b8>] (kernel_init) from [<8000e580>] (ret_from_fork+0x14/0x34)
---[ end trace fdb0885876d7ac0b ]---
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = 80004000
[00000000] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W    3.14.52-02791-g1babdb1-dir3
task: a8084000 ti: a8090000 task.ti: a8090000
PC is at memcpy+0x48/0x330
LR is at imx7d_pm_init+0xd0/0x67c
pc : [<8028e768>]    lr : [<80a097d8>]    psr: 20000013
sp : a8091e8c  ip : 00000000  fp : 00000000
r10: a8090030  r9 : 0000010b  r8 : 809e52c4
r7 : 80ab9380  r6 : 80ab9380  r5 : 80abb5a4  r4 : 80a411cc
r3 : 00080000  r2 : 00007f80  r1 : 00000000  r0 : a8140000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 8000406a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0xa8090238)

Signed-off-by: Anson Huang <Anson.Huang@freescale.com>
(cherry picked from commit c3dc7c16660200f3de8cbbdd1f215ae6a779a039)

7 years agoMLK-12312: CAAM hash algorithms fail registration during initialization
Russell King [Sun, 18 Oct 2015 16:51:25 +0000 (17:51 +0100)]
MLK-12312: CAAM hash algorithms fail registration during initialization

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>
7 years agoMLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND boot
Han Xu [Thu, 21 Jan 2016 15:01:15 +0000 (09:01 -0600)]
MLK-12309: mtd: gpmi: workaround for kernel 4.1 NAND boot

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>
7 years agoMLK-11896-8 usb: phy: mxs: declar variable with initialized value
Li Jun [Wed, 20 Jan 2016 02:56:59 +0000 (10:56 +0800)]
MLK-11896-8 usb: phy: mxs: declar variable with initialized value

Fix coverity CID 17601 uninitialized scalar variable: vbus_value.

Signed-off-by: Li Jun <jun.li@nxp.com>
7 years agoARM: clk-imx6q: refine sata's parent
Sébastien Szymanski [Wed, 20 May 2015 14:30:37 +0000 (16:30 +0200)]
ARM: clk-imx6q: refine sata's parent

According to IMX6D/Q RM, table 18-3, sata clock's parent is ahb, not ipg.

Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Reviewed-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
(cherry picked from commit da946aeaeadcd24ff0cda9984c6fb8ed2bfd462a)

7 years agoMLK-12305 Enable CAAM in kernel version 4.1 imx_v7_defconfig
Dan Douglass [Wed, 20 Jan 2016 20:34:17 +0000 (14:34 -0600)]
MLK-12305 Enable CAAM in kernel version 4.1 imx_v7_defconfig

Enabled CAAM in imx_v7_defconfig.

Signed-off-by: Dan Douglass <dan.douglass@nxp.com>
7 years agoMLK-12303 Add CAAM support to the imx6QDL device tree for kernel v4.1
Dan Douglass [Wed, 20 Jan 2016 20:10:29 +0000 (14:10 -0600)]
MLK-12303 Add CAAM support to the imx6QDL device tree for kernel v4.1

The CAAM nodes have been added in imx6qdl.dtsi.

Signed-off-by: Dan Douglass <dan.douglass@nxp.com>
7 years agoMLK-12302 caam: Secure Memory platform device creation crashes
Dan Douglass [Wed, 20 Jan 2016 19:31:56 +0000 (13:31 -0600)]
MLK-12302 caam: Secure Memory platform device creation crashes

There is new flag that is checked in of_platform_device_create().
The flag is cleared prior to the call now so the device creates
successfully.

Signed-off-by: Dan Douglass <dan.douglass@nxp.com>
7 years agoMLK-11360-01 crypto: caam_snvs: add snvs clock management
Fugang Duan [Fri, 14 Aug 2015 06:46:23 +0000 (14:46 +0800)]
MLK-11360-01 crypto: caam_snvs: add snvs clock management

caam_snvs driver involves snvs HP registers access that needs to
enable snvs clock source. The patch add the clock management.

Signed-off-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-11103 Missing register in Secure memory configuration v1
Ulises Cardenas [Fri, 12 Jun 2015 10:54:36 +0000 (05:54 -0500)]
MLK-11103 Missing register in Secure memory configuration v1

Added missing reserved register for caam_secure_mem_v1 struct

Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-11020: arm: imx: caam: imx7d caam_aclk clock dependency
Adrian Alonso [Tue, 2 Jun 2015 20:08:52 +0000 (15:08 -0500)]
MLK-11020: arm: imx: caam: imx7d caam_aclk clock dependency

* Add caam_aclk clock root dependency, imx7d caam
  ip module needs caam_aclk and caam_ipg clock signals
  to operate add additional clock signal.

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
[Octavian: since the clk API skips NULL args use a single disable label]
Signed-off-by: Octavian Purdila <octavian.purdila@nxp.com>
7 years agoMLK-10978-1 ARM: imx6ul: Add CAAM support for i.mx6ul
Dan Douglass [Tue, 26 May 2015 20:53:10 +0000 (15:53 -0500)]
MLK-10978-1 ARM: imx6ul: Add CAAM support for i.mx6ul

There are only 3 CAAM clocks that are required for i.mx6ul. Adding
logic to enable only the required clocks based on the device tree
compatibility node.

Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-10897-1 ARM: imx7d: Add CAAM support for i.mx7d
Dan Douglass [Thu, 14 May 2015 21:28:52 +0000 (16:28 -0500)]
MLK-10897-1 ARM: imx7d: Add CAAM support for i.mx7d

CAAM only has a single clock in i.mx7d. Logic was added to initialize only the
single clock.

The Secure Memory registers moved in CAAM era included in i.mx7d. This required
changes to support access to two different versions of the register map. The
registers are access through a data structure that overlay the register region.
Two new Secure Memory register structures were created to support the different
versions. Logic was also added to determine which version is implemented based on
the CAAM era, and access functions were added to support register access to the
Secure Memory Command and Status registers.

Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-23 Replace SECVIO of_irq_to_resource() with irq_of_parse_and_map()
Victoria Milhoan [Wed, 14 Jan 2015 18:43:12 +0000 (11:43 -0700)]
MLK-9769-23 Replace SECVIO of_irq_to_resource() with irq_of_parse_and_map()

Replace of_irq_to_resource() in the SECVIO module with the simpler
equivalent irq_of_parse_and_map().  Also, add error checking to
to the SECVIO and Job Ring modules. Based on upstream commit
f7578496a671a96e501f16a5104893275e32c33a.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-10036 Freescale CAAM: Add support for DSM with Mega/Fast mix on
Victoria Milhoan [Thu, 18 Dec 2014 21:06:50 +0000 (14:06 -0700)]
MLK-10036 Freescale CAAM: Add support for DSM with Mega/Fast mix on

This patch allows CAAM to be enabled as a wakeup source for the
Mega/Fast mix domain. If CAAM is enabled as a wakeup source, it
will continue to be powered on across Deep Sleep Mode (DSM). This
allows CAAM to be functional after the system resumes from DSM.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit 290744e3b40a563319324e234fa5a65b49fd4d82)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9971 Add XCBC-AES support for CAAM in i.MX6 family
Winston Hudson (b45308) [Thu, 27 Jun 2013 20:22:39 +0000 (13:22 -0700)]
MLK-9971 Add XCBC-AES support for CAAM in i.MX6 family

Add XCBC-AES support to the CAAM crypto accelerator core in
the i.MX6 family of SoC devices.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9951 Update CAAM driver era interface
Victoria Milhoan [Thu, 20 Nov 2014 18:28:28 +0000 (11:28 -0700)]
MLK-9951 Update CAAM driver era interface

Add more CAAM era values to the CAAM driver's caam_get_era()
function. Read only 32 bits of data since the data required
to identify the IP_ID and MAJ_REV is located in the first 32
bits of the register. And, update the function for use with
ARM/Little Endian devices.

[<vicki.milhoan@freescale.com>: Edited to apply to 3.14]
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit 6050d7faf2d0c063195aa9454c130548a9f8058f)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-5 Unregister Secure Memory platform device upon shutdown
Victoria Milhoan [Mon, 3 Nov 2014 22:28:10 +0000 (15:28 -0700)]
MLK-9710-5 Unregister Secure Memory platform device upon shutdown

Unregister Secure Memory platform device when the Secure Memory
module is shut down.  This allows the Secure Memory module to
be inserted again successfully.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit 785456f38234e64618ee9c74ab4258f39f00e73c)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-20 Limit AXI pipeline to a depth of one in CAAM for i.MX6 devices
Victoria Milhoan (b42089) [Tue, 26 Mar 2013 21:11:32 +0000 (14:11 -0700)]
MLK-9769-20 Limit AXI pipeline to a depth of one in CAAM for i.MX6 devices

i.MX6 devices have an issue wherein AXI bus transactions may not occur
in the correct order. This isn't a problem running single descriptors,
but can be if running multiple concurrent descriptors. Reworking the CAAM
driver to throttle to single requests is impractical, so this patch limits
the AXI pipeline to a depth of one (from a default of four) to preclude
this situation from occurring.

Signed-off-by: Victoria Milhoan (b42089) <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-19 Add ARC4-ECB support for CAAM in i.MX6 family
Winston Hudson [Mon, 17 Nov 2014 17:17:35 +0000 (10:17 -0700)]
MLK-9769-19 Add ARC4-ECB support for CAAM in i.MX6 family

Adds ARC4-ECB Mode support to the CAAM crypto accelerator core in
the i.MX6 family of SoC devices.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-18 Add 3DES-ECB-EDE support for CAAM in i.MX6 family
Winston Hudson (b45308) [Thu, 27 Jun 2013 04:08:30 +0000 (21:08 -0700)]
MLK-9769-18 Add 3DES-ECB-EDE support for CAAM in i.MX6 family

Adds 3DES-ECB-EDE Mode support to the CAAM crypto accelerator core in
the i.MX6 family of SoC devices.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-17 Add AES-ECB support for CAAM in i.MX6 family
Winston Hudson (b45308) [Thu, 27 Jun 2013 03:49:36 +0000 (20:49 -0700)]
MLK-9769-17 Add AES-ECB support for CAAM in i.MX6 family

Adds AES-ECB (Electronic Codebook) support to the CAAM crypto accelerator core in
the i.MX6 family of SoC devices.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-16 Add DES-ECB support for CAAM in i.MX6 family
Winston Hudson [Mon, 17 Nov 2014 16:27:30 +0000 (09:27 -0700)]
MLK-9769-16 Add DES-ECB support for CAAM in i.MX6 family

Adds DES-ECB Mode support to the CAAM crypto accelerator core in
the i.MX6 family of SoC devices.

Note that CAAM also goes by sec-4.0 or sec-5.0 in other product families (such as QorIQ).
Thus the property names are often tied to the sec-4.0+ nomenclature.

Signed-off-by: Winston Hudson (b45308) <winston.h.hudson@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-14 Add CRYPTO_ALG_KERN_DRIVER_ONLY flag to Freescale CAAM driver
Victoria Milhoan (b42089) [Fri, 29 Mar 2013 07:13:14 +0000 (00:13 -0700)]
MLK-9769-14 Add CRYPTO_ALG_KERN_DRIVER_ONLY flag to Freescale CAAM driver

The CRYPTO_ALG_KERN_DRIVER_ONLY flag is used to indicate that
the crypto algorithm is only available via a kernel driver.
This patch adds the flag only when the flag is available in the
kernel.  Utilizing the flag based on it's availability in the
kernel allows the driver to compile on older kernel versions.

The original community patch is located at
http://permalink.gmane.org/gmane.linux.kernel.cryptoapi/6547
for reference.

Signed-off-by: Victoria Milhoan (b42089) <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9937 Use job ring 0 for secure memory access
Victoria Milhoan [Fri, 7 Nov 2014 17:48:32 +0000 (10:48 -0700)]
MLK-9937 Use job ring 0 for secure memory access

By default, job ring 0 is the owner of the Secure Memory area
within CAAM.  This patch modifies the Secure Memory module to
use job ring 0 for all accesses.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit bb447bfb241d34492365bf881257b1a742a29c02)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-15 Correct size of padded key buffers
Steve Cornelius [Fri, 2 Aug 2013 21:19:27 +0000 (14:19 -0700)]
MLK-9710-15 Correct size of padded key buffers

Correct size of padded key buffers for the Secure Memory test module.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
(cherry picked from commit da77cf5583c064deefd09a5e91851ab4398701a0)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-14 Un-pad cache sizes for blob export/import
Steve Cornelius [Fri, 2 Aug 2013 03:08:19 +0000 (20:08 -0700)]
MLK-9710-14 Un-pad cache sizes for blob export/import

Blob exportation and importation functions were adding padding to
the buffer mapping and cache control functions, which resulted in
incorrect CPU-level views into a DMA-ed blob.

Also, corrected descriptor constructors to use symbolic form of
blob overhead calculation.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
(cherry picked from commit c5f2cbb1fa51b0142742de77fe0a37c290bd04a0)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-13 Correct size in BLOB_OVERHEAD definition
Steve Cornelius [Fri, 2 Aug 2013 03:06:05 +0000 (20:06 -0700)]
MLK-9710-13 Correct size in BLOB_OVERHEAD definition

Increase the size of BLOB_OVERHEAD.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
(cherry picked from commit 32aced88dedf1c1c11170d125d3cc546ffefb366)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-12 Adapt sm_test as a black-key handling example
Steve Cornelius [Wed, 24 Jul 2013 03:56:08 +0000 (20:56 -0700)]
MLK-9710-12 Adapt sm_test as a black-key handling example

Converted sm_test to an example that can show:
- key covering
- secret encapsulation as external memory blob
- secret decapsulation from external memory blob
- checks and displays of the handling of key content

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
(cherry picked from commit 45818b72fc4b3fe3fff755b1f9a27cd5519ca2cf)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-11 Add internal key cover and external blob export/import to prototype SM-API
Steve Cornelius [Wed, 24 Jul 2013 03:49:29 +0000 (20:49 -0700)]
MLK-9710-11 Add internal key cover and external blob export/import to prototype SM-API

Extended/amended the prototype SM-API with the following functions:
- Added key covering (blackening) function in-place to a keyslot
- Added export operation to encapsulate data to external memory as a
  secure memory blob (including descriptor capable of secure memory or
  general memory blob generation)
- Removed in-place blob encapsulation
- Added import operation to decapsulate a blob from external memory into
  secure memory (including descriptor capable of general memory or secure
  memory content decapsulation)
- Removed in-place blob decapsulation

[<vicki.milhoan@freescale.com>: Edited to apply to 3.10]
Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit c577769ed0347bb4e3428b5696fb7f209af0a7ad)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-18 snvs - make SECVIO module device tree correct
Steve Cornelius [Thu, 25 Sep 2014 23:34:11 +0000 (16:34 -0700)]
MLK-9710-18 snvs - make SECVIO module device tree correct

Converted the prototype 3.0.x SNVS Security Violation Handler
subsystem to be device tree correct/compliant under 3.10 for ARM
platforms. Also, separated out SNVS property detection so as to make
it independent of CAAM, and corrected function namespace accordingly.

Later releases of this subsystem are likely to be separate from the
kernel's CAAM driver space.

[<vicki.milhoan@freescale.com>: Edited to apply to latest 3.10 kernel]
Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
(cherry picked from commit c8c128086eae012ced0c96d66f21f36bcbd14f66)
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoENGR00289885 [iMX6Q] Add Secure Memory and SECVIO support.
Dan Douglass [Wed, 27 Nov 2013 09:40:44 +0000 (03:40 -0600)]
ENGR00289885 [iMX6Q] Add Secure Memory and SECVIO support.

1. Pull in secure memory support from 3.0.35 kernel.
2. Pull in SECVIO support from 3.0.35 kernel.
3. Make changes to support device tree.
4. Add device tree setting for SECVIO sources.

[<vicki.milhoan@freescale.com>: Edited to apply to 3.14]
Signed-off-by: Dan Douglass <b41520@freescale.com>
(cherry picked from commit f3bfd42e2db3af8326734bebf750e94e74734f6e)
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-10 Add Blob command bitdefs.
Steve Cornelius [Fri, 19 Oct 2012 21:37:12 +0000 (14:37 -0700)]
MLK-9769-10 Add Blob command bitdefs.

Add bit definitions for Blob protocol protinfo field.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-11 Add SM register defs, and expanded driver-private storage.
Steve Cornelius [Fri, 19 Oct 2012 21:43:41 +0000 (14:43 -0700)]
MLK-9769-11 Add SM register defs, and expanded driver-private storage.

These add changes to the driver private areas for the CAAM
controller and CAAM Secure Memory subsystems, and expand register
definitions to include the Secure Memory subsystems as reflected
in multiple areas (controller, rings, secure memory itself).

[<vicki.milhoan@freescale.com>: Edited to apply to 3.14]
Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9710-10 Add CCM defs for FIFO_STORE instruction
Steve Cornelius [Wed, 24 Jul 2013 03:47:32 +0000 (20:47 -0700)]
MLK-9710-10 Add CCM defs for FIFO_STORE instruction

Added definitions to enable FIFO_STORE to encode options for storing
keys in AES-CCM mode

[<vicki.milhoan@freescale.com>: Edited to apply to 3.14]
Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
(cherry picked from commit a3cd8e5fad274f33fc6f0030413f89a6339b1d5a)
Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-9 Adjust RNG timing to support more devices
Victoria Milhoan [Wed, 12 Nov 2014 16:58:24 +0000 (09:58 -0700)]
MLK-9769-9 Adjust RNG timing to support more devices

Adjust RNG timing parameters to support more i.MX6 devices.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-8 Add a test for the Freescale CAAM Random Number Generator
Victoria Milhoan (b42089) [Fri, 17 Oct 2014 23:30:56 +0000 (16:30 -0700)]
MLK-9769-8 Add a test for the Freescale CAAM Random Number Generator

Freescale's CAAM includes a Random Number Generator.  This change adds
a kernel configuration option to test the RNG's capabilities via the
hw_random framework.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-9769-1 caam: remove incorrect comment from job ring module
Victoria Milhoan [Wed, 29 Oct 2014 18:23:05 +0000 (11:23 -0700)]
MLK-9769-1 caam: remove incorrect comment from job ring module

The caam_jr_register() function is no longer part of the CAAM
driver.  This patch removes a comment referencing the function.

Signed-off-by: Victoria Milhoan <vicki.milhoan@freescale.com>
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agocrypto: caam - fix memleak in caam_jr module
Cristian Stoica [Mon, 7 Jul 2014 08:52:41 +0000 (11:52 +0300)]
crypto: caam - fix memleak in caam_jr module

commit 0378c9a855bfa395f595fbfb049707093e270f69 upstream.

This patch fixes a memory leak that appears when caam_jr module is unloaded.

Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Conflicts:
drivers/crypto/caam/jr.c
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agocrypto: caam - add allocation failure handling in SPRINTFCAT macro
Horia Geanta [Fri, 18 Apr 2014 10:01:42 +0000 (13:01 +0300)]
crypto: caam - add allocation failure handling in SPRINTFCAT macro

commit 27c5fb7a84242b66bf1e0b2fe6bf40d19bcc5c04 upstream.

GFP_ATOMIC memory allocation could fail.
In this case, avoid NULL pointer dereference and notify user.

Cc: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Conflicts:
drivers/crypto/caam/error.c
Signed-off-by: Dan Douglass <dan.douglass@freescale.com>
7 years agoMLK-12014 ARM: imx: enable necessary clock for RDC recovery from DSM
Anson Huang [Tue, 15 Dec 2015 09:59:11 +0000 (17:59 +0800)]
MLK-12014 ARM: imx: enable necessary clock for RDC recovery from DSM

1. Per design requirement, EXSC for PCIe will need clock to recover RDC
   setting on resume when M/F mix is off, so we need to enable PCIe
   LPCG before entering DSM.

2. As M4 clock is disabled in low power mode, after exit from DSM, A7
   needs to restore TCM for M4, but without M4 clock, this operation
   never success, so we enable A7 wakeup sources for M4 as well during
   DSM, after exit DSM, M4's original wakeup sources will be restored.

Signed-off-by: Anson Huang <Anson.Huang@freescale.com>
(cherry picked from commit 847db79957d25545c762670eb1bc003f34cb2592)
Signed-off-by: Teo Hall <teo.hall@nxp.com>
7 years agoMLK-12025 ARM: imx: M4 should be in RUN mode when resume from DSM
Anson Huang [Wed, 16 Dec 2015 13:54:50 +0000 (21:54 +0800)]
MLK-12025 ARM: imx: M4 should be in RUN mode when resume from DSM

On i.MX7D, only when M4 enters STOP mode, system is able to enter DSM
mode where M4 power will be gated off. This is done by checking
a variable which records M4's power mode. However, when system
resume from DSM, M4 is re-enabled to RUN mode by A7, but the variable
is NOT updated accordingly, so next time system suspend, even
M4 is NOT in STOP mode, system can enter DSM mode, which is
unexpected and would cause bus-freq use count mismatch.

Fix this issue by reset M4 power mode to RUN mode when resume
from DSM.

Signed-off-by: Anson Huang <Anson.Huang@freescale.com>
(cherry picked from commit d22127a8f395edaf719a5bf4874cf22c5bdc8661)
Signed-off-by: Teo Hall <teo.hall@nxp.com>
7 years agoMLK-12182 ARM: imx: add M4 ddr image DSM support on i.MX7D
Anson Huang [Mon, 11 Jan 2016 16:14:53 +0000 (00:14 +0800)]
MLK-12182 ARM: imx: add M4 ddr image DSM support on i.MX7D

For DSM mode, M4 TCM context is lost and A7 will restore them
after resume and write TCM entry to M4 and re-kick it. It
assumes M4 is running on TCM, but M4 also has case of running
image on DDR, OCRAMS first 2 words stores the stack and pc
address for M4, to support M4 running on both TCM and DDR
case, we can just leave the OCRAMS first 3 words unchanged
during DSM, the third words is also reserved for M4, as OCRAMS
can keep its context during DSM.

This patch leaves OCRAMS first 3 words unchanged and remove
the re-program of TCM entry after exit from DSM, thus it can
support DSM mode for M4 running on TCM/DDR/OCRAM.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
(cherry picked from commit b8c47389d16dacf3a78c0f92e6737d09811c45a9)
Signed-off-by: Teo Hall <teo.hall@nxp.com>
7 years agoMLK-11262-5: ARM: imx: add M4 rekick after DSM
Teo Hall [Fri, 30 Oct 2015 15:09:36 +0000 (10:09 -0500)]
MLK-11262-5: ARM: imx: add M4 rekick after DSM

Save M4 tcm in ddr. Copy memory after exit from DSM.
Also hold M4 in reset when entering DSM.

Signed-off-by: Teo Hall <teo.hall@freescale.com>
(cherry picked from commit 011ed0ab784eb566b68ebacea57ae3a6857b48ff)

7 years agoMLK-11262-4: ARM: imx: add m4_tcm to dtsi
Teo Hall [Thu, 7 Jan 2016 21:54:47 +0000 (15:54 -0600)]
MLK-11262-4: ARM: imx: add m4_tcm to dtsi

add tcm to dtsi for saving FreeRTOS image

Signed-off-by: Teo Hall <teo.hall@freescale.com>
7 years agoMLK-11262-3: ARM: imx: Change GPC settings for Multicore LPM
Teo Hall [Fri, 30 Oct 2015 14:53:52 +0000 (09:53 -0500)]
MLK-11262-3: ARM: imx: Change GPC settings for Multicore LPM

change the slots to persistent to be congruent with
M4 image. Also change so that slots do read/modify/write
so that M4 settings are not overwritten.

Signed-off-by: Teo Hall <teo.hall@freescale.com>
(cherry picked from commit eae33480b615c1586248a761ef3c6bcd9e0c59af)

Conflicts:
arch/arm/mach-imx/gpcv2.c

7 years agoMLK-11262-2: ARM: imx: Add MU messages for LPM messages
Teo Hall [Fri, 30 Oct 2015 14:00:36 +0000 (09:00 -0500)]
MLK-11262-2: ARM: imx: Add MU messages for LPM messages

add LPM messages for:
-M4 reporting state
-M4 Request/Release High Bus Freq
-A7 tell M4 it is ready

Signed-off-by: Teo Hall <teo.hall@freescale.com>
(cherry picked from commit 52234ae38e6e4f2b3452d807dd1c1e199be6350c)

Conflicts:
arch/arm/mach-imx/common.h
arch/arm/mach-imx/mu.c

7 years agoMLK-11262-1: ARM: imx: add busfreq offset for M4
Teo Hall [Fri, 30 Oct 2015 13:57:09 +0000 (08:57 -0500)]
MLK-11262-1: ARM: imx: add busfreq offset for M4

offset high_bus_count+1 when m4 is enabled

Signed-off-by: Teo Hall <teo.hall@freescale.com>
(cherry picked from commit 58983b6522c324affdbbeaa5b7b192a673c615a7)

7 years agoMLK-12254 bcmdhd: fix warning when connect adhoc network
Dong Aisheng [Wed, 20 Jan 2016 12:21:36 +0000 (20:21 +0800)]
MLK-12254 bcmdhd: fix warning when connect adhoc network

When connect adhoc network, we got below warning, it's caused
by network stack changes during kernel upgrade.

root@imx6qdlsolo:/mnt/nfs/vte_mx63#  iw wlan0 ibss join TestAdhoc1 2412
------------[ cut here ]------------
WARNING: CPU: 1 PID: 1251 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/net/wireless/ibss.c:67 wl_notify_connect_status+0x7b0/0x10f0 [bcmdhd]()
root@imx6qdlsolo:/mnt/nfs/vte_mx6Modules linked in:3#  bcmdhd ov5642_camera ov5640_camera_mipi_int ov5640_camera_int mxc_dcic galcore(O) mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still v4l2_int_device ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc evbug
CPU: 1 PID: 1251 Comm: wl_event_handle Tainted: G           O    4.1.8-1.0.0+g87e6c2f #1
Hardware name: Freescale i.MX6 Quad/DualLite (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 [<7f100060>] (wl_notify_connect_status+0x7b0/0x10f0 [bcmdhd])
[<7f100060>] (wl_notify_connect_status [bcmdhd]) from [<7f0f05bc>] (wl_event_handler+0x198/0x26c [bcmdhd])
[<7f0f05bc>] (wl_event_handler [bcmdhd]) from [<8004b588>] (kthread+0xdc/0xf4)
[<8004b588>] (kthread) from [<8000f528>] (ret_from_fork+0x14/0x2c)
---[ end trace 40b45ccda84900ce ]---

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
7 years agoMLK-12280 firmware loader: iwl wifi card can't find its fw
Richard Zhu [Wed, 20 Jan 2016 07:10:09 +0000 (15:10 +0800)]
MLK-12280 firmware loader: iwl wifi card can't find its fw

Without FW_LOADER_USER_HELPER enable, iwl wifi cards can't
load their firmware in imx_4.1.y, enable it.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
7 years agoMLK-12244 ASoC: fsl: Set the sound card owner field
Zidan Wang [Wed, 20 Jan 2016 01:50:40 +0000 (09:50 +0800)]
MLK-12244 ASoC: fsl: Set the sound card owner field

When load sound card, the pulseaudio will using the sound card to
playback and record. It may be cause a kernel crash when the sound
card is unloaded while the playback/record is active

After setting the sound card owner field, when pulseaudio is running,
the sound card module ref-count will not be 0 and the sound card will
not be unloaded. So you should stop the pulseaudio when you want to
unload the sound card.

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
7 years agoMGS-1560 [#2172] fix gpu kernel crash with invalid pointer
Xianzhong [Tue, 19 Jan 2016 08:18:21 +0000 (16:18 +0800)]
MGS-1560 [#2172] fix gpu kernel crash with invalid pointer

it is necessary to check the node object pointer before use,
otherwise the board will reboot with kernel crash.

Date: Jan 19, 2016
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
7 years agoMLK-12271 Input: atkbd: add return value check after calling .dmi_check_system()
Fugang Duan [Fri, 15 Jan 2016 09:35:23 +0000 (17:35 +0800)]
MLK-12271 Input: atkbd: add return value check after calling .dmi_check_system()

Add return value check after calling .dmi_check_system().
Reported by Coverity: CID18431

Signed-off-by: Fugang Duan <B38611@freescale.com>
7 years agoMLK-12282 ARM: dts: imx6sx-sabreauto: add mlb support
Gao Pan [Tue, 19 Jan 2016 07:53:39 +0000 (15:53 +0800)]
MLK-12282 ARM: dts: imx6sx-sabreauto: add mlb support

Add mlb support for imx6sx-sabreauto platform.

Signed-off-by: Gao Pan <pandy.gao@nxp.com>
7 years agoMLK-12170-3 dts: imx7d: move uSDHC fsl,tuning-step property into SoC.dtsi
Dong Aisheng [Tue, 19 Jan 2016 03:30:03 +0000 (11:30 +0800)]
MLK-12170-3 dts: imx7d: move uSDHC fsl,tuning-step property into SoC.dtsi

Moving fsl,tuning-step property into SoC.dtsi due to it's mainly SoC
dependant. User could also overwrite it in board.dts for special board
requirment.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
7 years agoMLK-12170-2 dts: imx7d: add tuning-start-tap for usdhc
Dong Aisheng [Mon, 18 Jan 2016 13:52:14 +0000 (21:52 +0800)]
MLK-12170-2 dts: imx7d: add tuning-start-tap for usdhc

MX7D uSDHC has a bit long delay line in SoC internally, pre-set a safe
tuning start point to skip first 20 meaningless cells tuning.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
7 years agoMLK-12284-2 doc: syscon: add clocks as optional property
Dong Aisheng [Thu, 28 Aug 2014 09:01:34 +0000 (17:01 +0800)]
MLK-12284-2 doc: syscon: add clocks as optional property

User can specify clocks in devicetree which is used for accessing the registers
in this regmap.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit 4a89ef5b579e6fb5640df099ee13939ca6d3a325)

7 years agoMLK-12284-1 regmap: regmap-mmio: make clk_id optionally when getting clock
Dong Aisheng [Wed, 27 Aug 2014 07:55:59 +0000 (15:55 +0800)]
MLK-12284-1 regmap: regmap-mmio: make clk_id optionally when getting clock

According to clock framework, the clk_id could be NULL when getting clock.
But current code relies on a non null clk_id to get clock.
Changing the code to allow a null clk_id to get clock to make it more
reasonable to use.
And the regmap_mmio_gen_context will try to get clock by default but ignore
error if not finding the clock in case some regmap access not reply on
a specific clock.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit a60a38a5285ab27814f261ed39653c55a0a6e24b)

7 years agoMLK-9501 dts: imx6sx-sdb: optimize usdhc3 pad settings
Dong Aisheng [Tue, 18 Nov 2014 08:03:55 +0000 (16:03 +0800)]
MLK-9501 dts: imx6sx-sdb: optimize usdhc3 pad settings

Detailed reproduce steps:
1. boot-up to Linux command prompt .
2. Plug SD3.0 UHS-I SD Card into SD3 Connector (make sure SD Card running
   at SD3.0 DDR50/1.8V).
2. write data to SD3 using "dd" command (SD3_CLK running at 1.8V/50MHz).
3. capture the SD3_CLK, SD3_DATA, SD3_CMD waveforms during data write using
   FET probe (>=1GHz)
4. CLK waveforms like triangular wave are observed.

HW team found that the pad setting of the SD3_CLK, SD3_DATA, SD3_CMD signal pins are
not optimized. In existing BSP, when running at SD3.0/DDR50/1.8V, SPEED/DSE/SRE
= 01/011/1 is used. They propose change it to -
 SD3_CLK: SPEED/DSE/SRE = 01/110/1.
 SD3_DATA/SD3_CMD: SPEED/DSE/SRE = 01/101/1.

SDHC high speed cards also had such issue(refer to MLK-9500).

We only changed the default state (<50Mhz) pad setting, for ultra high speed
state like 100Mhz and 200Mhz, it does not have such issue since they already
set to the maximum Drive Strength value.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit 69d4195c741050e0bc78d3005f8ff4f51990d1ae)

Conflicts:
arch/arm/boot/dts/imx6sx-sdb.dts

7 years agoMLK-9833-2 dts: imx6sx: do not touch CAN gpios pads if M4 is enabled
Dong Aisheng [Tue, 11 Nov 2014 13:18:12 +0000 (21:18 +0800)]
MLK-9833-2 dts: imx6sx: do not touch CAN gpios pads if M4 is enabled

CAN devices are allocated to run on M4.
So do not touch CAN pads setting if M4 is enabled.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit 9d2605e51b9ba83382c5da3a838656c9910d75a1)

7 years agoMLK-9833-1 ARM: imx6sx: only set can clock parent when M4 disabled
Dong Aisheng [Tue, 11 Nov 2014 13:04:07 +0000 (21:04 +0800)]
MLK-9833-1 ARM: imx6sx: only set can clock parent when M4 disabled

Since CAN device is allocated to run on M4 and handled by M4 if M4 is enabled,
so we do not set CAN parent clock when M4 is enabled.

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit 171a16fa6d62162e9c8cab38b9459e772c980d22)