23 Sep, 2019

1 commit


24 Jul, 2019

1 commit

  • The system suspend and resume hooks is related with CONFIG_PM_SLEEP
    instead of CONFIG_PM, so use CONFIG_PM_SLEEP to control the definitions
    for them. And after this, the related overlay suspend and resume should
    be defined under CONFIG_PM_SLEEP control. Below are the build warnings
    before this patch.

    drivers/video/fbdev/mxsfb.c:2463:12: warning: ‘mxsfb_resume’ defined but not used [-Wunused-function]
    static int mxsfb_resume(struct device *pdev)
    ^~~~~~~~~~~~
    drivers/video/fbdev/mxsfb.c:2444:12: warning: ‘mxsfb_suspend’ defined but not used [-Wunused-function]
    static int mxsfb_suspend(struct device *pdev)
    ^~~~~~~~~~~~~

    Signed-off-by: Fancy Fang

    Fancy Fang
     

19 Jul, 2019

1 commit


09 May, 2019

1 commit


02 May, 2019

3 commits

  • mipid_hx8369_get_lcd_videomode and mipid_hx8369_lcd_setup are now exported
    for the module build.

    Signed-off-by: Oliver Brown
    Signed-off-by: Arulpandiyan Vadivel
    Signed-off-by: Shrikant Bobade
    (cherry picked from commit d4cc133df431df7c620fe95543dad80e5d25d5b3)

    Oliver Brown
     
  • Fix structurally dead code reported by coverity. Assign the return value
    to ret, instead of returning it so there will be a proper clean up.

    Signed-off-by: Robert Chiras
    Signed-off-by: Arulpandiyan Vadivel
    Signed-off-by: Shrikant Bobade
    (cherry picked from commit 0d0ca80d965144e38e9f860fbaab76547573c0b6)

    Robert Chiras
     
  • Fixing two coverity issues:
    1. Checking disp_videomode against 0, which will always be true, since
    disp_videomode is a char array. So, fix it by checking it's first byte
    instead.
    2. Possible division by zero, if clk_get_rate returns 0 (which is
    possible).

    Signed-off-by: Robert Chiras
    Signed-off-by: Arulpandiyan Vadivel
    Signed-off-by: Shrikant Bobade
    (cherry picked from commit d2672125a376020dfc9aa87339be290d45b0d252)

    Robert Chiras
     

28 Apr, 2019

3 commits

  • The function mxc_epdc_fb_init_hw() could be called more than once when load
    the firmware due to some reason. If this case happens, then for following codes,
    the array fb_data->fw_str pointed to will be accessed out of bound. It probably
    causes kernel crash, or makes fb_data->fw_str get a wrong value, then the driver
    may be stuck during the process of loading the firmware.

    if (fb_data->cur_mode) {
    strcat(fb_data->fw_str, "imx/epdc/epdc_");
    strcat(fb_data->fw_str, fb_data->cur_mode->vmode->name);
    strcat(fb_data->fw_str, ".fw");
    }

    This patch fixed that by using strcpy instread.

    Signed-off-by: Robby Cai
    Reviewed-by: Guoniu.Zhou

    Robby Cai
     
  • The problem is that the kthread from submit workqueue aquires the queue_mutex
    and blocks the kthread from interrupt workqueue. But the kthread from interrupt
    workqueue is the one that should update the used_luts variable (on which the
    kthread from submit workqueue keeps polling), but it doesn't have a chance to
    do it (because it is blocked by mutex), even if the LUT complete interrupts are
    triggered. So the fix is, after the polling to release the mutex so that the
    kthread from interrupt workqueue can process the LUT complete interrupts and
    update the used_luts variable accordingly.

    Signed-off-by: Bogdan Chircu
    Signed-off-by: Robby Cai
    (cherry picked from commit bcaea8983ca3864bc5df5dc90b49ffe2d0fadf29)

    Bogdan Chircu
     
  • After suspend, the qos setting is lost. This patch restores it after resume.

    Signed-off-by: Robby Cai
    (cherry picked from commit 92a7e53664802a729b647516d9e578fa5897aa63)

    Robby Cai
     

19 Apr, 2019

1 commit


18 Apr, 2019

29 commits

  • Fixed CID 17375, Unsigned compared against 0. Removed code with no effect.

    Signed-off-by: Oliver Brown

    Oliver Brown
     
  • The hdmi_drm_infoframe_pack() was wrongly packing the HDR metadata. It
    was setting the x display primaries followed by the y display primaries.
    Instead, in the specifications, each x display primary should be
    followed by the corresponding y display primary.

    Also, byte 8 of the frame payload was being skipped. Fixed that too.

    Signed-off-by: Laurentiu Palcu
    Reported-by: Jared Hu

    Laurentiu Palcu
     
  • Some HDMI Sink may failed to work when running HDCP enable/disable
    stress test. HDMI sink may not support change HDCP state on the fly.
    So reset HDMI PHY and controller to resolve the issue.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • imx8 hdmi fb driver is not maintain.
    imx8 hdmi function have implemented with DRM framework
    in driver/gpu/drm/imx folder.
    So remove hdmi fb driver.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • Enable Dynamic Range and Mastering Infoframe for HDR
    content, which is defined in CEA 861.3 spec.

    The metadata will be computed based on blending
    policy in userspace compositors and passed as a connector
    property blob to driver. The same will be sent as infoframe
    to panel which support HDR.

    Signed-off-by: Uma Shankar

    Uma Shankar
     
  • Change mem variable type.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • Add hdmi audio config function to hdmi driver.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • -Relocate hdmi api source code from drivers/video/fbdev/mxc/cdn_hdp
    to drivers/mxc/hdp.
    -Add displayport and hdcp api function.
    -Move t28hpc_hdmitx function from api source code folder
    to hdmi fb driver folder.
    -Update imx8 hdmi fb driver according api source code change.
    -Sync api source code with CDN_API_1_0_33 release.

    Acked-by: Robby Cai
    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • Add timeout check for hdmi FW alive function to avoid
    kernel booting hang for that board without HDMI FW.

    CDN_API_General_Test_Echo_Ext_blocking is the first
    function that calling mailbox.
    Add timeout to the function to avoid kernel booting hang
    for that board without HDMI ROM patch.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • Add hdmi api code from cadence.
    Add mx8 hdmi driver.
    Basic hdmi function:
    no hotplug and no video mode dynamic change.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • The Driver IC 'RM68191' is used in the MIPI panel
    'RK055IQH042' whose default mode is '540x960@60Hz'.
    So this commit adds a new FBDEV driver for 'RM68191'
    and enables the 'RK055IQH042' panel on IMX7ULP1-EVKB
    platform with Northwest MIPI DSI controller.

    Signed-off-by: Fancy Fang
    (cherry picked from commit 8d529576c51cf38e32d48dbc88834d688e06fc8b)

    Fancy Fang
     
  • The Driver IC 'RM68200' is used in the MIPI panel
    'RK055AHD042' whose default mode is '720x1280@60Hz'.
    So this commit adds a new FBDEV driver for 'RM68200'
    and enables the 'RK055AHD042' panel on IMX7ULP1-EVKB
    platform with Northwest MIPI DSI controller.

    Signed-off-by: Fancy Fang
    (cherry picked from commit 277bc948aa17a43285c340399bdaf7f099926677)

    Fancy Fang
     
  • Since the DCSS FBDEV driver is not used in any platform
    or board, clean this up completely is better.

    Signed-off-by: Fancy Fang

    Fancy Fang
     
  • The mxsfb framebuffer driver uses three clock definitions, but only two
    are defined in DTS for imx7s (also used by imx7d); because of this,
    driver fails in probe. Since iMX7D uses only one clock, add the third clock
    and make two of them dummy.
    Also, add additional error messages for better identification of a
    failing probe.

    Signed-off-by: Robert Chiras
    Signed-off-by: Vipul Kumar

    Robert Chiras
     
  • This fixes Coverity issue since the function does nothing. The function
    only returns some values which are never used.

    Signed-off-by: Laurentiu Palcu
    CC: Fancy Fang
    Signed-off-by: Arulpandiyan Vadivel

    Laurentiu Palcu
     
  • This fixes Coverity issue since num_pix_x and num_pix_y are unsigned and
    the conditions are never true.

    Signed-off-by: Laurentiu Palcu
    CC: Fancy Fang
    Signed-off-by: Arulpandiyan Vadivel

    Laurentiu Palcu
     
  • This fixes Coverity issue where an unsigned variable is tested for
    less-than-zero value.

    Make val a signed integer instead.

    Signed-off-by: Laurentiu Palcu
    CC: Sandor Yu
    Signed-off-by: Arulpandiyan Vadivel

    Laurentiu Palcu
     
  • This fixes less-then-zero comparison Coverity issue. roi_param->roi_n is
    unsigned, hence the comparison is not needed.

    Signed-off-by: Laurentiu Palcu
    CC: Sandor Yu
    Signed-off-by: Arulpandiyan Vadivel

    Laurentiu Palcu
     
  • 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

    (cherry picked from commit 8ddaa850df8cc9fe4dda4f505053eaa3f704ef69)
    Signed-off-by: Vipul Kumar

    Robby Cai
     
  • Add fb name check function pwm_backlight_check_fb_name(),
    pwm driver can banding to fb with fb name when driver working
    in device tree architecture.

    Signed-off-by: Sandor Yu
    Signed-off-by: Vipul Kumar

    Sandor Yu
     
  • set WFE (WFE_A on imx7d, and WFE_B on imx6ull/imx6sll) input address to
    framebuffer start address, and set left/top coordinate since the framebuffer is
    the original source of WFE (i.e., not from PXP output) when bypass legacy mode.
    The patch also limits the condition to bypass legacy mode when not use
    EPDC_FLAG_USE_ALT_BUFFER.

    Signed-off-by: Robby Cai
    (cherry picked from commit 7f19940705902623166777c675f5e10c9e7fc477)
    Signed-off-by: Arulpandiyan Vadivel

    Robby Cai
     
  • 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
    Signed-off-by: Arulpandiyan Vadivel

    Guoniu.Zhou
     
  • when there's no transform (Y8 format in framebuffer, no rotation,
    no look-up transformation such as CMAP, no scaling/flip, etc.)
    and no dithering, bypass pxp legacy process to save time.

    Signed-off-by: Robby Cai
    Signed-off-by: Arulpandiyan Vadivel

    Robby Cai
     
  • l2c210_flush_all, the underlying implementation of outer_flush_all()
    has the constraint on 4.1 kernel that, it can not be called under interrupt
    context. However the EPDC driver can not guarantee this condition at
    calling point, thus it could cause kernel dump. This has been observed on
    i.MX6SL, and theorically on other platforms like i.MX6DL
    (using PL310 L2 cache). So use outer_flush_range to fix it.

    Although we don't have such issue on i.MX7D (not PL310 L2), we still prefer
    to use outer_flush_range() for legacy software dithering support and
    for easy maintenance. Then we do the change in both EPDC driver.

    ------------[ cut here ]------------
    Kernel BUG at 800204d8 [verbose debug info unavailable]
    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
    Modules linked in: galcore(O) evbug
    CPU: 0 PID: 842 Comm: kworker/u3:1 Tainted: G O 4.1.8-1.0.0+ge352a0b #1
    Hardware name: Freescale i.MX6 SoloLite (Device Tree)
    Workqueue: EPDC Submit epdc_submit_work_func
    task: a8a8f900 ti: a92a4000 task.ti: a92a4000
    PC is at l2c210_flush_all+0x5c/0x60
    LR is at epdc_submit_work_func+0x684/0xbf8
    pc : [] lr : [] psr: 600b0013
    sp : a92a5e90 ip : a9150c8c fp : a8480518
    r10: a84a28c0 r9 : 00000008 r8 : a9150644
    r7 : a91512e0 r6 : 0000012c r5 : a91512e0 r4 : a91512dc
    r3 : a00b0013 r2 : 80b184a0 r1 : 701fe019 r0 : f4a02000
    Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
    Control: 10c53c7d Table: a943404a DAC: 00000015
    Process kworker/u3:1 (pid: 842, stack limit = 0xa92a4210)
    Stack: (0xa92a5e90 to 0xa92a6000)
    5e80: a92a5ed0 8005d058 0000bbc2 a851d4c0
    5ea0: 00000000 a9150000 a8480000 a8480440 00000190 00000193 55555556 a84a28c0
    5ec0: a8480518 a8500000 80b18088 a94f3900 00000000 00000000 00000190 0000012c
    5ee0: a94f3900 a8480518 a87e8d80 a8479000 a845a200 00000020 00000000 a8479000
    5f00: a8479000 80046458 a92a4000 a8479000 a8479014 a8479000 a87e8d98 a8479014

    ...

    Signed-off-by: Robby Cai

    Signed-off-by: Arulpandiyan Vadivel

    Robby Cai
     
  • There's a GPIO pin to enable epdc signals on some platform like i.MX7D SDB.
    However, it's changed from active-low to active-high on i.MX7D SDB RevB
    board.
    Enhance the driver to handle the active level automatically, then only
    need to adjust gpio as well as active level in dts file if necessary.

    Signed-off-by: Robby Cai
    Signed-off-by: Arulpandiyan Vadivel

    Robby Cai
     
  • Initial the mxc dcic driver.
    Baseline copied from imx_3.14.y branch.

    Signed-off-by: Sandor Yu
    [Arul: Fix merge conflicts]
    Signed-off-by: Arulpandiyan Vadivel

    Sandor Yu
     
  • Add suspend/resume power management operations for
    gpio backlight.

    Signed-off-by: Fancy Fang
    Signed-off-by: Arulpandiyan Vadivel

    Fancy Fang
     
  • IPUv3 and DPU are both i.MX display processing units.
    To organize the driver code better, let's introduce the imx folder for
    them. Later, we may put more drivers into this folder,
    e.g., the prefetch engines.

    Signed-off-by: Liu Ying
    Signed-off-by: Arulpandiyan Vadivel

    Liu Ying
     
  • When using fb_find_mode from fbdev/core with a specified user more,
    it will return a screeninfo structure with the pixclock corresponding to
    a different refresh rate than the requested one. For example, for
    1920x1080@60 it will return pixclock=5780. When we get the videmode for
    this screeninfo, it will have a refresh of 59Hz, instead of 60Hz.
    If we use this mode as default mode when EDID cannot be read, on a
    monitor with fixed refresh rate of 60Hz, it won't work. Therefore, we
    should save the default mode, the nearest mode from CEA modes defined by
    our own driver (which will have the correct refresh rate and pixclock for
    the requested resolution).

    Signed-off-by: Robert Chiras
    Signed-off-by: Vipul Kumar

    Robert Chiras