24 May, 2016

1 commit


19 May, 2016

1 commit

  • The head list may be corrupted when two requests from
    the same 'pxp_chan' are issued sequentially. So change
    the issue_pending function to strictly serialized the
    requests to avoid this kind of issue.

    Signed-off-by: Fancy Fang
    (cherry picked from commit 3ed71dcdd8ceeb3725399053f31c1930d2e7a08d)

    Fancy Fang
     

16 May, 2016

1 commit


11 May, 2016

3 commits

  • Add clk_settle variable to compliance more mipi sensor.
    Mipi controller should setting by followed value
    according mipi sensor support D-phy version.

    Slave Clock Lane Control Register for TCLK-SETTLE.
    2'b0x = 110 ns to 280ns (v0.87 to v1.00)
    2'b10 = 150 ns to 430ns (v0.83 to v0.86)
    2'b11 = 60 ns to 140ns (v0.82)

    Signed-off-by: Sandor Yu
    (cherry picked from commit 928103ba7d28a7dbddf950892cb9d49ec2b192d3)

    Sandor Yu
     
  • Combine csi image setting function for 32-bit,16-bit,8-bit format.
    For parallel 8-bit sensor input, when bit per pixel is 16,
    csi image width should been doubled.
    But for mipi input, the csi image width and height should align
    with mipi whatever data width.

    Signed-off-by: Sandor Yu
    (cherry picked from commit caa8725e713691b42aa112a6e51f12e7d595f139)

    Sandor Yu
     
  • -Support no power and reset pins platform.
    -Remove specific power and reset pin setting for ov5640 daughter card.
    -Put sensor in software power down state when streamoff.
    -Remove unsupported video modes, keep 640x480, 720x480, 720p, 1080p 30fps
    video modes in driver.

    Signed-off-by: Sandor Yu
    (cherry picked from commit 6a6c44e2406dcd9481e3103ca2710a319265c52a)

    Sandor Yu
     

29 Apr, 2016

2 commits


14 Apr, 2016

1 commit

  • When CONFIG_MMC=m, compile error shows up

    ERROR: "of_alias_max_index" [drivers/mmc/core/mmc_core.ko] undefined!
    ERROR: "mmc_get_reserved_index" [drivers/mmc/card/mmc_block.ko] undefined!
    ERROR: "mmc_first_nonreserved_index" [drivers/mmc/card/mmc_block.ko] undefined!
    make[1]: *** [__modpost] Error 1
    make: *** [modules] Error 2
    make: *** Waiting for unfinished jobs....

    This patch export the upper three symbol for module runtime load.

    Signed-off-by: Haibo Chen

    Haibo Chen
     

12 Apr, 2016

1 commit

  • On i.MX6UL EVK board, we use a external GPIO DC regulator to control
    the VDD_ARM_SOC_IN voltage, if default voltage is 1.4V when the system
    is bootup. Per design team, when the highest setpoint freq is not
    bigger than 528MHz, we can decrease this regulator voltage to 1.3V.
    On i.MX6UL TO1.1, we add a 700MHz setpoint. When the highest setpoint
    freq is 700MHz, the DC regulator should be at 1.4V to to cover the IR
    drop.

    Signed-off-by: Bai Ping
    (cherry picked from commit 0e3293e53f4bd5b122abc250b610dd61850e3ce9)

    Bai Ping
     

31 Mar, 2016

1 commit

  • when do vte test it meets follow dump in small probability.
    Add against-0 check to resovle this.

    $ v4l_emma.sh 1 1
    $ v4l_emma.sh 1 9

    ------------[ cut here ]------------
    : /dev/video1 Set PARM sucessfulWARNING: CPU: 0 PID: 1123 at /home/bamboo/build/4.1.X-1.0.0_ga/fsl-
    imx-fb/temp_build_dir/build_fsl-imx-fb/tmp/work-shared/imx6qdlsolo/kernel-source/mm/page_alloc.c:266
    5 __alloc_pages_nodemask+0x3c8/0x894()
    ly
    v4l_capture_testapp 0 TINModules linked in:FO : /dev/video1 input formatti mx6s_captureng pass
    v4l_capture_testapp 0 ov5640_camera TINFO : PRP_ENC_ON_D gpRGBcon evbugv_buf malloc pass!

    CPU: 0 PID: 1123 Comm: v4l2_capture_em Not tainted 4.1.8-1.0.0+g87e6c2f #1
    Hardware name: Freescale i.MX6 Ultralite (Device Tree)
    [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [] (show_stack) from [] (dump_stack+0x84/0xc4)
    [] (dump_stack) from [] (warn_slowpath_common+0x80/0xb0)
    [] (warn_slowpath_common) from [] (warn_slowpath_null+0x1c/0x24)
    [] (warn_slowpath_null) from [] (__alloc_pages_nodemask+0x3c8/0x894)
    [] (__alloc_pages_nodemask) from [] (__dma_alloc_buffer.isra.3+0x2c/0x84)
    [] (__dma_alloc_buffer.isra.3) from [] (__alloc_remap_buffer.isra.6+0x1c/0x8c)
    [] (__alloc_remap_buffer.isra.6) from [] (__dma_alloc+0x1fc/0x228)
    [] (__dma_alloc) from [] (arm_dma_alloc+0x8c/0xa0)
    [] (arm_dma_alloc) from [] (vb2_dc_alloc+0x68/0x100)
    [] (vb2_dc_alloc) from [] (__vb2_queue_alloc+0x134/0x4d0)
    [] (__vb2_queue_alloc) from [] (__reqbufs.isra.17+0x1a8/0x304)
    [] (__reqbufs.isra.17) from [] (__video_do_ioctl+0x2b0/0x324)
    [] (__video_do_ioctl) from [] (video_usercopy+0x1b8/0x480)
    [] (video_usercopy) from [] (v4l2_ioctl+0x118/0x150)
    [] (v4l2_ioctl) from [] (do_vfs_ioctl+0x3e8/0x608)
    [] (do_vfs_ioctl) from [] (SyS_ioctl+0x34/0x5c)
    [] (SyS_ioctl) from [] (ret_fast_syscall+0x0/0x3c)
    ---[ end trace 55ed68f89eca4805 ]---
    mx6s-csi 21c4000.csi: dma_alloc_coherent of size 0 failed

    Signed-off-by: Robby Cai
    (cherry picked from commit 2c1fa9347a50e05c79b76de35f84192af796f677)

    Robby Cai
     

25 Mar, 2016

3 commits


17 Mar, 2016

2 commits

  • In chipidea IP RTL, there is a very limited design for siTD, the detail
    like below:
    There is no Max Packet Size at siTD, so it uses one constant for both
    Max Packet Size for packet and the packet size for the last transaction
    when considering schedule.
    If the ttctrl.ttha does not match against Hub Address field in siTD,
    this constant is 188 bytes, else this constant is 1023 bytes.

    If the ttctrl.ttha is non-zero value, RTL will use 188 as this constant,
    so it will lose the data if the packet size is larger than 188 bytes, eg,
    if we playback a wav which format is 48khz, 16 bits, 2 channels, the
    packet size will be 192bytes, but the controller will only send 188 bytes
    for this packet, the noise will be heared using USB audio card.
    The use case is single transaction, but higher frame rate.

    If the ttctr.ttha is zero value, we can send 1023 bytes within one
    transaction, but the controller will not accept the coming tranaction
    if it considers the schedule time is less than 1023 bytes. So the
    limitation is we can't schedule as many as transactions within frame.
    If the total bytes is already 256 bytes for previous transactions within
    frame, it can't accept another transaction. The use case is multiple
    transactions, but less frame rate.

    Signed-off-by: Peter Chen
    Signed-off-by: Peter Chen
    (cherry picked from commit 5e07ea7f812f2216263da2acd4f5e677de97fd62)

    Peter Chen
     
  • This reverts commit e765bfb73ff7.

    In the most of cases, we only use one transaction per frame and the
    frame rate may be high, If the platforms want to support multiple
    transactions but less frame rate cases like [1] and [2], it can set
    "non-zero-ttctrl-ttha" at dts.

    [1] http://www.spinics.net/lists/linux-usb/msg123125.html
    [2] http://www.spinics.net/lists/linux-usb/msg118679.html

    Signed-off-by: Peter Chen
    Signed-off-by: Peter Chen
    (cherry picked from commit 9e1a14ec6dfe34ae92e9754bbb1a5c470acbcdf1)

    Peter Chen
     

12 Mar, 2016

1 commit


09 Mar, 2016

1 commit


04 Mar, 2016

1 commit

  • For MX7D LPSR mode, the controller will lost power and got the
    configuration state lost after system resume back.
    So we need to set pinctrl state again and re-start chip to do
    re-configuration after resume.

    For wakeup case, we also need re-configure the chip in case the state
    got lost. For interface is not up before suspend case, we don't need
    re-configure as it will be configured by user later by interface up.

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

    Dong Aisheng
     

02 Mar, 2016

3 commits

  • Do sanity check before calling mmc_force_remove.
    BCM WiFi driver will call wifi_card_detect(false) if probe fails
    due to no card exists on board.

    This is needed for Android BSP since Android has builtin WiFi drver
    and some boards may not have WiFi cards pluged.
    Then the kernel dump likes follows may appear.
    ----------------------------------------------
    dhd_module_init in
    Power-up adapter 'DHD generic adapter'
    wifi_platform_bus_enumerate device present 1
    mmc1: mmc_rescan_try_freq: trying to init card at 400000 Hz
    mmc1: mmc_rescan_try_freq: trying to init card at 300000 Hz
    mmc1: mmc_rescan_try_freq: trying to init card at 200000 Hz
    mmc1: mmc_rescan_try_freq: trying to init card at 100000 Hz
    failed to power up DHD generic adapter, 3 retry left
    wifi_platform_bus_enumerate device present 0
    ------------[ cut here ]------------
    Kernel BUG at 8051247c [verbose debug info unavailable]
    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
    Modules linked in: bcmdhd(+) ov5642_camera ov5640_camera_mipi_int ov5640_camera_int mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still v4l2_int_device mxc_dcic ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc evbug
    CPU: 3 PID: 1071 Comm: modprobe Not tainted 4.1.15-01591-g1393481 #1504
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    task: a99be880 ti: a8dd8000 task.ti: a8dd8000
    PC is at mmc_sdio_remove+0x70/0x74
    LR is at mmc_sdio_force_remove+0xc/0x34
    pc : [] lr : [] psr: 60070013
    sp : a8dd9d00 ip : 00000000 fp : 00000000
    r10: 7f100c98 r9 : 00000000 r8 : 7f0fc410
    r7 : a8dd9d48 r6 : a83b1800 r5 : 00000000 r4 : a83b1800
    r3 : 00000000 r2 : 00000000 r1 : 809b50c8 r0 : 00000000
    Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    Control: 10c53c7d Table: 38cdc04a DAC: 00000015
    Process modprobe (pid: 1071, stack limit = 0xa8dd8210)
    Stack: (0xa8dd9d00 to 0xa8dda000)
    9d00: 00000000 a83b1800 00000000 00000000 a8dd9d48 8051248c 00000000 7f0ca6cc
    9d20: a99be880 a90e6280 00000003 7f0ca920 fffffdfb a81af810 80bb570c 00000000
    9d40: 00020002 00000000 a8dd9d48 a8dd9d48 00000000 7f100c98 7f100c98 a90e6280
    9d60: fffffdfb 00000008 00000000 7f0fe490 56f19f1c 7f0cabe4 80bb6d74 a81af810
    9d80: 7f0fe248 8037f864 8037f820 80bb6d74 a81af810 00000000 7f0fe248 8037e118
    9da0: a81af810 7f0fe248 a81af844 80b1e8b0 00000000 8037e328 00000000 7f0fe248
    9dc0: 8037e29c 8037c660 a8025c5c a8187a34 7f0fe248 a9547780 00000000 8037d8b4
    9de0: 7f0f5028 7f0fe248 00000000 7f0fe248 00000000 a90e6280 80ba78f4 8037e92c
    9e00: 00000000 7f100c98 00000000 7f0cb02c 00000000 80af7720 80af7720 a90e6280
    9e20: 7f124000 00000000 00000001 80009730 00000000 8040003b abc7db80 800e1c68
    9e40: 00000000 a935c340 8040003a abc83180 ab757000 80af257c 00000001 8040003a
    9e60: 00000001 00000001 a8dd9e7c 80af2260 a8001f00 80af46c0 56f19f1c 800e32a0
    9e80: 7f0fe448 a90e6108 a90e6240 7f0fe448 a90e6100 7f0fe490 56f19f1c 8078b2b0
    9ea0: 7f0fe448 a90e6100 a8dd9f58 a90e6108 00000001 80092dd8 7f0fe454 00007fff
    9ec0: 800902a8 a8928900 7f0fe490 00000000 7f0fe590 000015fa c1754bfc 7f0fe590
    9ee0: c16d8000 000c823c 05de516a 00000000 0000000e 00000000 00000000 00000000
    9f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9f20: 00000000 00000000 00000000 00000000 00000648 00000000 00000003 01111348
    9f40: 0000017b 8000f644 a8dd8000 00000000 00000073 8009352c c16d8000 000c823c
    9f60: c175456c c17543a5 c17957ec 0007ad30 0008f7c0 00000000 00000000 00000000
    9f80: 0000002a 0000002b 0000001f 00000023 00000014 00000000 01111348 00000000
    9fa0: 00000000 8000f4c0 01111348 00000000 00000003 01111348 00000000 00040000
    9fc0: 01111348 00000000 00000000 0000017b 00000000 01111218 00000073 00000073
    9fe0: 7ec5d950 7ec5d940 0001f0dc 76ecf610 600d0010 00000003 00000000 00000000
    [] (mmc_sdio_remove) from [] (mmc_sdio_force_remove+0xc/0x34)
    [] (mmc_sdio_force_remove) from [] (wifi_platform_bus_enumerate+0x54/0x90 [bcmdhd])
    [] (wifi_platform_bus_enumerate [bcmdhd]) from [] (dhd_wifi_platform_load+0x17c/0x39c [bcmdhd])
    [] (dhd_wifi_platform_load [bcmdhd]) from [] (wifi_plat_dev_drv_probe+0xa4/0x124 [bcmdhd])
    [] (wifi_plat_dev_drv_probe [bcmdhd]) from [] (platform_drv_probe+0x44/0xa4)
    [] (platform_drv_probe) from [] (driver_probe_device+0x174/0x2b4)
    [] (driver_probe_device) from [] (__driver_attach+0x8c/0x90)
    [] (__driver_attach) from [] (bus_for_each_dev+0x6c/0xa0)
    [] (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+0x1cc/0x20c [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+0x177c/0x1d4c)
    [] (load_module) from [] (SyS_finit_module+0x64/0x74)
    [] (SyS_finit_module) from [] (ret_fast_syscall+0x0/0x3c)
    Code: e3a03000 e58631f8 e5863228 e8bd80f8 (e7f001f2)
    ---[ end trace 6f28ec270544e09e ]---
    Segmentation fault
    root@imx6qdlsolo:~#

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

    Dong Aisheng
     
  • In order to save power consumption, turn off pcie clks/regulators
    if there is no pcie link at all.
    Summit this patch, because of that MLK-12278
    doesn't turn off the clks/regulators actually.

    Signed-off-by: Richard Zhu
    (cherry picked from commit 841b5c2c6890deebda63ddc119d201b700302262)

    Richard Zhu
     
  • 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
     

01 Mar, 2016

3 commits


26 Feb, 2016

2 commits


22 Feb, 2016

1 commit


19 Feb, 2016

4 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
     
  • 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
     

17 Feb, 2016

2 commits


16 Feb, 2016

6 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