MDSS driver reports the tile format and ubwc format support
in capability node. It should not report both format
supports because framework may use tile format over ubwc
which is not intended. UBWC is common for venus, camera
and GPU.
Change-Id: If9230d4974ec150d879c77a6f1efba7f040ba2ed
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Add csc tables for 601 full, 601 limited and 709 limited
to support different csc matrices.
HAL provides color space request to driver, consider it
to choose appropriate matrix for conversion.
This will help in solving artifacts during GPU/MDP switches
so that both GPU and MDP choose same matrix for conversion.
Change-Id: Idd73e0695ea64d0c0bd778dba07199e209ca6f3d
Signed-off-by: Vinu Deokaran <vinud@codeaurora.org>
Signed-off-by: Kalyan Thota <kalyant@codeaurora.org>
Signed-off-by: Ping Li <pingli@codeaurora.org>
Secure display architecture requires null commit
before and after secure display session. It
also adds requirement to make the SCM call before
and after secure display session. It supports secure
display with single-stage SMMU hypervisor controlled.
Change-Id: I3f41ed318c80d6e76328de114f7dee0c9891c2f0
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
In the current implementation, control register are not being restored
for the compression modes. This causes display corruption on command
mode panels if idle power collapse is enabled. This change restores the
compression mode registers while coming out of idle power collapse.
CRs-Fixed: 859333
Change-Id: Id40270e78b798f3baf7a6c3ad2598f7f12bbf3fb
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
User space needs a way to identify if mdp has UBWC
Change-Id: I5fec34976473ea80c09684d51b14d5588fab09eb
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
The DSI driver checks if continuous splash screen is enabled
via mdss_panel_get_boot_cfg API to MDP driver. In the current code,
we use the wrong variable to check continuous splash screen status.
This might cause display crash during boot up when continuous splash
screen is disabled. Fix this issue by using the correct variable
to check the status.
Change-Id: Iaa752a5c764dbd3ca94a5e14514f9174dad21695
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
Pan display path can call buffer alloc and use one of the
buffer. It will enable the skip detach enabled for that
buffer. This buffer moves to free queue when atomic api
stage next set of layers. It can lead to memory leak when
atomic API path reuse the same buffer without resetting
the detach flag. Ideally, it should be reset for each
attach call.
Change-Id: I96e2c030669539d8e5dc7205abc233ecc7118bdb
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
For dual DSI board configurations with independent displays,
the debugfs directory needs to be created for both panels. Use
unique directory names for the debugfs node. After this change,
the debugfs directory will have the following structure:
For Split-DSI:
/sys/kernel/debug/mdss_panel_fb0/intf0 (assuming fb0 device node)
/sys/kernel/debug/mdss_panel_fb0/intf1 (assuming fb0 device node)
For Dual-DSI with independent displays:
/sys/kernel/debug/mdss_panel_fb0/intf0 (assuming fb0 device node)
/sys/kernel/debug/mdss_panel_fb1/intf0 (assuming fb1 device node)
For Single-DSI:
/sys/kernel/debug/mdss_panel_fb0/intf0 (assuming fb0 device node)
Change-Id: Ic98d0d662932223828c41511c51cb4a0dda42bb2
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
Starting with 8996 chipset, qos settings can be adjusted
to be different during vblank. This change adds support
for this feature.
Change-Id: Ifa25dd799a55396224f49c49a29fcc8f5a245bd0
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Ctl rev in vfp update method is unused. Remove this nop
instruction. DSI timing mode configuration is not specific for
8916/8939 target but common for all targets. Remove such
invalid target specific comment.
Change-Id: Ie7c75203ca50e6bd2abf952f4d4362314c01987c
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Add support to set the output of the interface based on the
grayscale value. The grayscale value must be set to a format
specified according to the V4L2 FOURCC pixel format definitions.
We translate from the FOURCC pixel format to the corresponding
MDP format when setting the final output format. For example,
this is used to set the output format to YUV420 for HDMI TVs
that are HDMI 2.0 compliant.
Change-Id: Id5623f1211b743b54002c22b19d81dbd13e6564f
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Fix typo that prevents to use the compression ratio factor
to reduce the bw vote for ubwc formats.
Change-Id: Ic06129a1fa0c548bda9673037748b348b8af730a
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
As per QoS recommendation for mdss on 8952, Rotator/WB OT
should be configured for both read/write paths. Add
support for configuring dynamic OT in msm8952, for
Rotator and WB paths.
Change-Id: I543a99cb931f2a58f5f98937c32728f290614316
Signed-off-by: Krishna Chaitanya Devarakonda <kdevarak@codeaurora.org>
If the source FPS for the rotator is set, store it and
use it for calculating BW required by rotator.
Change-Id: I35801528930897447a039c4a4c950048e99d16d9
Signed-off-by: Krishna Chaitanya Devarakonda <kdevarak@codeaurora.org>
There is a possibility that irq trigger may get delayed in the
software for more than expected, in such cases the cmd done status
may have been updated in DSI isr status register. Add additional
check to see if the dma transfer is completed by reading this register
and checking the status.
Change-Id: Ia27ee162668949934c3e3cedc97e746832824f5c
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
In the current implementation, driver has a recovery mechanism
from pingpong timeout on command mode interface. This change
replaces WARN macro with pr_warn to reduce the logging in dmesg
when the pingpong timeout happens only once.
CRs-Fixed: 856973
Change-Id: I7568466f4e909e4adafaabbcd5da22596750914b
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
arm32 recently removed the `order' parameter from
arm_iommu_create_mapping: (68efd7d2fb: arm: dma-mapping: remove order
parameter from arm_iommu_create_mapping()) in order to make the API
easier to understand. The arm32 DMA IOMMU mapper has dynamic resizing
of the iova bitmap, so there was no reason to keep the `order' parameter
around (which was introduced to reduce the size of the bitmap).
Although we don't have dynamic iova bitmap reallocation on arm64, we'd
still like to get rid of the `order' parameter since it's confusing and
doesn't really help much (especially since all known clients on our
system are passing order=0). Remove it.
Change-Id: I35e32fdfbe05ec434f64a3a316d13c8f43304bc6
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
[cip@codeaurora.org: Removed changes unrelated to display]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
When adding x and y offsets to uwbc formats, the addresses need
to line up with the start of a tile.
Change-Id: I975dd07bba4bf6dde7ece7aa9b2bfb61d5315dde
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Ignore mdp_buffer mapping when MDP_SOLID_FILL_LAYER is detected.
The client marked this mdp_input_layer as SOLID_FILL layer
without input buffer associated with this layer. MDP hardware
SOLID_FILL feature will be utilized.
Change-Id: Ica48dc5b0be69ac42e2f442d6114781790a3c56a
Signed-off-by: Lei Zhou <leizhou@codeaurora.org>
During rapid suspend/resume usecases assertive display is being turned
on with backlight level zero. When on command is received with backlight
level zero driver bails out with out turning on AD and doesn't signal
the client that worker queue has stopped processing which results in a
timeout for on command. Change will ensure that client is signalled if
driver is skipping the processing of AD due to backlight being zero.
Change-Id: Iaa6229f10ce54f44ec64c175f67ef7584ad4c8b2
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
For bandwidth calculations, rotator driver needs
to know the compression ratio factors which
depends on the pixel format. This change adds
support to share this information between
user-space and rotator driver.
Change-Id: I6163317514328610a836c34fd9ca75c3e753b50f
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
The clk status register and vbif status based on xin-id
is used to check if pipes are idle. VBIF checks cannot be done
for cursor pipes as the same xin-id is shared between dsi, cursor0
and cursor1. Avoid vbif status check and fix clk status check for
cursor pipes.
Change-Id: I9e0a185beffd4e732c1b5dc61822cc94b3735a27
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
To assist with profiling and debugging, traces and additional
debugging logs have been added.
Change-Id: I39529dc52fe99de704268170a294bc4391ec2871
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Prior to this patch it was possible for rotator wq to write
to memory that had been freed in close session. Close
session now offloads the close work to wq if it still has not
completed the work.
Change-Id: I4b48071f930b912a098094d7de2b2081dac4c2e5
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
When calculating the plane sizes the buffer height is what should
be passed into mdss_mdp_get_plane_sizes.
Change-Id: I3e4bab0fbfed1e2f34dbe757768a72c9a7916919
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
When booting up in recovery mode, mmap is called without iommu attach.
This would result in device panic as iommu fails when buffer mapping is
done without attaching the respective iommu domain. Fix the issue by
delaying the mapping to a later point, during the commit.
Change-Id: Idbe4f6ca5557774b5add56c064ea6b05a67d530f
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
One of the condition checks in ad_input ioctl is to check the input
mode is not MDSS_AD_CALIB_MODE. The current code missed one pair
of brackets and made the check invalid. Correct the check to fix
the bug.
Change-Id: I82a083fe8a1bef6c57a01e20e02fdd14f8c09bde
Signed-off-by: Ping Li <pingli@codeaurora.org>
In the current implementation, as soon as the ping pong timeout
happens, driver dumps the relevant logs for debugging and panic.
It is possible to recover from this situation without panic by
performing MDSS control reset and panel write pointer reset. This
change tries to recover from pingpong timeout. If the recovery
is not successful for 10 consecutive frames, uevent is sent to
HAL layer for performing blank and unblank of display driver.
Change-Id: Iadc929a79a62bbf222b9022af5cf04f870079ded
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
When ESD related panel failures are detected, the recovery process
involves blanking and unblanking the panel. In such cases, it is
required to restore the backlight level as there may not be an explicit
call from the userspace to update the backlight.
Change-Id: Idd84a628cf2a1e37121b94d3c5cc11d45a78fdab
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
There are instances where the mdp wants to reset to full screen
especially during frame timeouts. Add event to s/w reset the dsi core
and reset the panel's ram write coordinates to full screen.
Change-Id: I43e5cb12126837330f3ed72386f87f5c7fabd2c0
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
When pingpong timeout is received, it could be due to some bad
configuration on MDP pipeline. In order to recover and have clean
HW for next frames, perform SW reset on the faulting ctl path. Also
make sure all the pipes in the bad configuration are halted
properly and does not have any residue transaction for the new
frames.
Conflicts:
drivers/video/msm/mdss/mdss_mdp_pipe.c
Change-Id: I9a6c6cb6d004fd65c24a7fefe7457ee68af9273a
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Due to various reasons wait4pingpong timeout can be observed and
this usually results in split screen behaviour for the end user.
Split screen is manifested because for a given frame only half of
the pixel data was sent and then some kind of hang was observed.
So unless the panel and display pipeline is restarted, next frames
will start from the location where it hanged. Improve user behavior
by resetting the display pipeline including panel by sending panel
dead event to user-space. Upon receiving this event user-space should
issue blank and un-blank which should recover the display pipeline.
Change-Id: Iec674a61229cbc037d24cf4f62ceb02a977b219c
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
FrameBuffer driver is tracking each fb_open and fb_release
call with process id and file descriptor node. This is
duplicate logic to track single call. This change removes
process id based framebuffer driver call tracking to
reduce the complexity. File descriptor is different for
each call. That's the main reason for choosing it to
track the calls.
CRs-fixed: 716379
Change-Id: Ida1728d3878aeedf486bebef0f6f70c1e68d006e
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Remove a redundant update of the output format when setting up
the AVI Infoframe content.
Change-Id: I065b310272c4b32dc9fafdd6e2d386cfa1952eac
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Add xlog for ctl flush bit configuration and
non realtime vbif debug node.
Change-Id: Ife7790286e16291067da3b295ecc1d035bf71fd6
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Calls to hist irq enable and disable are encompassed with a
spin_lock mdp_lock. This is not needed as all histogram irq
programming is independent of other MDP irq programming and
simultaneous access is restricted using hist intr lock. The
enable/disable irq calls made are further protected by one
mdss_lock spin_lock for preventing simultaneous access to
enable and disable of MDP irqs.
Change-Id: I2ec63e35fc3eca953e9ac21f7052c705656d899b
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
This reverts commit 832b482b621b ("msm: mdss: handle mmagic mdss
axi clock for msm8996 target"). SMMU driver adds the vote for
mmagic mdss axi clock vote which will take care of MDP and
DSI use cases. No need to put vote from individual module.
Change-Id: I858f28eb88deb34a612050d913459e62cc0955a8
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
[cip@codeaurora.org: Removed msm8996-mdss.dtsi changes]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Replace dma_map_sg/unmap_sg with msm_dma_map_sg_lazy
/msm_dma_unmpa_sg to avoid buffer unmapping till
the time it is free.
Change-Id: I0559238301882a89d25f3cf99a60140c9e9c1bdf
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
The rationale for open session is to accurately vote for bw and
clk rates based on configuration provided. Prior to this patch it
was possible to call open session with one configuration, but
provided an entirely different rotation configuration as work to
be completed.
Change-Id: I82c95c290cffa75ea7b09ea4a021e9e436782c06
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
The width provided to mdss_mdp_get_plane_sizes, which is used for
calculate stride, was using destination region of interest
width instead of buffer image width.
Change-Id: Ib585999207860fc85adeb1a9b23a6ba31dc543e2
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
For command mode panels current code calculations adjust the mdp
clock rate based on the minimum dsi pixel clock rate. This is
wrong and can lead to power issues since this rate considers
the blanking times which are not required for the mdp clock
calculations.
This change optimize the calculations by only considering the worst
width that could be processed by the mdp without blanking periods
and consider the time expected for the transfer by adjusting
the mdp clock in order to meet the performance requested; this
time can be tuned through the panel configuration.
Change-Id: Ib25df0e8f749d3ffc1d9059d5d7eac27e0f0b81e
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Add sysfs node to allow audio HAL to acknowledge every connect/disconnect
event. This makes audio HAL and HDMI driver to be in sync with respect to
notifications and avoid any fast plug-in/out notification issues.
Change-Id: I13634bb0efb8222cdbd86afa6723781f682632b3
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
In order to handle different use-cases, mixer ROIs and/or dst_x
of a pipe is modified and re-adjusted. In one of these use-cases, when
source split is disabled, re-adjustment was missing causing HW hangs or
unexpected layer positions. Fix these adjustments.
Change-Id: I7cda887874aad97bca16b63ca5a9eac303fa63a4
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Fix missing assignment for the mdp ib bandwidth vote
calculation that was causing to skip the ib factor
and resulted in the wrong ib vote calculation.
Change-Id: I0289dc94040416e42543c192ad88ef246483c0d4
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Adjust mdp bandwidth vote to meet the recommended
system settings for 8996.
Change-Id: I0901dc211fe8dac366e3602a45656aacc48683d3
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Removed msm8996-mdss.dtsi file from change]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
During blending operation, bottom color is known as border color and it
is same size as mixer dimensions. Default color is black but it can be
configured to different color. This is very useful for debugging purpose.
Add support to program border-color through debugfs as per following
guidelines.
echo code > <debugfs>/mdp/bordercolor/colorN
where
code: 12bit color value in decimal
colorN: color0, color1, color2
Change-Id: Ia3e8791713f5aa309a95c867445995ced028dd8d
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Starting with patch 2551ce16a5d44a3b03d0885b499924f6d218c78e, msm: mdss:
add async support for hw cursor, flush logic was modifed. However it
introduced an issue where if mixer configuration is skipped then
secondary flush is skipped. This can cause issues. Fix the flush logic
by ensuring that secondary flush is not skipped.
Change-Id: Iee8b9ca80353b2fdb096e64b12c865cd10f0dd08
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>