283 Commits

Author SHA1 Message Date
Mark Yacoub
b6b1bb980e drm/mediatek: Turn off Alpha bit when plane format has no alpha
This change enables XR24 format to be displayed as an overlay on top of
the primary plane.

Suggested-by: Sean Paul <seanpaul@chromium.org>
To: CK Hu <ck.hu@mediatek.com>
To: dri-devel@lists.freedesktop.org
Cc: Daniele Castagna <dcastagna@chromium.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Signed-off-by: Mark Yacoub <markyacoub@google.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-10 14:10:49 +08:00
Mark Yacoub
039cf36cbf drm/mediatek: Return from mtk_ovl_layer_config after mtk_ovl_layer_off
If the plane pending state is disabled, call mtk_ovl_layer_off then
return.
This guarantees that that the state is valid for all operations when the
pending state is enabled.

Suggested-by: Sean Paul <seanpaul@chromium.org>
To: CK Hu <ck.hu@mediatek.com>
To: dri-devel@lists.freedesktop.org
Cc: Daniele Castagna <dcastagna@chromium.org>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Signed-off-by: Mark Yacoub <markyacoub@google.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-10 14:10:49 +08:00
Yongqiang Niu
84abcf1234 drm/mediatek: Add ctm property support
Add ctm property support

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-10 14:10:30 +08:00
Yongqiang Niu
4cebc1de50 drm/mediatek: Add gamma property according to hardware capability
If there is no gamma function in the crtc
display path, don't add gamma property
for crtc

Fixes: 2f3f4dda747c ("drm/mediatek: Add gamma correction.")
Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-10 14:10:07 +08:00
Bibby Hsieh
2f965be7f9 drm/mediatek: apply CMDQ control flow
In some Mediatek SoC, there is no "shadow"
registers for performaing an atomic video mode
set or page flip at vblank/vsync.

The CMDQ (Commend Queue) is used to help
update all relevant display controller registers
with critical time limation.

Signed-off-by: YT Shen <yt.shen@mediatek.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-09 09:39:08 +08:00
Bibby Hsieh
d0afe37f52 drm/mediatek: support CMDQ interface in ddp component
The CMDQ (Command Queue) in some Mediatek SoC is used
to help update all relevant display controller registers
with critical time limation.
This patch add cmdq interface in ddp_comp interface,
let all ddp_comp interface can support cpu/cmdq function
at the same time.

Signed-off-by: YT Shen <yt.shen@mediatek.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2020-01-09 09:39:08 +08:00
Bibby Hsieh
e0e4706c7e drm/mediatek: remove unused external function
layer_on and layer_off both are unused external function,
remove them from mtk_ddp_comp_funcs structure.

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:12 +08:00
Bibby Hsieh
9b59b8c6f8 drm/mediatek: disable all the planes in atomic_disable
Under shadow register case, we do not disable all the plane before
disable all the hardwares. Fix it.

Fixes: 9dc84e98a31f ("drm/mediatek: add shadow register support")

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:12 +08:00
Bibby Hsieh
920fffcc89 drm/mediatek: update cursors by using async atomic update
Support to async updates of cursors by using the new atomic
interface for that.

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:11 +08:00
Bibby Hsieh
411f5c1eac drm/mediatek: handle events when enabling/disabling crtc
The driver currently handles vblank events only when updating planes on
an already enabled CRTC. The atomic update API however allows requesting
an event when enabling or disabling a CRTC. This currently leads to
event objects being leaked in the kernel and to events not being sent
out. Fix it.

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:11 +08:00
Bibby Hsieh
60b874f642 drm/mediatek: use DRM core's atomic commit helper
The DRM core atomic helper now supports asynchronous commits natively.
The custom drm implementation isn't needed anymore, remove it.

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:11 +08:00
Yongqiang Niu
138b80cbd7 drm/mediatek: Fix can't get component for external display plane.
The original logic is ok for primary display, but will not find out
component for external display.

For example, plane->index is 6 for external display, but there are only
2 layer nr in external display, and this condition will never happen:
if (plane->index < (count + mtk_ddp_comp_layer_nr(comp)))

Fix this by using the offset of the plane to mtk_crtc->planes as index,
instead of plane->index.

Fixes: d6b53f68356f ("drm/mediatek: Add helper to get component for a plane")
Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:11 +08:00
Pi-Hsun Shih
5bbb71cda6 drm/mediatek: Check return value of mtk_drm_ddp_comp_for_plane.
The mtk_drm_ddp_comp_for_plane can return NULL, but the usage doesn't
check for it. Add check for it.

Fixes: d6b53f68356f ("drm/mediatek: Add helper to get component for a plane")
Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-12-20 16:19:10 +08:00
Dave Airlie
393fdfdb4a Mediatek DRM next for Linux 5.5 - 2
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJdw3RSAAoJEOHKc6PJWU4kB04P+gOyl1YV1p0h9N4Wstxn/RdK
 TbK8Gt4u+vSa7PtiFUwmanbo4Af3VlMu34nbFanTn9P2QIRifh//gWLCZJnn2SkR
 ZXFimh3AxtMgox3FozucLzMNcb5bsHHscBNw88Gc3j9/nFMsZjdcppAlPYkOt+uq
 VqcPUOWAsbI4iEtl15Mf+oL6QeLAjPpDjOzZV1moUe08Ns2xy1bKGzq3UOD1OXmx
 0gKJq6Qh5i1k/t2oZ3gMpfTzU4fgAjT8k60N5kbeGt3/wpem234YKVcy1FUKxSiH
 sxc6f8oJm5FEmS7hlvMPvfAcs0DzhrRzcQGiGVHBNXabj783gd9Jc5zNIZ4KCNEV
 U9W40DTbpA59u+nMY3hu1Gw9Pk/myuUbtWJFah5XlpL323wsFutvb0wcu6DV3f71
 u7oIBKrf0Ije/h5B9s6aZsLNpzA+9pJPzeez5dAQ5eC3Bi/ZfWuwxUbP2yhZ5ZO7
 BVTGMkHaYBXkVhFBS3NyyXvY8RNap+JechkOVJYH5KNWXAZk/4wS+PKcf9dychYx
 Js0OW4wvkXIX2ZKyI0bEH99HlFuwMeBvxqFCxd+zBdEScOcDtHX9cEDkUdBoQod7
 8WrjlEnotIeX/U5EHJs+/QSnd24/bYFpoauetrfZwq7dE2y1zF7UW8w7/UstfyOU
 aNa1iBuoYFHz0QctDHNK
 =SjCW
 -----END PGP SIGNATURE-----

Merge tag 'mediatek-drm-next-5.5-2' of https://github.com/ckhu-mediatek/linux.git-tags into drm-next

Mediatek DRM next for Linux 5.5 - 2

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1573093419.13645.5.camel@mtksdaap41
2019-11-08 13:19:55 +10:00
Sean Paul
df44445771 drm/mediatek: Support 180 degree rotation
Now that we support both reflections, we can expose 180 degree rotation
and rely on the simplify routine to convert that into REFLECT_X |
REFLECT_Y

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:45 +08:00
Sean Paul
b368d3ecab drm/mediatek: Support reflect-x plane rotation
Add support for REFLECT_X rotations.

Cc: Fritz Koenig <frkoenig@chromium.org>
Cc: Daniele Castagna <dcastagna@chromium.org>
Cc: Miguel Casas <mcasas@chromium.org>
Cc: Mark Yacoub <markyacoub@google.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:45 +08:00
Sean Paul
84d8057539 drm/mediatek: Support reflect-y plane rotation
Expose the rotation property and handle REFLECT_Y rotations.

Cc: Fritz Koenig <frkoenig@chromium.org>
Cc: Daniele Castagna <dcastagna@chromium.org>
Cc: Miguel Casas <mcasas@chromium.org>
Cc: Mark Yacoub <markyacoub@google.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:44 +08:00
Sean Paul
ef87d3e2dd drm/mediatek: Plumb supported rotation values from components to plane init
This patch adds the ability for components to expose supported rotations
which will be exposed to userspace via a plane rotation property.

No functional changes in this patch.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:44 +08:00
Sean Paul
f7c710d1e4 drm/mediatek: Add plumbing for layer_check hook
This allows components to implement a .layer_check callback for their
layers which is called during atomic_check.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:44 +08:00
Sean Paul
d6b53f6835 drm/mediatek: Add helper to get component for a plane
Instead of hard-coding which components have planes, add a helper
function to walk the components and map a plane index to a component
layer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:44 +08:00
Sean Paul
31c5558dae drm/mediatek: Refactor plane init
Add a couple of functions which enumerate the number of planes for a
component and initialize the planes for a component.

No functional changes in this patch, but it will allow us to selectively
support rotation if the component supports it.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 16:00:44 +08:00
Sean Paul
ed24d5d05e drm/mediatek: Add RGB[A] variants to published plane formats
These formats are handled in the rdma code, but for some reason they're
not published as supported formats for the planes. So add them to the
list.

Cc: Nicolas Boichat <drinkcat@chromium.org>
Cc: Daniele Castagna <dcastagna@chromium.org>
Cc: Miguel Casas <mcasas@chromium.org>
Tested-by: Miguel Casas <mcasas@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-11-06 15:46:42 +08:00
Wambui Karuga
2ec35bd21d drm/mediatek: remove cast to pointers passed to kfree
Remove unnecessary casts to pointer types passed to kfree.
Issue detected by coccinelle:
@@
type t1;
expression *e;
@@

-kfree((t1 *)e);
+kfree(e);

Signed-off-by: Wambui Karuga <wambui.karugax@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20191023111107.9972-1-wambui.karugax@gmail.com
2019-10-24 14:12:21 +02:00
Dave Airlie
400e91347e Mediatek DRM next for Linux 5.5
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJdo9UAAAoJEOHKc6PJWU4kpBAP/3YaQv7HwNtHs8lIQ6yTiRJy
 fnO6JlrDa4GsSOL4dPTCkvVWVT5hh6jR7as1H2NoGcmz8+5/wePdZlT0FgSR8o+t
 VP+JIjpmmTwGLtuLjR1pbnGfX040NJqwRUK7Sj7lSkqWA1MUDJ3IwbKSixqzKvHV
 Th/T1rdPXaji8nhkv/Ff6KIJ66Fu5pwtJTBCOxSN4AItfGbDifaGL/pbEbh9LjOT
 59UweYex23qSCBip1McW11hMfNk2zwOe+hUERgW1aWfXXx1q/WSAoyvvrYR88MF8
 hIQ8Rr0W8/24usXbsch9Of5e5uIV4degqW6ty7cLngNOqI/Nm3kPaOT42TxzwAg+
 rqAviDpG+CMFG5yl9EmJc2wbxEjy/IwzUoeY1guGnieZNrywqKH4OjC6BmMx99f8
 lbjg6jjE9fMS6ONUqXb7ITtbshFjVpe0C7gQ0FqgRpD9Q4UE5Y4H+QKCQJBHlu/D
 +4s6n5BqPmwQBnCueqvXyJgPw0s/kI5us24+kf29cy0QzIoFwwBrayita+VRxKfs
 V94G1PuyUCMhVlWIDAPBFHxEtFsZW7A+0CP03bnyxb2MlmAjAHpl9A1saxqR9GKe
 6Hc41GmBpC0xDDY2SQPPx2h89T3VVJNhQQB3GaJiphjpXt0ayAwm/4LM05W+hmju
 5X0aoVQmp+ddSiQ+5DGR
 =zkCu
 -----END PGP SIGNATURE-----

Merge tag 'mediatek-drm-next-5.5' of https://github.com/ckhu-mediatek/linux.git-tags into drm-next

Mediatek DRM next for Linux 5.5

This include mipi_tx, dsi, and partial crtc for MT8183 SoC.

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1571103548.4416.6.camel@mtksdaap41
2019-10-22 15:03:11 +10:00
CK Hu
631005b255 drm/mediatek: add no_clk into ddp private data
Mutex has no clock in some SoC, so add no_clk in private data and get
clock according to no_clk.

Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:13 +08:00
Yongqiang Niu
1037edf20c drm/mediatek: add mutex sof register offset into ddp private data
mutex sof register offset will be private data of ddp

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:13 +08:00
Yongqiang Niu
1c7da0c762 drm/mediatek: add mutex sof into ddp private data
mutex sof will be ddp private data

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:13 +08:00
Yongqiang Niu
d730af989e drm/mediatek: add mutex mod register offset into ddp private data
mutex mod register offset will be private data of ddp.

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:12 +08:00
Yongqiang Niu
0d3a120286 drm/mediatek: add mutex mod into ddp private data
except mutex mod, mutex mod reg,mutex sof reg,
and mutex sof id will be ddp private data

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:12 +08:00
Yongqiang Niu
412b1e463e drm/mediatek: add ovl0/ovl_2l0 usecase
This patch add ovl0/ovl_2l0 usecase
in ovl->ovl_2l0 direct link usecase:
1. the crtc support layer number will 4+2
2. ovl_2l0 background color input select ovl0 when crtc init
and disable it when crtc finish
3. config ovl_2l0 layer, if crtc config layer number is
bigger than ovl0 support layers(max is 4)

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:12 +08:00
Yongqiang Niu
57148baac8 drm/mediatek: distinguish ovl and ovl_2l by layer_nr
distinguish ovl and ovl_2l by layer_nr when get comp
id

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:12 +08:00
Yongqiang Niu
318462d1a5 drm/mediatek: add background color input select function for ovl/ovl_2l
This patch add background color input select function for ovl/ovl_2l

ovl include 4 DRAM layer and 1 background color layer
ovl_2l include 4 DRAM layer and 1 background color layer
DRAM layer frame buffer data from render hardware, GPU for example.
backgournd color layer is embed in ovl/ovl_2l, we can only set
it color, but not support DRAM frame buffer.

for ovl0->ovl0_2l direct link usecase,
we need set ovl0_2l background color intput select from ovl0
if render send DRAM buffer layer number <=4, all these layer read
by ovl.
layer0 is at the bottom of all layers.
layer3 is at the top of all layers.
if render send DRAM buffer layer numbfer >=4 && <=6
ovl0 read layer0~3
ovl0_2l read layer4~5
layer5 is at the top ot all these layers.

the decision of how to setting ovl0/ovl0_2l read these layer data
is controlled in mtk crtc, which will be another patch

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:12 +08:00
Yongqiang Niu
132c6e250e drm/mediatek: add function to background color input select for ovl/ovl_2l direct link
This patch add function to background color input select for ovl/ovl_2l
direct link for ovl/ovl_2l direct link usecase, we need set background
color input select for these hardware. This is preparation patch for
ovl/ovl_2l usecase.

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:11 +08:00
Yongqiang Niu
0a5ccda420 drm/medaitek: add layer_nr for ovl private data
This patch add layer_nr for ovl private data
ovl_2l almost same with with ovl hardware, except the
layer number for ovl_2l is 2 and ovl is 4.
this patch is a preparation for ovl-2l and
ovl share the same driver.

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:11 +08:00
Yongqiang Niu
d5abb5f214 drm/mediatek: add gmc_bits for ovl private data
This patch add gmc_bits for ovl private data
GMC register was set RDMA ultra and pre-ultra threshold.
10bit GMC register define is different with other SOC, gmc_thrshd_l not
used.

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:11 +08:00
Yongqiang Niu
dd8feb2262 drm/mediatek: add component OVL_2L1
This patch add component OVL_2L1

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:11 +08:00
Yongqiang Niu
b17bdd0d7a drm/mediatek: add component OVL_2L0
This patch add component OVL_2L0

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:58:01 +08:00
Yongqiang Niu
450aa87c73 drm/mediatek: add component DITHER
This patch add component DITHER

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:10:13 +08:00
Yongqiang Niu
cefb6abfcc drm/mediatek: add ddp component CCORR
This patch add ddp component CCORR

Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-09 16:04:50 +08:00
Jitao Shi
75374fc2c1 drm/mediatek: add dphy reset after setting lanes number
Add dphy reset after setting lanes number to avoid dphy fifo effor.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:39 +08:00
Jitao Shi
2f501cc0b0 drm/mediatek: adjust dsi and mipi_tx probe sequence
mtk_mipi_tx is the phy of mtk_dsi.
mtk_dsi get the phy(mtk_mipi_tx) in probe().

So,  mtk_mipi_tx init should be ahead of mtk_dsi. Or mtk_dsi will
defer to wait mtk_mipi_tx probe done.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:38 +08:00
Jitao Shi
7a5bc4e22e drm/mediatek: change the dsi phytiming calculate method
Change the method of frame rate calc which can get more accurate
frame rate.

data rate = pixel_clock * bit_per_pixel / lanes
Adjust hfp_wc to adapt the additional phy_data

if MIPI_DSI_MODE_VIDEO_BURST
	hfp_wc = hfp * bpp - data_phy_cycles * lanes - 12 - 6;
else
	hfp_wc = hfp * bpp - data_phy_cycles * lanes - 12;

Note:
//(2: 1 for sync, 1 for phy idle)
data_phy_cycles = T_hs_exit + T_lpx + T_hs_prepare + T_hs_zero + 2;

bpp: bit per pixel

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Tested-by: Ryan Case <ryandcase@chromium.org>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:38 +08:00
Jitao Shi
e249e3e86b drm/mediatek: add mt8183 dsi driver support
Add mt8183 dsi driver data. Enable size control and
reg commit control.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:38 +08:00
Jitao Shi
7bf54afec9 drm/mediatek: add frame size control
Our new DSI chip has frame size control.
So add the driver data to control for different chips.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:38 +08:00
Jitao Shi
3c6bd94d32 drm/mediatek: add dsi reg commit disable control
New DSI IP has shadow register and working reg. The register
values are writen to shadow register. And then trigger with
commit reg, the register values will be moved working register.

This function is default on. But this driver doesn't use this
function. So add the disable control.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:38 +08:00
Jitao Shi
89d0e3f882 drm/mediatek: replace writeb() with mtk_dsi_mask()
The writeb() is unavailable in mt8173. Because the mt8173 dsi module
doesn't support 8bit mode access.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:37 +08:00
Jitao Shi
bb6bc2982a drm/mediatek: fixes CMDQ reg address of mt8173 is different with mt2701
Config the different CMDQ reg address in driver data.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:37 +08:00
Jitao Shi
b3218e7436 drm/mediatek: move mipi_dsi_host_register to probe
DSI panel driver need attach function which is include in
mipi_dsi_host_ops.

If mipi_dsi_host_register is not in probe, dsi panel will
probe more delay.

So move the mipi_dsi_host_register to probe from bind.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:37 +08:00
Jitao Shi
efda51a58b drm/mediatek: add mipi_tx driver for mt8183
This patch add mt8183 mipi_tx driver.
And also support other chips that use the same binding and driver.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:37 +08:00
Jitao Shi
78e01a8d0f drm/mediatek: separate mipi_tx to different file
Different IC has different mipi_tx setting of dsi.
This patch separates the mipi_tx hardware relate part for mt8173.

Signed-off-by: Jitao Shi <jitao.shi@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
2019-10-07 12:29:37 +08:00