02 Mar, 2016

2 commits

  • This reverts commit 829b6962f7e3cfc06f7c5c26269fd47ad48cf503.

    Revert this change as it causes a sysfs path to change and therefore
    introduces and ABI regression. More precisely Android's vold is not being
    able to access /sys/module/mmcblk/parameters/perdev_minors any more, since
    the path becomes changed to: "/sys/module/mmc_block/..."

    Fixes: 829b6962f7e3 ("mmc: block: don't use parameter prefix if built as
    module")
    Reported-by: John Stultz
    Cc: Andy Shevchenko
    Signed-off-by: Ulf Hansson

    (cherry picked from commit a5ebb87db84392edfd3142c3a6a78431d820a789)

    Ulf Hansson
     
  • There have two same extended enet dts file to enable fec2 port, so
    remove the redundant enet dts file.

    The issue is caused by the commit 370426c2a918 that was cherry picked
    after commit b74c6b9c7fdc.

    Signed-off-by: Fugang Duan

    Fugang Duan
     

01 Mar, 2016

5 commits

  • MMC core pm_notify will re-detect card after system suspend/resume,
    regardless of post-cd claim.
    Since in current MMC implement, non-removeable card only detects once,
    this will break post card detect which happens next.
    e.g. when we suspend/resume system first, then load Broadcom wifi module,
    we will get below dump:

    root@imx6qdlsolo:/mnt/nfs/vte_IMX6QP-Sabre-SD# modprobe bcmdhd firmware_path=/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin nvram_path=/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.SDIO.cal
    dhd_module_init in
    Power-up adapter 'DHD generic adapter'
    wifi_platform_bus_enumerate device present 1
    failed to power up DHD generic adapter, 3 retry left
    wifi_platform_bus_enumerate device present 0
    -----------[ cut here ]-----------
    Kernel BUG at 80513170 [verbose debug info unavailable]
    Internal error: Oops - BUG: 0 1 PREEMPT SMP ARM
    Modules linked in: bcmdhd ov5642_camera ov5640_camera_mipi_int ov5640_camera_int mxc_v4l2_capture mxc_dcic ipu_bg_overlay_sdc ipu_still v4l2_int_device ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc
    CPU: 1 PID: 1487 Comm: modprobe Not tainted 4.1.15-1.0.0+g54cf6a2 #1
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    task: a881e3c0 ti: a9152000 task.ti: a9152000
    PC is at mmc_sdio_remove+0x7c/0x80
    LR is at mmc_sdio_force_remove+0xc/0x34
    pc : [] lr : [] psr: 60030013
    sp : a9153d28 ip : 00000000 fp : 00000000
    r10: 00000000 r9 : 00000000 r8 : 7f0f76e0
    r7 : a9153d58 r6 : 00000000 r5 : 00000000 r4 : a83f1800
    r3 : 00000000 r2 : 00000000 r1 : 809c02f4 r0 : a83f1800
    Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    Control: 10c53c7d Table: 38d7804a DAC: 00000015
    Process modprobe (pid: 1487, stack limit = 0xa9152210)
    Stack: (0xa9153d28 to 0xa9154000)
    3d20: 00000000 7f0c569c a9ffe440 00000003 00000000 7f0c58f4
    3d40: a81942c0 8032e33c a8195960 7f0fbf68 00020002 00000000 a9153d58 a9153d58
    3d60: fffffdfb 80bc0db4 a81af810 7f0f9518 fffffdfb 00000008 00000000 5624ce5c
    3d80: 00000124 80381140 80bc0db4 a81af810 7f0f9518 00000000 00000008 8037f9dc
    3da0: a81af810 7f0f9518 a81af844 80b288b0 00000000 8037fbec 00000000 7f0f9518
    3dc0: 8037fb60 8037e068 a8025c5c a818fa34 7f0f9518 a20ff280 00000000 8037f16c
    3de0: 7f0f0330 a9ffe440 00000000 7f0f9518 a9ffe440 00000000 80bb18f4 803801ec
    3e00: 7f0fbf68 a9ffe440 00000000 7f0c5fdc 80b01720 80b01720 a9ffe440 7f11f000
    3e20: 00000000 00000001 5624ce5c 80009730 abc7b120 800e316c 000000c8 a9209a00
    3e40: 8040003f 00000001 00010000 800b0dfc 000000c8 8040003f abc7dc60 80afc2b0
    3e60: abc75880 80afc260 a8001f00 80afe6c0 00000124 800e4944 7f0f9718 00000001
    3e80: 7f0f9718 00000001 a9ffeb00 7f0f9718 a9db31c0 8078e47c 7f0f9718 a9db31c0
    3ea0: a9153f58 00000001 a9db31c8 80094094 7f0f9724 00007fff 800910d4 00000000
    3ec0: 00000000 7f0f9760 00000000 7f0f9860 c0fce8f4 7f0f9724 00000000 8079aa0c
    3ee0: c0f07000 000c7944 00b6817a 00000000 0000000e 00000000 00000000 00000000
    3f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    3f20: 00000000 00000000 00000000 00000000 00000640 00000000 00000003 01608348
    3f40: 0000017b 8000f604 a9152000 00000000 01608270 800944f8 c0f07000 000c7944
    3f60: c0fce28c c0f83439 c0f99248 0007aff8 0008f968 00000000 00000000 00000000
    3f80: 00000029 0000002a 00000020 00000024 00000015 00000000 01608348 00000073
    3fa0: 00000000 8000f480 01608348 00000073 00000003 01608348 00000000 00000000
    3fc0: 01608348 00000073 00000000 0000017b 01608218 00000000 00000073 01608270
    3fe0: 7e9ab8c0 7e9ab8b0 0001f2c0 76eac340 600d0010 00000003 00000000 00000000
    [] (mmc_sdio_remove) from [] (dhd_wifi_platform_load+0x180/0x39c [bcmdhd])
    [] (dhd_wifi_platform_load [bcmdhd]) from [] (platform_drv_probe+0x44/0xac)
    [] (platform_drv_probe) from [] (driver_probe_device+0x174/0x2b4)
    [] (driver_probe_device) from [] (__driver_attach+0x8c/0x90)
    [] (__driver_attach) from [] (bus_for_each_dev+0x68/0x9c)
    [] (bus_for_each_dev) from [] (bus_add_driver+0x148/0x1f0)
    [] (bus_add_driver) from [] (driver_register+0x78/0xf8)
    [] (driver_register) from [] (dhd_wifi_platform_register_drv+0x1bc/0x208 [bcmdhd])
    [] (dhd_wifi_platform_register_drv [bcmdhd]) from [] (do_one_initcall+0x8c/0x1d4)
    [] (do_one_initcall) from [] (do_init_module+0x5c/0x1a8)
    [] (do_init_module) from [] (load_module+0x1ba8/0x1e50)
    [] (load_module) from [] (SyS_finit_module+0x80/0x90)
    [] (SyS_finit_module) from [] (ret_fast_syscall+0x0/0x3c)

    Signed-off-by: Dong Aisheng

    Dong Aisheng
     
  • With igore pm notify feature, MMC core will not re-detect card
    after system suspend/resume. This is needed for some special cards
    like Broadcom WiFi which can't work propertly on card re-detect
    after system resume.

    Signed-off-by: Dong Aisheng

    Dong Aisheng
     
  • The root cause of these failures is related with a hardware
    ERRATA (onComp2 flop power-up value is 1 instead of 0).
    Preview patch c086763024a8117beaa8ea27ee88eaeafd03ef3e in issue
    track #1105 is not a fully fix, here implement a DummyDraw to
    workaround the hardware ERRATA.

    Signed-off-by: Richard Liu
    (cherry picked from commit cc78790048a81de6c218c09766277ef3be34ffd0)

    Richard Liu
     
  • restore the pinmux when resume from LPSR mode in suspend.

    Signed-off-by: Robby Cai
    (cherry picked from commit 0462eb2cb8b64508260d9c6daa9f163d68ea6be0)

    Conflicts:
    drivers/video/mxsfb.c

    Robby Cai
     
  • The pwm1's pin belongs to lpsr iomux. So this should
    be corrected.

    Signed-off-by: Fancy Fang
    (cherry picked from commit 94f87fc66f354dea8537d360732612ac5d6d65e6)

    Fancy Fang
     

29 Feb, 2016

1 commit


26 Feb, 2016

3 commits


25 Feb, 2016

1 commit


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

    Anson Huang
     

23 Feb, 2016

1 commit


22 Feb, 2016

3 commits


21 Feb, 2016

1 commit


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

    Troy Kisky
     
  • On an overrun, the other flags are not
    valid, so don't check them.

    Also, don't pass bad frames up the stack.

    Signed-off-by: Troy Kisky
    Signed-off-by: David S. Miller

    Troy Kisky
     
  • 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

    Troy Kisky
     
  • 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)

    Robin Gong
     
  • In .mdio_bus_phy_may_suspend(), there check netdev is NULL to judge to set
    phy to suspend status.

    netdev is NULL has three cases:
    - phy is not found
    - phy is found, match to general phy driver
    - phy is found, match to specifical phy driver

    Case 1: phy is not found, cannot communicate by MDIO bus.
    Case 2: phy is found:
    if phy dev driver probe/bind err, netdev is not __open__ status,
    mdio bus is unregistered.
    if phy is detached, phy had entered suspended status.
    Case 3: phy is found, phy is detached, phy had entered suspended status.

    So, in here, it shouldn't set phy to suspend by calling mdio bus.

    In i.MX6UL evk/arm2 board, if down the ethx interface and do suspend/resume,
    system will hang. Because after ethx down all clocks are gated off, for general
    phy driver, unbind the phy device, for specifical phy driver, no unbind the
    device, and the original driver call mdio bus to set phy to suspend during
    system suspend, so system will hang since there have mdio register access.
    The patch can fix it.

    Signed-off-by: Fugang Duan
    (cherry picked and merged from commit: ccbbf6172860e310858169a4e551ebf072c2f1a5)

    Conflicts:
    drivers/net/phy/mdio_bus.c

    Fugang Duan
     

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)

    Bai Ping
     
  • Add cpudile driver support for i.MX6DL.

    Signed-off-by: Bai Ping
    (cherry picked from commit 72809d405ca73f85c0397fa277ba2481512fe521)

    Bai Ping
     
  • 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)

    Anson Huang
     

17 Feb, 2016

6 commits


16 Feb, 2016

8 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)

    Dong Aisheng
     
  • Enable HW auto retuning when set SDHCI_CTRL_EXEC_TUNING and clear it
    when clear SDHCI_CTRL_TUNED_CLK.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit d07db4fdf967ad8ecebb751f2ea24a578dfb9395)

    Dong Aisheng
     
  • If HW supports SDHCI_TUNING_MODE_3 which is auto retuning, we won't
    retune during runtime suspend and resume, instead we use Re-tuning
    Request signaled via SDHCI_INT_RETUNE interrupt to do retuning and
    hw auto retuning during data transfer to guarantee the signal sample
    window correction.

    This can avoid a mass of repeatly retuning during small file system
    data access and improve the performance.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit 89c224b34d3a63797d956969c2fdf4ccb7ff25bf)

    Dong Aisheng
     
  • We see CRCs with SLV_DLY_TARGET of 7 during driver runtime suspend/resume
    if disable sw auto retuning. Back to SLV_DLY_TARGET of 1 which is used
    in 3.14 kernel and don't have such issue.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit cfcd9c369186ddc8c9e25e7c7573f91a4516449d)

    Dong Aisheng
     
  • When enable WIFi and connected with AP, the system is unable to suspend.
    root@imx6qdlsolo:~# echo standby > /sys/power/state
    PM: Syncing filesystems ... done.
    Freezing user space processes ... (elapsed 0.001 seconds) done.
    Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
    dhdsdio_isr: Enter
    dhdsdio_isr: Enter
    dhdsdio_isr: disable SDIO interrupts
    Calling dhdsdio_dpc() from dhdsdio_isr
    dhdsdio_dpc: Enter
    dhdsdio_bussleep: request WAKE (currently SLEEP)

    (Keypress still response here.... )

    It's caused by Broadcom WiFi driver will keep handling SDIO irq even after
    the driver is already suspended.
    This weird behavior will block the MMC host suspend during its irq
    synchronize operation in free_irq(), then the system suspend is blocked
    too and hanged.

    Add SDHCI_QUIRK2_SDIO_IRQ_THREAD for BCM WiFi to use kernel thread
    to process sdio interrupts which won't block system suspend and process
    freeze operation.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit 66b534082968214707d54d96ba142bc528a6e1de)

    Dong Aisheng
     
  • SDIO cards may need clock to send the card interrupt to host.
    Thus, we get runtime pm when sdio irq is enabled to prevent the clock
    resource is released and put it when sdio irq is disabled.

    This patch can allow sdio irq disable (mmc_signal_sdio_irq()) to be
    called in interrupt context due to sdhci_runtime_pm_put() is atomic
    safe.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit 250899a9ca2fdb31fc8d9d5405ac7b1c86beef44)

    Dong Aisheng
     
  • Some special SDIO devices like Broadcom WiFi driver will keep handling
    SDIO irq even after the driver is already suspended.
    This weird behavior will block the MMC host suspend during its irq
    synchronize operation in free_irq(), then the system suspend is blocked
    too and hanged.

    We add back sdio thread irq support for such WiFi driver to handle
    SDIO irqs since the sdio thread is kernel thread which does not
    block the process freeze operation during suspend.

    Signed-off-by: Dong Aisheng
    (cherry picked from commit a7e3d205da821c880ab62c21f81e2573c0b621b6)

    Dong Aisheng
     
  • 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)

    Dong Aisheng