12 Feb, 2019

40 commits

  • drm_fb_helper is *the* way of doing fbdev emulation so add a pointer to
    struct drm_device. This makes it possible to add callback helpers for
    .last_close and .output_poll_changed further reducing fbdev emulation
    footprint in drivers. The pointer is set by drm_fb_helper_init() and
    cleared by drm_fb_helper_fini().

    Signed-off-by: Noralf Trønnes
    Reviewed-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20171030153951.56269-3-noralf@tronnes.org

    Noralf Trønnes
     
  • Adding lcdif nodes to a power domain currently results in
    black/corrupted screens or hangs because power is not correctly enabled
    when required.

    Ensure power is on when display is active by adding
    pm_runtime_get/put_sync to mxsfb_pipe_enable/disable.

    Signed-off-by: Leonard Crestez
    Reviewed-by: Stefan Agner
    Reviewed-by: Sean Paul
    Signed-off-by: Stefan Agner
    Link: https://patchwork.freedesktop.org/patch/msgid/ee88148399c63494cda4129b05444b0ac331b7a7.1537191359.git.leonard.crestez@nxp.com

    Leonard Crestez
     
  • LCDIF will repeatedly display data from CUR_BUF and set CUR_BUF to
    NEXT_BUF when done. Since we are only ever writing to NEXT_BUF the
    display will show an initial corrupt frame.

    Fix by writing the FB paddr to both CUR_BUF and NEXT_BUF when
    activating the CRTC.

    Signed-off-by: Leonard Crestez
    Tested-by: Philipp Zabel
    Reviewed-by: Stefan Agner
    Reviewed-by: Sean Paul
    Signed-off-by: Stefan Agner
    Link: https://patchwork.freedesktop.org/patch/msgid/7cdac9c064cc2b8a3d237934f186da98cefe6cb3.1537191359.git.leonard.crestez@nxp.com

    Leonard Crestez
     
  • The main axi clk is disabled at the end of mxsfb_crtc_mode_set_nofb and
    immediately reenabled in mxsfb_enable_controller.

    Avoid this by moving the handling of axi clk one level up to
    mxsfb_crtc_enable. Do the same for mxsfb_crtc_disable for symmetry.

    This shouldn't have any functional effect.

    Signed-off-by: Leonard Crestez
    Reviewed-by: Stefan Agner
    Reviewed-by: Sean Paul
    Signed-off-by: Stefan Agner
    Link: https://patchwork.freedesktop.org/patch/msgid/985c1f1cad250bd9ca154b3e4b3f913c310eeabd.1537191359.git.leonard.crestez@nxp.com

    Leonard Crestez
     
  • Enable and disable procedures contain info and warn prints. This
    introduces delay in initialization / disablement procedures and we have
    kept only the necessary prints in case of error.

    Signed-off-by: Cosmin-Gabriel Samoila
    Reviewed-by: Shengjiu Wang

    Cosmin-Gabriel Samoila
     
  • Cadence allow customer release these source code as followed copyright.

    * Copyright (C) 2016-2017 Cadence Design Systems, Inc.
    * All rights reserved worldwide.
    *
    * Redistribution and use in source and binary forms, with or without modification,
    * are permitted provided that the following conditions are met:
    *
    * 1. Redistributions of source code must retain the above copyright notice,
    * this list of conditions and the following disclaimer.
    *
    * 2. Redistributions in binary form must reproduce the above copyright notice,
    * this list of conditions and the following disclaimer in the documentation and/or
    * other materials provided with the distribution.
    *
    * 3. Neither the name of the copyright holder nor the names of its contributors
    * may be used to endorse or promote products derived from this software without
    * specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
    * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
    * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
    * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • i2c2 and i2c3 are work at 100KHz, so no need to set the pad to fast
    slew rate, slow slew rate is enough.

    This patch can also fix the synaptics_dsx touch work unstable issue.
    When config the i2c bus pad to fast slew rate, synaptics_dsx touch
    sometimes can't be recognized through i2c bus. Seems this touch
    i2c slave device sensitive to the pad slew rate setting.

    Acked-by: Fugang Duan
    Signed-off-by: Haibo Chen

    Haibo Chen
     
  • Fix 'Division or modulo by zero' coverity issue(CID-4159438).
    In fact, no need to call set_ramp_delay() in case of ramp_disable
    is true, hence, ramp_delay never be 0 while set_ramp_delay() called.

    Signed-off-by: Robin Gong
    Reviewed-by: Anson Huang

    Robin Gong
     
  • Fix 'Explicit null dereferenced' coverity issue(CID-3351937).

    Signed-off-by: Robin Gong
    Reviewed-by: Anson Huang

    Robin Gong
     
  • Fix 'null pointer dereferences issue' reported by coverity(CID-1477441).

    Signed-off-by: Robin Gong
    Reviewed-by: Anson Huang

    Robin Gong
     
  • For imx8mq-evk board, B4 board change touch/mipi-hdmi connected i2c bus
    from i2c1 to i2c3. The default dual-display dts file is for the B4
    board.
    This patch adds a new dts file to also support dual-display on B3 (or
    lower) boards.

    Signed-off-by: Robert Chiras

    Robert Chiras
     
  • Check the return value of .brcmf_fil_iovar_data_get() to fix
    the coverity issue of "error handling issue".

    Reviewed-by: Haibo Chen
    Signed-off-by: Fugang Duan

    Andy Duan
     
  • Init the wlfc_mode variable before it is used to fix
    coverity issue of "Uninitialized variable".

    Reviewed-by: Haibo Chen
    Signed-off-by: Fugang Duan

    Andy Duan
     
  • Add clock rate zero check to fixes coverity issue of "divide by 0".

    Reviewed-by: Haibo Chen
    Signed-off-by: Fugang Duan

    Andy Duan
     
  • Configure imx8qm/qxp pin as RTC 32KHz clock output as the
    low power clock source for some WIFI chip.

    Reviewed-by: Haibo Chen
    Signed-off-by: Fugang Duan

    Andy Duan
     
  • i.MX7ULP SoC revision is available from B0, the SIM_JTAG_ID
    register bit[31:28] indicates SoC revision as below:

    4b'0001 B0
    4b'0010 B1

    This register is NOT available on A0, tested on B1 chip
    as below:

    root@imx7ulpevk:~# cat /sys/devices/soc0/revision
    2.1

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping
    Tested-by: Ye Li

    Anson Huang
     
  • Unlike i.MX6qdl and i.MX53 LDB variants, the i.MX8 LDB variants(i.MX8qxp
    and i.MX8qm) in existence don't have frontend mux, thus, we should split
    the logic to program the ch0/1_mode for variants w/wo the mux. It turns
    out LDB_CH0_MODE_EN_TO_DI0 can be used for channel0 in both LDB single
    mode and LDB split mode for the i.MX8 LDB variants. However, based on
    test results, for i.MX8qm LDB channel1, LDB_CH1_MODE_EN_TO_DI1 has to be
    used in single mode, while, i.MX8qxp may work with LDB_CH1_MODE_EN_TO_DI0
    or LDB_CH1_MODE_EN_TO_DI1. With LDB_CH1_MODE_EN_TO_DI0, i.MX8qm LDB
    channel1 would output wrong image in single mode(it looks like color
    is wrong based on test results). The i.MX8 LDB variants channel1 mode
    can still be LDB_CH1_MODE_EN_TO_DI0 in split mode(the patch doesn't
    touch this). In essence, this patch fixes the channel1 single mode for
    i.MX8qm LDB by correcting the ch1_mode, while all other features
    should work as before. Note that due to hardware issue, we didn't test
    the channel1 single mode for i.MX8qm. We need to populate several
    resistors to enable the connectors driven by channel1 in single mode
    for either ARM2 platform or MEK board. Tests are done with IT6263
    LVDS to HDMI transmitter driven by LDB0 channel1 after r206, r207, r208
    and r209 are populated on the i.MX8qm MEK board.

    Signed-off-by: Liu Ying

    Liu Ying
     
  • Signed-off-by: ming_qian

    ming_qian
     
  • This patch fixes coverity issue of "unchecked return value".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "improper argument type".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "divide by 0".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "divide by 0".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "divide by 0".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "divide by 0".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issue of "unchecked return value".

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • This patch fixes coverity issues as below:

    1. resource leak
    2. possible case of division by zero.

    Fix #1 by kfree the resource before return error;
    Fix #2 by adding zero check before registering delay timer.

    Signed-off-by: Anson Huang
    Reviewed-by: Bai Ping

    Anson Huang
     
  • Update Xen version number in imx8qm domu dts

    Signed-off-by: Flynn xu
    Reviewed-by: Peng Fan

    Flynn xu
     
  • The IMX_DMATYPE_SAI(24) performance is not enough to support high
    sample rate/channels of audio case, there is a lot of underrun and
    the sound is noise, the reason is that with this script, sdma copy data
    through a long path (SDMA->pl301_audio -> pl301_display -> … ->
    pl301_wakeup -> AIPS1 -> SPBA2 -> SAI).

    The IMX_DMATYPE_SSI_SP(2) performance is better, which go through a shorter
    path (SDMA -> SPBA2 -> SAI).

    So we switch to use the IMX_DMATYPE_SSI_SP script, then 384k/32b/16c is
    supported well.

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

    Shengjiu Wang
     
  • Fix Coverity id 5186949 5187047, uninitialized variables.

    Signed-off-by: Peng Fan

    Peng Fan
     
  • When req.num_msg is less than 2, also need initialze num_msg.
    Also modify the if/else if to use num_msg

    Signed-off-by: Peng Fan

    Peng Fan
     
  • Signed-off-by: ming_qian

    ming_qian
     
  • fix some typo

    Signed-off-by: ming_qian

    ming_qian
     
  • Because reset and pwn pin of gpio1 are not configurated for ov5640,
    so it leads to read ov5640 register fail.

    Signed-off-by: Guoniu.Zhou

    Guoniu.Zhou
     
  • With cpu-idle enabled, we observe that DSI panel display is NOT
    working on i.MX8QXP MEK board, still under debugging, since cpu-idle
    ONLY saves ~15mA in runtime, it is NOT valuable enough compare to
    whole system, so disable it for now until everything is stable enough.

    Signed-off-by: Anson Huang
    Reviewed-by: Nitin Garg

    Anson Huang
     
  • Update SCFW API to the following commit:
    "
    ("430d1e3646fbe75e339e18abf2330565eac906e0")
    Author: Chuck Cannon
    Date: Fri Nov 2 15:25:45 2018 -0500

    SCF-105: RN updates.
    "

    Signed-off-by: Ranjani Vaidyanathan

    Ranjani Vaidyanathan
     
  • Update SCFW API to the following commit:
    "
    ("430d1e3646fbe75e339e18abf2330565eac906e0")
    Author: Chuck Cannon
    Date: Fri Nov 2 15:25:45 2018 -0500

    SCF-105: RN updates.
    "

    Signed-off-by: Ranjani Vaidyanathan

    Ranjani Vaidyanathan
     
  • Update SCFW API to the following commit:
    "
    ("430d1e3646fbe75e339e18abf2330565eac906e0")
    Author: Chuck Cannon
    Date: Fri Nov 2 15:25:45 2018 -0500

    SCF-105: RN updates.
    "

    Signed-off-by: Ranjani Vaidyanathan

    Ranjani Vaidyanathan
     
  • Update SCFW API to the following commit:
    "
    ("430d1e3646fbe75e339e18abf2330565eac906e0")
    Author: Chuck Cannon
    Date: Fri Nov 2 15:25:45 2018 -0500

    SCF-105: RN updates.
    "

    Signed-off-by: Ranjani Vaidyanathan

    Ranjani Vaidyanathan
     
  • Implemented system suspend resume functions to call hwvad enable/disable
    then do runtime_force_suspend/resume.
    Since hwvad can run independently, when user calls enable/disable, we
    will have to increment/decrement usage counter by calling
    runtime_*_sync but to avoid doing this when disable/enable is called
    from system_suspend/resume since we called pm_runtime functions - this
    is why we have added the sync parameter in enable/disable_hwvad.
    However, we ignore the busy flag because the module wasn't designed to
    work with arecord and hwvad in parralel and we only print a warning.
    Since hwvad and recording share the same clock and initialization
    procedures require module to be disabled, the busy flag will be set
    when having both features enabled.

    Signed-off-by: Cosmin-Gabriel Samoila
    Reviewed-by: Daniel Baluta

    Cosmin-Gabriel Samoila
     
  • We must find a way to no longer touch resources after they are
    cleand up.

    Now, after a stress test we get the following crash:

    [ 2156.863772] fsl-dsp 596e8000.dsp: xf_pool_alloc failed
    [ 2156.869337] Unable to handle kernel NULL pointer dereference at
    virtual address 00000060
    [ 2157.148594] [] _raw_spin_lock+0x14/0x48
    [ 2157.153995] [] xf_cmd_send_recv_complete+0x40/0xf0
    [ 2157.160354] [] xf_close+0x40/0x88
    [ 2157.165239] [] xaf_comp_delete+0x5c/0x70
    [ 2157.170730] [] dsp_platform_compr_free+0xa0/0xe8
    [ 2157.176917] [] soc_compr_free_fe+0x144/0x1a0
    [ 2157.182754] [] snd_compr_free+0x64/0x98

    This happens because:

    1) dsp_platform_process work handler waits in a loop for
    messages to arrive.
    2) when cplay process finishes it cleans up most of the
    resources.
    3) when another cplay process starts it reinitializes the
    resources including queues for example.
    4) a message will be generated and kernel will crash because
    dsp_platform_process uses the older queues.

    A solution for this is to make sure dsp_platform_process work loop
    is stopped at cleanup time.

    We use is_active state and signal dsp_platform_process handler to
    finish because we are on the cleanup path.

    While at it replace cancel_work with cancel_work sync to be sure
    that work handler ends before going on with the rest of the cleanup.

    Reviewed-by: Cosmin-Gabriel Samoila
    Signed-off-by: Daniel Baluta

    Daniel Baluta