Commit Graph

25116 Commits

Author SHA1 Message Date
Laurent Pinchart
fcb60baab3 UPSTREAM: drm/bridge: Make (pre/post) enable/disable callbacks optional
Instead of forcing bridges to implement empty callbacks make them all
optional.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
(cherry picked from commit c8a3b2ae07)

Change-Id: Id37cbb6114e69957dfd6b72c8bd7b66dcc6f0590
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-14 14:57:20 +08:00
Mark Yao
2ab91f190d drm/rockchip: vop: fixup error handle on crtc register
Change-Id: I969a3994360331f4ce66e7affcc9ed3869599777
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-14 11:47:04 +08:00
Jeffy Chen
2169a9db46 UPSTREAM: drm/rockchip: Reorder drm bind/unbind sequence
Current drm bind/unbind sequence would cause some memory issues.
For example we should not cleanup iommu before cleanup mode config.

Reorder bind/unbind sequence, follow exynos drm.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
[seanpaul fixed spelling typo in commit subject]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1491481885-13775-11-git-send-email-jeffy.chen@rock-chips.com

(cherry picked from commit ccea91998c)

Change-Id: I8571a34419735f8b8a51666b31b91cbdb18250bd
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-14 11:47:03 +08:00
Mark Yao
8ecd10c962 drm/rockchip: backlight: fix modules compile error
Fixes:
error: redefinition of 'rockchip_drm_backlight_update'
error: redefinition of 'of_rockchip_drm_sub_backlight_register'

Change-Id: I4eeebc6075387f720acec597cee765e2a1a83b7c
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-14 11:47:02 +08:00
Mark Yao
abc940812c drm/bridge: analogix: fix modules compile error
sync to upstream commit:
  3424e3a drm: bridge: analogix/dp: split exynos dp driver to bridge directory

fix following modules compile error:

ERROR: "analogix_dp_enable_video_mute" [drivers/gpu/drm/bridge/analogix/analogix_dp_core.ko] undefined!
ERROR: "analogix_dp_config_interrupt" [drivers/gpu/drm/bridge/analogix/analogix_dp_core.ko] undefined!

Change-Id: I340d82f238485617604afd44047644adc9620f47
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-14 11:47:01 +08:00
Zheng Yang
d954549584 drm/rockchip: hdmi: disable RK3368 2160P RGB444/YCbCr444/YCbCr422 mode
Change-Id: I573db9cd41031f45cac359fc9314491ebd1ba8fc
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
2017-08-11 14:54:13 +08:00
Mark Yao
d1917fb492 drm/rockchip: vop: correct dclk_ddr define for rk3368
dclk_ddr is supported on rk3368 vop, it would effect the
display quality on YUV420 mode.

Change-Id: Ia624a1f397e732d80d3908b8e712ae79d3ad7948
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Reported-by: Huacong Yang <will.yang@rock-chips.com>
2017-08-11 10:01:48 +08:00
Mark Yao
0fc8ce4b39 drm/rockchip: gem: support secure memory
Change-Id: I91dfbbfbf5d13983edfb79585e9beb980566f784
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-09 16:36:50 +08:00
Mark Yao
258970afc5 drm/rockchip: gem: add get phys ioctl
Change-Id: Ic9b8c6acfaeb47ec720dbad3d8f5141ef7b13e5d
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-09 16:35:04 +08:00
Mark Yao
2965ada189 drm/rockchip: gem: support force alloc cma buffer with flags
Change-Id: I4749eac53609f865d0d4230364b1cbaf39ee0955
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-09 16:34:59 +08:00
Sandy Huang
9cd1d94f3f drm/rockchip: lvds: RGB output should enable LVDS channel 1
Change-Id: Iaa7b95f1316fa77425992574288b3262d5af84e7
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2017-08-09 16:16:12 +08:00
Sandy Huang
6e49287024 drm/rockchip: lvds: set funcs structures to const
Change-Id: Ie118a1184a315c8cb7808a14a87f23c8c9a47757
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2017-08-09 16:15:00 +08:00
Sandy Huang
69b4bbba55 drm/rockchip: lvds: add pinctrl for rk3288 rgb output
Change-Id: I4c483eb269d021860fe4249a3d25bcfb6c4f3f5f
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2017-08-09 16:12:47 +08:00
Mark Yao
b34356fc63 drm/rockchip: vop: zpos set to INT_MAX if not enabled
Change-Id: Ia78c26f400d0cc4192cae183f83b7f06575c9332
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-09 09:39:27 +08:00
Mark Yao
2421f54c77 drm/rockchip: vop: correct win23 alpha define
Change-Id: I3e3bfbb9164b35a9f96d4bc71ab4c023d8270fc5
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-09 09:38:37 +08:00
Sandy Huang
59971be7a4 drm/rockchip: lvds: mipi_lvds_ctl set to mipi dsi controller base address
So we can define reg offset according to TRM, otherwise it will make
us confused.

Change-Id: I1687542fcaf7ac4e6e78d863e8940f6604794407
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2017-08-09 09:33:42 +08:00
Sandy Huang
5d365c42c8 drm/rockchip: lvds: update rk336x according rk3288 lvds function define
Change-Id: I9dbb9dc55f3d6d7ae498e94f595e8de47c6a4d43
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
2017-08-09 09:33:32 +08:00
WeiYong Bi
89b7ad3a8e drm/rockchip: dsi: partial revert commit 47aef8
fix anomaly display issue for rk3368 caused by commit 47aef8

Fixes 47aef8 (drm/rockchip: dw-mipi-dsi: organize dw_mipi_dsi_set_mode function)

Change-Id: Ida274c65898b13468a2f984555efdf67cf32aab7
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
2017-08-08 15:31:13 +08:00
Zheng Yang
0a261ab9b1 drm/rockchip: hdmi: fix parse phy table error
The value of sym_ctr and term is reversed.

Change-Id: I29adaf9a8590ff27c912d22e2370db2ef5b2c305
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
2017-08-07 18:40:02 +08:00
Mark Yao
b3702b38a1 drm/rockchip: vop: fixup post scale configure
Fixes: 7f1f1ef ("drm/rockchip: vop: don't force enable post scale")
Change-Id: I57b44e7fe00bce7615ecde2e1f23837c74532c68
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-04 17:12:00 +08:00
Jacob Chen
2792966e9f drm/rockchip: remove rga driver
we have to many rga drivers.. let's remove it to avoid misunderstanding

Change-Id: I807c9ff7dc967a00d30ccba5adc5d234e27b9d6a
Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com>
2017-08-04 15:33:02 +08:00
WeiYong Bi
deeacfd957 drm/rockchip: dsi: fix Non-SNPS PHY power on sequence
Change-Id: If9f131ec6ebc8b194034bf231ca2bcc120440860
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
2017-08-04 09:16:10 +08:00
Huang Jiachai
c4e97a6379 drm/rockchip: get connector in bridge mode
Change-Id: I08535f5c2d83783dc86ae641daeb530dedec36e6
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2017-08-03 20:25:32 +08:00
Huang Jiachai
b05ec6d240 drm/rockchip: add loader protect for encoder
Change-Id: I9fa1e949a55d8778b44ff809630337d5d35ffa11
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2017-08-03 20:23:17 +08:00
Huang Jiachai
bc85c7c3f1 drm/rockchip: lvds: support external bridge
Change-Id: If4a0da37f8c2062d0efd09bf71cd566091043127
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2017-08-03 20:22:41 +08:00
Huang Jiachai
ee5e55c9d8 drm/rockchip: lvds move dpms/commit to enable ops
Change-Id: I23d9f2ebdcd55ecd2a3922cc3e06bb162a68b6e5
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2017-08-03 20:22:13 +08:00
Jerry Xu
b4ee7af427 drm/rockchip: dw-mipi-dsi: configure grf register for 3399
1. Fixes: 6cd4eabae71d("drm/rockchip: dw-mipi-dsi: add dual-channel dsi support")
2. add for dual-channel dsi

Change-Id: I69a25fcf8087872f3e7d254f4606ea08e458c295
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-03 20:14:13 +08:00
Jerry Xu
a18191caed drm/rockchip: dw-mipi-dsi: modify the way to find the panel node
Change-Id: Ib88c11d5c44d9dc465604ddf9b00e361ff7ac958
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-03 11:48:47 +08:00
Finley Xiao
b260ef595e drm/rockchip: vop: Fix unregister devfreq notifier unsuccessfully
Change-Id: I0d1e02eea2af59d63ea2948e14277aa6ad9955b6
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2017-08-02 21:31:11 +08:00
Mark Yao
e7bf29dec5 drm: fix mutex lock on connector register
Fixes: c4a3cc5 ("drm: Paper over locking inversion after registration rework")
Change-Id: I43c8ec8ed7e21416a1e2531cd84d04ba148ad0c4
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-02 14:20:00 +08:00
Mark Yao
1089d61863 drm/rockchip: vop: reference vblank before queue to flip worker
Reference vblank after the fb_unref_worker may have a problem:
    queue fb_unref_work
                         <--- unfer_worker:drm_crtc_vblank_put()
    drm_crtc_vblank_get

Following Warning may cause by this race:

[11749.638812] WARNING: at drivers/gpu/drm/drm_irq.c:1272
[11749.638818] Modules linked in:
[11749.638825]
[11749.638833] CPU: 4 PID: 8446 Comm: kworker/u12:1 Not tainted 4.4.77 #2428
[11749.638841] Hardware name: Rockchip RK3399 Excavator Board edp (Android) (DT)
[11749.638864] Workqueue: events_unbound flip_worker
[11749.638873] task: ffffffc0f1a7db00 ti: ffffffc0da3f8000 task.ti: ffffffc0da3f8000
[11749.638884] PC is at drm_vblank_put+0x34/0xac
[11749.638890] LR is at drm_crtc_vblank_put+0x20/0x2c
[11749.642771] [<ffffff8008473cb0>] drm_vblank_put+0x34/0xac
[11749.642778] [<ffffff8008473d48>] drm_crtc_vblank_put+0x20/0x2c
[11749.642786] [<ffffff80084a2894>] vop_fb_unref_worker+0x14/0x28
[11749.642792] [<ffffff800848c2a0>] flip_worker+0xa8/0xe8
[11749.642801] [<ffffff80080b73f4>] process_one_work+0x218/0x3e0
[11749.642808] [<ffffff80080b7df4>] worker_thread+0x2e8/0x404
[11749.642814] [<ffffff80080bc738>] kthread+0xf8/0x100
[11749.642821] [<ffffff8008082840>] ret_from_fork+0x10/0x50

Change-Id: I2b7f8a84d18e4635122b5028d39ec8192c6ca70b
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-02 14:19:55 +08:00
Jerry Xu
d61734b170 drm/panel: simple: modify the name of the delay time for dsi
Change-Id: Ib0ec9dd0d29f13fd6249903b292c997b293ce987
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-02 10:29:02 +08:00
Jerry Xu
d92c343259 drm/rockchip: dw-mipi-dsi: use specific poll helper
As the documentation for readx_poll_timeout says, we want to use the
specialized macro for readl rather than using the generic version
directly.

Change-Id: I864b350f0e1b0e24bd3a7e2b0b1c4c231e9acc18
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-02 10:26:19 +08:00
WeiYong Bi
1ae2dccdfa drm/rockchip: vop: add data01_swap support
Change-Id: I4a00e7d5efe49ee9621ed7218a10e0ef1628ee47
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
2017-08-02 10:23:46 +08:00
Finley Xiao
796f116833 drm/rockchip: vop: add mutex lock to two vops
Each vop should add mutex lock when do ddr frequceny change.

Change-Id: Ie63c90b0b4421d1be6bf8bdc9ff3b179fdf2193d
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2017-08-01 18:14:43 +08:00
Mark Yao
44aa45da29 drm/rockchip: vop: correct pin_pol define
Fixes: b2d8717 ("drm/rockchip: vop: split dclk_pol from pin_pol")
Change-Id: If756fe0791d41c7084296f4f28481cbc665f09c4
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-08-01 18:09:59 +08:00
Jerry Xu
6cd4eabae7 drm/rockchip: dw-mipi-dsi: add dual-channel dsi support
Change-Id: I11f203794d9b07a6a60e0c583827154da8c9daf6
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-01 14:51:47 +08:00
Jerry Xu
b8c261fb83 drm/rockchip: dw-mipi-dsi: adjust the calculation of lane_mbps
adjust the calculation of lane_mbps to distinguish between
two different phy. also convenient to add support for dual-channel

Change-Id: I2916d880202bba11b9db1fa48a7534fc1f65e331
Signed-off-by: Jerry Xu <xbl@rock-chips.com>
2017-08-01 14:51:25 +08:00
WeiYong Bi
b1ae872815 drm/rockchip: vop: add dual-channel dsi support
Change-Id: Ibddc064c6c588d0733a238b08b7ba4c5bd4518a2
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
2017-07-28 15:51:48 +08:00
WeiYong Bi
9d268a4e2b drm/rockchip: dsi: Clearly distinguish between SNPS PHY and Non-SNPS PHY
Change-Id: Ia947050f444eac75e951ddc8cd7e0b4453673094
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
2017-07-28 09:25:35 +08:00
Mark Yao
559207f083 drm/rockchip: vop: only initial pll for enabled vop
Change-Id: I33521c7ca57869913e94522b19ff3a2a20250829
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-27 16:45:59 +08:00
Mark Yao
3fa0f9ff62 drm/rockchip: vop: move dclk pll into vop private data
each vop only need one dclk pll reference, Save dclk pll
on rockchip_crtc_state would make things complex

Change-Id: Id779f1bf54d5bfa52aed413c238781083f333782
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-27 16:45:55 +08:00
Huang, Tao
6ee6d6d68b Merge tag 'lsk-v4.4-17.07-android' of git://git.linaro.org/kernel/linux-linaro-stable.git
LSK 17.07 v4.4-android

* tag 'lsk-v4.4-17.07-android': (402 commits)
  dt/vendor-prefixes: remove redundant vendor
  Linux 4.4.77
  saa7134: fix warm Medion 7134 EEPROM read
  x86/mm/pat: Don't report PAT on CPUs that don't support it
  ext4: check return value of kstrtoull correctly in reserved_clusters_store
  staging: comedi: fix clean-up of comedi_class in comedi_init()
  staging: vt6556: vnt_start Fix missing call to vnt_key_init_table.
  tcp: fix tcp_mark_head_lost to check skb len before fragmenting
  md: fix super_offset endianness in super_1_rdev_size_change
  md: fix incorrect use of lexx_to_cpu in does_sb_need_changing
  perf tools: Use readdir() instead of deprecated readdir_r() again
  perf tests: Remove wrong semicolon in while loop in CQM test
  perf trace: Do not process PERF_RECORD_LOST twice
  perf dwarf: Guard !x86_64 definitions under #ifdef else clause
  perf pmu: Fix misleadingly indented assignment (whitespace)
  perf annotate browser: Fix behaviour of Shift-Tab with nothing focussed
  perf tools: Remove duplicate const qualifier
  perf script: Use readdir() instead of deprecated readdir_r()
  perf thread_map: Use readdir() instead of deprecated readdir_r()
  perf tools: Use readdir() instead of deprecated readdir_r()
  ...

Conflicts:
	Makefile
	drivers/Kconfig
	drivers/Makefile
	drivers/usb/dwc3/gadget.c

Change-Id: Ib4aae2e34ebbf0d7953c748a33f673acb3e744fc
2017-07-26 19:32:04 +08:00
Tomasz Figa
5fd5d0d25b UPSTREAM: drm/rockchip: Always signal event in next vblank after cfg_done
This patch makes the driver send the pending vblank event in next vblank
following the commit, relying on vblank signalling improvements done in
previous patches. This gives us vblank events that always represent the
real moment of changes hitting on the screen (which was the case only
for complete FB changes before) and lets us remove the manual window
update check.

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
(cherry picked from commit 41ee436700)

Change-Id: Icb1d14cb8af942e39407cc6205a58b9c5e31122b
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-26 19:09:45 +08:00
Mark Yao
3e8b3fb984 drm/rockchip: fix mm_dump NULL pointer crash
drm mm is not initial on non-iommu context.

Fix crash:
[   11.635376] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[   11.636148] pgd = ffffffc0de19d000
[   11.636474] [00000000] *pgd=0000000000000000, *pud=0000000000000000
[   11.637088] Internal error: Oops: 96000045 [#1] PREEMPT SMP
[   11.637594] Modules linked in:
[   11.637902] CPU: 4 PID: 424 Comm: sh Not tainted 4.4.71 #146
[   11.638406] Hardware name: Rockchip RK3399 Evaluation Board v3 (Android) (DT)
[   11.639050] task: ffffffc0de796800 ti: ffffffc0de260000 task.ti: ffffffc0de260000
[   11.639736] PC is at __mutex_lock_slowpath+0xa8/0x178
[   11.640198] LR is at __mutex_lock_slowpath+0x7c/0x178
[   11.788003] [<ffffff8008b85b5c>] __mutex_lock_slowpath+0xa8/0x178
[   11.788560] [<ffffff8008b85c58>] mutex_lock+0x2c/0x44
[   11.789024] [<ffffff800849e8d8>] rockchip_drm_mm_dump+0x30/0x5c
[   11.789560] [<ffffff80081d612c>] seq_read+0x1a8/0x3f8
[   11.790017] [<ffffff80081b4208>] __vfs_read+0x38/0xf4
[   11.790472] [<ffffff80081b4adc>] vfs_read+0x84/0x128
[   11.790927] [<ffffff80081b552c>] SyS_read+0x54/0xa4
[   11.791372] [<ffffff80080828b0>] el0_svc_naked+0x24/0x28

Change-Id: I342311da43d50b743257b81425dfc6a327306803
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-26 19:09:09 +08:00
Mark Yao
c2e4d4e9ca drm/rockchip: vop: add rk3366 vop lit support
Change-Id: Iaf869f0fbf7b703dff3c38e9df4b8570d9260bd4
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-26 16:04:06 +08:00
Mark Yao
b2d8717bea drm/rockchip: vop: split dclk_pol from pin_pol
Some vop have a difference pin_pol layout

Change-Id: I96c4dc9fbc00470828748a926d6248c5a5772c82
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-26 16:03:55 +08:00
Mark Yao
0a3e4581f0 drm/rockchip: vop: fix background color
Change-Id: Idbd43b4456df80e2243ce09c3bc69d8be6e0af6a
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2017-07-26 14:14:37 +08:00
Xubilv
f2e37c082f drm/rockchip: dw-mipi-dsi: configure grf register for 3399
Change-Id: I6ad75b05a02b15fc8744f5f25fc996cd0d4bc2fb
Fixes: 39d1c0c4a3 ("drm/rockchip: dw-mipi-dsi: organize dw_mipi_dsi_encoder_enable function")
Signed-off-by: Xubilv <xbl@rock-chips.com>
2017-07-26 14:13:52 +08:00
Zheng Yang
23e1058a94 drm/edid: improve cea_db_offsets compatibility
The cea[2] is equal to the real value minus one in some sink edid,
found on a Konka LCD TV. the last data block offset plus the payload
length is equal to cea[2]. The end value need to plus one under this
scene.

Change-Id: I41b477559023ccd1cc4a5450dd9d35bed095f147
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
2017-07-24 16:50:01 +08:00