19 Jun, 2017

1 commit


16 Jun, 2017

3 commits

  • iMX7D Sabre SD board implement the GPIO expander
    connected to a peripheral bus.
    Probe deferral would be triggered when try to request
    the expanded GPIO at the first time.
    pcie ep can't be probed properly at the second probe,
    because of the duplicated registration of the sysfs.

    Change the registeration point of the sysfs to fix
    this issue.

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

    Richard Zhu
     
  • i.MX7ULP QSPI dtb was used to update the M4 images, it should not able
    to boot the kernel even without the M4 image in QSPI.

    Also fixed the typo in dtsi to correct the QSPI register address
    mapping range.

    Signed-off-by: Han Xu
    (cherry picked from commit 6fb558d7e38a4f60944a791d4ff12fd5a5f039f5)

    Han Xu
     
  • Fix build error when SOC_IMX_PCM_DMA is not enabled
    error: expected identifier or ‘(’ before ‘{’ token})

    Signed-off-by: Adrian Alonso
    (cherry picked from commit 67ee27e3c97c8deb851ca61fab0e513009b93dbe)

    Adrian Alonso
     

15 Jun, 2017

7 commits


14 Jun, 2017

14 commits

  • IMX_SOC_IMX7 is referenced in makefiles and kconfig but it is not
    defined, so define it and select it for both IMX7D and IMX7ULP.

    Fixes the following build errors:

    arch/arm/mach-imx/built-in.o: In function `update_lpddr2_freq_smp':
    platform-imx-dma.c:(.text+0xf7c): undefined reference to `imx_scu_base'
    platform-imx-dma.c:(text+0xf88): undefined reference to `imx_scu_base'
    arch/arm/mach-imx/built-in.o: In function `update_ddr_freq_imx_smp':
    platform-imx-dma.c:(text+0x330c): undefined reference to `imx_scu_base'
    platform-imx-dma.c:(text+0x3318): undefined reference to `imx_scu_base'
    Makefile:969: recipe for target 'vmlinux' failed
    make: *** [vmlinux] Error 1

    Signed-off-by: Octavian Purdila
    Reviewed-by: Leonard Crestez

    Octavian Purdila
     
  • Fixes the following build errors:

    ERROR: "mipi_csi2_reset" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_set_datatype" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_enable" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_dphy_status" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_disable" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_set_lanes" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_get_status" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_get_info" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!
    ERROR: "mipi_csi2_get_error1" [drivers/media/platform/mxc/capture/ov5640_camera_mipi_int.ko] undefined!

    Signed-off-by: Octavian Purdila

    Octavian Purdila
     
  • When epdc driver use pxp, it didn't fill stride value of s0_parm, so it leads to
    epdc can display picture normally.

    So fill it in this patch.

    Signed-off-by: Guoniu.Zhou

    Guoniu.Zhou
     
  • There are boards without gpr setting, so it's better not to fail
    in such cases and only print a warning.

    This is related to commit ce72b6d2668049 ("MLK-13574-1: ASoC: imx-wm8960:
    remove the gpr dependency").

    Signed-off-by: Daniel Baluta
    (cherry picked from commit 882c373c74aecd27aad64062d4cceb89a4371c2e)

    Daniel Baluta
     
  • The AIPSx address space of i.MX7ULP need to be mapped as SZ_1M block
    in iRAM tlb for suspend code use. If we use ioremap to map these
    address region into kernel space, we can't make sure that the returned
    virtual address is 1M alignment. So we can map this address regions
    as static, then if we use the ioremap to map these memory regions, it will
    always return the virtual address of static mapping. So we can make sure
    the virtual address is 1M aligned.

    Signed-off-by: Bai Ping
    (cherry picked from commit 486041dc2fed38adc82ad93bd2dcc155c219ef01)

    Bai Ping
     
  • This patch uses the resource-managed extcon API for extcon_register_notifier()
    and replaces the deprecated extcon API as following:
    - extcon_get_cable_state_() -> extcon_get_state()

    Signed-off-by: Chanwoo Choi
    Signed-off-by: Peter Chen
    (cherry picked from commit 3f991aa0b665c8e9bb702421a4e5005c3588fb62)

    Chanwoo Choi
     
  • We must check for ID/VBUS changes during resume irrespective
    of whether our device wakeup is enabled or not.

    Without this we seem to be missing ID/VBUS events after
    system suspend/resume.

    Signed-off-by: Roger Quadros
    Signed-off-by: Chanwoo Choi
    (cherry picked from commit 8680b4d1933fbe3349d51a4e1fd4513b12abffed)

    Roger Quadros
     
  • Whether the USB port as a wakeup source should be determined by user,
    but not enabled by default.

    Signed-off-by: Peter Chen
    Signed-off-by: Chanwoo Choi
    (cherry picked from commit 98fd079297dd274c15c926a337253675573c5832)

    Peter Chen
     
  • At some systems, the pinctrl setting will be lost or needs to
    set as "sleep" state to save power consumption. So, we need to
    configure pinctrl as "sleep" state when system enters suspend,
    and as "default" state after system resumes. In this way, the
    pinctrl value can be recovered as "default" state after resuming.

    Signed-off-by: Peter Chen
    Signed-off-by: Chanwoo Choi
    (cherry picked from commit bcb7440e76a96c8a244bd683142a38f7d5cecb93)

    Peter Chen
     
  • Driver can now work with both ID and VBUS pins or either one of
    them.

    There can be the following 3 cases

    1) Both ID and VBUS GPIOs are available:

    ID = LOW -> USB_HOST active, USB inactive
    ID = HIGH -> USB_HOST inactive, USB state is same as VBUS.

    2) Only ID GPIO is available:

    ID = LOW -> USB_HOST active, USB inactive
    ID = HIGH -> USB_HOST inactive, USB active

    3) Only VBUS GPIO is available:

    VBUS = LOW -> USB_HOST inactive, USB inactive
    VBUS = HIGH -> USB_HOST inactive, USB active

    Signed-off-by: Roger Quadros
    Reviewed-by: Peter Chen
    Signed-off-by: Chanwoo Choi
    (cherry picked from commit 541332a13b1ded42097ba96c52c7bc70931e528c)

    Roger Quadros
     
  • commit 916e43e1d6fb ("MLK-13570-3 usb: chipidea: core: change extcon
    usage for imx_4.1.y") is directly cherry-picked from 4.1.y, but which
    is not valid anymore on 4.y kernel, so revert most part and only keep
    the irq check after resume.

    Reviewed-by: Peter Chen
    Signed-off-by: Li Jun
    (cherry picked from commit 9e8e32042df9e0a43574cb222070ec2f1051007d)

    Li Jun
     
  • This reverts commit 4c7d332e3316 ("MLK-13638-3 extcon: usb-gpio: add
    pinctrl operation during system PM"). We will use the upstream version.

    Reviewed-by: Peter Chen
    Signed-off-by: Li Jun
    (cherry picked from commit bf584fcb7294cac67c67b552d7b347b6e59fe243)

    Li Jun
     
  • This reverts commit 358776f8c5d8 ("MLK-13912-1 extcon: ext-usb-gpio: do not
    enable wakeup by default"), we will use the upstream patch version.

    Reviewed-by: Peter Chen
    Signed-off-by: Li Jun
    (cherry picked from commit 72c6b1977e334c5fde2f394ce276ab42df76575f)

    Li Jun
     
  • The change introduced by commit 00c174b3b28a
    ("MLK-14525: ASoC: fsl_esai: channel swap issue in 3 channels or 5 channels")
    is no longer valid after improvements added with commit c35bc6ae5c48
    ("MLK-14778: ASoC: fsl: imx-cs42888: Improve support for odd number of channels")

    Because we use TDM instead of I2S for 3,5 and 7 channels we must
    initialize ESAI with the actual number of channels. There is no need
    to count the additional channel required when I2S was used.

    Signed-off-by: Mihai Serban
    Reviewed-by: Daniel Baluta
    (cherry picked from commit 85a9aa0a73f80968445d8929f5ae9acb1972c8fe)

    Mihai Serban
     

09 Jun, 2017

15 commits

  • One codebase to support all graphics standards for imx chips,
    Optimized software pipeline for modern GPU benchmarks,
    Integrated more bug-fixings for critical gpu issues.

    Source repo: gpu-viv6
    Source branch: origin/imx_6.2.2
    Source commit: 8826fbc75269e7d26b0bf9c5e9a2b0110b295f9c

    Signed-off-by: Xianzhong

    Xianzhong
     
  • When the tick is stopped and we reach the dynticks evaluation code on
    IRQ exit, we perform a soft tick restart if we observe an expired timer
    from there. It means we program the nearest possible tick but we stay in
    dynticks mode (ts->tick_stopped = 1) because we may need to stop the tick
    again after that expired timer is handled.

    Now this solution works most of the time but if we suffer an IRQ storm
    and those interrupts trigger faster than the hardware clockevents min
    delay, our tick won't fire until that IRQ storm is finished.

    Here is the problem: on IRQ exit we reprog the timer to at least
    NOW() + min_clockevents_delay. Another IRQ fires before the tick so we
    reschedule again to NOW() + min_clockevents_delay, etc... The tick
    is eternally rescheduled min_clockevents_delay ahead.

    A solution is to simply remove this soft tick restart. After all
    the normal dynticks evaluation path can handle 0 delay just fine. And
    by doing that we benefit from the optimization branch which avoids
    clock reprogramming if the clockevents deadline hasn't changed since
    the last reprog. This fixes our issue because we don't do repetitive
    clock reprog that always add hardware min delay.

    As a side effect it should even optimize the 0 delay path in general.

    Reported-and-tested-by: Octavian Purdila
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: Rik van Riel
    Cc: Ingo Molnar
    Signed-off-by: Frederic Weisbecker

    Frederic Weisbecker
     
  • commit 3f0191b80cf1 ("MLK-14381 mmc: sdhci-esdhc-imx: reset tuning
    circuit when system resume") add tuning reset when the timing is
    MMC_TIMING_LEGACY/MMC_TIMING_MMC_HS/MMC_TIMING_SD_HS. For timing
    MMC_TIMING_MMC_HS, we can not do tuning reset, otherwise HS400
    timing is not right.

    Here is the process of config HS400, it do tuning in HS200 mode,
    then switch to HS mode and 8 bit DDR mode, finally switch to HS400
    mode. If we do tuning reset in HS mode, this will cause HS400 mode
    lost the tuning setting, which will cause CRC error.

    Signed-off-by: Haibo Chen
    (cherry picked from commit 25e7080552a8d681a83e6c328ef5dedf5132afbf)

    Haibo Chen
     
  • After soft reset, the irq register value will be zero, so we need set it to enable
    all pxp interrupts.

    Signed-off-by: Guoniu.Zhou

    Guoniu.Zhou
     
  • Some designs implement reset GPIO via a GPIO expander connected to a
    peripheral bus. One such example would be i.MX7 Sabre board where said
    GPIO is provided by SPI shift register connected to a bitbanged SPI bus.
    To support such designs, allow reset GPIO request to defer probing of the
    driver.

    Signed-off-by: Andrey Smirnov
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Lucas Stach
    Cc: yurovsky@gmail.com
    Cc: Fabio Estevam
    Cc: Dong Aisheng
    Cc: linux-arm-kernel@lists.infradead.org
    (cherry picked from commit bde4a5a00e761f55be92f62378cf5024ced79ee3)

    Richard Zhu
     
  • GPC will stop ARM clock if both CPUs are in idle and CPU_CLK_ON_LPM is
    set in GPC_LPCR_A7_BSC. Make sure that doesn't happen when cpu1 enters
    state2 and cpu0 enters state0 because the default arm WFI state is not
    marked with CPUIDLE_FLAG_TIMER_STOP and it can result in arch_sys_timer
    being stopped unexpectedly.

    It is possible to reproduce incorrect behavior by explicitly disabling
    other idle states for cpu0/cpu1 and timing how much sleep calls take on
    cpu0. Ocassionaly something like "sleep 1" will take 3-4 seconds to
    complete.

    Make sure that both CPUs are in the same idle state before entering
    WAIT.

    Signed-off-by: Leonard Crestez

    Leonard Crestez
     
  • On most imx SOCs GPT1 takes it's clock from the oscillater because
    otherwise it might get confusing when bus frequency is decreased.

    Right now imx7 is an exception because imx7s.dtsi comes from upstream
    rather than a port of imx_4.1.y.

    On the imx_4.1.y branch imx7 uses GPT_3M as well, adopt that approach.

    Signed-off-by: Leonard Crestez

    Leonard Crestez
     
  • nand-on-flash-bbt flag for i.mx6sx sabreauto dtb was set in wrong device
    node, move it back to gpmi node.

    Signed-off-by: Han Xu
    (cherry picked from commit 07643110a47b5c1982057e77316f229fa66740b5)

    Han Xu
     
  • The current min_delta for TPM clock event is 2 ticks which
    is too small. As the TPM is running at 3MHz, 2 ticks equal
    2/3 us. According to our testing, the interrupt latency will
    be longer than this min_delta, especially when GPU is running.

    This patch changed the min_delta to 300 which give the system
    around 100us for interrupt handling in case the "set_next_event"
    call is interrupted by other signals.

    Also a simple validation code is added before the function returns.

    Signed-off-by: Shenwei Wang
    Signed-off-by: Bai Ping
    (cherry picked from commit 4f882165cc31672f3c98de74ab02b757cb96ad26)

    Shenwei Wang
     
  • According to design, PFD needs to be gated before
    setting rate, this patch adds warning for PFD when
    there is any try to set PFD rate with gate open;

    Since PFD may be enabled during kernel boot up,
    here doing enable and disable before setting APLL_PFD2
    rate is to make sure it is gated by clock framework
    before setting rate.

    Signed-off-by: Anson Huang

    Anson Huang
     
  • with "echo 1 > /sys/class/graphics/fb0/blank", and there is no
    usb connected on board, the system may enter low power mode,
    then audio playback will be failed. use pm_qos to prevent A7
    core enter low power mode during audio playback and recording.

    Signed-off-by: Shengjiu Wang
    (cherry picked from commit ea80731e828695bcfbf0d20c966813c3bdddfb88)

    Shengjiu Wang
     
  • When starting a playback the initialization data used to reduce underruns
    was send to the transmit data register after the DMA requests were enabled.
    This patch moves the initialization phase before enabling the DMA so the
    data is transmitted in correct order.

    Signed-off-by: Mihai Serban
    (cherry picked from commit 44e5c11332390a8b1c09d33d5653cb6673e9eea4)

    Mihai Serban
     
  • For samples with more than 2 and odd number of channels the I2S mode
    does not work correctly. In I2S mode we are required to activate an even
    number of channels (possibly on multiple datalines) and thus configure
    the BCLK for even channels. In this case samples with odd (smaller) number
    of channels are played faster and the sound is distorted.

    To fix this behavior we can enable TDM mode for the special cases of
    samples with 3, 5 or 7 channels. But even TDM has some restrictions that
    prevent us from having full support for the special cases:
    1. TDM is not supported by codec in master mode so 3, 5 and 7 channels
    usage is denied.
    2. In codec slave mode TDM works only with 8 slots and slot width of 32
    bits. For an often used MCLK frequency of 24MHz and the above restrictions
    the maximum sample rate is limited to 48KHz = 24576000/(2*8*32).
    The 2 denominator is required by ESAI BCLK divisors.

    Signed-off-by: Mihai Serban
    (cherry picked from commit c35bc6ae5c48f62bae534ce8d2d818f857778ff8)

    Mihai Serban
     
  • Remove usless 'fsl,wdog-reset' property in dts on v4.9

    Signed-off-by: Robin Gong
    (cherry picked from commit bfe33c0df6a7cba546fcc5b30609be277f499af2)

    Robin Gong
     
  • align watchdog external reset output property with community
    instead of "fsl,wdog_b".

    Signed-off-by: Robin Gong
    (cherry picked from commit c07391d10d74a1c85a0978085a3ac0a761fb6410)

    Robin Gong