29 Feb, 2016
1 commit
-
Add ADC support for imx7d-12x12-lpddr3-arm2 board.
Signed-off-by: Haibo Chen
26 Feb, 2016
3 commits
-
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
-
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
-
Add spi1 IOMUX sleep state in imx7d-12x12-lpddr3-arm2.dts.
Signed-off-by: Gao Pan
25 Feb, 2016
1 commit
-
Add 100Mhz (HIGH_AUDIO_CLK) bus frequency support for imx6q lpddr2 targets
On HIGH_AUDIO_CLK busfreq request source dram mmdc clock root from
pll2_pfd2_div_2 to generate 100Mhz operation frequency.Signed-off-by: Adrian Alonso
Signed-off-by: Anson Huang
(cherry-picked from commit 5bc118112b36b72ed6b1e75a3760c371b486abec)
24 Feb, 2016
1 commit
-
Before entering LPSR mode, as GPC was set to STOP/DSM mode already,
the wfi loop after LPSR mode would cause system enter STOP/DSM mode
first, then SNVS will force PMIC_ON_REQ to low, as SNVS needs IPG
clock to be on before entering SNVS/LPSR mode, so we have to disable
STOP/DSM mode to make sure IPG clock is on before SNVS actually enters
LPSR mode.Signed-off-by: Anson Huang
23 Feb, 2016
1 commit
-
In the lpddr3-arm2-m4 dts, the I2C1 is disabled, so PMIC is disabled,
the cpufreq is not support. As thermal driver is depended on cpufreq
driver, if cpufreq is not support, the tempmon device can be disabled.Signed-off-by: Bai Ping
22 Feb, 2016
3 commits
-
Wait PU LDO ramp before GPU power on once system resume back on i.mx6qp,
otherwise, GPU resume may hang.Signed-off-by: Robin Gong
(cherry picked from commit 361af86190c160e0ea66e007c61b18a793149b74)
(cherry picked from commit 7ddd834bde557db1b62ea2ae683455cc75ba858e) -
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
-
The 'csi_sel' clock is in ccm instead of anatop.
So correct the wrong register address used.Signed-off-by: Fancy Fang
(cherry picked from commit 2a1a58c63f4aeba3733f74efdaef3784186ef15c)
21 Feb, 2016
1 commit
-
Before changing the ARM_PODF, the pll1_bypass clock should be enabled and
bypassed to make sure the ARM_PODF can be changed.Signed-off-by: Bai Ping
(cherry picked from commit 78916c528cb424b20e87887c85246fceac81f3b4)
19 Feb, 2016
5 commits
-
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
Signed-off-by: David S. Miller -
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
Signed-off-by: David S. Miller -
Setting the FTRL register will stop the fec from
trying to use multiple receive buffers.Signed-off-by: Troy Kisky
Signed-off-by: David S. Miller -
PU can be dynamically turned off or on, so we need remove
"regulator-always-on" property.Signed-off-by: Robin Gong
(cherry picked from commit f3c0df15fbecce36cae531a4a919d544f9ea8e2a) -
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 driverCase 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
(cherry picked and merged from commit: ccbbf6172860e310858169a4e551ebf072c2f1a5)Conflicts:
drivers/net/phy/mdio_bus.c
18 Feb, 2016
3 commits
-
Update the i.MX6DL cpu operating points to comply with the latest
published datasheet. Latest i.MX6DL datasheet of Rev.4, 10/2014
updates the 396MHz setpoint's min voltage from 1.075V to 1.125V, Add a
25mV margin to cover the board IR drop, here use 1.15V for 396MHz to
match datasheet.Signed-off-by: Bai Ping
(cherry picked from commit 13c0324e8a006478c1b2045be6e84587b9857ad8) -
Add cpudile driver support for i.MX6DL.
Signed-off-by: Bai Ping
(cherry picked from commit 72809d405ca73f85c0397fa277ba2481512fe521) -
On i.MX6UL, PGC_CPU_PUPSCR_SW's counter uses IPG/2048 as clock
source, as IPG is at 1.5MHz during low power idle, so the power
up time can be up to 1.3mS which is too long for idle.Since TO1.1, design team re-define the bit[5], if this bit is
set to 1, the clock will be IPG/32, ~22us, enable this function
for TO1.1, the latency value for low power idle needs to be
adjusted accordingly.Signed-off-by: Anson Huang
Signed-off-by: Robin Gong
(cherry picked from commit 1036fbdba0111d7fa21acb810e01907db8997a31)
17 Feb, 2016
6 commits
-
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
(cherry picked from commit 3c755f08de810824250c935d099f3f8c7def4946) -
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
(cherry picked from commit 4d8095a6e860f773f5d2e4d5b62a6f4ba1a92431) -
The periph_pre, periph2_pre, periph_clk2_sel and periph2_clk2_sel
should be registered as 'imx_clk_mux_bus' type.Signed-off-by: Bai Ping
(cherry picked from commit c84612adf2ee69b019ef500fe387ad930a5ed151) -
The cause is EPDC works not stable if DISP mix is enabled.
Signed-off-by: Robby Cai
(cherry picked from commit db5b89bd35d259504da1c15d62f898f1291541e2)
(cherry picked from commit 35f41cd363c076a0f429106e2a043992125c36ac) -
Add power-domains for display domain for imx6sl.
Signed-off-by: Fancy Fang
(cherry picked from commit c7d94716a0fcf711a447c0490a81f69bee0cd8dd) -
Add power-domains for display domain for imx6sx.
Signed-off-by: Fancy Fang
(cherry picked from commit cd1d72f0a0f7effe91ca7f191aadc3efac5d1a1c)
16 Feb, 2016
15 commits
-
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
(cherry picked from commit b46b1ee480ce731165843f43481809b028203dd1) -
Enable HW auto retuning when set SDHCI_CTRL_EXEC_TUNING and clear it
when clear SDHCI_CTRL_TUNED_CLK.Signed-off-by: Dong Aisheng
(cherry picked from commit d07db4fdf967ad8ecebb751f2ea24a578dfb9395) -
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
(cherry picked from commit 89c224b34d3a63797d956969c2fdf4ccb7ff25bf) -
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
(cherry picked from commit cfcd9c369186ddc8c9e25e7c7573f91a4516449d) -
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
(cherry picked from commit 66b534082968214707d54d96ba142bc528a6e1de) -
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
(cherry picked from commit 250899a9ca2fdb31fc8d9d5405ac7b1c86beef44) -
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
(cherry picked from commit a7e3d205da821c880ab62c21f81e2573c0b621b6) -
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
(cherry picked from commit bc1ac009d93e3fe731162d3193108321611ca879) -
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 : [] lr : [] 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
[] (_raw_spin_lock_irqsave) from [] (add_wait_queue+0x20/0x48)
[] (add_wait_queue) from [] (__mmc_claim_host+0x58/0x1b0)
[] (__mmc_claim_host) from [] (sdioh_request_byte+0x1cc/0x2a4 [bcmdhd])
[] (sdioh_request_byte [bcmdhd]) from [] (sdioh_cfg_write+0x20/0x28 [bcmdhd])
[] (sdioh_cfg_write [bcmdhd]) from [] (bcmsdh_cfg_write+0x90/0xdc [bcmdhd])
[] (bcmsdh_cfg_write [bcmdhd]) from [] (dhdsdio_clk_kso_enab+0x38/0x168 [bcmdhd])
[] (dhdsdio_clk_kso_enab [bcmdhd]) from [] (dhdsdio_clk_devsleep_iovar+0xf4/0x5f4 [bcmdhd])
[] (dhdsdio_clk_devsleep_iovar [bcmdhd]) from [] (dhdsdio_bussleep+0x2f8/0x4dc [bcmdhd])
[] (dhdsdio_bussleep [bcmdhd]) from [] (dhd_bus_stop+0x2e8/0x3f0 [bcmdhd])
[] (dhd_bus_stop [bcmdhd]) from [] (dhd_detach+0x2a4/0x438 [bcmdhd])
[] (dhd_detach [bcmdhd]) from [] (dhdsdio_release+0x4c/0x1dc [bcmdhd])
[] (dhdsdio_release [bcmdhd]) from [] (dhdsdio_disconnect+0x3c/0xa0 [bcmdhd])
[] (dhdsdio_disconnect [bcmdhd]) from [] (bcmsdh_remove+0x3c/0x60 [bcmdhd])
[] (bcmsdh_remove [bcmdhd]) from [] (bcmsdh_sdmmc_remove+0x48/0x60 [bcmdhd])
[] (bcmsdh_sdmmc_remove [bcmdhd]) from [] (sdio_bus_remove+0x30/0xf8)
[] (sdio_bus_remove) from [] (__device_release_driver+0x70/0xe4)
[] (__device_release_driver) from [] (device_release_driver+0x1c/0x28)
[] (device_release_driver) from [] (bus_remove_device+0xd8/0x104)
[] (bus_remove_device) from [] (device_del+0x10c/0x210)
[] (device_del) from [] (sdio_remove_func+0x1c/0x28)
[] (sdio_remove_func) from [] (mmc_sdio_remove+0x40/0x70)
[] (mmc_sdio_remove) from [] (mmc_sdio_detect+0x74/0x100)
[] (mmc_sdio_detect) from [] (mmc_rescan+0xb8/0x314)
[] (mmc_rescan) from [] (process_one_work+0x120/0x330)
[] (process_one_work) from [] (worker_thread+0x4c/0x480)
[] (worker_thread) from [] (kthread+0xdc/0xf4)
[] (kthread) from [] (ret_from_fork+0x14/0x2c)
Code: f10c0080 e3a00001 ebe359b1 f594f000 (e1943f9f)Signed-off-by: Dong Aisheng
(cherry picked from commit 8f998ca4d07aa93460ac7769c1f2b3be0c36fc78) -
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 : [] lr : [] 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
[] (kfree) from [] (wiphy_unregister+0x17c/0x204)
[] (wiphy_unregister) from [] (wl_free_wdev+0x40/0x148 [bcmdhd])
[] (wl_free_wdev [bcmdhd]) from [] (dhd_detach+0x280/0x438 [bcmdhd])
[] (dhd_detach [bcmdhd]) from [] (dhdsdio_release+0x4c/0x1dc [bcmdhd])
[] (dhdsdio_release [bcmdhd]) from [] (dhdsdio_disconnect+0x3c/0xa0 [bcmdhd])
[] (dhdsdio_disconnect [bcmdhd]) from [] (bcmsdh_remove+0x3c/0x60 [bcmdhd])
[] (bcmsdh_remove [bcmdhd]) from [] (bcmsdh_sdmmc_remove+0x48/0x60 [bcmdhd])
[] (bcmsdh_sdmmc_remove [bcmdhd]) from [] (sdio_bus_remove+0x30/0xf8)
[] (sdio_bus_remove) from [] (__device_release_driver+0x70/0xe4)
[] (__device_release_driver) from [] (driver_detach+0xac/0xb0)
[] (driver_detach) from [] (bus_remove_driver+0x4c/0xa0)
[] (bus_remove_driver) from [] (dhd_module_cleanup+0x2c/0x3c [bcmdhd])
[] (dhd_module_cleanup [bcmdhd]) from [] (SyS_delete_module+0x174/0x1b8)
[] (SyS_delete_module) from [] (ret_fast_syscall+0x0/0x3c)
Code: e1a03007 e28dd004 e8bd4ff0 eafffd59 (e7f001f2)
---[ end trace 49de84cadd3d030b ]---
Segmentation fault
root@imx6qdlsolo:~#Signed-off-by: Dong Aisheng
(cherry picked from commit ae2685263abef87f6be50e62c9422500a8af2e45) -
Broadcom bcmdhd engineering release for 4.1 kernel
Signed-off-by: Dong Aisheng
(cherry picked from commit 3db5d6ddb1201ab31f63994a1027a4915419783e) -
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 p2Logictally, we should reset the tuning circurt everytime when we
plug in a sd card.Signed-off-by: Haibo Chen
(cherry picked from commit 1f47730e8e30f37ed0289b2900e524db60456ae4) -
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
(cherry picked from commit eaa3b974832ef65d55330156475586bed5647ad7) -
After we put gadget disconnect and connect in id switch handling,
update power lost work accordingly.Acked-by: Peter Chen
Signed-off-by: Li 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
Signed-off-by: Li Jun