All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
       [not found] ` <VI1PR04MB425462214D38CECB1D5ED3CDBFD50@VI1PR04MB4254.eurprd04.prod.outlook.com>
@ 2018-11-27  9:11   ` Tomasz Figa
  2018-11-27  9:12     ` Tomasz Figa
                       ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Tomasz Figa @ 2018-11-27  9:11 UTC (permalink / raw)
  To: jbx9999; +Cc: Sean Paul, dri-devel

Hi Johan,

Adding the dri-devel mailing lists and some maintainers.

On Sun, Nov 25, 2018 at 12:53 AM Johan Jonker <jbx9999@hotmail.com> wrote:
>
> For a TV stick called MK808 with rk3066 processor I would like to enable
> the VOP and HDMI.
> With boot logo and console enabled I can see 2 pinguins and a cursor for
> a second and then the display is black.
> From a internet search I learned that the rk3066 doesn't support a
> vblank counter.
> Yet they have replaced the Rockchip custom wait_for_vblanks with a drm
> helper.

All of the Rockchip SoCs supported by the upstream driver lack a
vblank counter and the code that you refer to is designed for this
limitation in particular. I suspect the problem you're seeing is
unrelated.

>
> Question for the authors and reviewers:
>
> -Did anyone test this convert on a rk3066?

Not sure. I have tested internally on RK3399.

> -Can someone with more knowledge explane what happens in this crash
> rapport below.

To me, it looks like the vblank interrupt

> -Can this be fixed?
>

Very likely. :)

> Please contact if more info is needed.
>

I don't see display support enabled in the rk3066-mk808.dts in latest upstream:
https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/rk3066a-mk808.dts

Do you have any local changes in your kernel sources?

Best regards,
Tomasz

> Kind regards,
>
> Johan Jonker
>
> ///////////////////////////////////////////
>
> Reference:
>
> -drm/rockchip: Replace custom wait_for_vblanks with helper
> https://patchwork.kernel.org/patch/9331351/
>
> -drm/rockchip: don't wait for vblank if fb hasn't changed
> https://patchwork.kernel.org/patch/8024741/
>
> -explain why we can't wait_for_vblanks
> https://lore.kernel.org/patchwork/patch/635586/
>
> -drm/rockchip: Convert to support atomic API
> https://patchwork.kernel.org/patch/7732341/
>
> -drm/rockchip: Convert to support atomic API
> https://patchwork.kernel.org/patch/7868601/
>
> https://lkml.org/lkml/2017/9/4/251
>
>
> //////////////////////////////////////////
>
> [    0.897682] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> [    0.904616] [drm] No driver support for vblank timestamp query.
>
> [    1.440201] [drm:drm_calc_timestamping_constants] crtc 30: hwmode:
> htotal 1650, vtotal 750, vdisplay 720
> [    1.440212] [drm:drm_calc_timestamping_constants] crtc 30: clock
> 74250 kHz framedur 16666666 linedur 22222
>
> [    1.440307] [drm:drm_crtc_vblank_on] crtc 0, vblank enabled 0,
> inmodeset 0
>
> [    1.451189] [drm:drm_vblank_enable] enabling vblank on crtc 0, ret: 0
>
> [    1.451202] [drm:drm_update_vblank_count] updating vblank count on
> crtc 0: current=1, diff=0, hw=0 hw_last=0
> .
> .
> .
> .
> [    4.303883] [drm:drm_update_vblank_count] updating vblank count on
> crtc 0: current=113, diff=1, hw=0 hw_last=0
> [    4.304140] Warning: unable to open an initial console.
>
>
> [    6.777825] ------------[ cut here ]------------
> [    6.786554] WARNING: CPU: 0 PID: 19 at
> drivers/gpu/drm/drm_atomic_helper.c:1406
> drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
> [    6.800803] [CRTC:30:crtc-0] vblank wait timed out
> [    6.806701] Modules linked in:
> [    6.810317] CPU: 0 PID: 19 Comm: kworker/0:1 Not tainted
> 4.20.0-rc1-g0d694f0b3-dirty #19
> [    6.819938] Hardware name: Rockchip (Device Tree)
> [    6.825498] Workqueue: events output_poll_execute
> [    6.831062] [<c01104a0>] (unwind_backtrace) from [<c010c868>]
> (show_stack+0x10/0x14)
> [    6.840191] [<c010c868>] (show_stack) from [<c069e538>]
> (dump_stack+0x88/0x9c)
> [    6.848729] [<c069e538>] (dump_stack) from [<c0122784>]
> (__warn+0xf8/0x110)
> [    6.856936] [<c0122784>] (__warn) from [<c01227e4>]
> (warn_slowpath_fmt+0x48/0x6c)
> [    6.873544] [<c01227e4>] (warn_slowpath_fmt) from [<c0445b04>]
> (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
> [    6.886148] [<c0445b04>] (drm_atomic_helper_wait_for_vblanks.part.1)
> from [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm+0x17c/0x194)
> [    6.900896] [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm)
> from [<c0447418>] (commit_tail+0x40/0x6c)
> [    6.912370] [<c0447418>] (commit_tail) from [<c0447508>]
> (drm_atomic_helper_commit+0xbc/0x128)
> [    6.922515] [<c0447508>] (drm_atomic_helper_commit) from [<c0449b38>]
> (restore_fbdev_mode_atomic+0x1cc/0x1dc)
> [    6.934196] [<c0449b38>] (restore_fbdev_mode_atomic) from
> [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
> [    6.947410] [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked)
> from [<c044d3c8>] (drm_fb_helper_set_par+0x30/0x54)
> [    6.960213] [<c044d3c8>] (drm_fb_helper_set_par) from [<c044d2b4>]
> (drm_fb_helper_hotplug_event.part.9+0x90/0xa8)
> [    6.972305] [<c044d2b4>] (drm_fb_helper_hotplug_event.part.9) from
> [<c043cd70>] (drm_kms_helper_hotplug_event+0x24/0x30)
> [    6.985108] [<c043cd70>] (drm_kms_helper_hotplug_event) from
> [<c043cf30>] (output_poll_execute+0x188/0x1a0)
> [    6.996583] [<c043cf30>] (output_poll_execute) from [<c013bc68>]
> (process_one_work+0x218/0x508)
> [    7.006829] [<c013bc68>] (process_one_work) from [<c013ca9c>]
> (worker_thread+0x30/0x59c)
> [    7.016360] [<c013ca9c>] (worker_thread) from [<c01415b0>]
> (kthread+0x124/0x154)
> [    7.025073] [<c01415b0>] (kthread) from [<c01010e8>]
> (ret_from_fork+0x14/0x2c)
> [    7.033567] Exception stack(0xeea3dfb0 to 0xeea3dff8)
> [    7.039514] dfa0:                                     00000000
> 00000000 00000000 00000000
> [    7.049145] dfc0: 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 00000000
> [    7.058774] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
> [    7.066677] ---[ end trace aaf7d2040cebe21e ]---
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
@ 2018-11-27  9:12     ` Tomasz Figa
  2018-11-27 15:37     ` Johan Jonker
                       ` (6 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Tomasz Figa @ 2018-11-27  9:12 UTC (permalink / raw)
  To: jbx9999; +Cc: Sean Paul, dri-devel

On Tue, Nov 27, 2018 at 6:11 PM Tomasz Figa <tfiga@chromium.org> wrote:
>
> Hi Johan,
>
> Adding the dri-devel mailing lists and some maintainers.
>
> On Sun, Nov 25, 2018 at 12:53 AM Johan Jonker <jbx9999@hotmail.com> wrote:
> >
> > For a TV stick called MK808 with rk3066 processor I would like to enable
> > the VOP and HDMI.
> > With boot logo and console enabled I can see 2 pinguins and a cursor for
> > a second and then the display is black.
> > From a internet search I learned that the rk3066 doesn't support a
> > vblank counter.
> > Yet they have replaced the Rockchip custom wait_for_vblanks with a drm
> > helper.
>
> All of the Rockchip SoCs supported by the upstream driver lack a
> vblank counter and the code that you refer to is designed for this
> limitation in particular. I suspect the problem you're seeing is
> unrelated.
>
> >
> > Question for the authors and reviewers:
> >
> > -Did anyone test this convert on a rk3066?
>
> Not sure. I have tested internally on RK3399.
>
> > -Can someone with more knowledge explane what happens in this crash
> > rapport below.
>
> To me, it looks like the vblank interrupt
>

Oops. I meant:

It looks like the vblank interrupt doesn't fire for some reason.

> > -Can this be fixed?
> >
>
> Very likely. :)
>
> > Please contact if more info is needed.
> >
>
> I don't see display support enabled in the rk3066-mk808.dts in latest upstream:
> https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/rk3066a-mk808.dts
>
> Do you have any local changes in your kernel sources?
>
> Best regards,
> Tomasz
>
> > Kind regards,
> >
> > Johan Jonker
> >
> > ///////////////////////////////////////////
> >
> > Reference:
> >
> > -drm/rockchip: Replace custom wait_for_vblanks with helper
> > https://patchwork.kernel.org/patch/9331351/
> >
> > -drm/rockchip: don't wait for vblank if fb hasn't changed
> > https://patchwork.kernel.org/patch/8024741/
> >
> > -explain why we can't wait_for_vblanks
> > https://lore.kernel.org/patchwork/patch/635586/
> >
> > -drm/rockchip: Convert to support atomic API
> > https://patchwork.kernel.org/patch/7732341/
> >
> > -drm/rockchip: Convert to support atomic API
> > https://patchwork.kernel.org/patch/7868601/
> >
> > https://lkml.org/lkml/2017/9/4/251
> >
> >
> > //////////////////////////////////////////
> >
> > [    0.897682] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> > [    0.904616] [drm] No driver support for vblank timestamp query.
> >
> > [    1.440201] [drm:drm_calc_timestamping_constants] crtc 30: hwmode:
> > htotal 1650, vtotal 750, vdisplay 720
> > [    1.440212] [drm:drm_calc_timestamping_constants] crtc 30: clock
> > 74250 kHz framedur 16666666 linedur 22222
> >
> > [    1.440307] [drm:drm_crtc_vblank_on] crtc 0, vblank enabled 0,
> > inmodeset 0
> >
> > [    1.451189] [drm:drm_vblank_enable] enabling vblank on crtc 0, ret: 0
> >
> > [    1.451202] [drm:drm_update_vblank_count] updating vblank count on
> > crtc 0: current=1, diff=0, hw=0 hw_last=0
> > .
> > .
> > .
> > .
> > [    4.303883] [drm:drm_update_vblank_count] updating vblank count on
> > crtc 0: current=113, diff=1, hw=0 hw_last=0
> > [    4.304140] Warning: unable to open an initial console.
> >
> >
> > [    6.777825] ------------[ cut here ]------------
> > [    6.786554] WARNING: CPU: 0 PID: 19 at
> > drivers/gpu/drm/drm_atomic_helper.c:1406
> > drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
> > [    6.800803] [CRTC:30:crtc-0] vblank wait timed out
> > [    6.806701] Modules linked in:
> > [    6.810317] CPU: 0 PID: 19 Comm: kworker/0:1 Not tainted
> > 4.20.0-rc1-g0d694f0b3-dirty #19
> > [    6.819938] Hardware name: Rockchip (Device Tree)
> > [    6.825498] Workqueue: events output_poll_execute
> > [    6.831062] [<c01104a0>] (unwind_backtrace) from [<c010c868>]
> > (show_stack+0x10/0x14)
> > [    6.840191] [<c010c868>] (show_stack) from [<c069e538>]
> > (dump_stack+0x88/0x9c)
> > [    6.848729] [<c069e538>] (dump_stack) from [<c0122784>]
> > (__warn+0xf8/0x110)
> > [    6.856936] [<c0122784>] (__warn) from [<c01227e4>]
> > (warn_slowpath_fmt+0x48/0x6c)
> > [    6.873544] [<c01227e4>] (warn_slowpath_fmt) from [<c0445b04>]
> > (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
> > [    6.886148] [<c0445b04>] (drm_atomic_helper_wait_for_vblanks.part.1)
> > from [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm+0x17c/0x194)
> > [    6.900896] [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm)
> > from [<c0447418>] (commit_tail+0x40/0x6c)
> > [    6.912370] [<c0447418>] (commit_tail) from [<c0447508>]
> > (drm_atomic_helper_commit+0xbc/0x128)
> > [    6.922515] [<c0447508>] (drm_atomic_helper_commit) from [<c0449b38>]
> > (restore_fbdev_mode_atomic+0x1cc/0x1dc)
> > [    6.934196] [<c0449b38>] (restore_fbdev_mode_atomic) from
> > [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
> > [    6.947410] [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked)
> > from [<c044d3c8>] (drm_fb_helper_set_par+0x30/0x54)
> > [    6.960213] [<c044d3c8>] (drm_fb_helper_set_par) from [<c044d2b4>]
> > (drm_fb_helper_hotplug_event.part.9+0x90/0xa8)
> > [    6.972305] [<c044d2b4>] (drm_fb_helper_hotplug_event.part.9) from
> > [<c043cd70>] (drm_kms_helper_hotplug_event+0x24/0x30)
> > [    6.985108] [<c043cd70>] (drm_kms_helper_hotplug_event) from
> > [<c043cf30>] (output_poll_execute+0x188/0x1a0)
> > [    6.996583] [<c043cf30>] (output_poll_execute) from [<c013bc68>]
> > (process_one_work+0x218/0x508)
> > [    7.006829] [<c013bc68>] (process_one_work) from [<c013ca9c>]
> > (worker_thread+0x30/0x59c)
> > [    7.016360] [<c013ca9c>] (worker_thread) from [<c01415b0>]
> > (kthread+0x124/0x154)
> > [    7.025073] [<c01415b0>] (kthread) from [<c01010e8>]
> > (ret_from_fork+0x14/0x2c)
> > [    7.033567] Exception stack(0xeea3dfb0 to 0xeea3dff8)
> > [    7.039514] dfa0:                                     00000000
> > 00000000 00000000 00000000
> > [    7.049145] dfc0: 00000000 00000000 00000000 00000000 00000000
> > 00000000 00000000 00000000
> > [    7.058774] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
> > [    7.066677] ---[ end trace aaf7d2040cebe21e ]---
> >
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
  2018-11-27  9:12     ` Tomasz Figa
@ 2018-11-27 15:37     ` Johan Jonker
  2018-11-27 20:51     ` Johan Jonker
                       ` (5 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Johan Jonker @ 2018-11-27 15:37 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 347 bytes --]

On 11/27/18 10:11 AM, Tomasz Figa wrote:

> 
> I don't see display support enabled in the rk3066-mk808.dts in latest upstream:
> https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/rk3066a-mk808.dts
> 
> Do you have any local changes in your kernel sources?
> 

Thanks for your response.
My local changes for VOP. (PART 1)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v2-0001-drm-rockchip-vop-add-rk3066-vop-definitions.patch --]
[-- Type: text/x-patch; name="v2-0001-drm-rockchip-vop-add-rk3066-vop-definitions.patch", Size: 9169 bytes --]

From 8ce6aeb7708ca81303a3c4c9a94d718d4ab9f2f6 Mon Sep 17 00:00:00 2001
From: Mark Yao <mark.yao@rock-chips.com>
Date: Fri, 16 Nov 2018 18:38:38 +0100
Subject: [PATCH v2] drm/rockchip: vop: add rk3066 vop definitions

This patch adds the rk3066 VOP definitions.

The VOP or LCD Controller serves as interface between
framebuffer memory and a display device (LCD panel or TV set).

This SOC has two symmetrical LCDC's for a dual panel application.

A LCDC has 5 display layers.
Only 3 are used here.

- Video layer 0 (Win0)
- Video layer 1 (Win1)
- OSD layer     (Win2)

Win0 and Win1 are exchangeable.
Maximum resolution is 1920x1080.

The LCDC0 output is connected to:
- LCDC0 IO (without IOMUX)
- HDMI TX video input

The LCDC1 output is connected to:
- LCDC1 IO (with IOMUX)
- HDMI TX video input

The HDMI TX input can switch between LCDC0 and LCDC1.

Changes v2:
- Add DSP_HOLD_VALID_INTR

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 .../bindings/display/rockchip/rockchip-vop.txt     |   1 +
 drivers/gpu/drm/rockchip/rockchip_vop_reg.c        | 106 +++++++++++++++++++++
 drivers/gpu/drm/rockchip/rockchip_vop_reg.h        |  53 +++++++++++
 3 files changed, 160 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt
index b79e5769f..4f58c5a2d 100644
--- a/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt
+++ b/Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt
@@ -10,6 +10,7 @@ Required properties:
 		"rockchip,rk3126-vop";
 		"rockchip,px30-vop-lit";
 		"rockchip,px30-vop-big";
+		"rockchip,rk3066-vop";
 		"rockchip,rk3188-vop";
 		"rockchip,rk3288-vop";
 		"rockchip,rk3368-vop";
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
index a6db3cd55..bdc43fe55 100644
--- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
+++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
@@ -299,6 +299,110 @@ static const struct vop_data px30_vop_lit = {
 	.win_size = ARRAY_SIZE(px30_vop_lit_win_data),
 };
 
+static const struct vop_scl_regs rk3066_win_scl = {
+	.scale_yrgb_x = VOP_REG(RK3066_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0),
+	.scale_yrgb_y = VOP_REG(RK3066_WIN0_SCL_FACTOR_YRGB, 0xffff, 16),
+	.scale_cbcr_x = VOP_REG(RK3066_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0),
+	.scale_cbcr_y = VOP_REG(RK3066_WIN0_SCL_FACTOR_CBR, 0xffff, 16),
+};
+
+static const struct vop_win_phy rk3066_win0_data = {
+	.scl = &rk3066_win_scl,
+	.data_formats = formats_win_full,
+	.nformats = ARRAY_SIZE(formats_win_full),
+	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 0),
+	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 4),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 19),
+	.act_info = VOP_REG(RK3066_WIN0_ACT_INFO, 0x1fff1fff, 0),
+	.dsp_info = VOP_REG(RK3066_WIN0_DSP_INFO, 0x0fff0fff, 0),
+	.dsp_st = VOP_REG(RK3066_WIN0_DSP_ST, 0x1fff1fff, 0),
+	.yrgb_mst = VOP_REG(RK3066_WIN0_YRGB_MST0, 0xffffffff, 0),
+	.uv_mst = VOP_REG(RK3066_WIN0_CBR_MST0, 0xffffffff, 0),
+	.yrgb_vir = VOP_REG(RK3066_WIN0_VIR, 0xffff, 0),
+	.uv_vir = VOP_REG(RK3066_WIN0_VIR, 0x1fff, 16),
+};
+
+static const struct vop_win_phy rk3066_win1_data = {
+	.scl = &rk3066_win_scl,
+	.data_formats = formats_win_full,
+	.nformats = ARRAY_SIZE(formats_win_full),
+	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 1),
+	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 7),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 23),
+	.act_info = VOP_REG(RK3066_WIN1_ACT_INFO, 0x1fff1fff, 0),
+	.dsp_info = VOP_REG(RK3066_WIN1_DSP_INFO, 0x0fff0fff, 0),
+	.dsp_st = VOP_REG(RK3066_WIN1_DSP_ST, 0x1fff1fff, 0),
+	.yrgb_mst = VOP_REG(RK3066_WIN1_YRGB_MST, 0xffffffff, 0),
+	.uv_mst = VOP_REG(RK3066_WIN1_CBR_MST, 0xffffffff, 0),
+	.yrgb_vir = VOP_REG(RK3066_WIN1_VIR, 0xffff, 0),
+	.uv_vir = VOP_REG(RK3066_WIN1_VIR, 0x1fff, 16),
+};
+
+static const struct vop_win_phy rk3066_win2_data = {
+	.data_formats = formats_win_lite,
+	.nformats = ARRAY_SIZE(formats_win_lite),
+	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 2),
+	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 10),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 27),
+	.dsp_info = VOP_REG(RK3066_WIN2_DSP_INFO, 0x0fff0fff, 0),
+	.dsp_st = VOP_REG(RK3066_WIN2_DSP_ST, 0x1fff1fff, 0),
+	.yrgb_mst = VOP_REG(RK3066_WIN2_MST, 0xffffffff, 0),
+	.yrgb_vir = VOP_REG(RK3066_WIN2_VIR, 0xffff, 0),
+};
+
+static const struct vop_modeset rk3066_modeset = {
+	.htotal_pw = VOP_REG(RK3066_DSP_HTOTAL_HS_END, 0x1fff1fff, 0),
+	.hact_st_end = VOP_REG(RK3066_DSP_HACT_ST_END, 0x1fff1fff, 0),
+	.vtotal_pw = VOP_REG(RK3066_DSP_VTOTAL_VS_END, 0x1fff1fff, 0),
+	.vact_st_end = VOP_REG(RK3066_DSP_VACT_ST_END, 0x1fff1fff, 0),
+};
+
+static const struct vop_output rk3066_output = {
+	.pin_pol = VOP_REG(RK3066_DSP_CTRL0, 0x7, 4),
+};
+
+static const struct vop_common rk3066_common = {
+	.standby = VOP_REG(RK3066_SYS_CTRL0, 0x1, 1),
+	.out_mode = VOP_REG(RK3066_DSP_CTRL0, 0xf, 0),
+	.cfg_done = VOP_REG(RK3066_REG_CFG_DONE, 0x1, 0),
+	.dsp_blank = VOP_REG(RK3066_DSP_CTRL1, 0x1, 24),
+};
+
+static const struct vop_win_data rk3066_vop_win_data[] = {
+	{ .base = 0x00, .phy = &rk3066_win0_data,
+	  .type = DRM_PLANE_TYPE_PRIMARY },
+	{ .base = 0x00, .phy = &rk3066_win1_data,
+	  .type = DRM_PLANE_TYPE_OVERLAY },
+	{ .base = 0x00, .phy = &rk3066_win2_data,
+	  .type = DRM_PLANE_TYPE_CURSOR },
+};
+
+static const int rk3066_vop_intrs[] = {
+	DSP_HOLD_VALID_INTR,
+	FS_INTR,
+	LINE_FLAG_INTR,
+	BUS_ERROR_INTR,
+};
+
+static const struct vop_intr rk3066_intr = {
+	.intrs = rk3066_vop_intrs,
+	.nintrs = ARRAY_SIZE(rk3066_vop_intrs),
+	.line_flag_num[0] = VOP_REG(RK3066_INT_STATUS, 0xfff, 12),
+	.status = VOP_REG(RK3066_INT_STATUS, 0xf, 0),
+	.enable = VOP_REG(RK3066_INT_STATUS, 0xf, 4),
+	.clear = VOP_REG(RK3066_INT_STATUS, 0xf, 8),
+};
+
+static const struct vop_data rk3066_vop = {
+	.version = VOP_VERSION(2, 1),
+	.intr = &rk3066_intr,
+	.common = &rk3066_common,
+	.modeset = &rk3066_modeset,
+	.output = &rk3066_output,
+	.win = rk3066_vop_win_data,
+	.win_size = ARRAY_SIZE(rk3066_vop_win_data),
+};
+
 static const struct vop_scl_regs rk3188_win_scl = {
 	.scale_yrgb_x = VOP_REG(RK3188_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0),
 	.scale_yrgb_y = VOP_REG(RK3188_WIN0_SCL_FACTOR_YRGB, 0xffff, 16),
@@ -754,6 +858,8 @@ static const struct of_device_id vop_driver_dt_match[] = {
 	  .data = &px30_vop_big },
 	{ .compatible = "rockchip,px30-vop-lit",
 	  .data = &px30_vop_lit },
+	{ .compatible = "rockchip,rk3066-vop",
+	  .data = &rk3066_vop },
 	{ .compatible = "rockchip,rk3188-vop",
 	  .data = &rk3188_vop },
 	{ .compatible = "rockchip,rk3288-vop",
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h
index 7348c6835..d837d4a7d 100644
--- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h
+++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h
@@ -983,4 +983,57 @@
 #define RK3188_REG_CFG_DONE		0x90
 /* rk3188 register definition end */
 
+/* rk3066 register definition */
+#define RK3066_SYS_CTRL0		0x00
+#define RK3066_SYS_CTRL1		0x04
+#define RK3066_DSP_CTRL0		0x08
+#define RK3066_DSP_CTRL1		0x0c
+#define RK3066_INT_STATUS		0x10
+#define RK3066_MCU_CTRL			0x14
+#define RK3066_BLEND_CTRL		0x18
+#define RK3066_WIN0_COLOR_KEY_CTRL	0x1c
+#define RK3066_WIN1_COLOR_KEY_CTRL	0x20
+#define RK3066_WIN2_COLOR_KEY_CTRL	0x24
+#define RK3066_WIN0_YRGB_MST0		0x28
+#define RK3066_WIN0_CBR_MST0		0x2c
+#define RK3066_WIN0_YRGB_MST1		0x30
+#define RK3066_WIN0_CBR_MST1		0x34
+#define RK3066_WIN0_VIR			0x38
+#define RK3066_WIN0_ACT_INFO		0x3c
+#define RK3066_WIN0_DSP_INFO		0x40
+#define RK3066_WIN0_DSP_ST		0x44
+#define RK3066_WIN0_SCL_FACTOR_YRGB	0x48
+#define RK3066_WIN0_SCL_FACTOR_CBR	0x4c
+#define RK3066_WIN0_SCL_OFFSET		0x50
+#define RK3066_WIN1_YRGB_MST		0x54
+#define RK3066_WIN1_CBR_MST		0x58
+#define RK3066_WIN1_VIR			0x5c
+#define RK3066_WIN1_ACT_INFO		0x60
+#define RK3066_WIN1_DSP_INFO		0x64
+#define RK3066_WIN1_DSP_ST		0x68
+#define RK3066_WIN1_SCL_FACTOR_YRGB	0x6c
+#define RK3066_WIN1_SCL_FACTOR_CBR	0x70
+#define RK3066_WIN1_SCL_OFFSET		0x74
+#define RK3066_WIN2_MST			0x78
+#define RK3066_WIN2_VIR			0x7c
+#define RK3066_WIN2_DSP_INFO		0x80
+#define RK3066_WIN2_DSP_ST		0x84
+#define RK3066_HWC_MST			0x88
+#define RK3066_HWC_DSP_ST		0x8c
+#define RK3066_HWC_COLOR_LUT0		0x90
+#define RK3066_HWC_COLOR_LUT1		0x94
+#define RK3066_HWC_COLOR_LUT2		0x98
+#define RK3066_DSP_HTOTAL_HS_END	0x9c
+#define RK3066_DSP_HACT_ST_END		0xa0
+#define RK3066_DSP_VTOTAL_VS_END	0xa4
+#define RK3066_DSP_VACT_ST_END		0xa8
+#define RK3066_DSP_VS_ST_END_F1		0xac
+#define RK3066_DSP_VACT_ST_END_F1	0xb0
+#define RK3066_REG_CFG_DONE		0xc0
+#define RK3066_MCU_BYPASS_WPORT		0x100
+#define RK3066_MCU_BYPASS_RPORT		0x200
+#define RK3066_WIN2_LUT_ADDR		0x400
+#define RK3066_DSP_LUT_ADDR		0x800
+/* rk3066 register definition end */
+
 #endif /* _ROCKCHIP_VOP_REG_H */
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: v1-0001-ARM-dts-rockchip-add-rk3066-vop-display-nodes.patch --]
[-- Type: text/x-patch; name="v1-0001-ARM-dts-rockchip-add-rk3066-vop-display-nodes.patch", Size: 2160 bytes --]

From 9a4a0293ef776080db058aa2e42dcd7251b4499c Mon Sep 17 00:00:00 2001
From: Mark Yao <mark.yao@rock-chips.com>
Date: Sun, 18 Nov 2018 20:41:28 +0100
Subject: [PATCH v1] ARM: dts: rockchip: add rk3066 vop display nodes

This patch adds the core display subsystem and vop nodes to rk3066.

Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a.dtsi | 45 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
index ec31f9aff..29e835bd7 100644
--- a/arch/arm/boot/dts/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rk3066a.dtsi
@@ -44,6 +44,11 @@
 		};
 	};
 
+	display-subsystem {
+		compatible = "rockchip,display-subsystem";
+		ports = <&vop0_out>, <&vop1_out>;
+	};
+
 	sram: sram@10080000 {
 		compatible = "mmio-sram";
 		reg = <0x10080000 0x10000>;
@@ -57,6 +62,46 @@
 		};
 	};
 
+	vop0: vop@1010c000 {
+		compatible = "rockchip,rk3066-vop";
+		reg = <0x1010c000 0x19c>;
+		interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cru ACLK_LCDC0>,
+			 <&cru DCLK_LCDC0>,
+			 <&cru HCLK_LCDC0>;
+		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+		resets = <&cru SRST_LCDC0_AXI>,
+			 <&cru SRST_LCDC0_AHB>,
+			 <&cru SRST_LCDC0_DCLK>;
+		reset-names = "axi", "ahb", "dclk";
+		status = "disabled";
+
+		vop0_out: port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+
+	vop1: vop@1010e000 {
+		compatible = "rockchip,rk3066-vop";
+		reg = <0x1010e000 0x19c>;
+		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cru ACLK_LCDC1>,
+			 <&cru DCLK_LCDC1>,
+			 <&cru HCLK_LCDC1>;
+		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+		resets = <&cru SRST_LCDC1_AXI>,
+			 <&cru SRST_LCDC1_AHB>,
+			 <&cru SRST_LCDC1_DCLK>;
+		reset-names = "axi", "ahb", "dclk";
+		status = "disabled";
+
+		vop1_out: port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+
 	i2s0: i2s@10118000 {
 		compatible = "rockchip,rk3066-i2s";
 		reg = <0x10118000 0x2000>;
-- 
2.11.0


[-- Attachment #4: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
  2018-11-27  9:12     ` Tomasz Figa
  2018-11-27 15:37     ` Johan Jonker
@ 2018-11-27 20:51     ` Johan Jonker
  2018-11-28 18:53     ` Johan Jonker
                       ` (4 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Johan Jonker @ 2018-11-27 20:51 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 45 bytes --]

My local changes for VOP and HDMI. (PART 2)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-clk-rockchip-rk3188-Add-CLK_SET_RATE_PARENT-for-lcdc.patch --]
[-- Type: text/x-patch; name="0001-clk-rockchip-rk3188-Add-CLK_SET_RATE_PARENT-for-lcdc.patch", Size: 1515 bytes --]

From 81bc4d4f83b57161c8ba7005875a2f9ff9ec1d3a Mon Sep 17 00:00:00 2001
From: Finley Xiao <finley.xiao@rock-chips.com>
Date: Mon, 6 Nov 2017 11:50:54 +0800
Subject: [PATCH] clk: rockchip: rk3188: Add CLK_SET_RATE_PARENT for lcdc dclk

Add CLK_SET_RATE_PARENT for lcdc dclk.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/clk/rockchip/clk-rk3188.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c
index 7ea20341e..5ecf28854 100644
--- a/drivers/clk/rockchip/clk-rk3188.c
+++ b/drivers/clk/rockchip/clk-rk3188.c
@@ -586,12 +586,12 @@ static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = {
 	COMPOSITE(0, "dclk_lcdc0_src", mux_pll_src_cpll_gpll_p, 0,
 			RK2928_CLKSEL_CON(27), 0, 1, MFLAGS, 8, 8, DFLAGS,
 			RK2928_CLKGATE_CON(3), 1, GFLAGS),
-	MUX(DCLK_LCDC0, "dclk_lcdc0", mux_rk3066_lcdc0_p, 0,
+	MUX(DCLK_LCDC0, "dclk_lcdc0", mux_rk3066_lcdc0_p, CLK_SET_RATE_PARENT,
 			RK2928_CLKSEL_CON(27), 4, 1, MFLAGS),
 	COMPOSITE(0, "dclk_lcdc1_src", mux_pll_src_cpll_gpll_p, 0,
 			RK2928_CLKSEL_CON(28), 0, 1, MFLAGS, 8, 8, DFLAGS,
 			RK2928_CLKGATE_CON(3), 2, GFLAGS),
-	MUX(DCLK_LCDC1, "dclk_lcdc1", mux_rk3066_lcdc1_p, 0,
+	MUX(DCLK_LCDC1, "dclk_lcdc1", mux_rk3066_lcdc1_p, CLK_SET_RATE_PARENT,
 			RK2928_CLKSEL_CON(28), 4, 1, MFLAGS),
 
 	COMPOSITE_NOMUX(0, "cif1_pre", "cif_src", 0,
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-clk-rockchip-rk3188-make-hclk_ahb2apb-critical.patch --]
[-- Type: text/x-patch; name="0001-clk-rockchip-rk3188-make-hclk_ahb2apb-critical.patch", Size: 926 bytes --]

From c5cee17f7396f0539ddf6ffe9e2da2fc14270dc1 Mon Sep 17 00:00:00 2001
From: Finley Xiao <finley.xiao@rock-chips.com>
Date: Fri, 16 Nov 2018 16:42:27 +0100
Subject: [PATCH] clk: rockchip: rk3188: make hclk_ahb2apb critical

Make hclk_ahb2apb critical.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/clk/rockchip/clk-rk3188.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c
index 5ecf28854..71a8dfd22 100644
--- a/drivers/clk/rockchip/clk-rk3188.c
+++ b/drivers/clk/rockchip/clk-rk3188.c
@@ -759,6 +759,7 @@ static const char *const rk3188_critical_clocks[] __initconst = {
 	"pclk_peri",
 	"hclk_cpubus",
 	"hclk_vio_bus",
+	"hclk_ahb2apb",
 };
 
 static struct rockchip_clk_provider *__init rk3188_common_clk_init(struct device_node *np)
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-clk-rockchip-rk3188-Rename-i2s-hclk-id.patch --]
[-- Type: text/x-patch; name="0001-clk-rockchip-rk3188-Rename-i2s-hclk-id.patch", Size: 4388 bytes --]

From b5d264cbd211cc92751c8d7e214229ae2b674ec8 Mon Sep 17 00:00:00 2001
From: Finley Xiao <finley.xiao@rock-chips.com>
Date: Wed, 6 Dec 2017 17:53:00 +0800
Subject: [PATCH] clk: rockchip: rk3188: Rename i2s hclk id

Rename i2s hclk id.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a.dtsi                | 6 +++---
 arch/arm/boot/dts/rk3188.dtsi                 | 2 +-
 drivers/clk/rockchip/clk-rk3188.c             | 6 +++---
 include/dt-bindings/clock/rk3188-cru-common.h | 6 +++---
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
index 112d2bf8e..ec31f9aff 100644
--- a/arch/arm/boot/dts/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rk3066a.dtsi
@@ -68,7 +68,7 @@
 		dmas = <&dmac1_s 4>, <&dmac1_s 5>;
 		dma-names = "tx", "rx";
 		clock-names = "i2s_hclk", "i2s_clk";
-		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
+		clocks = <&cru HCLK_I2S_8CH>, <&cru SCLK_I2S0>;
 		rockchip,playback-channels = <8>;
 		rockchip,capture-channels = <2>;
 		status = "disabled";
@@ -85,7 +85,7 @@
 		dmas = <&dmac1_s 6>, <&dmac1_s 7>;
 		dma-names = "tx", "rx";
 		clock-names = "i2s_hclk", "i2s_clk";
-		clocks = <&cru HCLK_I2S1>, <&cru SCLK_I2S1>;
+		clocks = <&cru HCLK_I2S0_2CH>, <&cru SCLK_I2S1>;
 		rockchip,playback-channels = <2>;
 		rockchip,capture-channels = <2>;
 		status = "disabled";
@@ -102,7 +102,7 @@
 		dmas = <&dmac1_s 9>, <&dmac1_s 10>;
 		dma-names = "tx", "rx";
 		clock-names = "i2s_hclk", "i2s_clk";
-		clocks = <&cru HCLK_I2S2>, <&cru SCLK_I2S2>;
+		clocks = <&cru HCLK_I2S1_2CH>, <&cru SCLK_I2S2>;
 		rockchip,playback-channels = <2>;
 		rockchip,capture-channels = <2>;
 		status = "disabled";
diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi
index 7e0dc5263..9d0b12ec1 100644
--- a/arch/arm/boot/dts/rk3188.dtsi
+++ b/arch/arm/boot/dts/rk3188.dtsi
@@ -136,7 +136,7 @@
 		dmas = <&dmac1_s 6>, <&dmac1_s 7>;
 		dma-names = "tx", "rx";
 		clock-names = "i2s_hclk", "i2s_clk";
-		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
+		clocks = <&cru HCLK_I2S0_2CH>, <&cru SCLK_I2S0>;
 		rockchip,playback-channels = <2>;
 		rockchip,capture-channels = <2>;
 		status = "disabled";
diff --git a/drivers/clk/rockchip/clk-rk3188.c b/drivers/clk/rockchip/clk-rk3188.c
index 71a8dfd22..404f2ae05 100644
--- a/drivers/clk/rockchip/clk-rk3188.c
+++ b/drivers/clk/rockchip/clk-rk3188.c
@@ -457,7 +457,7 @@ static struct rockchip_clk_branch common_clk_branches[] __initdata = {
 
 	/* hclk_cpu gates */
 	GATE(HCLK_ROM, "hclk_rom", "hclk_cpu", 0, RK2928_CLKGATE_CON(5), 6, GFLAGS),
-	GATE(HCLK_I2S0, "hclk_i2s0", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 2, GFLAGS),
+	GATE(HCLK_I2S0_2CH, "hclk_i2s0_2ch", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 2, GFLAGS),
 	GATE(HCLK_SPDIF, "hclk_spdif", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 1, GFLAGS),
 	GATE(0, "hclk_cpubus", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 8, GFLAGS),
 	/* hclk_ahb2apb is part of a clk branch */
@@ -642,8 +642,8 @@ static struct rockchip_clk_branch rk3066a_clk_branches[] __initdata = {
 			RK2928_CLKGATE_CON(0), 12, GFLAGS,
 			&rk3066a_i2s2_fracmux),
 
-	GATE(HCLK_I2S1, "hclk_i2s1", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS),
-	GATE(HCLK_I2S2, "hclk_i2s2", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS),
+	GATE(HCLK_I2S1_2CH, "hclk_i2s1_2ch", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 3, GFLAGS),
+	GATE(HCLK_I2S_8CH, "hclk_i2s_8ch", "hclk_cpu", 0, RK2928_CLKGATE_CON(7), 4, GFLAGS),
 	GATE(HCLK_CIF1, "hclk_cif1", "hclk_cpu", 0, RK2928_CLKGATE_CON(6), 6, GFLAGS),
 	GATE(HCLK_HDMI, "hclk_hdmi", "hclk_cpu", 0, RK2928_CLKGATE_CON(4), 14, GFLAGS),
 
diff --git a/include/dt-bindings/clock/rk3188-cru-common.h b/include/dt-bindings/clock/rk3188-cru-common.h
index dc2101a63..1329c993e 100644
--- a/include/dt-bindings/clock/rk3188-cru-common.h
+++ b/include/dt-bindings/clock/rk3188-cru-common.h
@@ -120,9 +120,9 @@
 #define HCLK_OTG0		451
 #define HCLK_EMAC		452
 #define HCLK_SPDIF		453
-#define HCLK_I2S0		454
-#define HCLK_I2S1		455
-#define HCLK_I2S2		456
+#define HCLK_I2S0_2CH		454
+#define HCLK_I2S1_2CH		455
+#define HCLK_I2S_8CH		456
 #define HCLK_OTG1		457
 #define HCLK_HSIC		458
 #define HCLK_HSADC		459
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0001-ARM-dts-rockchip-add-rk3066-hdmi-nodes.patch --]
[-- Type: text/x-patch; name="0001-ARM-dts-rockchip-add-rk3066-hdmi-nodes.patch", Size: 2597 bytes --]

From 1c0923ef9260c9074b0c02df60c733c8319d9b40 Mon Sep 17 00:00:00 2001
From: Zheng Yang <zhengyang@rock-chips.com>
Date: Tue, 27 Nov 2018 17:57:39 +0100
Subject: [PATCH] ARM: dts: rockchip: add rk3066 hdmi nodes

This patch adds the hdmi nodes to rk3066.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a.dtsi | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
index 29e835bd7..0d9be2d3d 100644
--- a/arch/arm/boot/dts/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rk3066a.dtsi
@@ -79,6 +79,10 @@
 		vop0_out: port {
 			#address-cells = <1>;
 			#size-cells = <0>;
+			vop0_out_hdmi: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&hdmi_in_vop0>;
+			};
 		};
 	};
 
@@ -102,6 +106,27 @@
 		};
 	};
 
+	hdmi: hdmi@10116000 {
+		compatible = "rockchip,rk3066-hdmi";
+		reg = <0x10116000 0x2000>;
+		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cru HCLK_HDMI>;
+		clock-names = "hclk";
+		rockchip,grf = <&grf>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
+		status = "disabled";
+
+		hdmi_in: port {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			hdmi_in_vop0: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&vop0_out_hdmi>;
+			};
+		};
+	};
+
 	i2s0: i2s@10118000 {
 		compatible = "rockchip,rk3066-i2s";
 		reg = <0x10118000 0x2000>;
@@ -116,6 +141,7 @@
 		clocks = <&cru HCLK_I2S_8CH>, <&cru SCLK_I2S0>;
 		rockchip,playback-channels = <8>;
 		rockchip,capture-channels = <2>;
+		#sound-dai-cells = <0>;
 		status = "disabled";
 	};
 
@@ -133,6 +159,7 @@
 		clocks = <&cru HCLK_I2S0_2CH>, <&cru SCLK_I2S1>;
 		rockchip,playback-channels = <2>;
 		rockchip,capture-channels = <2>;
+		#sound-dai-cells = <0>;
 		status = "disabled";
 	};
 
@@ -150,6 +177,7 @@
 		clocks = <&cru HCLK_I2S1_2CH>, <&cru SCLK_I2S2>;
 		rockchip,playback-channels = <2>;
 		rockchip,capture-channels = <2>;
+		#sound-dai-cells = <0>;
 		status = "disabled";
 	};
 
@@ -410,6 +438,16 @@
 			};
 		};
 
+		hdmi {
+			hdmi_hpd: hdmi-hpd {
+				rockchip,pins = <RK_GPIO0 0 RK_FUNC_1 &pcfg_pull_default>;
+			};
+			hdmii2c_xfer: hdmii2c-xfer {
+				rockchip,pins = <RK_GPIO0 1 RK_FUNC_1 &pcfg_pull_none>,
+						<RK_GPIO0 2 RK_FUNC_1 &pcfg_pull_none>;
+			};
+		};
+
 		pwm0 {
 			pwm0_out: pwm0-out {
 				rockchip,pins = <RK_GPIO0 3 RK_FUNC_1 &pcfg_pull_none>;
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0001-ARM-dts-rockchip-rk3066a-mk808-enable-vop0-node.patch --]
[-- Type: text/x-patch; name="0001-ARM-dts-rockchip-rk3066a-mk808-enable-vop0-node.patch", Size: 782 bytes --]

From 2b570860410fdde1f01a019734798ba2a9fd5633 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Tue, 27 Nov 2018 19:26:39 +0100
Subject: [PATCH] ARM: dts: rockchip: rk3066a-mk808: enable vop0 node

This patch enables the vop0 node for a MK808 with rk3066a processor.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a-mk808.dts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/rk3066a-mk808.dts b/arch/arm/boot/dts/rk3066a-mk808.dts
index b6a8a82d2..10e1c5567 100644
--- a/arch/arm/boot/dts/rk3066a-mk808.dts
+++ b/arch/arm/boot/dts/rk3066a-mk808.dts
@@ -151,6 +151,10 @@
 	status = "okay";
 };
 
+&vop0 {
+	status = "okay";
+};
+
 &wdt {
 	status = "okay";
 };
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0001-ARM-dts-rockchip-rk3066a-mk808-enable-hdmi-nodes.patch --]
[-- Type: text/x-patch; name="0001-ARM-dts-rockchip-rk3066a-mk808-enable-hdmi-nodes.patch", Size: 836 bytes --]

From f76df32018cf1963d3c11e1d366cd6fa77cea9f9 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Tue, 20 Nov 2018 18:17:04 +0100
Subject: [PATCH] ARM: dts: rockchip: rk3066a-mk808: enable hdmi nodes

This patch enables the hdmi nodes for a MK808 with rk3066a processor.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a-mk808.dts | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/rk3066a-mk808.dts b/arch/arm/boot/dts/rk3066a-mk808.dts
index 10e1c5567..a9f2f183c 100644
--- a/arch/arm/boot/dts/rk3066a-mk808.dts
+++ b/arch/arm/boot/dts/rk3066a-mk808.dts
@@ -91,6 +91,14 @@
 	};
 };
 
+&hdmi {
+	status = "okay";
+};
+
+&hdmi_in_vop0 {
+	status = "okay";
+};
+
 &mmc0 {
 	bus-width = <4>;
 	cap-mmc-highspeed;
-- 
2.11.0


[-- Attachment #8: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
                       ` (2 preceding siblings ...)
  2018-11-27 20:51     ` Johan Jonker
@ 2018-11-28 18:53     ` Johan Jonker
  2018-11-28 19:03     ` Johan Jonker
                       ` (3 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Johan Jonker @ 2018-11-28 18:53 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 41 bytes --]

My local changes for HDMI. (PART 3)



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-drm-rockchip-introduce-rk3066-hdmi.patch --]
[-- Type: text/x-patch; name="0001-drm-rockchip-introduce-rk3066-hdmi.patch", Size: 41909 bytes --]

From 2898b9ad2014953c205b57c0c6910367d0eddf07 Mon Sep 17 00:00:00 2001
From: Zheng Yang <zhengyang@rock-chips.com>
Date: Wed, 28 Nov 2018 16:21:04 +0100
Subject: [PATCH] drm: rockchip: introduce rk3066 hdmi

Introduce rk3066 hdmi.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 1161 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/rockchip/rk3066_hdmi.h |  234 +++++++
 2 files changed, 1395 insertions(+)
 create mode 100644 drivers/gpu/drm/rockchip/rk3066_hdmi.c
 create mode 100644 drivers/gpu/drm/rockchip/rk3066_hdmi.h

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
new file mode 100644
index 000000000..7831430d8
--- /dev/null
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -0,0 +1,1161 @@
+/*
+ * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
+ *    Zheng Yang <zhengyang@rock-chips.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/irq.h>
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/hdmi.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/of_device.h>
+#include <linux/regmap.h>
+
+#include <drm/drm_of.h>
+#include <drm/drmP.h>
+#include <drm/drm_atomic_helper.h>
+#include <drm/drm_crtc_helper.h>
+#include <drm/drm_edid.h>
+
+#include <sound/hdmi-codec.h>
+
+#include "rockchip_drm_drv.h"
+#include "rockchip_drm_vop.h"
+
+#include "rk3066_hdmi.h"
+
+#define DEFAULT_PLLA_RATE	30000000
+
+struct audio_info {
+	int sample_rate;
+	int channels;
+	int sample_width;
+};
+
+struct hdmi_data_info {
+	int vic;
+	bool sink_is_hdmi;
+	bool sink_has_audio;
+	unsigned int enc_in_format;
+	unsigned int enc_out_format;
+	unsigned int colorimetry;
+};
+
+struct rk3066_hdmi_i2c {
+	struct i2c_adapter adap;
+
+	u8 ddc_addr;
+	u8 segment_addr;
+	u8 stat;
+
+	struct mutex lock;	/*for i2c operation*/
+	struct completion cmp;
+};
+
+struct rk3066_hdmi {
+	struct device *dev;
+	struct drm_device *drm_dev;
+	struct regmap *regmap;
+	int irq;
+	struct clk *hclk;
+	void __iomem *regs;
+
+	struct drm_connector	connector;
+	struct drm_encoder	encoder;
+
+	struct rk3066_hdmi_i2c *i2c;
+	struct i2c_adapter *ddc;
+
+	unsigned int tmdsclk;
+	unsigned int powermode;
+
+	struct platform_device *audio_pdev;
+	bool audio_enable;
+
+	struct hdmi_data_info	hdmi_data;
+	struct audio_info	audio;
+	struct drm_display_mode previous_mode;
+};
+
+#define to_rk3066_hdmi(x)	container_of(x, struct rk3066_hdmi, x)
+
+static int
+rk3066_hdmi_config_audio(struct rk3066_hdmi *hdmi, struct audio_info *audio);
+
+static inline u8 hdmi_readb(struct rk3066_hdmi *hdmi, u16 offset)
+{
+	return readl_relaxed(hdmi->regs + offset);
+}
+
+static inline void hdmi_writeb(struct rk3066_hdmi *hdmi, u16 offset, u32 val)
+{
+	writel_relaxed(val, hdmi->regs + offset);
+}
+
+static inline void hdmi_modb(struct rk3066_hdmi *hdmi, u16 offset,
+			     u32 msk, u32 val)
+{
+	u8 temp = hdmi_readb(hdmi, offset) & ~msk;
+
+	temp |= val & msk;
+	hdmi_writeb(hdmi, offset, temp);
+}
+
+static void rk3066_hdmi_i2c_init(struct rk3066_hdmi *hdmi)
+{
+	int ddc_bus_freq;
+
+	ddc_bus_freq = (hdmi->tmdsclk >> 2) / HDMI_SCL_RATE;
+
+	hdmi_writeb(hdmi, HDMI_DDC_BUS_FREQ_L, ddc_bus_freq & 0xFF);
+	hdmi_writeb(hdmi, HDMI_DDC_BUS_FREQ_H, (ddc_bus_freq >> 8) & 0xFF);
+
+	/* Clear the EDID interrupt flag and mute the interrupt */
+	hdmi_modb(hdmi, HDMI_INTR_MASK1, HDMI_INTR_EDID_MASK, 0);
+	hdmi_writeb(hdmi, HDMI_INTR_STATUS1, HDMI_INTR_EDID_MASK);
+}
+
+static inline u8 rk3066_hdmi_get_power_mode(struct rk3066_hdmi *hdmi)
+{
+	return hdmi_readb(hdmi, HDMI_SYS_CTRL) & HDMI_SYS_POWER_MODE_MASK;
+}
+
+static void rk3066_hdmi_set_power_mode(struct rk3066_hdmi *hdmi, int mode)
+{
+	u8 previous_mode, next_mode;
+
+	previous_mode = rk3066_hdmi_get_power_mode(hdmi);
+
+	if (previous_mode == mode)
+		return;
+
+	do {
+		if (previous_mode > mode)
+			next_mode = previous_mode / 2;
+		else
+			next_mode = previous_mode * 2;
+		if (next_mode != HDMI_SYS_POWER_MODE_D) {
+			hdmi_modb(hdmi, HDMI_SYS_CTRL,
+				  HDMI_SYS_POWER_MODE_MASK, next_mode);
+		} else {
+			hdmi_writeb(hdmi, HDMI_SYS_CTRL,
+				    HDMI_SYS_POWER_MODE_D |
+				    HDMI_SYS_PLL_RESET_MASK);
+			usleep_range(90, 100);
+			hdmi_writeb(hdmi, HDMI_SYS_CTRL,
+				    HDMI_SYS_POWER_MODE_D |
+				    HDMI_SYS_PLLB_RESET);
+			usleep_range(90, 100);
+			hdmi_writeb(hdmi, HDMI_SYS_CTRL,
+				    HDMI_SYS_POWER_MODE_D);
+		}
+		previous_mode = next_mode;
+	} while (next_mode != mode);
+
+	/*
+	 * When IP controller haven't configured to an accurate video
+	 * timing, DDC_CLK is equal to PLLA freq which is 30MHz,so we
+	 * need to init the TMDS rate to PCLK rate, and reconfigure
+	 * the DDC clock.
+	 */
+	if (mode < HDMI_SYS_POWER_MODE_D)
+		hdmi->tmdsclk = DEFAULT_PLLA_RATE;
+}
+
+static int
+rk3066_hdmi_upload_frame(struct rk3066_hdmi *hdmi, int setup_rc,
+			 union hdmi_infoframe *frame, u32 frame_index,
+			 u32 mask, u32 disable, u32 enable)
+{
+	if (mask)
+		hdmi_modb(hdmi, HDMI_CP_AUTO_SEND_CTRL, mask, disable);
+
+	hdmi_writeb(hdmi, HDMI_CP_BUF_INDEX, frame_index);
+
+	if (setup_rc >= 0) {
+		u8 packed_frame[HDMI_MAXIMUM_INFO_FRAME_SIZE];
+		ssize_t rc, i;
+
+		rc = hdmi_infoframe_pack(frame, packed_frame,
+					 sizeof(packed_frame));
+		if (rc < 0)
+			return rc;
+
+		for (i = 0; i < rc; i++)
+			hdmi_writeb(hdmi, HDMI_CP_BUF_ACC_HB0 + i * 4,
+				    packed_frame[i]);
+
+		if (mask)
+			hdmi_modb(hdmi, HDMI_CP_AUTO_SEND_CTRL, mask, enable);
+	}
+
+	return setup_rc;
+}
+
+static int rk3066_hdmi_config_avi(struct rk3066_hdmi *hdmi,
+				  struct drm_display_mode *mode)
+{
+	union hdmi_infoframe frame;
+	int rc;
+
+	rc = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, mode, false);
+
+	if (hdmi->hdmi_data.enc_out_format == HDMI_COLORSPACE_YUV444)
+		frame.avi.colorspace = HDMI_COLORSPACE_YUV444;
+	else if (hdmi->hdmi_data.enc_out_format == HDMI_COLORSPACE_YUV422)
+		frame.avi.colorspace = HDMI_COLORSPACE_YUV422;
+	else
+		frame.avi.colorspace = HDMI_COLORSPACE_RGB;
+
+	frame.avi.colorimetry = hdmi->hdmi_data.colorimetry;
+	frame.avi.scan_mode = HDMI_SCAN_MODE_NONE;
+
+	return rk3066_hdmi_upload_frame(hdmi, rc, &frame,
+					HDMI_INFOFRAME_AVI, 0, 0, 0);
+}
+
+static int rk3066_hdmi_config_aai(struct rk3066_hdmi *hdmi,
+				  struct audio_info *audio)
+{
+	struct hdmi_audio_infoframe *faudio;
+	union hdmi_infoframe frame;
+	int rc;
+
+	rc = hdmi_audio_infoframe_init(&frame.audio);
+	faudio = (struct hdmi_audio_infoframe *)&frame;
+
+	return rk3066_hdmi_upload_frame(hdmi, rc, &frame,
+					HDMI_INFOFRAME_AAI, 0, 0, 0);
+}
+
+static int rk3066_hdmi_config_video_timing(struct rk3066_hdmi *hdmi,
+					   struct drm_display_mode *mode)
+{
+	int value, vsync_offset;
+
+	/* Set detail external video timing polarity and interlace mode */
+	value = HDMI_EXT_VIDEO_SET_EN;
+	value |= mode->flags & DRM_MODE_FLAG_PHSYNC ?
+		 HDMI_VIDEO_HSYNC_ACTIVE_HIGH : HDMI_VIDEO_HSYNC_ACTIVE_LOW;
+	value |= mode->flags & DRM_MODE_FLAG_PVSYNC ?
+		 HDMI_VIDEO_VSYNC_ACTIVE_HIGH : HDMI_VIDEO_VSYNC_ACTIVE_LOW;
+	value |= mode->flags & DRM_MODE_FLAG_INTERLACE ?
+		 HDMI_VIDEO_MODE_INTERLACE : HDMI_VIDEO_MODE_PROGRESSIVE;
+	if (hdmi->hdmi_data.vic == 2 || hdmi->hdmi_data.vic == 3)
+		vsync_offset = 6;
+	else
+		vsync_offset = 0;
+	value |= vsync_offset << 4;
+	hdmi_writeb(hdmi, HDMI_EXT_VIDEO_PARA, value);
+
+	/* Set detail external video timing */
+	value = mode->htotal;
+	hdmi_writeb(hdmi, HDMI_EXT_HTOTAL_L, value & 0xFF);
+	hdmi_writeb(hdmi, HDMI_EXT_HTOTAL_H, (value >> 8) & 0xFF);
+
+	value = mode->htotal - mode->hdisplay;
+	hdmi_writeb(hdmi, HDMI_EXT_HBLANK_L, value & 0xFF);
+	hdmi_writeb(hdmi, HDMI_EXT_HBLANK_H, (value >> 8) & 0xFF);
+
+	value = mode->htotal - mode->hsync_start;
+	hdmi_writeb(hdmi, HDMI_EXT_HDELAY_L, value & 0xFF);
+	hdmi_writeb(hdmi, HDMI_EXT_HDELAY_H, (value >> 8) & 0xFF);
+
+	value = mode->hsync_end - mode->hsync_start;
+	hdmi_writeb(hdmi, HDMI_EXT_HDURATION_L, value & 0xFF);
+	hdmi_writeb(hdmi, HDMI_EXT_HDURATION_H, (value >> 8) & 0xFF);
+
+	value = mode->vtotal;
+	hdmi_writeb(hdmi, HDMI_EXT_VTOTAL_L, value & 0xFF);
+	hdmi_writeb(hdmi, HDMI_EXT_VTOTAL_H, (value >> 8) & 0xFF);
+
+	value = mode->vtotal - mode->vdisplay;
+	hdmi_writeb(hdmi, HDMI_EXT_VBLANK_L, value & 0xFF);
+
+	value = mode->vtotal - mode->vsync_start + vsync_offset;
+	hdmi_writeb(hdmi, HDMI_EXT_VDELAY, value & 0xFF);
+
+	value = mode->vsync_end - mode->vsync_start;
+	hdmi_writeb(hdmi, HDMI_EXT_VDURATION, value & 0xFF);
+
+	return 0;
+}
+
+static void
+rk3066_hdmi_phy_write(struct rk3066_hdmi *hdmi, u16 offset, u8 value)
+{
+	hdmi_writeb(hdmi, offset, value);
+	hdmi_modb(hdmi, HDMI_SYS_CTRL,
+		  HDMI_SYS_PLL_RESET_MASK, HDMI_SYS_PLL_RESET);
+	usleep_range(90, 100);
+	hdmi_modb(hdmi, HDMI_SYS_CTRL, HDMI_SYS_PLL_RESET_MASK, 0);
+	usleep_range(900, 1000);
+}
+
+static void rk3066_hdmi_config_phy(struct rk3066_hdmi *hdmi)
+{
+	/* tmds frequency same as input dclk */
+	hdmi_writeb(hdmi, HDMI_DEEP_COLOR_MODE, 0x22);
+	if (hdmi->tmdsclk > 100000000) {
+		rk3066_hdmi_phy_write(hdmi, 0x158, 0x0E);
+		rk3066_hdmi_phy_write(hdmi, 0x15c, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x160, 0x60);
+		rk3066_hdmi_phy_write(hdmi, 0x164, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x168, 0xDA);
+		rk3066_hdmi_phy_write(hdmi, 0x16c, 0xA1);
+		rk3066_hdmi_phy_write(hdmi, 0x170, 0x0e);
+		rk3066_hdmi_phy_write(hdmi, 0x174, 0x22);
+		rk3066_hdmi_phy_write(hdmi, 0x178, 0x00);
+	} else if (hdmi->tmdsclk > 50000000) {
+		rk3066_hdmi_phy_write(hdmi, 0x158, 0x06);
+		rk3066_hdmi_phy_write(hdmi, 0x15c, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x160, 0x60);
+		rk3066_hdmi_phy_write(hdmi, 0x164, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x168, 0xCA);
+		rk3066_hdmi_phy_write(hdmi, 0x16c, 0xA3);
+		rk3066_hdmi_phy_write(hdmi, 0x170, 0x0e);
+		rk3066_hdmi_phy_write(hdmi, 0x174, 0x20);
+		rk3066_hdmi_phy_write(hdmi, 0x178, 0x00);
+	} else {
+		rk3066_hdmi_phy_write(hdmi, 0x158, 0x02);
+		rk3066_hdmi_phy_write(hdmi, 0x15c, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x160, 0x60);
+		rk3066_hdmi_phy_write(hdmi, 0x164, 0x00);
+		rk3066_hdmi_phy_write(hdmi, 0x168, 0xC2);
+		rk3066_hdmi_phy_write(hdmi, 0x16c, 0xA2);
+		rk3066_hdmi_phy_write(hdmi, 0x170, 0x0e);
+		rk3066_hdmi_phy_write(hdmi, 0x174, 0x20);
+		rk3066_hdmi_phy_write(hdmi, 0x178, 0x00);
+	}
+}
+
+static int rk3066_hdmi_setup(struct rk3066_hdmi *hdmi,
+			     struct drm_display_mode *mode)
+{
+	hdmi->hdmi_data.vic = drm_match_cea_mode(mode);
+
+	hdmi->hdmi_data.enc_in_format = HDMI_COLORSPACE_RGB;
+	hdmi->hdmi_data.enc_out_format = HDMI_COLORSPACE_RGB;
+
+	if (hdmi->hdmi_data.vic == 6 || hdmi->hdmi_data.vic == 7 ||
+	    hdmi->hdmi_data.vic == 21 || hdmi->hdmi_data.vic == 22 ||
+	    hdmi->hdmi_data.vic == 2 || hdmi->hdmi_data.vic == 3 ||
+	    hdmi->hdmi_data.vic == 17 || hdmi->hdmi_data.vic == 18)
+		hdmi->hdmi_data.colorimetry = HDMI_COLORIMETRY_ITU_601;
+	else
+		hdmi->hdmi_data.colorimetry = HDMI_COLORIMETRY_ITU_709;
+
+	hdmi->tmdsclk = mode->clock * 1000;
+
+	/* Mute video and audio output */
+	hdmi_modb(hdmi, HDMI_VIDEO_CTRL2, HDMI_VIDEO_AUDIO_DISABLE_MASK,
+		  HDMI_AUDIO_DISABLE | HDMI_VIDEO_DISABLE);
+
+	/* Set power state to mode b */
+	if (rk3066_hdmi_get_power_mode(hdmi) != HDMI_SYS_POWER_MODE_B)
+		rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_B);
+
+	/* Input video mode is RGB24bit, Data enable signal from external */
+	hdmi_modb(hdmi, HDMI_AV_CTRL1,
+		  HDMI_VIDEO_DE_MASK, HDMI_VIDEO_EXTERNAL_DE);
+	hdmi_writeb(hdmi, HDMI_VIDEO_CTRL1,
+		    HDMI_VIDEO_OUTPUT_RGB444 |
+		    HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT |
+		    HDMI_VIDEO_INPUT_COLOR_RGB);
+	hdmi_writeb(hdmi, HDMI_DEEP_COLOR_MODE, 0x20);
+
+	rk3066_hdmi_config_video_timing(hdmi, mode);
+
+	if (hdmi->hdmi_data.sink_is_hdmi) {
+		hdmi_modb(hdmi, HDMI_HDCP_CTRL, HDMI_VIDEO_MODE_MASK,
+			  HDMI_VIDEO_MODE_HDMI);
+		rk3066_hdmi_config_avi(hdmi, mode);
+		rk3066_hdmi_config_audio(hdmi, &hdmi->audio);
+	} else {
+		hdmi_modb(hdmi, HDMI_HDCP_CTRL, HDMI_VIDEO_MODE_MASK, 0);
+	}
+
+	rk3066_hdmi_config_phy(hdmi);
+
+	rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_E);
+
+	/*
+	 * When IP controller have configured to an accurate video
+	 * timing, then the TMDS clock source would be switched to
+	 * DCLK_LCDC, so we need to init the TMDS rate to mode pixel
+	 * clock rate, and reconfigure the DDC clock.
+	 */
+	rk3066_hdmi_i2c_init(hdmi);
+
+	/* Unmute video and audio output */
+	hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+		  HDMI_VIDEO_AUDIO_DISABLE_MASK, HDMI_AUDIO_DISABLE);
+	if (hdmi->audio_enable) {
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2, HDMI_AUDIO_DISABLE, 0);
+		/* Reset Audio cature logic */
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_CP_LOGIC_RESET_MASK,
+			  HDMI_AUDIO_CP_LOGIC_RESET);
+		usleep_range(900, 1000);
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_CP_LOGIC_RESET_MASK, 0);
+	}
+	return 0;
+}
+
+static void
+rk3066_hdmi_encoder_mode_set(struct drm_encoder *encoder,
+			     struct drm_display_mode *mode,
+			     struct drm_display_mode *adj_mode)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(encoder);
+
+	/* Store the display mode for plugin/DPMS poweron events */
+	memcpy(&hdmi->previous_mode, adj_mode, sizeof(hdmi->previous_mode));
+}
+
+static void rk3066_hdmi_encoder_enable(struct drm_encoder *encoder)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(encoder);
+
+	rk3066_hdmi_setup(hdmi, &hdmi->previous_mode);
+}
+
+static void rk3066_hdmi_encoder_disable(struct drm_encoder *encoder)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(encoder);
+
+	if (rk3066_hdmi_get_power_mode(hdmi) == HDMI_SYS_POWER_MODE_E) {
+		hdmi_writeb(hdmi, HDMI_VIDEO_CTRL2,
+			    HDMI_VIDEO_AUDIO_DISABLE_MASK);
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_CP_LOGIC_RESET_MASK,
+			  HDMI_AUDIO_CP_LOGIC_RESET);
+		usleep_range(500, 510);
+	}
+	rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_A);
+}
+
+static bool
+rk3066_hdmi_encoder_mode_fixup(struct drm_encoder *encoder,
+			       const struct drm_display_mode *mode,
+			       struct drm_display_mode *adj_mode)
+{
+	return true;
+}
+
+static int
+rk3066_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
+				 struct drm_crtc_state *crtc_state,
+				 struct drm_connector_state *conn_state)
+{
+	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
+
+	s->output_mode = ROCKCHIP_OUT_MODE_P888;
+	s->output_type = DRM_MODE_CONNECTOR_HDMIA;
+	s->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
+
+	return 0;
+}
+
+static const
+struct drm_encoder_helper_funcs rk3066_hdmi_encoder_helper_funcs = {
+	.enable     = rk3066_hdmi_encoder_enable,
+	.disable    = rk3066_hdmi_encoder_disable,
+	.mode_fixup = rk3066_hdmi_encoder_mode_fixup,
+	.mode_set   = rk3066_hdmi_encoder_mode_set,
+	.atomic_check = rk3066_hdmi_encoder_atomic_check,
+};
+
+static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs = {
+	.destroy = drm_encoder_cleanup,
+};
+
+static enum drm_connector_status
+rk3066_hdmi_connector_detect(struct drm_connector *connector, bool force)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(connector);
+
+	return (hdmi_readb(hdmi, HDMI_HPG_MENS_STA) & HDMI_HPG_IN_STATUS_HIGH) ?
+		connector_status_connected : connector_status_disconnected;
+}
+
+static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(connector);
+	struct edid *edid;
+	const u8 def_modes[6] = {4, 16, 31, 19, 17, 2};
+	struct drm_display_mode *mode;
+	struct drm_display_info *info = &connector->display_info;
+	int i, ret = 0;
+
+	if (!hdmi->ddc)
+		return 0;
+
+	edid = drm_get_edid(connector, hdmi->ddc);
+	if (edid) {
+		hdmi->hdmi_data.sink_is_hdmi = drm_detect_hdmi_monitor(edid);
+		hdmi->hdmi_data.sink_has_audio = drm_detect_monitor_audio(edid);
+		drm_mode_connector_update_edid_property(connector, edid);
+		ret = drm_add_edid_modes(connector, edid);
+		kfree(edid);
+	} else {
+		hdmi->hdmi_data.sink_is_hdmi = true;
+		hdmi->hdmi_data.sink_has_audio = true;
+		for (i = 0; i < sizeof(def_modes); i++) {
+			mode = drm_display_mode_from_vic_index(connector,
+							       def_modes,
+							       31, i);
+			if (mode) {
+				if (!i)
+					mode->type = DRM_MODE_TYPE_PREFERRED;
+				drm_mode_probed_add(connector, mode);
+				ret++;
+			}
+		}
+
+		info->edid_hdmi_dc_modes = 0;
+		info->hdmi.y420_dc_modes = 0;
+		info->color_formats = 0;
+
+		dev_info(hdmi->dev, "failed to get edid\n");
+	}
+
+	return ret;
+}
+
+static enum drm_mode_status
+rk3066_hdmi_connector_mode_valid(struct drm_connector *connector,
+				 struct drm_display_mode *mode)
+{
+	u32 vic = drm_match_cea_mode(mode);
+
+	if (vic > 1)
+		return MODE_OK;
+	else
+		return MODE_BAD;
+}
+
+static struct drm_encoder *
+rk3066_hdmi_connector_best_encoder(struct drm_connector *connector)
+{
+	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(connector);
+
+	return &hdmi->encoder;
+}
+
+static int
+rk3066_hdmi_probe_single_connector_modes(struct drm_connector *connector,
+					 uint32_t maxX, uint32_t maxY)
+{
+	return drm_helper_probe_single_connector_modes(connector, 1920, 1080);
+}
+
+static void rk3066_hdmi_connector_destroy(struct drm_connector *connector)
+{
+	drm_connector_unregister(connector);
+	drm_connector_cleanup(connector);
+}
+
+static const struct drm_connector_funcs rk3066_hdmi_connector_funcs = {
+	.dpms = drm_atomic_helper_connector_dpms,
+	.fill_modes = rk3066_hdmi_probe_single_connector_modes,
+	.detect = rk3066_hdmi_connector_detect,
+	.destroy = rk3066_hdmi_connector_destroy,
+	.reset = drm_atomic_helper_connector_reset,
+	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
+	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
+};
+
+static const
+struct drm_connector_helper_funcs rk3066_hdmi_connector_helper_funcs = {
+	.get_modes = rk3066_hdmi_connector_get_modes,
+	.mode_valid = rk3066_hdmi_connector_mode_valid,
+	.best_encoder = rk3066_hdmi_connector_best_encoder,
+};
+
+static int
+rk3066_hdmi_config_audio(struct rk3066_hdmi *hdmi, struct audio_info *audio)
+{
+	u32 rate, channel, word_length, N, CTS;
+	u64 tmp;
+
+	if (audio->channels < 3)
+		channel = HDMI_AUDIO_I2S_CHANNEL_1_2;
+	else if (audio->channels < 5)
+		channel = HDMI_AUDIO_I2S_CHANNEL_3_4;
+	else if (audio->channels < 7)
+		channel = HDMI_AUDIO_I2S_CHANNEL_5_6;
+	else
+		channel = HDMI_AUDIO_I2S_CHANNEL_7_8;
+
+	switch (audio->sample_rate) {
+	case 32000:
+		rate = HDMI_AUDIO_SAMPLE_FRE_32000;
+		N = N_32K;
+		break;
+	case 44100:
+		rate = HDMI_AUDIO_SAMPLE_FRE_44100;
+		N = N_441K;
+		break;
+	case 48000:
+		rate = HDMI_AUDIO_SAMPLE_FRE_48000;
+		N = N_48K;
+		break;
+	case 88200:
+		rate = HDMI_AUDIO_SAMPLE_FRE_88200;
+		N = N_882K;
+		break;
+	case 96000:
+		rate = HDMI_AUDIO_SAMPLE_FRE_96000;
+		N = N_96K;
+		break;
+	case 176400:
+		rate = HDMI_AUDIO_SAMPLE_FRE_176400;
+		N = N_1764K;
+		break;
+	case 192000:
+		rate = HDMI_AUDIO_SAMPLE_FRE_192000;
+		N = N_192K;
+		break;
+	default:
+		dev_err(hdmi->dev, "[%s] not support such sample rate %d\n",
+			__func__, audio->sample_rate);
+		return -ENOENT;
+	}
+
+	switch (audio->sample_width) {
+	case 16:
+		word_length = 0x02;
+		break;
+	case 20:
+		word_length = 0x0a;
+		break;
+	case 24:
+		word_length = 0x0b;
+		break;
+	default:
+		dev_err(hdmi->dev, "[%s] not support such word length %d\n",
+			__func__, audio->sample_width);
+		return -ENOENT;
+	}
+
+	tmp = (u64)hdmi->tmdsclk * N;
+	do_div(tmp, 128 * audio->sample_rate);
+	CTS = tmp;
+
+	/* set_audio source I2S */
+	hdmi_writeb(hdmi, HDMI_AUDIO_CTRL1, 0x00);
+	hdmi_writeb(hdmi, HDMI_AUDIO_CTRL2, 0x40);
+	hdmi_writeb(hdmi, HDMI_I2S_AUDIO_CTRL,
+		    HDMI_AUDIO_I2S_FORMAT_STANDARD | channel);
+	hdmi_writeb(hdmi, HDMI_I2S_SWAP, 0x00);
+	hdmi_modb(hdmi, HDMI_AV_CTRL1, HDMI_AUDIO_SAMPLE_FRE_MASK, rate);
+	hdmi_writeb(hdmi, HDMI_AUDIO_SRC_NUM_AND_LENGTH, word_length);
+
+	/* Set N value */
+	hdmi_modb(hdmi, HDMI_LR_SWAP_N3,
+		  HDMI_AUDIO_N_19_16_MASK, (N >> 16) & 0x0F);
+	hdmi_writeb(hdmi, HDMI_N2, (N >> 8) & 0xFF);
+	hdmi_writeb(hdmi, HDMI_N1, N & 0xFF);
+
+	/* Set CTS value */
+	hdmi_writeb(hdmi, HDMI_CTS_EXT1, CTS & 0xff);
+	hdmi_writeb(hdmi, HDMI_CTS_EXT2, (CTS >> 8) & 0xff);
+	hdmi_writeb(hdmi, HDMI_CTS_EXT3, (CTS >> 16) & 0xff);
+
+	if (audio->channels > 2)
+		hdmi_modb(hdmi, HDMI_LR_SWAP_N3,
+			  HDMI_AUDIO_LR_SWAP_MASK,
+			  HDMI_AUDIO_LR_SWAP_SUBPACKET1);
+	rate = (~(rate >> 4)) & 0x0f;
+	hdmi_writeb(hdmi, HDMI_AUDIO_STA_BIT_CTRL1, rate);
+	hdmi_writeb(hdmi, HDMI_AUDIO_STA_BIT_CTRL2, 0);
+
+	return rk3066_hdmi_config_aai(hdmi, audio);
+}
+
+static int rk3066_hdmi_audio_hw_params(struct device *dev, void *d,
+				       struct hdmi_codec_daifmt *daifmt,
+				       struct hdmi_codec_params *params)
+{
+	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
+
+	if (!hdmi->hdmi_data.sink_has_audio) {
+		dev_err(hdmi->dev, "Sink do not support audio!\n");
+		return -ENODEV;
+	}
+
+	if (!hdmi->encoder.crtc)
+		return -ENODEV;
+
+	switch (daifmt->fmt) {
+	case HDMI_I2S:
+		break;
+	default:
+		dev_err(dev, "%s: Invalid format %d\n", __func__, daifmt->fmt);
+		return -EINVAL;
+	}
+
+	hdmi->audio.sample_width = params->sample_width;
+	hdmi->audio.sample_rate = params->sample_rate;
+	hdmi->audio.channels = params->channels;
+
+	return rk3066_hdmi_config_audio(hdmi, &hdmi->audio);
+}
+
+static void rk3066_hdmi_audio_shutdown(struct device *dev, void *d)
+{
+	/* do nothing */
+}
+
+static int
+rk3066_hdmi_audio_digital_mute(struct device *dev, void *d, bool mute)
+{
+	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
+
+	if (!hdmi->hdmi_data.sink_has_audio) {
+		dev_err(hdmi->dev, "Sink do not support audio!\n");
+		return -ENODEV;
+	}
+
+	hdmi->audio_enable = !mute;
+
+	if (mute)
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_DISABLE, HDMI_AUDIO_DISABLE);
+	else
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2, HDMI_AUDIO_DISABLE, 0);
+
+	/*
+	 * Under power mode e, we need to reset audio capture logic to
+	 * make audio setting update.
+	 */
+	if (rk3066_hdmi_get_power_mode(hdmi) == HDMI_SYS_POWER_MODE_E) {
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_CP_LOGIC_RESET_MASK,
+			  HDMI_AUDIO_CP_LOGIC_RESET);
+		usleep_range(900, 1000);
+		hdmi_modb(hdmi, HDMI_VIDEO_CTRL2,
+			  HDMI_AUDIO_CP_LOGIC_RESET_MASK, 0);
+	}
+
+	return 0;
+}
+
+static int rk3066_hdmi_audio_get_eld(struct device *dev, void *d,
+				     uint8_t *buf, size_t len)
+{
+	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
+	struct drm_mode_config *config = &hdmi->encoder.dev->mode_config;
+	struct drm_connector *connector;
+	int ret = -ENODEV;
+
+	mutex_lock(&config->mutex);
+	list_for_each_entry(connector, &config->connector_list, head) {
+		if (&hdmi->encoder == connector->encoder) {
+			memcpy(buf, connector->eld,
+			       min(sizeof(connector->eld), len));
+			ret = 0;
+		}
+	}
+	mutex_unlock(&config->mutex);
+
+	return ret;
+}
+
+static const struct hdmi_codec_ops audio_codec_ops = {
+	.hw_params = rk3066_hdmi_audio_hw_params,
+	.audio_shutdown = rk3066_hdmi_audio_shutdown,
+	.digital_mute = rk3066_hdmi_audio_digital_mute,
+	.get_eld = rk3066_hdmi_audio_get_eld,
+};
+
+static int rk3066_hdmi_audio_codec_init(struct rk3066_hdmi *hdmi,
+					struct device *dev)
+{
+	struct hdmi_codec_pdata codec_data = {
+		.i2s = 1,
+		.ops = &audio_codec_ops,
+		.max_i2s_channels = 8,
+	};
+	hdmi->audio.channels = 2;
+	hdmi->audio.sample_rate = 48000;
+	hdmi->audio_enable = false;
+	hdmi->audio_pdev =
+		platform_device_register_data(dev,
+					      HDMI_CODEC_DRV_NAME,
+					      PLATFORM_DEVID_NONE,
+					      &codec_data,
+					      sizeof(codec_data));
+
+	return PTR_ERR_OR_ZERO(hdmi->audio_pdev);
+}
+
+static int
+rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
+{
+	struct drm_encoder *encoder = &hdmi->encoder;
+	struct device *dev = hdmi->dev;
+
+	encoder->possible_crtcs =
+		drm_of_find_possible_crtcs(drm, dev->of_node);
+
+	/*
+	 * If we failed to find the CRTC(s) which this encoder is
+	 * supposed to be connected to, it's because the CRTC has
+	 * not been registered yet.  Defer probing, and hope that
+	 * the required CRTC is added later.
+	 */
+	if (encoder->possible_crtcs == 0)
+		return -EPROBE_DEFER;
+
+	drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs);
+	drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs,
+			 DRM_MODE_ENCODER_TMDS, NULL);
+
+	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
+	hdmi->connector.port = dev->of_node;
+
+	drm_connector_helper_add(&hdmi->connector,
+				 &rk3066_hdmi_connector_helper_funcs);
+	drm_connector_init(drm, &hdmi->connector,
+			   &rk3066_hdmi_connector_funcs,
+			   DRM_MODE_CONNECTOR_HDMIA);
+
+	drm_mode_connector_attach_encoder(&hdmi->connector, encoder);
+
+	rk3066_hdmi_audio_codec_init(hdmi, dev);
+
+	return 0;
+}
+
+static irqreturn_t rk3066_hdmi_i2c_irq(struct rk3066_hdmi *hdmi, u8 stat)
+{
+	struct rk3066_hdmi_i2c *i2c = hdmi->i2c;
+
+	if (!(stat & HDMI_INTR_EDID_MASK))
+		return IRQ_NONE;
+
+	i2c->stat = stat;
+
+	complete(&i2c->cmp);
+
+	return IRQ_HANDLED;
+}
+
+static irqreturn_t rk3066_hdmi_hardirq(int irq, void *dev_id)
+{
+	struct rk3066_hdmi *hdmi = dev_id;
+	irqreturn_t ret = IRQ_NONE;
+	u8 interrupt;
+
+	if (rk3066_hdmi_get_power_mode(hdmi) == HDMI_SYS_POWER_MODE_A)
+		hdmi_writeb(hdmi, HDMI_SYS_CTRL, HDMI_SYS_POWER_MODE_B);
+
+	interrupt = hdmi_readb(hdmi, HDMI_INTR_STATUS1);
+	if (interrupt)
+		hdmi_writeb(hdmi, HDMI_INTR_STATUS1, interrupt);
+
+	if (hdmi->i2c)
+		ret = rk3066_hdmi_i2c_irq(hdmi, interrupt);
+
+	if (interrupt & (HDMI_INTR_HOTPLUG | HDMI_INTR_MSENS))
+		ret = IRQ_WAKE_THREAD;
+
+	return ret;
+}
+
+static irqreturn_t rk3066_hdmi_irq(int irq, void *dev_id)
+{
+	struct rk3066_hdmi *hdmi = dev_id;
+
+	drm_helper_hpd_irq_event(hdmi->connector.dev);
+
+	return IRQ_HANDLED;
+}
+
+static int rk3066_hdmi_i2c_read(struct rk3066_hdmi *hdmi, struct i2c_msg *msgs)
+{
+	int length = msgs->len;
+	u8 *buf = msgs->buf;
+	int ret;
+
+	ret = wait_for_completion_timeout(&hdmi->i2c->cmp, HZ / 10);
+	if (!ret || hdmi->i2c->stat & HDMI_INTR_EDID_ERR)
+		return -EAGAIN;
+
+	while (length--)
+		*buf++ = hdmi_readb(hdmi, HDMI_DDC_READ_FIFO_ADDR);
+
+	return 0;
+}
+
+static int rk3066_hdmi_i2c_write(struct rk3066_hdmi *hdmi, struct i2c_msg *msgs)
+{
+	/*
+	 * The DDC module only support read EDID message, so
+	 * we assume that each word write to this i2c adapter
+	 * should be the offset of EDID word address.
+	 */
+	if (msgs->len != 1 ||
+	    (msgs->addr != DDC_ADDR && msgs->addr != DDC_SEGMENT_ADDR))
+		return -EINVAL;
+
+	reinit_completion(&hdmi->i2c->cmp);
+
+	if (msgs->addr == DDC_SEGMENT_ADDR)
+		hdmi->i2c->segment_addr = msgs->buf[0];
+	if (msgs->addr == DDC_ADDR)
+		hdmi->i2c->ddc_addr = msgs->buf[0];
+
+	/* Set edid word address 0x00/0x80 */
+	hdmi_writeb(hdmi, HDMI_EDID_WORD_ADDR, hdmi->i2c->ddc_addr);
+
+	/* Set edid segment pointer */
+	hdmi_writeb(hdmi, HDMI_EDID_SEGMENT_POINTER, hdmi->i2c->segment_addr);
+
+	return 0;
+}
+
+static int rk3066_hdmi_i2c_xfer(struct i2c_adapter *adap,
+				struct i2c_msg *msgs, int num)
+{
+	struct rk3066_hdmi *hdmi = i2c_get_adapdata(adap);
+	struct rk3066_hdmi_i2c *i2c = hdmi->i2c;
+	int i, ret = 0;
+
+	mutex_lock(&i2c->lock);
+
+	rk3066_hdmi_i2c_init(hdmi);
+
+	/* Unmute the interrupt */
+	hdmi_modb(hdmi, HDMI_INTR_MASK1,
+		  HDMI_INTR_EDID_MASK, HDMI_INTR_EDID_MASK);
+	i2c->stat = 0;
+
+	for (i = 0; i < num; i++) {
+		dev_dbg(hdmi->dev, "xfer: num: %d/%d, len: %d, flags: %#x\n",
+			i + 1, num, msgs[i].len, msgs[i].flags);
+
+		if (msgs[i].flags & I2C_M_RD)
+			ret = rk3066_hdmi_i2c_read(hdmi, &msgs[i]);
+		else
+			ret = rk3066_hdmi_i2c_write(hdmi, &msgs[i]);
+
+		if (ret < 0)
+			break;
+	}
+
+	if (!ret)
+		ret = num;
+
+	/* Mute HDMI EDID interrupt */
+	hdmi_modb(hdmi, HDMI_INTR_MASK1, HDMI_INTR_EDID_MASK, 0);
+
+	mutex_unlock(&i2c->lock);
+
+	return ret;
+}
+
+static u32 rk3066_hdmi_i2c_func(struct i2c_adapter *adapter)
+{
+	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
+}
+
+static const struct i2c_algorithm rk3066_hdmi_algorithm = {
+	.master_xfer	= rk3066_hdmi_i2c_xfer,
+	.functionality	= rk3066_hdmi_i2c_func,
+};
+
+static struct i2c_adapter *rk3066_hdmi_i2c_adapter(struct rk3066_hdmi *hdmi)
+{
+	struct i2c_adapter *adap;
+	struct rk3066_hdmi_i2c *i2c;
+	int ret;
+
+	i2c = devm_kzalloc(hdmi->dev, sizeof(*i2c), GFP_KERNEL);
+	if (!i2c)
+		return ERR_PTR(-ENOMEM);
+
+	mutex_init(&i2c->lock);
+	init_completion(&i2c->cmp);
+
+	adap = &i2c->adap;
+	adap->class = I2C_CLASS_DDC;
+	adap->owner = THIS_MODULE;
+	adap->dev.parent = hdmi->dev;
+	adap->dev.of_node = hdmi->dev->of_node;
+	adap->algo = &rk3066_hdmi_algorithm;
+	strlcpy(adap->name, "RK3066 HDMI", sizeof(adap->name));
+	i2c_set_adapdata(adap, hdmi);
+
+	ret = i2c_add_adapter(adap);
+	if (ret) {
+		dev_warn(hdmi->dev, "cannot add %s I2C adapter\n", adap->name);
+		devm_kfree(hdmi->dev, i2c);
+		return ERR_PTR(ret);
+	}
+
+	hdmi->i2c = i2c;
+
+	dev_info(hdmi->dev, "registered %s I2C bus driver\n", adap->name);
+
+	return adap;
+}
+
+static int rk3066_hdmi_bind(struct device *dev, struct device *master,
+			    void *data)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct drm_device *drm = data;
+	struct rk3066_hdmi *hdmi;
+	struct resource *iores;
+	int irq;
+	int ret;
+
+	hdmi = devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL);
+	if (!hdmi)
+		return -ENOMEM;
+
+	hdmi->dev = dev;
+	hdmi->drm_dev = drm;
+
+	iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!iores)
+		return -ENXIO;
+
+	hdmi->regs = devm_ioremap_resource(dev, iores);
+	if (IS_ERR(hdmi->regs))
+		return PTR_ERR(hdmi->regs);
+
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0)
+		return irq;
+
+	hdmi->hclk = devm_clk_get(hdmi->dev, "hclk");
+	if (IS_ERR(hdmi->hclk)) {
+		dev_err(hdmi->dev, "Unable to get HDMI hclk clk\n");
+		return PTR_ERR(hdmi->hclk);
+	}
+
+	ret = clk_prepare_enable(hdmi->hclk);
+	if (ret) {
+		dev_err(hdmi->dev, "Cannot enable HDMI hclk clock: %d\n", ret);
+		return ret;
+	}
+
+	hdmi->regmap =
+		syscon_regmap_lookup_by_phandle(hdmi->dev->of_node,
+						"rockchip,grf");
+	if (IS_ERR(hdmi->regmap)) {
+		dev_err(hdmi->dev, "Unable to get rockchip,grf\n");
+		ret = PTR_ERR(hdmi->regmap);
+		goto err_disable_hclk;
+	}
+
+	/* internal hclk = hdmi_hclk / 25 */
+	hdmi_writeb(hdmi, HDMI_INTERNAL_CLK_DIVIDER, 25);
+
+	hdmi->ddc = rk3066_hdmi_i2c_adapter(hdmi);
+	if (IS_ERR(hdmi->ddc)) {
+		ret = PTR_ERR(hdmi->ddc);
+		hdmi->ddc = NULL;
+		goto err_disable_hclk;
+	}
+
+	hdmi->powermode = HDMI_SYS_POWER_MODE_A;
+	rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_B);
+	usleep_range(999, 1000);
+	hdmi_writeb(hdmi, HDMI_INTR_MASK1, HDMI_INTR_HOTPLUG);
+	hdmi_writeb(hdmi, HDMI_INTR_MASK2, 0);
+	hdmi_writeb(hdmi, HDMI_INTR_MASK3, 0);
+	hdmi_writeb(hdmi, HDMI_INTR_MASK4, 0);
+	rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_A);
+
+	ret = rk3066_hdmi_register(drm, hdmi);
+	if (ret)
+		goto err_disable_hclk;
+
+	dev_set_drvdata(dev, hdmi);
+
+	ret = devm_request_threaded_irq(dev, irq, rk3066_hdmi_hardirq,
+					rk3066_hdmi_irq, IRQF_SHARED,
+					dev_name(dev), hdmi);
+	if (ret) {
+		dev_err(hdmi->dev,
+			"failed to request hdmi irq: %d\n", ret);
+		goto err_disable_hclk;
+	}
+
+	return 0;
+
+err_disable_hclk:
+	clk_disable_unprepare(hdmi->hclk);
+
+	return ret;
+}
+
+static void rk3066_hdmi_unbind(struct device *dev, struct device *master,
+			       void *data)
+{
+	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
+
+	hdmi->connector.funcs->destroy(&hdmi->connector);
+	hdmi->encoder.funcs->destroy(&hdmi->encoder);
+
+	clk_disable_unprepare(hdmi->hclk);
+	i2c_put_adapter(hdmi->ddc);
+}
+
+static const struct component_ops rk3066_hdmi_ops = {
+	.bind	= rk3066_hdmi_bind,
+	.unbind	= rk3066_hdmi_unbind,
+};
+
+static int rk3066_hdmi_probe(struct platform_device *pdev)
+{
+	return component_add(&pdev->dev, &rk3066_hdmi_ops);
+}
+
+static int rk3066_hdmi_remove(struct platform_device *pdev)
+{
+	component_del(&pdev->dev, &rk3066_hdmi_ops);
+
+	return 0;
+}
+
+static const struct of_device_id rk3066_hdmi_dt_ids[] = {
+	{ .compatible = "rockchip,rk3066-hdmi",
+	},
+	{},
+};
+MODULE_DEVICE_TABLE(of, rk3066_hdmi_dt_ids);
+
+static struct platform_driver rk3066_hdmi_driver = {
+	.probe  = rk3066_hdmi_probe,
+	.remove = rk3066_hdmi_remove,
+	.driver = {
+		.name = "rk3066hdmi-rockchip",
+		.of_match_table = rk3066_hdmi_dt_ids,
+	},
+};
+
+module_platform_driver(rk3066_hdmi_driver);
+
+MODULE_AUTHOR("Zheng Yang <zhengyang@rock-chips.com>");
+MODULE_DESCRIPTION("Rockchip Specific RK3066-HDMI Driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:rk3066hdmi-rockchip");
diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.h b/drivers/gpu/drm/rockchip/rk3066_hdmi.h
new file mode 100644
index 000000000..2bbe0a506
--- /dev/null
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.h
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
+ *    Zheng Yang <zhengyang@rock-chips.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __RK3066_HDMI_H__
+#define __RK3066_HDMI_H__
+
+#define DDC_SEGMENT_ADDR			0x30
+#define HDMI_SCL_RATE				(50 * 1000)
+#define HDMI_MAXIMUM_INFO_FRAME_SIZE		0x11
+
+#define N_32K					0x1000
+#define N_441K					0x1880
+#define N_882K					0x3100
+#define N_1764K					0x6200
+#define N_48K					0x1800
+#define N_96K					0x3000
+#define N_192K					0x6000
+
+#define HDMI_SYS_CTRL				0x000
+#define HDMI_LR_SWAP_N3				0x004
+#define HDMI_N2					0x008
+#define HDMI_N1					0x00c
+#define HDMI_SPDIF_FS_CTS_INT3			0x010
+#define HDMI_CTS_INT2				0x014
+#define HDMI_CTS_INT1				0x018
+#define HDMI_CTS_EXT3				0x01c
+#define HDMI_CTS_EXT2				0x020
+#define HDMI_CTS_EXT1				0x024
+#define HDMI_AUDIO_CTRL1			0x028
+#define HDMI_AUDIO_CTRL2			0x02c
+#define HDMI_I2S_AUDIO_CTRL			0x030
+#define HDMI_I2S_SWAP				0x040
+#define HDMI_AUDIO_STA_BIT_CTRL1		0x044
+#define HDMI_AUDIO_STA_BIT_CTRL2		0x048
+#define HDMI_AUDIO_SRC_NUM_AND_LENGTH		0x050
+#define HDMI_AV_CTRL1				0x054
+#define HDMI_VIDEO_CTRL1			0x058
+#define HDMI_DEEP_COLOR_MODE			0x05c
+
+#define HDMI_EXT_VIDEO_PARA			0x0c0
+#define HDMI_EXT_HTOTAL_L			0x0c4
+#define HDMI_EXT_HTOTAL_H			0x0c8
+#define HDMI_EXT_HBLANK_L			0x0cc
+#define HDMI_EXT_HBLANK_H			0x0d0
+#define HDMI_EXT_HDELAY_L			0x0d4
+#define HDMI_EXT_HDELAY_H			0x0d8
+#define HDMI_EXT_HDURATION_L			0x0dc
+#define HDMI_EXT_HDURATION_H			0x0e0
+#define HDMI_EXT_VTOTAL_L			0x0e4
+#define HDMI_EXT_VTOTAL_H			0x0e8
+#define HDMI_AV_CTRL2				0x0ec
+#define HDMI_EXT_VBLANK_L			0x0f4
+#define HDMI_EXT_VBLANK_H			0x10c
+#define HDMI_EXT_VDELAY				0x0f8
+#define HDMI_EXT_VDURATION			0x0fc
+
+#define HDMI_CP_MANU_SEND_CTRL			0x100
+#define HDMI_CP_AUTO_SEND_CTRL			0x104
+#define HDMI_AUTO_CHECKSUM_OPT			0x108
+
+#define HDMI_VIDEO_CTRL2			0x114
+
+#define HDMI_PHY_OPTION				0x144
+
+#define HDMI_CP_BUF_INDEX			0x17c
+#define HDMI_CP_BUF_ACC_HB0			0x180
+#define HDMI_CP_BUF_ACC_HB1			0x184
+#define HDMI_CP_BUF_ACC_HB2			0x188
+#define HDMI_CP_BUF_ACC_PB0			0x18c
+
+#define HDMI_DDC_READ_FIFO_ADDR			0x200
+#define HDMI_DDC_BUS_FREQ_L			0x204
+#define HDMI_DDC_BUS_FREQ_H			0x208
+#define HDMI_DDC_BUS_CTRL			0x2dc
+#define HDMI_DDC_I2C_LEN			0x278
+#define HDMI_DDC_I2C_OFFSET			0x280
+#define HDMI_DDC_I2C_CTRL			0x284
+#define HDMI_DDC_I2C_READ_BUF0			0x288
+#define HDMI_DDC_I2C_READ_BUF1			0x28c
+#define HDMI_DDC_I2C_READ_BUF2			0x290
+#define HDMI_DDC_I2C_READ_BUF3			0x294
+#define HDMI_DDC_I2C_WRITE_BUF0			0x298
+#define HDMI_DDC_I2C_WRITE_BUF1			0x29c
+#define HDMI_DDC_I2C_WRITE_BUF2			0x2a0
+#define HDMI_DDC_I2C_WRITE_BUF3			0x2a4
+#define HDMI_DDC_I2C_WRITE_BUF4			0x2ac
+#define HDMI_DDC_I2C_WRITE_BUF5			0x2b0
+#define HDMI_DDC_I2C_WRITE_BUF6			0x2b4
+
+#define HDMI_INTR_MASK1				0x248
+#define HDMI_INTR_MASK2				0x24c
+#define HDMI_INTR_STATUS1			0x250
+#define HDMI_INTR_STATUS2			0x254
+#define HDMI_INTR_MASK3				0x258
+#define HDMI_INTR_MASK4				0x25c
+#define HDMI_INTR_STATUS3			0x260
+#define HDMI_INTR_STATUS4			0x264
+
+#define HDMI_HDCP_CTRL				0x2bc
+
+#define HDMI_EDID_SEGMENT_POINTER		0x310
+#define HDMI_EDID_WORD_ADDR			0x314
+#define HDMI_EDID_FIFO_ADDR			0x318
+
+#define HDMI_HPG_MENS_STA			0x37c
+
+#define HDMI_INTERNAL_CLK_DIVIDER		0x800
+
+enum {
+	/* HDMI_SYS_CTRL */
+	HDMI_SYS_POWER_MODE_MASK = 0xf0,
+	HDMI_SYS_POWER_MODE_A = 0x10,
+	HDMI_SYS_POWER_MODE_B = 0x20,
+	HDMI_SYS_POWER_MODE_D = 0x40,
+	HDMI_SYS_POWER_MODE_E = 0x80,
+	HDMI_SYS_PLL_RESET_MASK = 0x0c,
+	HDMI_SYS_PLL_RESET = 0x0c,
+	HDMI_SYS_PLLB_RESET = 0x08,
+
+	/* HDMI_LR_SWAP_N3 */
+	HDMI_AUDIO_LR_SWAP_MASK = 0xf0,
+	HDMI_AUDIO_LR_SWAP_SUBPACKET0 = 0x10,
+	HDMI_AUDIO_LR_SWAP_SUBPACKET1 = 0x20,
+	HDMI_AUDIO_LR_SWAP_SUBPACKET2 = 0x40,
+	HDMI_AUDIO_LR_SWAP_SUBPACKET3 = 0x80,
+	HDMI_AUDIO_N_19_16_MASK = 0x0f,
+
+	/* HDMI_AUDIO_CTRL1 */
+	HDMI_AUDIO_EXTERNAL_CTS = BIT(7),
+	HDMI_AUDIO_INPUT_IIS = 0,
+	HDMI_AUDIO_INPUT_SPDIF = 0x08,
+	HDMI_AUDIO_INPUT_MCLK_ACTIVE = 0x04,
+	HDMI_AUDIO_INPUT_MCLK_DEACTIVE = 0,
+	HDMI_AUDIO_INPUT_MCLK_RATE_128X = 0,
+	HDMI_AUDIO_INPUT_MCLK_RATE_256X = 1,
+	HDMI_AUDIO_INPUT_MCLK_RATE_384X = 2,
+	HDMI_AUDIO_INPUT_MCLK_RATE_512X = 3,
+
+	/* HDMI_I2S_AUDIO_CTRL */
+	HDMI_AUDIO_I2S_FORMAT_STANDARD = 0,
+	HDMI_AUDIO_I2S_CHANNEL_1_2 = 0x04,
+	HDMI_AUDIO_I2S_CHANNEL_3_4 = 0x0c,
+	HDMI_AUDIO_I2S_CHANNEL_5_6 = 0x1c,
+	HDMI_AUDIO_I2S_CHANNEL_7_8 = 0x3c,
+
+	/* HDMI_AV_CTRL1 */
+	HDMI_AUDIO_SAMPLE_FRE_MASK = 0xf0,
+	HDMI_AUDIO_SAMPLE_FRE_32000 = 0x30,
+	HDMI_AUDIO_SAMPLE_FRE_44100 = 0,
+	HDMI_AUDIO_SAMPLE_FRE_48000 = 0x20,
+	HDMI_AUDIO_SAMPLE_FRE_88200 = 0x80,
+	HDMI_AUDIO_SAMPLE_FRE_96000 = 0xa0,
+	HDMI_AUDIO_SAMPLE_FRE_176400 = 0xc0,
+	HDMI_AUDIO_SAMPLE_FRE_192000 = 0xe0,
+	HDMI_AUDIO_SAMPLE_FRE_768000 = 0x90,
+
+	HDMI_VIDEO_INPUT_FORMAT_MASK = 0x0e,
+	HDMI_VIDEO_INPUT_RGB_YCBCR444 = 0,
+	HDMI_VIDEO_INPUT_YCBCR422 = 0x02,
+	HDMI_VIDEO_DE_MASK = 0x1,
+	HDMI_VIDEO_INTERNAL_DE = 0,
+	HDMI_VIDEO_EXTERNAL_DE = 0x01,
+
+	/* HDMI_VIDEO_CTRL1 */
+	HDMI_VIDEO_OUTPUT_FORMAT_MASK = 0xc0,
+	HDMI_VIDEO_OUTPUT_RGB444 = 0,
+	HDMI_VIDEO_OUTPUT_YCBCR444 = 0x40,
+	HDMI_VIDEO_OUTPUT_YCBCR422 = 0x80,
+	HDMI_VIDEO_INPUT_DATA_DEPTH_MASK = 0x30,
+	HDMI_VIDEO_INPUT_DATA_DEPTH_12BIT = 0,
+	HDMI_VIDEO_INPUT_DATA_DEPTH_10BIT = 0x10,
+	HDMI_VIDEO_INPUT_DATA_DEPTH_8BIT = 0x30,
+	HDMI_VIDEO_INPUT_COLOR_MASK = 1,
+	HDMI_VIDEO_INPUT_COLOR_RGB = 0,
+	HDMI_VIDEO_INPUT_COLOR_YCBCR = 1,
+
+	/* HDMI_EXT_VIDEO_PARA */
+	HDMI_VIDEO_VSYNC_OFFSET_SHIFT = 4,
+	HDMI_VIDEO_VSYNC_ACTIVE_HIGH = BIT(3),
+	HDMI_VIDEO_VSYNC_ACTIVE_LOW = 0,
+	HDMI_VIDEO_HSYNC_ACTIVE_HIGH = BIT(2),
+	HDMI_VIDEO_HSYNC_ACTIVE_LOW = 0,
+	HDMI_VIDEO_MODE_INTERLACE = BIT(1),
+	HDMI_VIDEO_MODE_PROGRESSIVE = 0,
+	HDMI_EXT_VIDEO_SET_EN = BIT(0),
+
+	/* HDMI_CP_AUTO_SEND_CTRL */
+
+	/* HDMI_VIDEO_CTRL2 */
+	HDMI_VIDEO_AV_MUTE_MASK = 0xc0,
+	HDMI_VIDEO_CLR_AV_MUTE = BIT(7),
+	HDMI_VIDEO_SET_AV_MUTE = BIT(6),
+	HDMI_AUDIO_CP_LOGIC_RESET_MASK = BIT(2),
+	HDMI_AUDIO_CP_LOGIC_RESET = BIT(2),
+	HDMI_VIDEO_AUDIO_DISABLE_MASK = 0x3,
+	HDMI_AUDIO_DISABLE = BIT(1),
+	HDMI_VIDEO_DISABLE = BIT(0),
+
+	/* HDMI_CP_BUF_INDEX */
+	HDMI_INFOFRAME_VSI = 0x05,
+	HDMI_INFOFRAME_AVI = 0x06,
+	HDMI_INFOFRAME_AAI = 0x08,
+
+	/* HDMI_INTR_MASK1 */
+	/* HDMI_INTR_STATUS1 */
+	HDMI_INTR_HOTPLUG = BIT(7),
+	HDMI_INTR_MSENS = BIT(6),
+	HDMI_INTR_VSYNC = BIT(5),
+	HDMI_INTR_AUDIO_FIFO_FULL = BIT(4),
+	HDMI_INTR_EDID_MASK = 0x6,
+	HDMI_INTR_EDID_READY = BIT(2),
+	HDMI_INTR_EDID_ERR = BIT(1),
+
+	/* HDMI_HDCP_CTRL */
+	HDMI_VIDEO_MODE_MASK = BIT(1),
+	HDMI_VIDEO_MODE_HDMI = BIT(1),
+
+	/* HDMI_HPG_MENS_STA */
+	HDMI_HPG_IN_STATUS_HIGH = BIT(7),
+	HDMI_MSENS_IN_STATUS_HIGH = BIT(6),
+};
+
+#endif /* __RK3066_HDMI_H__ */
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-drm-rockchip-rk3066_hdmi-bug-fix.patch --]
[-- Type: text/x-patch; name="0001-drm-rockchip-rk3066_hdmi-bug-fix.patch", Size: 9957 bytes --]

From 7693d1ebea3783ae12d74a2699ca2bcf160b7f42 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Wed, 28 Nov 2018 17:29:35 +0100
Subject: [PATCH] drm: rockchip: rk3066_hdmi: bug fix

Bug fix.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 98 +++++++++++++++++++++++++---------
 1 file changed, 73 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 7831430d8..16f08b8ea 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -135,21 +135,37 @@ static inline u8 rk3066_hdmi_get_power_mode(struct rk3066_hdmi *hdmi)
 static void rk3066_hdmi_set_power_mode(struct rk3066_hdmi *hdmi, int mode)
 {
 	u8 previous_mode, next_mode;
+	u8 i = 0;
 
 	previous_mode = rk3066_hdmi_get_power_mode(hdmi);
 
+	dev_dbg(hdmi->dev, "mode         :%d\n", mode);
+	dev_dbg(hdmi->dev, "previous_mode:%d\n", previous_mode);
+
 	if (previous_mode == mode)
 		return;
 
 	do {
 		if (previous_mode > mode)
 			next_mode = previous_mode / 2;
-		else
-			next_mode = previous_mode * 2;
+		else {
+			if (previous_mode < HDMI_SYS_POWER_MODE_A)
+				next_mode = HDMI_SYS_POWER_MODE_A;
+			else next_mode = previous_mode * 2;
+		}
+
+		dev_dbg(hdmi->dev, "%d: next_mode    :%d\n", i, next_mode);
+
 		if (next_mode != HDMI_SYS_POWER_MODE_D) {
+
+			dev_dbg(hdmi->dev, "set HDMI_SYS_POWER_MODE_A-B-E\n");
+
 			hdmi_modb(hdmi, HDMI_SYS_CTRL,
 				  HDMI_SYS_POWER_MODE_MASK, next_mode);
 		} else {
+
+			dev_dbg(hdmi->dev, "set HDMI_SYS_POWER_MODE_D\n");
+
 			hdmi_writeb(hdmi, HDMI_SYS_CTRL,
 				    HDMI_SYS_POWER_MODE_D |
 				    HDMI_SYS_PLL_RESET_MASK);
@@ -162,7 +178,8 @@ static void rk3066_hdmi_set_power_mode(struct rk3066_hdmi *hdmi, int mode)
 				    HDMI_SYS_POWER_MODE_D);
 		}
 		previous_mode = next_mode;
-	} while (next_mode != mode);
+        i = i + 1;
+	} while ((next_mode != mode) && (i < 5));
 
 	/*
 	 * When IP controller haven't configured to an accurate video
@@ -381,12 +398,16 @@ static int rk3066_hdmi_setup(struct rk3066_hdmi *hdmi,
 	if (hdmi->hdmi_data.sink_is_hdmi) {
 		hdmi_modb(hdmi, HDMI_HDCP_CTRL, HDMI_VIDEO_MODE_MASK,
 			  HDMI_VIDEO_MODE_HDMI);
-		rk3066_hdmi_config_avi(hdmi, mode);
-		rk3066_hdmi_config_audio(hdmi, &hdmi->audio);
 	} else {
 		hdmi_modb(hdmi, HDMI_HDCP_CTRL, HDMI_VIDEO_MODE_MASK, 0);
 	}
 
+	rk3066_hdmi_config_avi(hdmi, mode);
+
+	if (hdmi->hdmi_data.sink_has_audio) {
+		rk3066_hdmi_config_audio(hdmi, &hdmi->audio);
+	}
+
 	rk3066_hdmi_config_phy(hdmi);
 
 	rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_E);
@@ -429,6 +450,17 @@ rk3066_hdmi_encoder_mode_set(struct drm_encoder *encoder,
 static void rk3066_hdmi_encoder_enable(struct drm_encoder *encoder)
 {
 	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(encoder);
+	int mux, val;
+
+	mux = drm_of_encoder_active_endpoint_id(hdmi->dev->of_node, encoder);
+	if (mux)
+		val = BIT(30) | BIT(14);
+	else
+		val = BIT(30);
+
+	regmap_write(hdmi->regmap, 0x150, val);
+	dev_dbg(hdmi->dev, "select hdmi input: vop%s\n",
+		(mux) ? "1" : "0");
 
 	rk3066_hdmi_setup(hdmi, &hdmi->previous_mode);
 }
@@ -465,7 +497,6 @@ rk3066_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
 
 	s->output_mode = ROCKCHIP_OUT_MODE_P888;
 	s->output_type = DRM_MODE_CONNECTOR_HDMIA;
-	s->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
 
 	return 0;
 }
@@ -492,6 +523,11 @@ rk3066_hdmi_connector_detect(struct drm_connector *connector, bool force)
 		connector_status_connected : connector_status_disconnected;
 }
 
+extern struct drm_display_mode *
+drm_display_mode_from_vic_index(struct drm_connector *connector,
+				const u8 *video_db, u8 video_len,
+				u8 video_index);
+
 static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct rk3066_hdmi *hdmi = to_rk3066_hdmi(connector);
@@ -504,16 +540,30 @@ static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
 	if (!hdmi->ddc)
 		return 0;
 
+	hdmi->hdmi_data.sink_is_hdmi = false;
+	hdmi->hdmi_data.sink_has_audio = false;
+
 	edid = drm_get_edid(connector, hdmi->ddc);
 	if (edid) {
 		hdmi->hdmi_data.sink_is_hdmi = drm_detect_hdmi_monitor(edid);
+
+		dev_dbg(hdmi->dev, "monitor type : %s : %dx%d cm\n",
+			(hdmi->hdmi_data.sink_is_hdmi ? "HDMI" : "DVI"),
+			edid->width_cm, edid->height_cm);
+
 		hdmi->hdmi_data.sink_has_audio = drm_detect_monitor_audio(edid);
-		drm_mode_connector_update_edid_property(connector, edid);
+
+		dev_dbg(hdmi->dev, "audio support: %s\n",
+			(hdmi->hdmi_data.sink_has_audio ? "yes" : "no"));
+
+		drm_connector_update_edid_property(connector, edid);
 		ret = drm_add_edid_modes(connector, edid);
 		kfree(edid);
-	} else {
-		hdmi->hdmi_data.sink_is_hdmi = true;
-		hdmi->hdmi_data.sink_has_audio = true;
+	}
+
+	if ((ret == 0) || (hdmi->hdmi_data.sink_is_hdmi == false)) {
+		hdmi->hdmi_data.sink_is_hdmi = false;
+		hdmi->hdmi_data.sink_has_audio = false;
 		for (i = 0; i < sizeof(def_modes); i++) {
 			mode = drm_display_mode_from_vic_index(connector,
 							       def_modes,
@@ -530,7 +580,7 @@ static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
 		info->hdmi.y420_dc_modes = 0;
 		info->color_formats = 0;
 
-		dev_info(hdmi->dev, "failed to get edid\n");
+		dev_info(hdmi->dev, "no CEA mode found, use preset\n");
 	}
 
 	return ret;
@@ -570,7 +620,6 @@ static void rk3066_hdmi_connector_destroy(struct drm_connector *connector)
 }
 
 static const struct drm_connector_funcs rk3066_hdmi_connector_funcs = {
-	.dpms = drm_atomic_helper_connector_dpms,
 	.fill_modes = rk3066_hdmi_probe_single_connector_modes,
 	.detect = rk3066_hdmi_connector_detect,
 	.destroy = rk3066_hdmi_connector_destroy,
@@ -631,7 +680,7 @@ rk3066_hdmi_config_audio(struct rk3066_hdmi *hdmi, struct audio_info *audio)
 		N = N_192K;
 		break;
 	default:
-		dev_err(hdmi->dev, "[%s] not support such sample rate %d\n",
+		dev_err(hdmi->dev, "[%s] no support for sample rate: %d\n",
 			__func__, audio->sample_rate);
 		return -ENOENT;
 	}
@@ -647,7 +696,7 @@ rk3066_hdmi_config_audio(struct rk3066_hdmi *hdmi, struct audio_info *audio)
 		word_length = 0x0b;
 		break;
 	default:
-		dev_err(hdmi->dev, "[%s] not support such word length %d\n",
+		dev_err(hdmi->dev, "[%s] no support for word length: %d\n",
 			__func__, audio->sample_width);
 		return -ENOENT;
 	}
@@ -694,7 +743,7 @@ static int rk3066_hdmi_audio_hw_params(struct device *dev, void *d,
 	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
 
 	if (!hdmi->hdmi_data.sink_has_audio) {
-		dev_err(hdmi->dev, "Sink do not support audio!\n");
+		dev_err(hdmi->dev, "no audio support\n");
 		return -ENODEV;
 	}
 
@@ -705,7 +754,7 @@ static int rk3066_hdmi_audio_hw_params(struct device *dev, void *d,
 	case HDMI_I2S:
 		break;
 	default:
-		dev_err(dev, "%s: Invalid format %d\n", __func__, daifmt->fmt);
+		dev_err(dev, "%s: invalid format %d\n", __func__, daifmt->fmt);
 		return -EINVAL;
 	}
 
@@ -727,7 +776,7 @@ rk3066_hdmi_audio_digital_mute(struct device *dev, void *d, bool mute)
 	struct rk3066_hdmi *hdmi = dev_get_drvdata(dev);
 
 	if (!hdmi->hdmi_data.sink_has_audio) {
-		dev_err(hdmi->dev, "Sink do not support audio!\n");
+		dev_err(hdmi->dev, "no audio support\n");
 		return -ENODEV;
 	}
 
@@ -822,12 +871,13 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
 	if (encoder->possible_crtcs == 0)
 		return -EPROBE_DEFER;
 
+	dev_info(hdmi->dev, "CRTC found\n");
+
 	drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs);
 	drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs,
 			 DRM_MODE_ENCODER_TMDS, NULL);
 
 	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;
-	hdmi->connector.port = dev->of_node;
 
 	drm_connector_helper_add(&hdmi->connector,
 				 &rk3066_hdmi_connector_helper_funcs);
@@ -835,7 +885,7 @@ rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi)
 			   &rk3066_hdmi_connector_funcs,
 			   DRM_MODE_CONNECTOR_HDMIA);
 
-	drm_mode_connector_attach_encoder(&hdmi->connector, encoder);
+	drm_connector_attach_encoder(&hdmi->connector, encoder);
 
 	rk3066_hdmi_audio_codec_init(hdmi, dev);
 
@@ -1047,13 +1097,13 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master,
 
 	hdmi->hclk = devm_clk_get(hdmi->dev, "hclk");
 	if (IS_ERR(hdmi->hclk)) {
-		dev_err(hdmi->dev, "Unable to get HDMI hclk clk\n");
+		dev_err(hdmi->dev, "unable to get HDMI hclk clk\n");
 		return PTR_ERR(hdmi->hclk);
 	}
 
 	ret = clk_prepare_enable(hdmi->hclk);
 	if (ret) {
-		dev_err(hdmi->dev, "Cannot enable HDMI hclk clock: %d\n", ret);
+		dev_err(hdmi->dev, "cannot enable HDMI hclk clock: %d\n", ret);
 		return ret;
 	}
 
@@ -1061,7 +1111,7 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master,
 		syscon_regmap_lookup_by_phandle(hdmi->dev->of_node,
 						"rockchip,grf");
 	if (IS_ERR(hdmi->regmap)) {
-		dev_err(hdmi->dev, "Unable to get rockchip,grf\n");
+		dev_err(hdmi->dev, "unable to get rockchip,grf\n");
 		ret = PTR_ERR(hdmi->regmap);
 		goto err_disable_hclk;
 	}
@@ -1144,7 +1194,7 @@ static const struct of_device_id rk3066_hdmi_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, rk3066_hdmi_dt_ids);
 
-static struct platform_driver rk3066_hdmi_driver = {
+struct platform_driver rk3066_hdmi_driver = {
 	.probe  = rk3066_hdmi_probe,
 	.remove = rk3066_hdmi_remove,
 	.driver = {
@@ -1153,8 +1203,6 @@ static struct platform_driver rk3066_hdmi_driver = {
 	},
 };
 
-module_platform_driver(rk3066_hdmi_driver);
-
 MODULE_AUTHOR("Zheng Yang <zhengyang@rock-chips.com>");
 MODULE_DESCRIPTION("Rockchip Specific RK3066-HDMI Driver");
 MODULE_LICENSE("GPL v2");
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-drm-export-symbol-drm_display_mode_from_vic_index.patch --]
[-- Type: text/x-patch; name="0001-drm-export-symbol-drm_display_mode_from_vic_index.patch", Size: 1095 bytes --]

From 08744623f6c44f0d9b37500b4af53b7da6855519 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Wed, 28 Nov 2018 17:36:44 +0100
Subject: [PATCH] drm: export symbol drm_display_mode_from_vic_index

Export symbol drm_display_mode_from_vic_index.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/drm_edid.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index b506e3622..37859a76a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3192,7 +3192,7 @@ static u8 svd_to_vic(u8 svd)
 	return svd;
 }
 
-static struct drm_display_mode *
+struct drm_display_mode *
 drm_display_mode_from_vic_index(struct drm_connector *connector,
 				const u8 *video_db, u8 video_len,
 				u8 video_index)
@@ -3217,6 +3217,7 @@ drm_display_mode_from_vic_index(struct drm_connector *connector,
 
 	return newmode;
 }
+EXPORT_SYMBOL(drm_display_mode_from_vic_index);
 
 /*
  * do_y420vdb_modes - Parse YCBCR 420 only modes
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0001-drm-rockchip-rk3066_hdmi-enable-debug.patch --]
[-- Type: text/x-patch; name="0001-drm-rockchip-rk3066_hdmi-enable-debug.patch", Size: 743 bytes --]

From 7763fe202df16b1dbd6b7ffee989485780b4a265 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Thu, 22 Nov 2018 18:04:22 +0100
Subject: [PATCH] drm: rockchip: rk3066_hdmi: enable debug

Enable debug.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 16f08b8ea..57e08d8fb 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -1,3 +1,4 @@
+#define DEBUG
 /*
  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
  *    Zheng Yang <zhengyang@rock-chips.com>
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0001-drm-rockchip-add-rk3066a_hdmi-to-Kconfig-and-Makefil.patch --]
[-- Type: text/x-patch; name="0001-drm-rockchip-add-rk3066a_hdmi-to-Kconfig-and-Makefil.patch", Size: 1788 bytes --]

From c955cf4d7ccda84290dcec1536fc538c151fac6a Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Tue, 20 Nov 2018 17:53:21 +0100
Subject: [PATCH] drm: rockchip: add rk3066a_hdmi to Kconfig and Makefile

Add rk3066a_hdmi to Kconfig and Makefile.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/Kconfig  | 9 +++++++++
 drivers/gpu/drm/rockchip/Makefile | 1 +
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
index 26438d457..d87cb3ed1 100644
--- a/drivers/gpu/drm/rockchip/Kconfig
+++ b/drivers/gpu/drm/rockchip/Kconfig
@@ -77,4 +77,13 @@ config ROCKCHIP_RGB
 	  Some Rockchip CRTCs, like rv1108, can directly output parallel
 	  and serial RGB format to panel or connect to a conversion chip.
 	  say Y to enable its driver.
+
+config ROCKCHIP_RK3066_HDMI
+	bool "Rockchip specific extensions for RK3066 HDMI"
+	depends on DRM_ROCKCHIP
+	select SND_SOC_HDMI_CODEC
+	help
+	  This selects support for Rockchip SoC specific extensions
+	  for the Innosilicon HDMI driver. If you want to enable
+	  HDMI on RK3066 based SoC, you should select this option.
 endif
diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile
index 868263ff0..41b3baee4 100644
--- a/drivers/gpu/drm/rockchip/Makefile
+++ b/drivers/gpu/drm/rockchip/Makefile
@@ -15,5 +15,6 @@ rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi.o
 rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o
 rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o
 rockchipdrm-$(CONFIG_ROCKCHIP_RGB) += rockchip_rgb.o
+rockchipdrm-$(CONFIG_ROCKCHIP_RK3066_HDMI) += rk3066_hdmi.o
 
 obj-$(CONFIG_DRM_ROCKCHIP) += rockchipdrm.o
-- 
2.11.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0001-drm-rockchip-add-rk3066_hdmi-to-sub-driver-list.patch --]
[-- Type: text/x-patch; name="0001-drm-rockchip-add-rk3066_hdmi-to-sub-driver-list.patch", Size: 1664 bytes --]

From 28a3b37d2aca0346950843b2b7a197dadd5109d7 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Thu, 21 Dec 2017 17:24:56 +0100
Subject: [PATCH] drm: rockchip: add rk3066_hdmi to sub driver list

Add rk3066_hdmi to the sub driver list.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 1 +
 drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 941f35233..4a69e7a4e 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -492,6 +492,7 @@ static int __init rockchip_drm_init(void)
 	ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi_driver,
 				CONFIG_ROCKCHIP_DW_MIPI_DSI);
 	ADD_ROCKCHIP_SUB_DRIVER(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI);
+	ADD_ROCKCHIP_SUB_DRIVER(rk3066_hdmi_driver, CONFIG_ROCKCHIP_RK3066_HDMI);
 
 	ret = platform_register_drivers(rockchip_sub_drivers,
 					num_rockchip_sub_drivers);
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index 21a023a97..d03890314 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -72,4 +72,5 @@ extern struct platform_driver inno_hdmi_driver;
 extern struct platform_driver rockchip_dp_driver;
 extern struct platform_driver rockchip_lvds_driver;
 extern struct platform_driver vop_platform_driver;
+extern struct platform_driver rk3066_hdmi_driver;
 #endif /* _ROCKCHIP_DRM_DRV_H_ */
-- 
2.11.0


[-- Attachment #8: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
                       ` (3 preceding siblings ...)
  2018-11-28 18:53     ` Johan Jonker
@ 2018-11-28 19:03     ` Johan Jonker
  2018-11-28 20:17     ` Johan Jonker
                       ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Johan Jonker @ 2018-11-28 19:03 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 27 bytes --]

My local .config (PART 4)

[-- Attachment #2: ATT87287.config --]
[-- Type: text/plain, Size: 82492 bytes --]

#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 4.20.0-rc1 Kernel Configuration
#

#
# Compiler: arm-linux-gnueabi-gcc (Debian 6.3.0-18) 6.3.0 20170516
#
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=60300
CONFIG_CLANG_VERSION=0
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y

#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_BUILD_SALT=""
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_CROSS_MEMORY_ATTACH=y
# CONFIG_USELIB is not set
# CONFIG_AUDIT is not set
CONFIG_HAVE_ARCH_AUDITSYSCALL=y

#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_HANDLE_DOMAIN_IRQ=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
# CONFIG_GENERIC_IRQ_DEBUGFS is not set
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_ARCH_HAS_TICK_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ_FULL is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set

#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_PSI is not set
# CONFIG_CPU_ISOLATION is not set

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
CONFIG_TREE_SRCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_MEMCG is not set
# CONFIG_BLK_CGROUP is not set
# CONFIG_CGROUP_SCHED is not set
# CONFIG_CGROUP_PIDS is not set
# CONFIG_CGROUP_RDMA is not set
# CONFIG_CGROUP_FREEZER is not set
# CONFIG_CPUSETS is not set
# CONFIG_CGROUP_DEVICE is not set
# CONFIG_CGROUP_CPUACCT is not set
# CONFIG_CGROUP_PERF is not set
# CONFIG_CGROUP_DEBUG is not set
# CONFIG_NAMESPACES is not set
# CONFIG_CHECKPOINT_RESTORE is not set
# CONFIG_SCHED_AUTOGROUP is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="../initramfs/rkfs.cpio"
CONFIG_INITRAMFS_FORCE=y
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
# CONFIG_RD_GZIP is not set
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_INITRAMFS_COMPRESSION=""
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_MULTIUSER=y
# CONFIG_SGETMASK_SYSCALL is not set
CONFIG_SYSFS_SYSCALL=y
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_FUTEX_PI=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_BASE_RELATIVE=y
# CONFIG_BPF_SYSCALL is not set
# CONFIG_USERFAULTFD is not set
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
CONFIG_RSEQ=y
# CONFIG_DEBUG_RSEQ is not set
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
# CONFIG_PC104 is not set

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLAB_FREELIST_RANDOM is not set
# CONFIG_SLAB_FREELIST_HARDENED is not set
CONFIG_SLUB_CPU_PARTIAL=y
# CONFIG_PROFILING is not set
CONFIG_TRACEPOINTS=y
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
CONFIG_ARM_DMA_USE_IOMMU=y
CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
CONFIG_MIGHT_HAVE_PCI=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_GENERIC_BUG=y
CONFIG_PGTABLE_LEVELS=2

#
# System Type
#
CONFIG_MMU=y
CONFIG_ARCH_MMAP_RND_BITS_MIN=8
CONFIG_ARCH_MMAP_RND_BITS_MAX=16
CONFIG_ARCH_MULTIPLATFORM=y
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_DOVE is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_LPC32XX is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C24XX is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP1 is not set

#
# Multiple platform selection
#

#
# CPU Core family selection
#
# CONFIG_ARCH_MULTI_V6 is not set
CONFIG_ARCH_MULTI_V7=y
CONFIG_ARCH_MULTI_V6_V7=y
# CONFIG_ARCH_VIRT is not set
# CONFIG_ARCH_ACTIONS is not set
# CONFIG_ARCH_ALPINE is not set
# CONFIG_ARCH_ARTPEC is not set
# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_BCM is not set
# CONFIG_ARCH_BERLIN is not set
# CONFIG_ARCH_DIGICOLOR is not set
# CONFIG_ARCH_EXYNOS is not set
# CONFIG_ARCH_HIGHBANK is not set
# CONFIG_ARCH_HISI is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_KEYSTONE is not set
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ARCH_MESON is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_MVEBU is not set
# CONFIG_ARCH_NPCM is not set

#
# TI OMAP/AM/DM/DRA Family
#
# CONFIG_ARCH_OMAP3 is not set
# CONFIG_ARCH_OMAP4 is not set
# CONFIG_SOC_OMAP5 is not set
# CONFIG_SOC_AM33XX is not set
# CONFIG_SOC_AM43XX is not set
# CONFIG_SOC_DRA7XX is not set
# CONFIG_ARCH_SIRF is not set
# CONFIG_ARCH_QCOM is not set
# CONFIG_ARCH_REALVIEW is not set
CONFIG_ARCH_ROCKCHIP=y
# CONFIG_ARCH_S5PV210 is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ARCH_SOCFPGA is not set
# CONFIG_PLAT_SPEAR is not set
# CONFIG_ARCH_STI is not set
# CONFIG_ARCH_STM32 is not set
# CONFIG_ARCH_SUNXI is not set
# CONFIG_ARCH_TANGO is not set
# CONFIG_ARCH_TEGRA is not set
# CONFIG_ARCH_UNIPHIER is not set
# CONFIG_ARCH_U8500 is not set
# CONFIG_ARCH_VEXPRESS is not set
# CONFIG_ARCH_WM8850 is not set
# CONFIG_ARCH_ZX is not set
# CONFIG_ARCH_ZYNQ is not set

#
# Processor Type
#
CONFIG_CPU_V7=y
CONFIG_CPU_THUMB_CAPABLE=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
CONFIG_CPU_ABRT_EV7=y
CONFIG_CPU_PABRT_V7=y
CONFIG_CPU_CACHE_V7=y
CONFIG_CPU_CACHE_VIPT=y
CONFIG_CPU_COPY_V6=y
CONFIG_CPU_TLB_V7=y
CONFIG_CPU_HAS_ASID=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y

#
# Processor Features
#
# CONFIG_ARM_LPAE is not set
CONFIG_ARM_THUMB=y
CONFIG_ARM_THUMBEE=y
CONFIG_ARM_VIRT_EXT=y
CONFIG_SWP_EMULATE=y
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_BPREDICT_DISABLE is not set
CONFIG_CPU_SPECTRE=y
CONFIG_HARDEN_BRANCH_PREDICTOR=y
CONFIG_KUSER_HELPERS=y
CONFIG_VDSO=y
CONFIG_OUTER_CACHE=y
CONFIG_OUTER_CACHE_SYNC=y
CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_CACHE_L2X0=y
# CONFIG_CACHE_L2X0_PMU is not set
CONFIG_PL310_ERRATA_588369=y
CONFIG_PL310_ERRATA_727915=y
CONFIG_PL310_ERRATA_753970=y
CONFIG_PL310_ERRATA_769419=y
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_ARM_L1_CACHE_SHIFT=6
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_ARM_HEAVY_MB=y
CONFIG_DEBUG_ALIGN_RODATA=y
CONFIG_ARM_ERRATA_430973=y
CONFIG_ARM_ERRATA_643719=y
CONFIG_ARM_ERRATA_720789=y
CONFIG_ARM_ERRATA_754322=y
CONFIG_ARM_ERRATA_754327=y
CONFIG_ARM_ERRATA_764369=y
CONFIG_ARM_ERRATA_775420=y
CONFIG_ARM_ERRATA_798181=y
# CONFIG_ARM_ERRATA_773022 is not set
# CONFIG_ARM_ERRATA_818325_852422 is not set
# CONFIG_ARM_ERRATA_821420 is not set
# CONFIG_ARM_ERRATA_825619 is not set
# CONFIG_ARM_ERRATA_852421 is not set
# CONFIG_ARM_ERRATA_852423 is not set

#
# Bus support
#
# CONFIG_PCI is not set

#
# PCI Endpoint
#
# CONFIG_PCI_ENDPOINT is not set
# CONFIG_PCCARD is not set

#
# Kernel Features
#
CONFIG_HAVE_SMP=y
CONFIG_SMP=y
CONFIG_SMP_ON_UP=y
CONFIG_ARM_CPU_TOPOLOGY=y
# CONFIG_SCHED_MC is not set
# CONFIG_SCHED_SMT is not set
CONFIG_HAVE_ARM_SCU=y
CONFIG_HAVE_ARM_ARCH_TIMER=y
CONFIG_HAVE_ARM_TWD=y
CONFIG_MCPM=y
# CONFIG_BIG_LITTLE is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_NR_CPUS=2
CONFIG_HOTPLUG_CPU=y
CONFIG_ARM_PSCI=y
CONFIG_ARCH_NR_GPIO=288
CONFIG_HZ_FIXED=0
CONFIG_HZ_100=y
# CONFIG_HZ_200 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_500 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
CONFIG_SCHED_HRTICK=y
# CONFIG_THUMB2_KERNEL is not set
CONFIG_ARM_PATCH_IDIV=y
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_HIGHMEM=y
CONFIG_HIGHPTE=y
CONFIG_CPU_SW_DOMAIN_PAN=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
# CONFIG_ARM_MODULE_PLTS is not set
CONFIG_FORCE_MAX_ZONEORDER=12
CONFIG_ALIGNMENT_TRAP=y
# CONFIG_UACCESS_WITH_MEMCPY is not set
CONFIG_SECCOMP=y
# CONFIG_PARAVIRT is not set
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
# CONFIG_XEN is not set

#
# Boot options
#
CONFIG_USE_OF=y
CONFIG_ATAGS=y
# CONFIG_DEPRECATED_PARAM_STRUCT is not set
CONFIG_ZBOOT_ROM_TEXT=0
CONFIG_ZBOOT_ROM_BSS=0
CONFIG_ARM_APPENDED_DTB=y
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
CONFIG_CMDLINE="console=tty0 console=ttyUSB0,115200n8  debug drm.debug=0x3f clk_ignore_unused no_console_suspend=1 consoleblank=0 root=LABEL=linuxroot init=/sbin/init rootfstype=ext4 rootwait"
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
# CONFIG_CMDLINE_EXTEND is not set
CONFIG_CMDLINE_FORCE=y
# CONFIG_CRASH_DUMP is not set
CONFIG_AUTO_ZRELADDR=y
# CONFIG_EFI is not set

#
# CPU Power Management
#

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_GOV_ATTR_SET=y
CONFIG_CPU_FREQ_GOV_COMMON=y
CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set

#
# CPU frequency scaling drivers
#
CONFIG_CPUFREQ_DT=y
CONFIG_CPUFREQ_DT_PLATDEV=y
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
# CONFIG_QORIQ_CPUFREQ is not set

#
# CPU Idle
#
# CONFIG_CPU_IDLE is not set

#
# Floating point emulation
#

#
# At least one emulation must be selected
#
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y

#
# Power management options
#
# CONFIG_SUSPEND is not set
# CONFIG_HIBERNATION is not set
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
# CONFIG_APM_EMULATION is not set
CONFIG_PM_CLK=y
CONFIG_PM_GENERIC_DOMAINS=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_PM_GENERIC_DOMAINS_OF=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y

#
# Firmware Drivers
#
CONFIG_ARM_PSCI_FW=y
# CONFIG_FIRMWARE_MEMMAP is not set
# CONFIG_FW_CFG_SYSFS is not set
CONFIG_HAVE_ARM_SMCCC=y
# CONFIG_GOOGLE_FIRMWARE is not set

#
# Tegra firmware driver
#
# CONFIG_ARM_CRYPTO is not set
# CONFIG_VIRTUALIZATION is not set

#
# General architecture-dependent options
#
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
# CONFIG_JUMP_LABEL is not set
CONFIG_UPROBES=y
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_NMI=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_GENERIC_IDLE_POLL_SETUP=y
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
CONFIG_ARCH_HAS_SET_MEMORY=y
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y
CONFIG_HAVE_CLK=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_STACKPROTECTOR=y
CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
CONFIG_STACKPROTECTOR=y
CONFIG_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_REL=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
CONFIG_HAVE_EXIT_THREAD=y
CONFIG_ARCH_MMAP_RND_BITS=8
CONFIG_CLONE_BACKWARDS=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_OLD_SIGACTION=y
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
CONFIG_REFCOUNT_FULL=y

#
# GCOV-based kernel profiling
#
# CONFIG_GCOV_KERNEL is not set
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
CONFIG_PLUGIN_HOSTCC=""
CONFIG_HAVE_GCC_PLUGINS=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
# CONFIG_TRIM_UNUSED_KSYMS is not set
CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_SCSI_REQUEST=y
CONFIG_BLK_DEV_BSG=y
# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
# CONFIG_BLK_DEV_ZONED is not set
CONFIG_BLK_CMDLINE_PARSER=y
# CONFIG_BLK_WBT is not set
CONFIG_BLK_DEBUG_FS=y
# CONFIG_BLK_SED_OPAL is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_AIX_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
CONFIG_EFI_PARTITION=y
# CONFIG_SYSV68_PARTITION is not set
CONFIG_CMDLINE_PARTITION=y
CONFIG_BLK_PM=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
# CONFIG_MQ_IOSCHED_DEADLINE is not set
# CONFIG_MQ_IOSCHED_KYBER is not set
# CONFIG_IOSCHED_BFQ is not set
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
CONFIG_INLINE_READ_UNLOCK=y
CONFIG_INLINE_READ_UNLOCK_IRQ=y
CONFIG_INLINE_WRITE_UNLOCK=y
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_ELF_FDPIC is not set
CONFIG_ELFCORE=y
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
CONFIG_BINFMT_SCRIPT=y
# CONFIG_BINFMT_FLAT is not set
# CONFIG_BINFMT_MISC is not set
CONFIG_COREDUMP=y

#
# Memory Management options
#
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_MEMORY_ISOLATION=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_BOUNCE=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_CLEANCACHE is not set
# CONFIG_FRONTSWAP is not set
CONFIG_CMA=y
# CONFIG_CMA_DEBUG is not set
# CONFIG_CMA_DEBUGFS is not set
CONFIG_CMA_AREAS=7
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
CONFIG_GENERIC_EARLY_IOREMAP=y
# CONFIG_IDLE_PAGE_TRACKING is not set
# CONFIG_PERCPU_STATS is not set
# CONFIG_GUP_BENCHMARK is not set
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_DIAG is not set
CONFIG_UNIX=y
# CONFIG_UNIX_DIAG is not set
# CONFIG_TLS is not set
# CONFIG_XFRM_USER is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE_DEMUX is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_NET_FOU is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
CONFIG_IPV6=y
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_IPV6_MIP6 is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
# CONFIG_IPV6_SIT is not set
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_IPV6_MROUTE is not set
# CONFIG_IPV6_SEG6_LWTUNNEL is not set
# CONFIG_IPV6_SEG6_HMAC is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
# CONFIG_NETFILTER is not set
# CONFIG_BPFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
# CONFIG_BRIDGE is not set
CONFIG_HAVE_NET_DSA=y
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
# CONFIG_6LOWPAN is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
# CONFIG_BATMAN_ADV is not set
# CONFIG_OPENVSWITCH is not set
# CONFIG_VSOCKETS is not set
# CONFIG_NETLINK_DIAG is not set
# CONFIG_MPLS is not set
# CONFIG_NET_NSH is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
# CONFIG_NET_L3_MASTER_DEV is not set
# CONFIG_NET_NCSI is not set
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_NET_CLASSID is not set
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
# CONFIG_BPF_JIT is not set
CONFIG_NET_FLOW_LIMIT=y

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_DROP_MONITOR is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
# CONFIG_AF_KCM is not set
# CONFIG_WIRELESS is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set
# CONFIG_CEPH_LIB is not set
# CONFIG_NFC is not set
# CONFIG_PSAMPLE is not set
# CONFIG_NET_IFE is not set
# CONFIG_LWTUNNEL is not set
# CONFIG_NET_DEVLINK is not set
CONFIG_MAY_USE_DEVLINK=y
# CONFIG_FAILOVER is not set
CONFIG_HAVE_EBPF_JIT=y

#
# Device Drivers
#
CONFIG_ARM_AMBA=y

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y

#
# Firmware loader
#
CONFIG_FW_LOADER=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER is not set
CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_SPI=y
CONFIG_REGMAP_MMIO=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_DMA_FENCE_TRACE is not set
CONFIG_DMA_CMA=y

#
# Default contiguous memory area size:
#
CONFIG_CMA_SIZE_MBYTES=64
CONFIG_CMA_SIZE_SEL_MBYTES=y
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
# CONFIG_CMA_SIZE_SEL_MIN is not set
# CONFIG_CMA_SIZE_SEL_MAX is not set
CONFIG_CMA_ALIGNMENT=8
CONFIG_GENERIC_ARCH_TOPOLOGY=y

#
# Bus devices
#
# CONFIG_BRCMSTB_GISB_ARB is not set
CONFIG_SIMPLE_PM_BUS=y
# CONFIG_VEXPRESS_CONFIG is not set
# CONFIG_CONNECTOR is not set
# CONFIG_GNSS is not set
# CONFIG_MTD is not set
CONFIG_DTC=y
CONFIG_OF=y
# CONFIG_OF_UNITTEST is not set
CONFIG_OF_FLATTREE=y
CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_KOBJ=y
CONFIG_OF_DYNAMIC=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_IRQ=y
CONFIG_OF_NET=y
CONFIG_OF_RESERVED_MEM=y
CONFIG_OF_RESOLVE=y
CONFIG_OF_OVERLAY=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_NULL_BLK is not set
CONFIG_CDROM=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=65536
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_RBD is not set

#
# NVME Support
#
# CONFIG_NVME_FC is not set
# CONFIG_NVME_TARGET is not set

#
# Misc devices
#
# CONFIG_AD525X_DPOT is not set
# CONFIG_DUMMY_IRQ is not set
# CONFIG_ICS932S401 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_APDS9802ALS is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_DS1682 is not set
# CONFIG_USB_SWITCH_FSA9480 is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
# CONFIG_SRAM is not set
# CONFIG_C2PORT is not set

#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
# CONFIG_EEPROM_AT25 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_MAX6875 is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_EEPROM_93XX46 is not set
# CONFIG_EEPROM_IDT_89HPESX is not set
# CONFIG_EEPROM_EE1004 is not set

#
# Texas Instruments shared transport line discipline
#
# CONFIG_TI_ST is not set
# CONFIG_SENSORS_LIS3_SPI is not set
# CONFIG_SENSORS_LIS3_I2C is not set
# CONFIG_ALTERA_STAPL is not set

#
# Intel MIC & related support
#

#
# Intel MIC Bus Driver
#

#
# SCIF Bus Driver
#

#
# VOP Bus Driver
#

#
# Intel MIC Host Driver
#

#
# Intel MIC Card Driver
#

#
# SCIF Driver
#

#
# Intel MIC Coprocessor State Management (COSM) Drivers
#

#
# VOP Driver
#
# CONFIG_ECHO is not set
# CONFIG_MISC_RTSX_USB is not set

#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
# CONFIG_BLK_DEV_SR_VENDOR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_ISCSI_BOOT_SYSFS is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_TARGET_CORE is not set
CONFIG_NETDEVICES=y
CONFIG_MII=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
# CONFIG_NET_TEAM is not set
# CONFIG_MACVLAN is not set
# CONFIG_VXLAN is not set
# CONFIG_MACSEC is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_TUN is not set
# CONFIG_TUN_VNET_CROSS_LE is not set
# CONFIG_VETH is not set
# CONFIG_NLMON is not set

#
# CAIF transport drivers
#

#
# Distributed Switch Architecture drivers
#
# CONFIG_ETHERNET is not set
# CONFIG_MDIO_DEVICE is not set
# CONFIG_PHYLIB is not set
# CONFIG_MICREL_KS8995MA is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
CONFIG_USB_NET_DRIVERS=y
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_RTL8152 is not set
# CONFIG_USB_LAN78XX is not set
CONFIG_USB_USBNET=y
# CONFIG_USB_NET_AX8817X is not set
# CONFIG_USB_NET_AX88179_178A is not set
# CONFIG_USB_NET_CDCETHER is not set
# CONFIG_USB_NET_CDC_EEM is not set
# CONFIG_USB_NET_CDC_NCM is not set
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
CONFIG_USB_NET_DM9601=y
# CONFIG_USB_NET_SR9700 is not set
# CONFIG_USB_NET_SR9800 is not set
# CONFIG_USB_NET_SMSC75XX is not set
# CONFIG_USB_NET_SMSC95XX is not set
# CONFIG_USB_NET_GL620A is not set
# CONFIG_USB_NET_NET1080 is not set
# CONFIG_USB_NET_PLUSB is not set
# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not set
# CONFIG_USB_NET_CX82310_ETH is not set
# CONFIG_USB_NET_KALMIA is not set
# CONFIG_USB_NET_QMI_WWAN is not set
# CONFIG_USB_NET_INT51X1 is not set
# CONFIG_USB_IPHETH is not set
# CONFIG_USB_SIERRA_NET is not set
# CONFIG_USB_NET_CH9200 is not set
# CONFIG_WLAN is not set

#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
# CONFIG_WAN is not set
# CONFIG_NETDEVSIM is not set
# CONFIG_NET_FAILOVER is not set
# CONFIG_ISDN is not set
# CONFIG_NVM is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_LEDS=y
CONFIG_INPUT_FF_MEMLESS=y
# CONFIG_INPUT_POLLDEV is not set
# CONFIG_INPUT_SPARSEKMAP is not set
# CONFIG_INPUT_MATRIXKMAP is not set

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_DLINK_DIR685 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_LM8323 is not set
# CONFIG_KEYBOARD_LM8333 is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_MCS is not set
# CONFIG_KEYBOARD_MPR121 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_SAMSUNG is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_CAP11XX is not set
# CONFIG_KEYBOARD_BCM is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
# CONFIG_RMI4_CORE is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_AMBAKMI is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not set
# CONFIG_SERIO_APBPS2 is not set
# CONFIG_SERIO_GPIO_PS2 is not set
# CONFIG_USERIO is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_N_GSM is not set
# CONFIG_TRACE_SINK is not set
CONFIG_DEVMEM=y
# CONFIG_DEVKMEM is not set

#
# Serial drivers
#
CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
# CONFIG_SERIAL_8250_FINTEK is not set
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
# CONFIG_SERIAL_8250_ASPEED_VUART is not set
CONFIG_SERIAL_8250_FSL=y
# CONFIG_SERIAL_8250_DW is not set
# CONFIG_SERIAL_8250_EM is not set
# CONFIG_SERIAL_8250_RT288X is not set
CONFIG_SERIAL_OF_PLATFORM=y

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
# CONFIG_SERIAL_AMBA_PL011 is not set
CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
# CONFIG_SERIAL_MAX3100 is not set
# CONFIG_SERIAL_MAX310X is not set
# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_SCCNXP is not set
# CONFIG_SERIAL_SC16IS7XX is not set
# CONFIG_SERIAL_BCM63XX is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_SERIAL_IFX6X60 is not set
# CONFIG_SERIAL_XILINX_PS_UART is not set
# CONFIG_SERIAL_ARC is not set
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
# CONFIG_SERIAL_ST_ASC is not set
# CONFIG_SERIAL_DEV_BUS is not set
# CONFIG_TTY_PRINTK is not set
# CONFIG_HVC_DCC is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_XILLYBUS is not set

#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_MUX is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y

#
# I2C Hardware Bus support
#

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
# CONFIG_I2C_EMEV2 is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_NOMADIK is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_RK3X is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_XILINX is not set

#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_DIOLAN_U2C is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_TINY_USB is not set

#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_SLAVE is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
# CONFIG_SPI_MEM is not set

#
# SPI Master Controller Drivers
#
# CONFIG_SPI_ALTERA is not set
# CONFIG_SPI_AXI_SPI_ENGINE is not set
CONFIG_SPI_BITBANG=y
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_DESIGNWARE is not set
# CONFIG_SPI_GPIO is not set
# CONFIG_SPI_FSL_SPI is not set
# CONFIG_SPI_OC_TINY is not set
# CONFIG_SPI_PL022 is not set
# CONFIG_SPI_ROCKCHIP is not set
# CONFIG_SPI_SC18IS602 is not set
# CONFIG_SPI_XCOMM is not set
# CONFIG_SPI_XILINX is not set
# CONFIG_SPI_ZYNQMP_GQSPI is not set

#
# SPI Protocol Masters
#
# CONFIG_SPI_SPIDEV is not set
# CONFIG_SPI_LOOPBACK_TEST is not set
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_SPI_SLAVE is not set
# CONFIG_SPMI is not set
# CONFIG_HSI is not set
# CONFIG_PPS is not set

#
# PTP clock support
#
# CONFIG_PTP_1588_CLOCK is not set

#
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
#
CONFIG_PINCTRL=y
CONFIG_GENERIC_PINCTRL_GROUPS=y
CONFIG_PINMUX=y
CONFIG_GENERIC_PINMUX_FUNCTIONS=y
CONFIG_PINCONF=y
CONFIG_GENERIC_PINCONF=y
# CONFIG_DEBUG_PINCTRL is not set
# CONFIG_PINCTRL_AMD is not set
# CONFIG_PINCTRL_MCP23S08 is not set
CONFIG_PINCTRL_ROCKCHIP=y
CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_SX150X is not set
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
CONFIG_OF_GPIO=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set
CONFIG_GPIO_GENERIC=y

#
# Memory mapped GPIO drivers
#
# CONFIG_GPIO_74XX_MMIO is not set
# CONFIG_GPIO_ALTERA is not set
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_FTGPIO010 is not set
CONFIG_GPIO_GENERIC_PLATFORM=y
# CONFIG_GPIO_GRGPIO is not set
# CONFIG_GPIO_HLWD is not set
# CONFIG_GPIO_MB86S7X is not set
# CONFIG_GPIO_MOCKUP is not set
# CONFIG_GPIO_MPC8XXX is not set
# CONFIG_GPIO_PL061 is not set
CONFIG_GPIO_SYSCON=y
# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_ZEVIO is not set

#
# I2C GPIO expanders
#
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ADNP is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_TPIC2810 is not set

#
# MFD GPIO expanders
#
# CONFIG_HTC_EGPIO is not set

#
# SPI GPIO expanders
#
# CONFIG_GPIO_74X164 is not set
# CONFIG_GPIO_MAX3191X is not set
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MC33880 is not set
# CONFIG_GPIO_PISOSR is not set
# CONFIG_GPIO_XRA1403 is not set

#
# USB GPIO expanders
#
# CONFIG_W1 is not set
CONFIG_POWER_AVS=y
CONFIG_ROCKCHIP_IODOMAIN=y
CONFIG_POWER_RESET=y
# CONFIG_POWER_RESET_BRCMKONA is not set
# CONFIG_POWER_RESET_BRCMSTB is not set
CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_GPIO_RESTART=y
# CONFIG_POWER_RESET_LTC2952 is not set
# CONFIG_POWER_RESET_RESTART is not set
# CONFIG_POWER_RESET_VERSATILE is not set
CONFIG_POWER_RESET_SYSCON=y
CONFIG_POWER_RESET_SYSCON_POWEROFF=y
CONFIG_REBOOT_MODE=y
CONFIG_SYSCON_REBOOT_MODE=y
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_TEST_POWER is not set
# CONFIG_CHARGER_ADP5061 is not set
# CONFIG_BATTERY_DS2780 is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
# CONFIG_CHARGER_SBS is not set
# CONFIG_BATTERY_BQ27XXX is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
# CONFIG_CHARGER_LP8727 is not set
# CONFIG_CHARGER_GPIO is not set
# CONFIG_CHARGER_MANAGER is not set
# CONFIG_CHARGER_LTC3651 is not set
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
# CONFIG_CHARGER_RT9455 is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_THERMAL_STATISTICS is not set
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_OF=y
# CONFIG_THERMAL_WRITABLE_TRIPS is not set
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
CONFIG_CPU_THERMAL=y
# CONFIG_CLOCK_THERMAL is not set
# CONFIG_DEVFREQ_THERMAL is not set
# CONFIG_THERMAL_EMULATION is not set
# CONFIG_QORIQ_THERMAL is not set
# CONFIG_ROCKCHIP_THERMAL is not set

#
# ACPI INT340X thermal drivers
#
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set
CONFIG_BCMA_POSSIBLE=y
# CONFIG_BCMA is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_AS3711 is not set
# CONFIG_MFD_AS3722 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_AT91_USART is not set
# CONFIG_MFD_ATMEL_FLEXCOM is not set
# CONFIG_MFD_ATMEL_HLCDC is not set
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_BD9571MWV is not set
# CONFIG_MFD_AXP20X_I2C is not set
# CONFIG_MFD_CROS_EC is not set
# CONFIG_MFD_MADERA is not set
# CONFIG_MFD_ASIC3 is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
# CONFIG_MFD_MC13XXX_SPI is not set
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_MFD_HI6421_PMIC is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_HTC_I2CPLD is not set
# CONFIG_MFD_KEMPLD is not set
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_MAX77620 is not set
# CONFIG_MFD_MAX77686 is not set
# CONFIG_MFD_MAX77693 is not set
# CONFIG_MFD_MAX77843 is not set
# CONFIG_MFD_MAX8907 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
# CONFIG_MFD_MT6397 is not set
# CONFIG_MFD_MENF21BMC is not set
# CONFIG_EZX_PCAP is not set
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_MFD_PM8XXX is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_RK808 is not set
# CONFIG_MFD_RN5T618 is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_SKY81452 is not set
# CONFIG_MFD_SMSC is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_STMPE is not set
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP3943 is not set
# CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_TI_LMU is not set
# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
# CONFIG_MFD_TPS65086 is not set
# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_TPS65217 is not set
# CONFIG_MFD_TI_LP873X is not set
# CONFIG_MFD_TI_LP87565 is not set
# CONFIG_MFD_TPS65218 is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_MFD_TPS65910 is not set
# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_TPS80031 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_TC3589X is not set
# CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set
# CONFIG_MFD_ARIZONA_I2C is not set
# CONFIG_MFD_ARIZONA_SPI is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM831X_SPI is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_MFD_ROHM_BD718XX is not set
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_DEBUG is not set
CONFIG_REGULATOR_FIXED_VOLTAGE=y
# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
# CONFIG_REGULATOR_88PG86X is not set
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
# CONFIG_REGULATOR_FAN53555 is not set
CONFIG_REGULATOR_GPIO=y
# CONFIG_REGULATOR_ISL9305 is not set
# CONFIG_REGULATOR_ISL6271A is not set
# CONFIG_REGULATOR_LP3971 is not set
# CONFIG_REGULATOR_LP3972 is not set
# CONFIG_REGULATOR_LP872X is not set
# CONFIG_REGULATOR_LP8755 is not set
# CONFIG_REGULATOR_LTC3589 is not set
# CONFIG_REGULATOR_LTC3676 is not set
# CONFIG_REGULATOR_MAX1586 is not set
# CONFIG_REGULATOR_MAX8649 is not set
# CONFIG_REGULATOR_MAX8660 is not set
# CONFIG_REGULATOR_MAX8952 is not set
# CONFIG_REGULATOR_MAX8973 is not set
# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PV88060 is not set
# CONFIG_REGULATOR_PV88080 is not set
# CONFIG_REGULATOR_PV88090 is not set
# CONFIG_REGULATOR_SY8106A is not set
# CONFIG_REGULATOR_TPS51632 is not set
# CONFIG_REGULATOR_TPS62360 is not set
# CONFIG_REGULATOR_TPS65023 is not set
# CONFIG_REGULATOR_TPS6507X is not set
# CONFIG_REGULATOR_TPS65132 is not set
# CONFIG_REGULATOR_TPS6524X is not set
# CONFIG_REGULATOR_VCTRL is not set
# CONFIG_RC_CORE is not set
# CONFIG_MEDIA_SUPPORT is not set

#
# Graphics support
#
# CONFIG_IMX_IPUV3_CORE is not set
CONFIG_DRM=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
# CONFIG_DRM_DEBUG_MM is not set
# CONFIG_DRM_DEBUG_SELFTEST is not set
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_FBDEV_OVERALLOC=100
# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
# CONFIG_DRM_DP_CEC is not set
CONFIG_DRM_GEM_CMA_HELPER=y

#
# I2C encoder or helper chips
#
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
# CONFIG_DRM_HDLCD is not set
# CONFIG_DRM_MALI_DISPLAY is not set

#
# ACP (Audio CoProcessor) Configuration
#

#
# AMD Library routines
#
# CONFIG_DRM_VGEM is not set
# CONFIG_DRM_VKMS is not set
# CONFIG_DRM_EXYNOS is not set
CONFIG_DRM_ROCKCHIP=y
# CONFIG_ROCKCHIP_ANALOGIX_DP is not set
# CONFIG_ROCKCHIP_CDN_DP is not set
# CONFIG_ROCKCHIP_DW_HDMI is not set
# CONFIG_ROCKCHIP_DW_MIPI_DSI is not set
# CONFIG_ROCKCHIP_INNO_HDMI is not set
# CONFIG_ROCKCHIP_LVDS is not set
# CONFIG_ROCKCHIP_RGB is not set
CONFIG_ROCKCHIP_RK3066_HDMI=y
# CONFIG_DRM_UDL is not set
# CONFIG_DRM_ARMADA is not set
# CONFIG_DRM_RCAR_DW_HDMI is not set
# CONFIG_DRM_RCAR_LVDS is not set
# CONFIG_DRM_OMAP is not set
# CONFIG_DRM_TILCDC is not set
# CONFIG_DRM_FSL_DCU is not set
# CONFIG_DRM_STM is not set
CONFIG_DRM_PANEL=y

#
# Display Panels
#
# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
CONFIG_DRM_BRIDGE=y
CONFIG_DRM_PANEL_BRIDGE=y

#
# Display Interface Bridges
#
# CONFIG_DRM_ANALOGIX_ANX78XX is not set
# CONFIG_DRM_CDNS_DSI is not set
# CONFIG_DRM_DUMB_VGA_DAC is not set
# CONFIG_DRM_LVDS_ENCODER is not set
# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
# CONFIG_DRM_NXP_PTN3460 is not set
# CONFIG_DRM_PARADE_PS8622 is not set
# CONFIG_DRM_SIL_SII8620 is not set
# CONFIG_DRM_SII902X is not set
# CONFIG_DRM_SII9234 is not set
# CONFIG_DRM_THINE_THC63LVD1024 is not set
# CONFIG_DRM_TOSHIBA_TC358764 is not set
# CONFIG_DRM_TOSHIBA_TC358767 is not set
# CONFIG_DRM_TI_TFP410 is not set
# CONFIG_DRM_TI_SN65DSI86 is not set
# CONFIG_DRM_I2C_ADV7511 is not set
# CONFIG_DRM_STI is not set
# CONFIG_DRM_ARCPGU is not set
# CONFIG_DRM_MXSFB is not set
# CONFIG_DRM_TINYDRM is not set
# CONFIG_DRM_PL111 is not set
# CONFIG_DRM_TVE200 is not set
# CONFIG_DRM_LEGACY is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

#
# Frame buffer Devices
#
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
# CONFIG_FB_ARMCLCD is not set
# CONFIG_FB_OPENCORES is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_SIMPLE is not set
# CONFIG_FB_SSD1307 is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
CONFIG_VIDEOMODE_HELPERS=y
CONFIG_HDMI=y

#
# Console display driver support
#
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_PCM_ELD=y
CONFIG_SND_PCM_IEC958=y
CONFIG_SND_DMAENGINE_PCM=y
CONFIG_SND_JACK=y
CONFIG_SND_JACK_INPUT_DEV=y
# CONFIG_SND_OSSEMUL is not set
CONFIG_SND_PCM_TIMER=y
# CONFIG_SND_HRTIMER is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_DRIVERS=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_ALOOP is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set

#
# HD-Audio
#
CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_ARM=y
# CONFIG_SND_ARMAACI is not set
CONFIG_SND_SPI=y
CONFIG_SND_USB=y
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_UA101 is not set
# CONFIG_SND_USB_CAIAQ is not set
# CONFIG_SND_USB_6FIRE is not set
# CONFIG_SND_USB_HIFACE is not set
# CONFIG_SND_BCD2000 is not set
# CONFIG_SND_USB_POD is not set
# CONFIG_SND_USB_PODHD is not set
# CONFIG_SND_USB_TONEPORT is not set
# CONFIG_SND_USB_VARIAX is not set
CONFIG_SND_SOC=y
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_AMD_ACP is not set
# CONFIG_SND_ATMEL_SOC is not set
# CONFIG_SND_DESIGNWARE_I2S is not set

#
# SoC Audio for Freescale CPUs
#

#
# Common SoC Audio options for Freescale CPUs:
#
# CONFIG_SND_SOC_FSL_ASRC is not set
# CONFIG_SND_SOC_FSL_SAI is not set
# CONFIG_SND_SOC_FSL_SSI is not set
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not set
# CONFIG_SND_SOC_IMX_AUDMUX is not set
# CONFIG_SND_I2S_HI6210_I2S is not set
# CONFIG_SND_SOC_IMG is not set
CONFIG_SND_SOC_ROCKCHIP=y
CONFIG_SND_SOC_ROCKCHIP_I2S=y
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
# CONFIG_SND_SOC_ROCKCHIP_SPDIF is not set
# CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set
# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set
# CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set
# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set

#
# STMicroelectronics STM32 SOC audio support
#
# CONFIG_SND_SOC_XTFPGA_I2S is not set
# CONFIG_ZX_TDM is not set
CONFIG_SND_SOC_I2C_AND_SPI=y

#
# CODEC drivers
#
# CONFIG_SND_SOC_AC97_CODEC is not set
# CONFIG_SND_SOC_ADAU1701 is not set
# CONFIG_SND_SOC_ADAU1761_I2C is not set
# CONFIG_SND_SOC_ADAU1761_SPI is not set
# CONFIG_SND_SOC_ADAU7002 is not set
# CONFIG_SND_SOC_AK4104 is not set
# CONFIG_SND_SOC_AK4458 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4613 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_AK5558 is not set
# CONFIG_SND_SOC_ALC5623 is not set
# CONFIG_SND_SOC_BD28623 is not set
# CONFIG_SND_SOC_BT_SCO is not set
# CONFIG_SND_SOC_CS35L32 is not set
# CONFIG_SND_SOC_CS35L33 is not set
# CONFIG_SND_SOC_CS35L34 is not set
# CONFIG_SND_SOC_CS35L35 is not set
# CONFIG_SND_SOC_CS42L42 is not set
# CONFIG_SND_SOC_CS42L51_I2C is not set
# CONFIG_SND_SOC_CS42L52 is not set
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_CS4270 is not set
# CONFIG_SND_SOC_CS4271_I2C is not set
# CONFIG_SND_SOC_CS4271_SPI is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
# CONFIG_SND_SOC_DMIC is not set
CONFIG_SND_SOC_HDMI_CODEC=y
# CONFIG_SND_SOC_ES7134 is not set
# CONFIG_SND_SOC_ES7241 is not set
# CONFIG_SND_SOC_ES8316 is not set
# CONFIG_SND_SOC_ES8328_I2C is not set
# CONFIG_SND_SOC_ES8328_SPI is not set
# CONFIG_SND_SOC_GTM601 is not set
# CONFIG_SND_SOC_INNO_RK3036 is not set
# CONFIG_SND_SOC_MAX98088 is not set
# CONFIG_SND_SOC_MAX98504 is not set
# CONFIG_SND_SOC_MAX9867 is not set
# CONFIG_SND_SOC_MAX98927 is not set
# CONFIG_SND_SOC_MAX98373 is not set
# CONFIG_SND_SOC_MAX9860 is not set
# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
# CONFIG_SND_SOC_PCM1681 is not set
# CONFIG_SND_SOC_PCM1789_I2C is not set
# CONFIG_SND_SOC_PCM179X_I2C is not set
# CONFIG_SND_SOC_PCM179X_SPI is not set
# CONFIG_SND_SOC_PCM186X_I2C is not set
# CONFIG_SND_SOC_PCM186X_SPI is not set
# CONFIG_SND_SOC_PCM3060_I2C is not set
# CONFIG_SND_SOC_PCM3060_SPI is not set
# CONFIG_SND_SOC_PCM3168A_I2C is not set
# CONFIG_SND_SOC_PCM3168A_SPI is not set
# CONFIG_SND_SOC_PCM512x_I2C is not set
# CONFIG_SND_SOC_PCM512x_SPI is not set
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_SGTL5000 is not set
# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
# CONFIG_SND_SOC_SPDIF is not set
# CONFIG_SND_SOC_SSM2305 is not set
# CONFIG_SND_SOC_SSM2602_SPI is not set
# CONFIG_SND_SOC_SSM2602_I2C is not set
# CONFIG_SND_SOC_SSM4567 is not set
# CONFIG_SND_SOC_STA32X is not set
# CONFIG_SND_SOC_STA350 is not set
# CONFIG_SND_SOC_STI_SAS is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_TAS5086 is not set
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TAS5720 is not set
# CONFIG_SND_SOC_TAS6424 is not set
# CONFIG_SND_SOC_TDA7419 is not set
# CONFIG_SND_SOC_TFA9879 is not set
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
# CONFIG_SND_SOC_TLV320AIC31XX is not set
# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
# CONFIG_SND_SOC_TLV320AIC3X is not set
# CONFIG_SND_SOC_TS3A227E is not set
# CONFIG_SND_SOC_TSCS42XX is not set
# CONFIG_SND_SOC_TSCS454 is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
# CONFIG_SND_SOC_WM8524 is not set
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
# CONFIG_SND_SOC_WM8731 is not set
# CONFIG_SND_SOC_WM8737 is not set
# CONFIG_SND_SOC_WM8741 is not set
# CONFIG_SND_SOC_WM8750 is not set
# CONFIG_SND_SOC_WM8753 is not set
# CONFIG_SND_SOC_WM8770 is not set
# CONFIG_SND_SOC_WM8776 is not set
# CONFIG_SND_SOC_WM8782 is not set
# CONFIG_SND_SOC_WM8804_I2C is not set
# CONFIG_SND_SOC_WM8804_SPI is not set
# CONFIG_SND_SOC_WM8903 is not set
# CONFIG_SND_SOC_WM8960 is not set
# CONFIG_SND_SOC_WM8962 is not set
# CONFIG_SND_SOC_WM8974 is not set
# CONFIG_SND_SOC_WM8978 is not set
# CONFIG_SND_SOC_WM8985 is not set
# CONFIG_SND_SOC_ZX_AUD96P22 is not set
# CONFIG_SND_SOC_MAX9759 is not set
# CONFIG_SND_SOC_MT6351 is not set
# CONFIG_SND_SOC_NAU8540 is not set
# CONFIG_SND_SOC_NAU8810 is not set
# CONFIG_SND_SOC_NAU8822 is not set
# CONFIG_SND_SOC_NAU8824 is not set
# CONFIG_SND_SOC_TPA6130A2 is not set
CONFIG_SND_SIMPLE_CARD_UTILS=y
CONFIG_SND_SIMPLE_CARD=y
# CONFIG_SND_SIMPLE_SCU_CARD is not set
# CONFIG_SND_AUDIO_GRAPH_CARD is not set
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set

#
# HID support
#
CONFIG_HID=y
# CONFIG_HID_BATTERY_STRENGTH is not set
# CONFIG_HIDRAW is not set
# CONFIG_UHID is not set
CONFIG_HID_GENERIC=y

#
# Special HID drivers
#
# CONFIG_HID_A4TECH is not set
# CONFIG_HID_ACCUTOUCH is not set
# CONFIG_HID_ACRUX is not set
# CONFIG_HID_APPLE is not set
# CONFIG_HID_APPLEIR is not set
# CONFIG_HID_ASUS is not set
# CONFIG_HID_AUREAL is not set
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_BETOP_FF is not set
# CONFIG_HID_BIGBEN_FF is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_CHICONY is not set
# CONFIG_HID_CORSAIR is not set
# CONFIG_HID_COUGAR is not set
# CONFIG_HID_PRODIKEYS is not set
# CONFIG_HID_CMEDIA is not set
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELAN is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_ELO is not set
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_GEMBIRD is not set
# CONFIG_HID_GFRM is not set
# CONFIG_HID_HOLTEK is not set
# CONFIG_HID_GT683R is not set
# CONFIG_HID_KEYTOUCH is not set
# CONFIG_HID_KYE is not set
# CONFIG_HID_UCLOGIC is not set
# CONFIG_HID_WALTOP is not set
# CONFIG_HID_GYRATION is not set
# CONFIG_HID_ICADE is not set
# CONFIG_HID_ITE is not set
# CONFIG_HID_JABRA is not set
# CONFIG_HID_TWINHAN is not set
# CONFIG_HID_KENSINGTON is not set
# CONFIG_HID_LCPOWER is not set
# CONFIG_HID_LED is not set
# CONFIG_HID_LENOVO is not set
# CONFIG_HID_LOGITECH is not set
# CONFIG_HID_MAGICMOUSE is not set
# CONFIG_HID_MAYFLASH is not set
# CONFIG_HID_REDRAGON is not set
# CONFIG_HID_MICROSOFT is not set
# CONFIG_HID_MONTEREY is not set
# CONFIG_HID_MULTITOUCH is not set
# CONFIG_HID_NTI is not set
# CONFIG_HID_NTRIG is not set
# CONFIG_HID_ORTEK is not set
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PENMOUNT is not set
# CONFIG_HID_PETALYNX is not set
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_PLANTRONICS is not set
# CONFIG_HID_PRIMAX is not set
# CONFIG_HID_RETRODE is not set
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
# CONFIG_HID_SAMSUNG is not set
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
# CONFIG_HID_STEAM is not set
# CONFIG_HID_STEELSERIES is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_RMI is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_TIVO is not set
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THINGM is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_UDRAW_PS3 is not set
# CONFIG_HID_WACOM is not set
# CONFIG_HID_WIIMOTE is not set
# CONFIG_HID_XINMO is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
# CONFIG_HID_SENSOR_HUB is not set
# CONFIG_HID_ALPS is not set

#
# USB HID support
#
CONFIG_USB_HID=y
# CONFIG_HID_PID is not set
CONFIG_USB_HIDDEV=y

#
# I2C HID support
#
# CONFIG_I2C_HID is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

#
# Miscellaneous USB options
#
CONFIG_USB_DEFAULT_PERSIST=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
# CONFIG_USB_MON is not set
# CONFIG_USB_WUSB_CBAF is not set

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_XHCI_HCD is not set
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_FOTG210_HCD is not set
# CONFIG_USB_MAX3421_HCD is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HCD_TEST_MODE is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#

#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
# CONFIG_USBIP_CORE is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_DWC3 is not set
CONFIG_USB_DWC2=y
CONFIG_USB_DWC2_HOST=y

#
# Gadget/Dual-role mode requires USB Gadget support to be enabled
#
# CONFIG_USB_DWC2_DEBUG is not set
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
# CONFIG_USB_CHIPIDEA is not set
# CONFIG_USB_ISP1760 is not set

#
# USB port drivers
#
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_CONSOLE=y
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_SIMPLE is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
CONFIG_USB_SERIAL_CP210X=y
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
CONFIG_USB_SERIAL_FTDI_SIO=y
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_F81232 is not set
# CONFIG_USB_SERIAL_F8153X is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_METRO is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_MXUPORT is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=y
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_QCAUX is not set
# CONFIG_USB_SERIAL_QUALCOMM is not set
# CONFIG_USB_SERIAL_SPCP8X5 is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_SYMBOL is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_XSENS_MT is not set
# CONFIG_USB_SERIAL_WISHBONE is not set
# CONFIG_USB_SERIAL_SSU100 is not set
# CONFIG_USB_SERIAL_QT2 is not set
# CONFIG_USB_SERIAL_UPD78F0730 is not set
# CONFIG_USB_SERIAL_DEBUG is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_EHSET_TEST_FIXTURE is not set
# CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_YUREX is not set
# CONFIG_USB_EZUSB_FX2 is not set
# CONFIG_USB_HUB_USB251XB is not set
# CONFIG_USB_HSIC_USB3503 is not set
# CONFIG_USB_HSIC_USB4604 is not set
# CONFIG_USB_LINK_LAYER_TEST is not set

#
# USB Physical Layer drivers
#
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ISP1301 is not set
# CONFIG_USB_ULPI is not set
# CONFIG_USB_GADGET is not set
# CONFIG_TYPEC is not set
# CONFIG_USB_LED_TRIG is not set
# CONFIG_USB_ULPI_BUS is not set
# CONFIG_UWB is not set
CONFIG_MMC=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_PWRSEQ_SIMPLE=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=16
# CONFIG_SDIO_UART is not set
# CONFIG_MMC_TEST is not set

#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_ARMMMCI is not set
# CONFIG_MMC_SDHCI is not set
# CONFIG_MMC_SPI is not set
CONFIG_MMC_DW=y
CONFIG_MMC_DW_PLTFM=y
# CONFIG_MMC_DW_BLUEFIELD is not set
# CONFIG_MMC_DW_EXYNOS is not set
# CONFIG_MMC_DW_HI3798CV200 is not set
# CONFIG_MMC_DW_K3 is not set
CONFIG_MMC_DW_ROCKCHIP=y
# CONFIG_MMC_VUB300 is not set
# CONFIG_MMC_USHC is not set
# CONFIG_MMC_USDHI6ROL0 is not set
# CONFIG_MMC_CQHCI is not set
# CONFIG_MMC_MTK is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
# CONFIG_LEDS_CLASS_FLASH is not set
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set

#
# LED drivers
#
# CONFIG_LEDS_AN30259A is not set
# CONFIG_LEDS_BCM6328 is not set
# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_CR0014114 is not set
# CONFIG_LEDS_LM3530 is not set
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_LM3692X is not set
# CONFIG_LEDS_PCA9532 is not set
CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_LP3944 is not set
# CONFIG_LEDS_LP3952 is not set
# CONFIG_LEDS_LP5521 is not set
# CONFIG_LEDS_LP5523 is not set
# CONFIG_LEDS_LP5562 is not set
# CONFIG_LEDS_LP8501 is not set
# CONFIG_LEDS_LP8860 is not set
# CONFIG_LEDS_PCA955X is not set
# CONFIG_LEDS_PCA963X is not set
# CONFIG_LEDS_DAC124S085 is not set
# CONFIG_LEDS_REGULATOR is not set
# CONFIG_LEDS_BD2802 is not set
# CONFIG_LEDS_LT3593 is not set
# CONFIG_LEDS_TCA6507 is not set
# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_LM355x is not set
# CONFIG_LEDS_IS31FL319X is not set
# CONFIG_LEDS_IS31FL32XX is not set

#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
# CONFIG_LEDS_BLINKM is not set
# CONFIG_LEDS_SYSCON is not set
# CONFIG_LEDS_MLXREG is not set
# CONFIG_LEDS_USER is not set

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not set
# CONFIG_LEDS_TRIGGER_ONESHOT is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
# CONFIG_LEDS_TRIGGER_CPU is not set
# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
# CONFIG_LEDS_TRIGGER_GPIO is not set
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y

#
# iptables trigger is under Netfilter config (LED target)
#
# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
# CONFIG_LEDS_TRIGGER_CAMERA is not set
# CONFIG_LEDS_TRIGGER_PANIC is not set
# CONFIG_LEDS_TRIGGER_NETDEV is not set
# CONFIG_LEDS_TRIGGER_PATTERN is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set

#
# DMA Devices
#
CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
# CONFIG_ALTERA_MSGDMA is not set
# CONFIG_AMBA_PL08X is not set
# CONFIG_DW_AXI_DMAC is not set
# CONFIG_FSL_EDMA is not set
# CONFIG_INTEL_IDMA64 is not set
# CONFIG_NBPFAXI_DMA is not set
CONFIG_PL330_DMA=y
# CONFIG_QCOM_HIDMA_MGMT is not set
# CONFIG_QCOM_HIDMA is not set
# CONFIG_DW_DMAC is not set

#
# DMA Clients
#
# CONFIG_ASYNC_TX_DMA is not set
# CONFIG_DMATEST is not set

#
# DMABUF options
#
CONFIG_SYNC_FILE=y
# CONFIG_SW_SYNC is not set
# CONFIG_UDMABUF is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
# CONFIG_VFIO is not set
# CONFIG_VIRT_DRIVERS is not set
CONFIG_VIRTIO_MENU=y
# CONFIG_VIRTIO_MMIO is not set

#
# Microsoft Hyper-V guest support
#
# CONFIG_STAGING is not set
# CONFIG_GOLDFISH is not set
# CONFIG_CHROME_PLATFORMS is not set
# CONFIG_MELLANOX_PLATFORM is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y

#
# Common Clock Framework
#
# CONFIG_CLK_HSDK is not set
# CONFIG_COMMON_CLK_MAX9485 is not set
# CONFIG_COMMON_CLK_SI5351 is not set
# CONFIG_COMMON_CLK_SI514 is not set
# CONFIG_COMMON_CLK_SI544 is not set
# CONFIG_COMMON_CLK_SI570 is not set
# CONFIG_COMMON_CLK_CDCE706 is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_COMMON_CLK_CS2000_CP is not set
# CONFIG_CLK_QORIQ is not set
# CONFIG_COMMON_CLK_VC5 is not set
# CONFIG_HWSPINLOCK is not set

#
# Clock Source drivers
#
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_CLKSRC_MMIO=y
CONFIG_DW_APB_TIMER=y
CONFIG_DW_APB_TIMER_OF=y
CONFIG_ROCKCHIP_TIMER=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
CONFIG_ARM_GLOBAL_TIMER=y
# CONFIG_ARM_TIMER_SP804 is not set
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
# CONFIG_MAILBOX is not set
CONFIG_IOMMU_API=y
CONFIG_IOMMU_SUPPORT=y

#
# Generic IOMMU Pagetable Support
#
CONFIG_IOMMU_IO_PGTABLE=y
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
# CONFIG_IOMMU_DEBUGFS is not set
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_OF_IOMMU=y
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ARM_SMMU=y

#
# Remoteproc drivers
#
# CONFIG_REMOTEPROC is not set

#
# Rpmsg drivers
#
# CONFIG_RPMSG_VIRTIO is not set
# CONFIG_SOUNDWIRE is not set

#
# SOC (System On Chip) specific Drivers
#

#
# Amlogic SoC drivers
#

#
# Broadcom SoC drivers
#
# CONFIG_SOC_BRCMSTB is not set

#
# NXP/Freescale QorIQ SoC drivers
#

#
# i.MX SoC drivers
#

#
# Qualcomm SoC drivers
#
CONFIG_ROCKCHIP_GRF=y
CONFIG_ROCKCHIP_PM_DOMAINS=y
# CONFIG_SOC_TI is not set

#
# Xilinx SoC drivers
#
# CONFIG_XILINX_VCU is not set
CONFIG_PM_DEVFREQ=y

#
# DEVFREQ Governors
#
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
# CONFIG_DEVFREQ_GOV_PASSIVE is not set

#
# DEVFREQ Drivers
#
# CONFIG_ARM_RK3399_DMC_DEVFREQ is not set
# CONFIG_PM_DEVFREQ_EVENT is not set
CONFIG_EXTCON=y

#
# Extcon Device Drivers
#
# CONFIG_EXTCON_GPIO is not set
# CONFIG_EXTCON_MAX3355 is not set
# CONFIG_EXTCON_RT8973A is not set
# CONFIG_EXTCON_SM5502 is not set
# CONFIG_EXTCON_USB_GPIO is not set
# CONFIG_MEMORY is not set
# CONFIG_IIO is not set
# CONFIG_PWM is not set

#
# IRQ chip support
#
CONFIG_IRQCHIP=y
CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_MAX_NR=1
# CONFIG_IPACK_BUS is not set
CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_RESET_CONTROLLER=y
# CONFIG_RESET_TI_SYSCON is not set
# CONFIG_FMC is not set

#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_PHY_CADENCE_DP is not set
# CONFIG_PHY_PXA_28NM_HSIC is not set
# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_PHY_MAPPHONE_MDM6600 is not set
# CONFIG_PHY_OCELOT_SERDES is not set
# CONFIG_PHY_ROCKCHIP_DP is not set
# CONFIG_PHY_ROCKCHIP_EMMC is not set
# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set
# CONFIG_PHY_ROCKCHIP_PCIE is not set
# CONFIG_PHY_ROCKCHIP_TYPEC is not set
CONFIG_PHY_ROCKCHIP_USB=y
# CONFIG_PHY_SAMSUNG_USB2 is not set
# CONFIG_POWERCAP is not set
# CONFIG_MCB is not set

#
# Performance monitor support
#
# CONFIG_ARM_CCI_PMU is not set
# CONFIG_ARM_CCN is not set
CONFIG_ARM_PMU=y
# CONFIG_RAS is not set

#
# Android
#
# CONFIG_ANDROID is not set
# CONFIG_DAX is not set
# CONFIG_NVMEM is not set

#
# HW tracing support
#
# CONFIG_STM is not set
# CONFIG_INTEL_TH is not set
# CONFIG_FPGA is not set
# CONFIG_FSI is not set
# CONFIG_TEE is not set
CONFIG_PM_OPP=y
# CONFIG_SIOX is not set
# CONFIG_SLIMBUS is not set

#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_FS_IOMAP=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT2=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
# CONFIG_EXT4_FS_SECURITY is not set
# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_F2FS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
# CONFIG_EXPORTFS_BLOCK_OPS is not set
CONFIG_FILE_LOCKING=y
CONFIG_MANDATORY_FILE_LOCKING=y
# CONFIG_FS_ENCRYPTION is not set
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_FANOTIFY is not set
# CONFIG_QUOTA is not set
CONFIG_AUTOFS4_FS=y
CONFIG_AUTOFS_FS=y
# CONFIG_FUSE_FS is not set
# CONFIG_OVERLAY_FS is not set

#
# Caches
#
# CONFIG_FSCACHE is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_FAT_DEFAULT_UTF8 is not set
CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
# CONFIG_PROC_CHILDREN is not set
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
CONFIG_MEMFD_CREATE=y
CONFIG_CONFIGFS_FS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_MAC_ROMAN is not set
# CONFIG_NLS_MAC_CELTIC is not set
# CONFIG_NLS_MAC_CENTEURO is not set
# CONFIG_NLS_MAC_CROATIAN is not set
# CONFIG_NLS_MAC_CYRILLIC is not set
# CONFIG_NLS_MAC_GAELIC is not set
# CONFIG_NLS_MAC_GREEK is not set
# CONFIG_NLS_MAC_ICELAND is not set
# CONFIG_NLS_MAC_INUIT is not set
# CONFIG_NLS_MAC_ROMANIAN is not set
# CONFIG_NLS_MAC_TURKISH is not set
CONFIG_NLS_UTF8=y
# CONFIG_DLM is not set

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
# CONFIG_HARDENED_USERCOPY is not set
# CONFIG_FORTIFY_SOURCE is not set
# CONFIG_STATIC_USERMODEHELPER is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
# CONFIG_CRYPTO_RSA is not set
# CONFIG_CRYPTO_DH is not set
# CONFIG_CRYPTO_ECDH is not set
# CONFIG_CRYPTO_MANAGER is not set
# CONFIG_CRYPTO_USER is not set
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_PCRYPT is not set
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set

#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
# CONFIG_CRYPTO_AEGIS128 is not set
# CONFIG_CRYPTO_AEGIS128L is not set
# CONFIG_CRYPTO_AEGIS256 is not set
# CONFIG_CRYPTO_MORUS640 is not set
# CONFIG_CRYPTO_MORUS1280 is not set
# CONFIG_CRYPTO_SEQIV is not set
# CONFIG_CRYPTO_ECHAINIV is not set

#
# Block modes
#
# CONFIG_CRYPTO_CBC is not set
# CONFIG_CRYPTO_CFB is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not set
# CONFIG_CRYPTO_ECB is not set
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_OFB is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_KEYWRAP is not set

#
# Hash modes
#
# CONFIG_CRYPTO_CMAC is not set
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_VMAC is not set

#
# Digest
#
CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRCT10DIF is not set
# CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_POLY1305 is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_SHA3 is not set
# CONFIG_CRYPTO_SM3 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set

#
# Ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_TI is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_ARC4 is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_CHACHA20 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_SM4 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set

#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_LZO is not set
# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
# CONFIG_CRYPTO_ZSTD is not set

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_DRBG_MENU is not set
# CONFIG_CRYPTO_JITTERENTROPY is not set
# CONFIG_CRYPTO_USER_API_HASH is not set
# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
# CONFIG_CRYPTO_USER_API_RNG is not set
# CONFIG_CRYPTO_USER_API_AEAD is not set
# CONFIG_CRYPTO_STATS is not set
# CONFIG_CRYPTO_HW is not set

#
# Certificates for signature checking
#
CONFIG_BINARY_PRINTF=y

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_HAVE_ARCH_BITREVERSE=y
CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
# CONFIG_CRC64 is not set
# CONFIG_CRC4 is not set
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
# CONFIG_CRC8 is not set
# CONFIG_RANDOM32_SELFTEST is not set
# CONFIG_XZ_DEC is not set
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
CONFIG_GLOB=y
# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
# CONFIG_CORDIC is not set
# CONFIG_DDR is not set
# CONFIG_IRQ_POLL is not set
CONFIG_LIBFDT=y
CONFIG_FONT_SUPPORT=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_SG_POOL=y
CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_SBITMAP=y
# CONFIG_STRING_SELFTEST is not set

#
# Kernel hacking
#

#
# printk and dmesg options
#
CONFIG_PRINTK_TIME=y
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=1
CONFIG_CONSOLE_LOGLEVEL_QUIET=4
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=1
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DYNAMIC_DEBUG is not set

#
# Compile-time checks and compiler options
#
# CONFIG_DEBUG_INFO is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_READABLE_ASM is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
CONFIG_MAGIC_SYSRQ_SERIAL=y
CONFIG_DEBUG_KERNEL=y

#
# Memory Debugging
#
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_PAGE_POISONING is not set
# CONFIG_DEBUG_PAGE_REF is not set
# CONFIG_DEBUG_RODATA_TEST is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
CONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_VM is not set
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_ARCH_HAS_KCOV=y
CONFIG_CC_HAS_SANCOV_TRACE_PC=y
# CONFIG_KCOV is not set
# CONFIG_DEBUG_SHIRQ is not set

#
# Debug Lockups and Hangs
#
# CONFIG_SOFTLOCKUP_DETECTOR is not set
# CONFIG_DETECT_HUNG_TASK is not set
# CONFIG_WQ_WATCHDOG is not set
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not set

#
# Lock Debugging (spinlocks, mutexes, etc...)
#
CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_LOCK_TORTURE_TEST is not set
# CONFIG_WW_MUTEX_SELFTEST is not set
CONFIG_STACKTRACE=y
# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set

#
# RCU Debugging
#
# CONFIG_RCU_PERF_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_TRACE=y
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_NOP_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACE_CLOCK=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_TRACING=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_PREEMPTIRQ_EVENTS is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_HWLAT_TRACER is not set
# CONFIG_ENABLE_DEFAULT_TRACERS is not set
# CONFIG_FTRACE_SYSCALLS is not set
# CONFIG_TRACER_SNAPSHOT is not set
CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_STACK_TRACER is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_UPROBE_EVENTS=y
CONFIG_PROBE_EVENTS=y
# CONFIG_TRACEPOINT_BENCHMARK is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
# CONFIG_TRACE_EVAL_MAP_FILE is not set
CONFIG_TRACING_EVENTS_GPIO=y
# CONFIG_DMA_API_DEBUG is not set
CONFIG_RUNTIME_TESTING_MENU=y
# CONFIG_LKDTM is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_TEST_SORT is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
# CONFIG_PERCPU_TEST is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_BITMAP is not set
# CONFIG_TEST_BITFIELD is not set
# CONFIG_TEST_UUID is not set
# CONFIG_TEST_XARRAY is not set
# CONFIG_TEST_OVERFLOW is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_TEST_HASH is not set
# CONFIG_TEST_IDA is not set
# CONFIG_TEST_LKM is not set
# CONFIG_TEST_USER_COPY is not set
# CONFIG_TEST_BPF is not set
# CONFIG_FIND_BIT_BENCHMARK is not set
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_SYSCTL is not set
# CONFIG_TEST_UDELAY is not set
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_TEST_KMOD is not set
# CONFIG_TEST_MEMCAT_P is not set
# CONFIG_MEMTEST is not set
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_UBSAN is not set
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
# CONFIG_DEBUG_WX is not set
# CONFIG_UNWINDER_FRAME_POINTER is not set
CONFIG_UNWINDER_ARM=y
CONFIG_ARM_UNWIND=y
# CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_RV1108_UART0 is not set
# CONFIG_DEBUG_RV1108_UART1 is not set
# CONFIG_DEBUG_RV1108_UART2 is not set
# CONFIG_DEBUG_RK29_UART0 is not set
# CONFIG_DEBUG_RK29_UART1 is not set
# CONFIG_DEBUG_RK29_UART2 is not set
# CONFIG_DEBUG_RK3X_UART0 is not set
# CONFIG_DEBUG_RK3X_UART1 is not set
CONFIG_DEBUG_RK3X_UART2=y
# CONFIG_DEBUG_RK3X_UART3 is not set
# CONFIG_DEBUG_RK32_UART2 is not set
# CONFIG_DEBUG_ICEDCC is not set
# CONFIG_DEBUG_SEMIHOSTING is not set
# CONFIG_DEBUG_LL_UART_8250 is not set
# CONFIG_DEBUG_LL_UART_PL01X is not set
CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
CONFIG_DEBUG_UART_8250=y
CONFIG_DEBUG_UART_PHYS=0x20064000
CONFIG_DEBUG_UART_VIRT=0xfed64000
CONFIG_DEBUG_UART_8250_SHIFT=2
# CONFIG_DEBUG_UART_8250_WORD is not set
# CONFIG_DEBUG_UART_8250_PALMCHIP is not set
# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
# CONFIG_DEBUG_UNCOMPRESS is not set
CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
CONFIG_EARLY_PRINTK=y
# CONFIG_PID_IN_CONTEXTIDR is not set
# CONFIG_CORESIGHT is not set

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
                       ` (4 preceding siblings ...)
  2018-11-28 19:03     ` Johan Jonker
@ 2018-11-28 20:17     ` Johan Jonker
  2018-11-30 18:53     ` Johan Jonker
  2018-12-13 17:31     ` Johan Jonker
  7 siblings, 0 replies; 11+ messages in thread
From: Johan Jonker @ 2018-11-28 20:17 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 1426 bytes --]


My local bugs. (PART 5)

MK808 is connected to DVI-D monitor.
Serial console at /dev/ttyUSB0.
Boots with 2 pinguins and bootlog scroll. Then display turns off black.

Example 1 when vblank wait timed out happens after boot in a program
called DRM-dumb-buffer. It also happens during boot. I can't get a
pattern in it. When I add a revert patch vblank doesn't seem to crash,
but a alert is observed.

For example:
[    5.104171] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_flush]
*ERROR* VOP vblank IRQ stuck for 10 ms

/////////////////////////////////////////
There are 3 types of errors in the DRM-dumb-buffer log:

-1 vblank wait timed out.

-2 rk3066_hdmi_get_power_mode returns 0.
In the old source this would lead to a loop hangup/stall, because 0
multiplied is still 0. It never gets into a higher power level.

-3 flip_done timed out

[  451.674799] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[CRTC:30:crtc-0] flip_done timed out
[  461.913900] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[CONNECTOR:33:HDMI-A-1] flip_done timed out
[  472.154303] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[PLANE:28:plane-0] flip_done timed out

/////////////////////////////////////////

It would be nice if after boot I could use my display and keyboard
instead of my serial console.
Please advise if more info is needed!

Kind regards,

Johan Jonker

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: DRM-dumb-buffer.c --]
[-- Type: text/x-csrc; name="DRM-dumb-buffer.c", Size: 4890 bytes --]

#include <stdio.h>
#include <stdint.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <drm/drm.h>
#include <drm/drm_mode.h>

int main()
{
//------------------------------------------------------------------------------
//Opening the DRI device
//------------------------------------------------------------------------------

	int dri_fd  = open("/dev/dri/card0",O_RDWR | O_CLOEXEC);

//------------------------------------------------------------------------------
//Kernel Mode Setting (KMS)
//------------------------------------------------------------------------------

	uint64_t res_fb_buf[10]={0},
			res_crtc_buf[10]={0},
			res_conn_buf[10]={0},
			res_enc_buf[10]={0};

	struct drm_mode_card_res res={0};

	//Become the "master" of the DRI device
	ioctl(dri_fd, DRM_IOCTL_SET_MASTER, 0);

	//Get resource counts
	ioctl(dri_fd, DRM_IOCTL_MODE_GETRESOURCES, &res);
	res.fb_id_ptr=(uint64_t)res_fb_buf;
	res.crtc_id_ptr=(uint64_t)res_crtc_buf;
	res.connector_id_ptr=(uint64_t)res_conn_buf;
	res.encoder_id_ptr=(uint64_t)res_enc_buf;
	//Get resource IDs
	ioctl(dri_fd, DRM_IOCTL_MODE_GETRESOURCES, &res);

	printf("fb: %d, crtc: %d, conn: %d, enc: %d\n",res.count_fbs,res.count_crtcs,res.count_connectors,res.count_encoders);

	void *fb_base[10];
	long fb_w[10];
	long fb_h[10];

	//Loop though all available connectors
	int i;
	for (i=0;i<res.count_connectors;i++)
	{
		struct drm_mode_modeinfo conn_mode_buf[20]={0};
		uint64_t	conn_prop_buf[20]={0},
					conn_propval_buf[20]={0},
					conn_enc_buf[20]={0};

		struct drm_mode_get_connector conn={0};

		conn.connector_id=res_conn_buf[i];

		ioctl(dri_fd, DRM_IOCTL_MODE_GETCONNECTOR, &conn);	//get connector resource counts
		conn.modes_ptr=(uint64_t)conn_mode_buf;
		conn.props_ptr=(uint64_t)conn_prop_buf;
		conn.prop_values_ptr=(uint64_t)conn_propval_buf;
		conn.encoders_ptr=(uint64_t)conn_enc_buf;
		ioctl(dri_fd, DRM_IOCTL_MODE_GETCONNECTOR, &conn);	//get connector resources

		//Check if the connector is OK to use (connected to something)
		if (conn.count_encoders<1 || conn.count_modes<1 || !conn.encoder_id || !conn.connection)
		{
			printf("Not connected\n");
			continue;
		}

//------------------------------------------------------------------------------
//Creating a dumb buffer
//------------------------------------------------------------------------------
		struct drm_mode_create_dumb create_dumb={0};
		struct drm_mode_map_dumb map_dumb={0};
		struct drm_mode_fb_cmd cmd_dumb={0};

		//If we create the buffer later, we can get the size of the screen first.
		//This must be a valid mode, so it's probably best to do this after we find
		//a valid crtc with modes.
		create_dumb.width = conn_mode_buf[0].hdisplay;
		create_dumb.height = conn_mode_buf[0].vdisplay;
		create_dumb.bpp = 32;
		create_dumb.flags = 0;
		create_dumb.pitch = 0;
		create_dumb.size = 0;
		create_dumb.handle = 0;
		ioctl(dri_fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_dumb);

		cmd_dumb.width=create_dumb.width;
		cmd_dumb.height=create_dumb.height;
		cmd_dumb.bpp=create_dumb.bpp;
		cmd_dumb.pitch=create_dumb.pitch;
		cmd_dumb.depth=24;
		cmd_dumb.handle=create_dumb.handle;
		ioctl(dri_fd,DRM_IOCTL_MODE_ADDFB,&cmd_dumb);

		map_dumb.handle=create_dumb.handle;
		ioctl(dri_fd,DRM_IOCTL_MODE_MAP_DUMB,&map_dumb);

		fb_base[i] = mmap(0, create_dumb.size, PROT_READ | PROT_WRITE, MAP_SHARED, dri_fd, map_dumb.offset);
		fb_w[i]=create_dumb.width;
		fb_h[i]=create_dumb.height;

//------------------------------------------------------------------------------
//Kernel Mode Setting (KMS)
//------------------------------------------------------------------------------

		printf("%d : mode: %d, prop: %d, enc: %d\n",conn.connection,conn.count_modes,conn.count_props,conn.count_encoders);
		printf("modes: %dx%d FB: %d\n",conn_mode_buf[0].hdisplay,conn_mode_buf[0].vdisplay,fb_base[i]);

		struct drm_mode_get_encoder enc={0};

		enc.encoder_id=conn.encoder_id;
		ioctl(dri_fd, DRM_IOCTL_MODE_GETENCODER, &enc);	//get encoder

		struct drm_mode_crtc crtc={0};

		crtc.crtc_id=enc.crtc_id;
		ioctl(dri_fd, DRM_IOCTL_MODE_GETCRTC, &crtc);

		crtc.fb_id=cmd_dumb.fb_id;
		crtc.set_connectors_ptr=(uint64_t)&res_conn_buf[i];
		crtc.count_connectors=1;
		crtc.mode=conn_mode_buf[0];
		crtc.mode_valid=1;
		ioctl(dri_fd, DRM_IOCTL_MODE_SETCRTC, &crtc);
	}

	//Stop being the "master" of the DRI device
	ioctl(dri_fd, DRM_IOCTL_DROP_MASTER, 0);

	int x,y;
	for (i=0;i<100;i++)
	{
		int j;
		for (j=0;j<res.count_connectors;j++)
		{
			int col=(rand()%0x00ffffff)&0x00ff00ff;
			for (y=0;y<fb_h[j];y++)
				for (x=0;x<fb_w[j];x++)
				{
					int location=y*(fb_w[j]) + x;
					*(((uint32_t*)fb_base[j])+location)=col;
				}
		}
		usleep(100000);
	}

	return 0;
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: putty-2018-11-28-18-51-39-with-tty0-no-revert-TEST9.log --]
[-- Type: text/x-log; name="putty-2018-11-28-18-51-39-with-tty0-no-revert-TEST9.log", Size: 65893 bytes --]

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.11.28 18:51:39 =~=~=~=~=~=~=~=~=~=~=~=

/ # dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.20.0-rc1-g9eb245c5e (xxxx@xxxx) (gcc version 6.3.0 20170516 (Debian 6.3.0-18)) #52 SMP Wed Nov 28 18:45:01 CET 2018
[    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Rikomagic MK808
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 64 MiB at 0x9c000000
[    0.000000] On node 0 totalpages: 262144
[    0.000000]   Normal zone: 1536 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 196608 pages, LIFO batch:63
[    0.000000]   HighMem zone: 65536 pages, LIFO batch:15
[    0.000000] random: get_random_bytes called from start_kernel+0xa0/0x45c with crng_init=0
[    0.000000] percpu: Embedded 17 pages/cpu @(ptrval) s38540 r8192 d22900 u69632
[    0.000000] pcpu-alloc: s38540 r8192 d22900 u69632 alloc=17*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260608
[    0.000000] Kernel command line: console=tty0 console=ttyUSB0,115200n8  debug drm.debug=0x3f clk_ignore_unused no_console_suspend=1 consoleblank=0 root=LABEL=linuxroot init=/sbin/init rootfstype=ext4 rootwait
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 962920K/1048576K available (6144K kernel code, 403K rwdata, 1480K rodata, 2048K init, 237K bss, 20120K reserved, 65536K cma-reserved, 196608K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (7136 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (2048 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 404 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 238 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] L2C-310 erratum 769419 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310: enabling full line of zeros but not enabled in Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 15 lines
[    0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 512 kB
[    0.000000] L2C-310: CACHE_ID 0x4100c0c8, AUX_CTRL 0x76050001
[    0.000016] sched_clock: 64 bits at 150MHz, resolution 6ns, wraps every 2199023255551ns
[    0.000042] clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x2298375bd0, max_idle_ns: 440795208267 ns
[    0.000078] Switching to timer-based delay loop, resolution 6ns
[    0.000674] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000788] Ignoring duplicate/late registration of read_current_timer delay
[    0.001217] Console: colour dummy device 80x30
[    0.001784] printk: console [tty0] enabled
[    0.001833] Calibrating delay loop (skipped), value calculated using timer frequency.. 300.00 BogoMIPS (lpj=1500000)
[    0.001867] pid_max: default: 32768 minimum: 301
[    0.002018] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.002047] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.002750] CPU: Testing write buffer coherency: ok
[    0.002819] CPU0: Spectre v2: using BPIALL workaround
[    0.003210] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.003502] rockchip_smp_prepare_cpus: ncores 2
[    0.004166] Setting up static identity map for 0x60100000 - 0x60100060
[    0.004353] rcu: Hierarchical SRCU implementation.
[    0.004942] smp: Bringing up secondary CPUs ...
[    0.005834] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.005844] CPU1: Spectre v2: using BPIALL workaround
[    0.006023] smp: Brought up 1 node, 2 CPUs
[    0.006052] SMP: Total of 2 processors activated (600.00 BogoMIPS).
[    0.006071] CPU: All CPU(s) started in SVC mode.
[    0.007357] devtmpfs: initialized
[    0.013188] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.013468] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.013527] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.017149] pinctrl core: initialized pinctrl subsystem
[    0.018056] NET: Registered protocol family 16
[    0.020872] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.022741] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.022778] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.047784] host-pwr: supplied by vcc_io
[    0.160655] vcc_otg: supplied by vcc_io
[    0.280581] sdmmc-regulator GPIO handle specifies active low - ignored
[    0.280656] vcc_sd: supplied by vcc_io
[    0.281111] vcc_wifi: supplied by vcc_io
[    0.281927] SCSI subsystem initialized
[    0.282077] usbcore: registered new interface driver usbfs
[    0.282148] usbcore: registered new interface driver hub
[    0.282247] usbcore: registered new device driver usb
[    0.282686] Advanced Linux Sound Architecture Driver Initialized.
[    0.283495] clocksource: Switched to clocksource arm_global_timer
[    0.333250] NET: Registered protocol family 2
[    0.333938] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[    0.333996] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.334108] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.334281] TCP: Hash tables configured (established 8192 bind 8192)
[    0.334437] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.334502] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.334731] NET: Registered protocol family 1
[    0.361784] workingset: timestamp_bits=30 max_order=18 bucket_order=0
[    0.368909] ntfs: driver 2.1.32 [Flags: R/W].
[    0.375433] bounce: pool size: 64 pages
[    0.375526] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.375555] io scheduler noop registered
[    0.375769] io scheduler cfq registered (default)
[    0.379247] dma-pl330 20018000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.379293] dma-pl330 20018000.dma-controller: 	DBUFF-32x8bytes Num_Chans-6 Num_Peri-12 Num_Events-12
[    0.380959] dma-pl330 20078000.dma-controller: Loaded driver for PL330 DMAC-241330
[    0.380999] dma-pl330 20078000.dma-controller: 	DBUFF-64x8bytes Num_Chans-7 Num_Peri-20 Num_Events-14
[    0.381417] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.382935] [drm:drm_core_init] Initialized
[    0.383863] rockchip-drm display-subsystem: [drm:rockchip_drm_platform_probe] no iommu attached for /vop@1010c000, using non-iommu buffers
[    0.384119] rockchip-drm display-subsystem: Linked as a consumer to 1010c000.vop
[    0.384302] rockchip-drm display-subsystem: Linked as a consumer to 10116000.hdmi
[    0.384829] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support global_regdone_en
[    0.384873] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support channel
[    0.384904] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support gate
[    0.384933] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support channel
[    0.384960] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support gate
[    0.384988] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support channel
[    0.385015] rockchip-vop 1010c000.vop: [drm:vop_bind] Warning: not support gate
[    0.385183] rockchip-drm display-subsystem: bound 1010c000.vop (ops 0xc073f2a8)
[    0.385452] i2c i2c-5: of_i2c: modalias failure on /hdmi@10116000/port
[    0.385483] i2c i2c-5: Failed to create I2C device for /hdmi@10116000/port
[    0.385510] rk3066hdmi-rockchip 10116000.hdmi: registered RK3066 HDMI I2C bus driver
[    0.385538] rk3066hdmi-rockchip 10116000.hdmi: mode         :32
[    0.385559] rk3066hdmi-rockchip 10116000.hdmi: previous_mode:16
[    0.385581] rk3066hdmi-rockchip 10116000.hdmi: 0: next_mode    :32
[    0.385600] rk3066hdmi-rockchip 10116000.hdmi: set HDMI_SYS_POWER_MODE_A-B-E
[    0.386665] rk3066hdmi-rockchip 10116000.hdmi: mode         :16
[    0.386689] rk3066hdmi-rockchip 10116000.hdmi: previous_mode:32
[    0.386711] rk3066hdmi-rockchip 10116000.hdmi: 0: next_mode    :16
[    0.386730] rk3066hdmi-rockchip 10116000.hdmi: set HDMI_SYS_POWER_MODE_A-B-E
[    0.386762] rk3066hdmi-rockchip 10116000.hdmi: CRTC found
[    0.387176] rockchip-drm display-subsystem: bound 10116000.hdmi (ops 0xc0741878)
[    0.387209] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.387228] [drm] No driver support for vblank timestamp query.
[    0.387270] [drm:drm_mode_object_get] OBJ ID: 33 (2)
[    0.387302] [drm:drm_setup_crtcs] 
[    0.387336] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1]
[    0.387376] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] status updated from unknown to connected
[    0.387437] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 1/2, len: 1, flags: 0x0
[    0.387465] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 2/2, len: 1, flags: 0x1
[    0.417954] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 1/2, len: 1, flags: 0x0
[    0.417993] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 2/2, len: 128, flags: 0x1
[    0.448922] rk3066hdmi-rockchip 10116000.hdmi: monitor type : DVI : 34x27 cm
[    0.448949] rk3066hdmi-rockchip 10116000.hdmi: audio support: no
[    0.448984] [drm:drm_add_display_info] non_desktop set to 0
[    0.449018] [drm:drm_add_edid_modes] ELD: no CEA Extension found
[    0.449042] [drm:drm_add_display_info] non_desktop set to 0
[    0.449171] rk3066hdmi-rockchip 10116000.hdmi: no CEA mode found, use preset
[    0.449925] [drm:drm_mode_debug_printmodeline] Modeline 35:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x48 0x5
[    0.449962] [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: BAD
[    0.449996] [drm:drm_mode_debug_printmodeline] Modeline 36:"1152x864" 0 108000 1152 1216 1344 1600 864 865 868 900 0x40 0x5
[    0.450026] [drm:drm_mode_prune_invalid] Not using 1152x864 mode: BAD
[    0.450057] [drm:drm_mode_debug_printmodeline] Modeline 37:"800x600" 0 40000 800 840 968 1056 600 601 605 628 0x40 0x5
[    0.450086] [drm:drm_mode_prune_invalid] Not using 800x600 mode: BAD
[    0.450115] [drm:drm_mode_debug_printmodeline] Modeline 38:"640x480" 0 31500 640 656 720 840 480 481 484 500 0x40 0xa
[    0.450144] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD
[    0.450173] [drm:drm_mode_debug_printmodeline] Modeline 39:"640x480" 0 25175 640 656 752 800 480 490 492 525 0x40 0xa
[    0.450202] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD
[    0.450231] [drm:drm_mode_debug_printmodeline] Modeline 40:"720x400" 0 28320 720 738 846 900 400 412 414 449 0x40 0x6
[    0.450260] [drm:drm_mode_prune_invalid] Not using 720x400 mode: BAD
[    0.450289] [drm:drm_mode_debug_printmodeline] Modeline 41:"1280x1024" 0 135000 1280 1296 1440 1688 1024 1025 1028 1066 0x40 0x5
[    0.450319] [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: BAD
[    0.450348] [drm:drm_mode_debug_printmodeline] Modeline 42:"1024x768" 0 78750 1024 1040 1136 1312 768 769 772 800 0x40 0x5
[    0.450377] [drm:drm_mode_prune_invalid] Not using 1024x768 mode: BAD
[    0.450407] [drm:drm_mode_debug_printmodeline] Modeline 43:"1024x768" 0 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
[    0.450436] [drm:drm_mode_prune_invalid] Not using 1024x768 mode: BAD
[    0.450465] [drm:drm_mode_debug_printmodeline] Modeline 44:"800x600" 0 49500 800 816 896 1056 600 601 604 625 0x40 0x5
[    0.450494] [drm:drm_mode_prune_invalid] Not using 800x600 mode: BAD
[    0.450531] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] probed modes :
[    0.450568] [drm:drm_mode_debug_printmodeline] Modeline 45:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x8 0x5
[    0.450604] [drm:drm_mode_debug_printmodeline] Modeline 46:"1920x1080" 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0x5
[    0.450640] [drm:drm_mode_debug_printmodeline] Modeline 47:"1920x1080" 50 148500 1920 2448 2492 2640 1080 1084 1089 1125 0x40 0x5
[    0.450676] [drm:drm_mode_debug_printmodeline] Modeline 48:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5
[    0.450711] [drm:drm_mode_debug_printmodeline] Modeline 49:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa
[    0.450746] [drm:drm_mode_debug_printmodeline] Modeline 50:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa
[    0.450783] [drm:drm_setup_crtcs] connector 33 enabled? yes
[    0.450806] [drm:drm_setup_crtcs] looking for cmdline mode on connector 33
[    0.450831] [drm:drm_setup_crtcs] looking for preferred mode on connector 33 0
[    0.450856] [drm:drm_setup_crtcs] found mode 1280x720
[    0.450878] [drm:drm_setup_crtcs] picking CRTCs for 4096x4096 config
[    0.450906] [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 30 (0,0)
[    0.450932] [drm:drm_mode_object_get] OBJ ID: 33 (2)
[    0.463800] [drm:rockchip_drm_fbdev_create] FB [1280x720]-24 kvaddr=(ptrval) offset=0 size=3686400
[    0.464438] [drm:drm_atomic_state_init] Allocated atomic state (ptrval)
[    0.464457] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] (ptrval) state to (ptrval)
[    0.464470] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] (ptrval) state to (ptrval)
[    0.464488] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state (ptrval)
[    0.464499] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] (ptrval) state to (ptrval)
[    0.464508] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state (ptrval)
[    0.464523] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] (ptrval) state to (ptrval)
[    0.464545] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1280x720] for [CRTC:30:crtc-0] state (ptrval)
[    0.464557] [drm:drm_atomic_set_crtc_for_plane] Link [PLANE:28:plane-0] state (ptrval) to [CRTC:30:crtc-0]
[    0.464568] [drm:drm_atomic_set_fb_for_plane] Set [FB:36] for [PLANE:28:plane-0] state (ptrval)
[    0.464576] [drm:drm_mode_object_get] OBJ ID: 36 (1)
[    0.464589] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to (ptrval)
[    0.464603] [drm:drm_mode_object_get] OBJ ID: 33 (3)
[    0.464614] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] (ptrval) state to (ptrval)
[    0.464620] [drm:drm_mode_object_get] OBJ ID: 33 (4)
[    0.464632] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [CRTC:30:crtc-0]
[    0.464640] [drm:drm_atomic_check_only] checking (ptrval)
[    0.464657] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] mode changed
[    0.464665] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] enable changed
[    0.464672] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] active changed
[    0.464683] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[    0.464695] [drm:drm_atomic_helper_check_modeset] [CONNECTOR:33:HDMI-A-1] using [ENCODER:32:TMDS-32] on [CRTC:30:crtc-0]
[    0.464703] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] needs all connectors, enable: y, active: y
[    0.464714] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to (ptrval)
[    0.464724] [drm:drm_atomic_add_affected_planes] Adding all current planes for [CRTC:30:crtc-0] to (ptrval)
[    0.464833] [drm:drm_atomic_commit] committing (ptrval)
[    0.464864] [drm:drm_calc_timestamping_constants] crtc 30: hwmode: htotal 1650, vtotal 750, vdisplay 720
[    0.464874] [drm:drm_calc_timestamping_constants] crtc 30: clock 74250 kHz framedur 16666666 linedur 22222
[    0.464885] [drm:drm_atomic_helper_commit_modeset_disables] modeset on [ENCODER:32:TMDS-32]
[    0.464895] [drm:drm_atomic_helper_commit_modeset_enables] enabling [CRTC:30:crtc-0]
[    0.464970] [drm:drm_crtc_vblank_on] crtc 0, vblank enabled 0, inmodeset 0
[    0.464994] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_enable] Warning: not support hdmi_pin_pol
[    0.465005] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_enable] Warning: not support hdmi_en
[    0.465015] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_enable] Warning: not support pre_dither_down
[    0.465026] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_enable] Warning: not support hpost_st_end
[    0.465036] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_enable] Warning: not support vpost_st_end
[    0.465117] [drm:drm_atomic_helper_commit_modeset_enables] enabling [ENCODER:32:TMDS-32]
[    0.465150] rk3066hdmi-rockchip 10116000.hdmi: select hdmi input: vop0
[    0.475560] rk3066hdmi-rockchip 10116000.hdmi: mode         :128
[    0.475569] rk3066hdmi-rockchip 10116000.hdmi: previous_mode:32
[    0.475577] rk3066hdmi-rockchip 10116000.hdmi: 0: next_mode    :64
[    0.475583] rk3066hdmi-rockchip 10116000.hdmi: set HDMI_SYS_POWER_MODE_D
[    0.475824] rk3066hdmi-rockchip 10116000.hdmi: 1: next_mode    :128
[    0.475831] rk3066hdmi-rockchip 10116000.hdmi: set HDMI_SYS_POWER_MODE_A-B-E
[    0.475880] rockchip-vop 1010c000.vop: [drm:vop_plane_atomic_update] Warning: not support src_alpha_ctl
[    0.475899] [drm:drm_vblank_enable] enabling vblank on crtc 0, ret: 0
[    0.475912] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=1, diff=0, hw=0 hw_last=0
[    0.480987] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=1, diff=1, hw=0 hw_last=0
[    0.481039] [drm:drm_atomic_state_default_clear] Clearing atomic state (ptrval)
[    0.481057] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[    0.481070] [drm:__drm_atomic_state_free] Freeing atomic state (ptrval)
[    0.481172] [drm:drm_atomic_state_init] Allocated atomic state (ptrval)
[    0.481185] [drm:drm_mode_object_get] OBJ ID: 36 (2)
[    0.481195] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] (ptrval) state to (ptrval)
[    0.481204] [drm:drm_mode_object_get] OBJ ID: 37 (1)
[    0.481214] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] (ptrval) state to (ptrval)
[    0.481225] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] (ptrval) state to (ptrval)
[    0.481239] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state (ptrval)
[    0.481250] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] (ptrval) state to (ptrval)
[    0.481259] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state (ptrval)
[    0.481271] [drm:drm_mode_object_put] OBJ ID: 37 (2)
[    0.481291] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1280x720] for [CRTC:30:crtc-0] state (ptrval)
[    0.481303] [drm:drm_atomic_set_fb_for_plane] Set [FB:36] for [PLANE:28:plane-0] state (ptrval)
[    0.481310] [drm:drm_mode_object_get] OBJ ID: 36 (3)
[    0.481318] [drm:drm_mode_object_put] OBJ ID: 36 (4)
[    0.481329] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to (ptrval)
[    0.481341] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    0.481347] [drm:drm_mode_object_get] OBJ ID: 33 (6)
[    0.481357] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] (ptrval) state to (ptrval)
[    0.481367] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    0.481378] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [NOCRTC]
[    0.481384] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    0.481395] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [CRTC:30:crtc-0]
[    0.481403] [drm:drm_atomic_check_only] checking (ptrval)
[    0.481421] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[    0.481432] [drm:drm_atomic_helper_check_modeset] [CONNECTOR:33:HDMI-A-1] keeps [ENCODER:32:TMDS-32], now on [CRTC:30:crtc-0]
[    0.481446] [drm:drm_atomic_commit] committing (ptrval)
[    0.481472] [drm:drm_calc_timestamping_constants] crtc 30: hwmode: htotal 1650, vtotal 750, vdisplay 720
[    0.481483] [drm:drm_calc_timestamping_constants] crtc 30: clock 74250 kHz framedur 16666666 linedur 22222
[    0.481505] rockchip-vop 1010c000.vop: [drm:vop_plane_atomic_update] Warning: not support src_alpha_ctl
[    0.497664] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=2, diff=1, hw=0 hw_last=0
[    0.497712] [drm:drm_atomic_state_default_clear] Clearing atomic state (ptrval)
[    0.497726] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    0.497737] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[    0.497746] [drm:drm_mode_object_put] OBJ ID: 37 (1)
[    0.497759] [drm:drm_mode_object_put] OBJ ID: 36 (3)
[    0.497770] [drm:__drm_atomic_state_free] Freeing atomic state (ptrval)
[    0.514323] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=3, diff=1, hw=0 hw_last=0
[    0.521880] Console: switching to colour frame buffer device 160x45
[    0.521918] [drm:drm_atomic_state_init] Allocated atomic state (ptrval)
[    0.521929] [drm:drm_mode_object_get] OBJ ID: 36 (2)
[    0.521941] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] (ptrval) state to (ptrval)
[    0.521950] [drm:drm_mode_object_get] OBJ ID: 38 (1)
[    0.521960] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] (ptrval) state to (ptrval)
[    0.521970] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] (ptrval) state to (ptrval)
[    0.521984] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state (ptrval)
[    0.521994] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] (ptrval) state to (ptrval)
[    0.522003] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state (ptrval)
[    0.522015] [drm:drm_mode_object_put] OBJ ID: 38 (2)
[    0.522032] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1280x720] for [CRTC:30:crtc-0] state (ptrval)
[    0.522043] [drm:drm_atomic_set_fb_for_plane] Set [FB:36] for [PLANE:28:plane-0] state (ptrval)
[    0.522049] [drm:drm_mode_object_get] OBJ ID: 36 (3)
[    0.522058] [drm:drm_mode_object_put] OBJ ID: 36 (4)
[    0.522069] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to (ptrval)
[    0.522079] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    0.522085] [drm:drm_mode_object_get] OBJ ID: 33 (6)
[    0.522095] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] (ptrval) state to (ptrval)
[    0.522104] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    0.522115] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [NOCRTC]
[    0.522121] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    0.522132] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [CRTC:30:crtc-0]
[    0.522140] [drm:drm_atomic_check_only] checking (ptrval)
[    0.522158] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[    0.522169] [drm:drm_atomic_helper_check_modeset] [CONNECTOR:33:HDMI-A-1] keeps [ENCODER:32:TMDS-32], now on [CRTC:30:crtc-0]
[    0.522182] [drm:drm_atomic_commit] committing (ptrval)
[    0.522208] [drm:drm_calc_timestamping_constants] crtc 30: hwmode: htotal 1650, vtotal 750, vdisplay 720
[    0.522218] [drm:drm_calc_timestamping_constants] crtc 30: clock 74250 kHz framedur 16666666 linedur 22222
[    0.522240] rockchip-vop 1010c000.vop: [drm:vop_plane_atomic_update] Warning: not support src_alpha_ctl
[    0.530993] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=4, diff=1, hw=0 hw_last=0
[    0.531043] [drm:drm_atomic_state_default_clear] Clearing atomic state (ptrval)
[    0.531055] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    0.531066] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[    0.531075] [drm:drm_mode_object_put] OBJ ID: 38 (1)
[    0.531087] [drm:drm_mode_object_put] OBJ ID: 36 (3)
[    0.531098] [drm:__drm_atomic_state_free] Freeing atomic state (ptrval)
[    0.547656] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=5, diff=1, hw=0 hw_last=0
[    0.565587] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=6, diff=1, hw=0 hw_last=0
[    0.584319] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=7, diff=1, hw=0 hw_last=0
[    0.597657] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=8, diff=1, hw=0 hw_last=0
[    0.603231] rockchip-drm display-subsystem: fb0:  frame buffer device
[    0.614324] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=9, diff=1, hw=0 hw_last=0
[    1.625994] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=10, diff=1, hw=0 hw_last=0
[    1.626008] [drm:drm_minor_register] 
[    1.626020] [drm:drm_minor_register] 
[    1.634951] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=11, diff=1, hw=0 hw_last=0
[    1.635055] [drm:drm_helper_hpd_irq_event] [CONNECTOR:33:HDMI-A-1] status updated from connected to connected
[    1.644115] [drm:drm_minor_register] new minor registered 0
[    1.652306] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=12, diff=1, hw=0 hw_last=0
[    1.661342] [drm:drm_sysfs_connector_add] adding "HDMI-A-1" to sysfs
[    1.670108] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=13, diff=1, hw=0 hw_last=0
[    1.678927] [drm:drm_sysfs_hotplug_event] generating hotplug event
[    1.687971] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=14, diff=1, hw=0 hw_last=0
[    1.696945] [drm] Initialized rockchip 1.0.0 20140818 for display-subsystem on minor 0
[    1.706022] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=15, diff=1, hw=0 hw_last=0
[    1.714334] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=16, diff=1, hw=0 hw_last=0
[    1.752811] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=17, diff=1, hw=0 hw_last=0
[    1.764346] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=18, diff=1, hw=0 hw_last=0
[    1.771678] brd: module loaded
[    1.781015] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=19, diff=1, hw=0 hw_last=0
[    1.789906] loop: module loaded
[    1.797702] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=20, diff=1, hw=0 hw_last=0
[    1.801384] usbcore: registered new interface driver dm9601
[    1.814336] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=21, diff=1, hw=0 hw_last=0
[    1.819671] dwc2 10180000.usb: 10180000.usb supply vusb_d not found, using dummy regulator
[    1.830998] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
[    1.837952] dwc2 10180000.usb: Linked as a consumer to regulator.0
[    1.847662] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
[    1.856516] dwc2 10180000.usb: 10180000.usb supply vusb_a not found, using dummy regulator
[    1.865987] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
[    1.875605] dwc2 10180000.usb: Configuration mismatch. dr_mode forced to host
[    1.884907] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
[    1.897656] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
[    1.914440] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
[    1.930989] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=1, hw=0 hw_last=0
[    1.947656] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=29, diff=1, hw=0 hw_last=0
[    1.964325] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=30, diff=1, hw=0 hw_last=0
[    1.980988] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=31, diff=1, hw=0 hw_last=0
[    1.997654] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=32, diff=1, hw=0 hw_last=0
[    2.005264] dwc2 10180000.usb: dwc2_check_params: Invalid parameter lpm=1
[    2.014326] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=33, diff=1, hw=0 hw_last=0
[    2.016651] dwc2 10180000.usb: dwc2_check_params: Invalid parameter lpm_clock_gating=1
[    2.030987] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=34, diff=1, hw=0 hw_last=0
[    2.035875] dwc2 10180000.usb: dwc2_check_params: Invalid parameter besl=1
[    2.047653] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=35, diff=1, hw=0 hw_last=0
[    2.055685] dwc2 10180000.usb: dwc2_check_params: Invalid parameter hird_threshold_en=1
[    2.065847] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=36, diff=1, hw=0 hw_last=0
[    2.076573] dwc2 10180000.usb: DWC OTG Controller
[    2.086291] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=37, diff=1, hw=0 hw_last=0
[    2.097658] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=38, diff=1, hw=0 hw_last=0
[    2.106764] dwc2 10180000.usb: new USB bus registered, assigned bus number 1
[    2.116743] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=39, diff=1, hw=0 hw_last=0
[    2.130983] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=40, diff=1, hw=0 hw_last=0
[    2.136881] dwc2 10180000.usb: irq 23, io mem 0x10180000
[    2.147656] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=41, diff=1, hw=0 hw_last=0
[    2.156612] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    2.166424] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=42, diff=1, hw=0 hw_last=0
[    2.180985] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=43, diff=1, hw=0 hw_last=0
[    2.187557] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.197967] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=44, diff=1, hw=0 hw_last=0
[    2.214318] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=45, diff=1, hw=0 hw_last=0
[    2.218773] usb usb1: Product: DWC OTG Controller
[    2.230987] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=46, diff=1, hw=0 hw_last=0
[    2.238858] usb usb1: Manufacturer: Linux 4.20.0-rc1-g9eb245c5e dwc2_hsotg
[    2.248992] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=47, diff=1, hw=0 hw_last=0
[    2.264318] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=48, diff=1, hw=0 hw_last=0
[    2.269185] usb usb1: SerialNumber: 10180000.usb
[    2.280985] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=49, diff=1, hw=0 hw_last=0
[    2.298560] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=50, diff=1, hw=0 hw_last=0
[    2.308602] hub 1-0:1.0: USB hub found
[    2.314336] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=51, diff=1, hw=0 hw_last=0
[    2.318039] hub 1-0:1.0: 1 port detected
[    2.330994] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=52, diff=1, hw=0 hw_last=0
[    2.337870] dwc2 101c0000.usb: 101c0000.usb supply vusb_d not found, using dummy regulator
[    2.347669] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=53, diff=1, hw=0 hw_last=0
[    2.357837] dwc2 101c0000.usb: Linked as a consumer to regulator.0
[    2.368488] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=54, diff=1, hw=0 hw_last=0
[    2.380983] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=55, diff=1, hw=0 hw_last=0
[    2.390773] dwc2 101c0000.usb: 101c0000.usb supply vusb_a not found, using dummy regulator
[    2.402101] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=56, diff=1, hw=0 hw_last=0
[    2.424698] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=57, diff=1, hw=0 hw_last=0
[    2.435726] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=58, diff=1, hw=0 hw_last=0
[    2.447658] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=59, diff=1, hw=0 hw_last=0
[    2.464325] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=60, diff=1, hw=0 hw_last=0
[    2.480988] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=61, diff=1, hw=0 hw_last=0
[    2.483517] dwc2 101c0000.usb: dwc2_check_params: Invalid parameter lpm=1
[    2.497660] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=62, diff=1, hw=0 hw_last=0
[    2.500493] dwc2 101c0000.usb: dwc2_check_params: Invalid parameter lpm_clock_gating=1
[    2.514326] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=63, diff=1, hw=0 hw_last=0
[    2.520000] dwc2 101c0000.usb: dwc2_check_params: Invalid parameter besl=1
[    2.530987] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=64, diff=1, hw=0 hw_last=0
[    2.540089] dwc2 101c0000.usb: dwc2_check_params: Invalid parameter hird_threshold_en=1
[    2.550181] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=65, diff=1, hw=0 hw_last=0
[    2.564319] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=66, diff=1, hw=0 hw_last=0
[    2.581105] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=67, diff=1, hw=0 hw_last=0
[    2.591167] dwc2 101c0000.usb: DWC OTG Controller
[    2.600858] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=68, diff=1, hw=0 hw_last=0
[    2.611041] dwc2 101c0000.usb: new USB bus registered, assigned bus number 2
[    2.621069] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=69, diff=1, hw=0 hw_last=0
[    2.631207] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=70, diff=1, hw=0 hw_last=0
[    2.633515] [drm:drm_sysfs_hotplug_event] generating hotplug event
[    2.641393] dwc2 101c0000.usb: irq 24, io mem 0x101c0000
[    2.651284] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=71, diff=1, hw=0 hw_last=0
[    2.651322] [drm:drm_fb_helper_hotplug_event.part.9] 
[    2.661413] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    2.671038] [drm:drm_setup_crtcs] 
[    2.671054] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=72, diff=1, hw=0 hw_last=0
[    2.671074] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1]
[    2.671127] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 1/2, len: 1, flags: 0x0
[    2.680825] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.690904] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 2/2, len: 1, flags: 0x1
[    2.690920] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=73, diff=1, hw=0 hw_last=0
[    2.700843] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=74, diff=1, hw=0 hw_last=0
[    2.721175] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=75, diff=1, hw=0 hw_last=0
[    2.721262] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 1/2, len: 1, flags: 0x0
[    2.731371] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=76, diff=1, hw=0 hw_last=0
[    2.741422] rk3066hdmi-rockchip 10116000.hdmi: xfer: num: 2/2, len: 128, flags: 0x1
[    2.751405] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=77, diff=1, hw=0 hw_last=0
[    2.818922] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=78, diff=1, hw=0 hw_last=0
[    2.828458] usb usb2: Product: DWC OTG Controller
[    2.828958] rk3066hdmi-rockchip 10116000.hdmi: monitor type : DVI : 34x27 cm
[    2.838073] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=79, diff=1, hw=0 hw_last=0
[    2.847918] rk3066hdmi-rockchip 10116000.hdmi: audio support: no
[    2.858206] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=80, diff=1, hw=0 hw_last=0
[    2.868630] [drm:drm_add_display_info] non_desktop set to 0
[    2.879516] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=81, diff=1, hw=0 hw_last=0
[    2.890207] [drm:drm_mode_object_put] OBJ ID: 34 (1)
[    2.901011] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=82, diff=1, hw=0 hw_last=0
[    2.911608] [drm:drm_add_edid_modes] ELD: no CEA Extension found
[    2.922345] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=83, diff=1, hw=0 hw_last=0
[    2.932886] [drm:drm_add_display_info] non_desktop set to 0
[    2.943577] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=84, diff=1, hw=0 hw_last=0
[    2.954141] rk3066hdmi-rockchip 10116000.hdmi: no CEA mode found, use preset
[    2.964662] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=85, diff=1, hw=0 hw_last=0
[    2.964679] usb usb2: Manufacturer: Linux 4.20.0-rc1-g9eb245c5e dwc2_hsotg
[    2.976232] [drm:drm_mode_debug_printmodeline] Modeline 34:"1280x1024" 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x48 0x5
[    2.986750] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=86, diff=1, hw=0 hw_last=0
[    2.997851] [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: BAD
[    3.009212] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=87, diff=1, hw=0 hw_last=0
[    3.020520] [drm:drm_mode_debug_printmodeline] Modeline 39:"1152x864" 0 108000 1152 1216 1344 1600 864 865 868 900 0x40 0x5
[    3.031659] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=88, diff=1, hw=0 hw_last=0
[    3.043188] [drm:drm_mode_prune_invalid] Not using 1152x864 mode: BAD
[    3.054852] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=89, diff=1, hw=0 hw_last=0
[    3.066622] [drm:drm_mode_debug_printmodeline] Modeline 40:"800x600" 0 40000 800 840 968 1056 600 601 605 628 0x40 0x5
[    3.078205] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=90, diff=1, hw=0 hw_last=0
[    3.089919] [drm:drm_mode_prune_invalid] Not using 800x600 mode: BAD
[    3.101744] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=91, diff=1, hw=0 hw_last=0
[    3.113586] [drm:drm_mode_debug_printmodeline] Modeline 41:"640x480" 0 31500 640 656 720 840 480 481 484 500 0x40 0xa
[    3.125304] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=92, diff=1, hw=0 hw_last=0
[    3.137155] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD
[    3.149135] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=93, diff=1, hw=0 hw_last=0
[    3.161182] [drm:drm_mode_debug_printmodeline] Modeline 42:"640x480" 0 25175 640 656 752 800 480 490 492 525 0x40 0xa
[    3.173126] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=94, diff=1, hw=0 hw_last=0
[    3.185156] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD
[    3.197544] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=95, diff=1, hw=0 hw_last=0
[    3.210215] [drm:drm_mode_debug_printmodeline] Modeline 43:"720x400" 0 28320 720 738 846 900 400 412 414 449 0x40 0x6
[    3.222691] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=96, diff=1, hw=0 hw_last=0
[    3.235262] [drm:drm_mode_prune_invalid] Not using 720x400 mode: BAD
[    3.247881] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=97, diff=1, hw=0 hw_last=0
[    3.260473] [drm:drm_mode_debug_printmodeline] Modeline 44:"1280x1024" 0 135000 1280 1296 1440 1688 1024 1025 1028 1066 0x40 0x5
[    3.273192] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=98, diff=1, hw=0 hw_last=0
[    3.286012] [drm:drm_mode_prune_invalid] Not using 1280x1024 mode: BAD
[    3.299061] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=99, diff=1, hw=0 hw_last=0
[    3.312066] [drm:drm_mode_debug_printmodeline] Modeline 51:"1024x768" 0 78750 1024 1040 1136 1312 768 769 772 800 0x40 0x5
[    3.324889] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=100, diff=1, hw=0 hw_last=0
[    3.337791] [drm:drm_mode_prune_invalid] Not using 1024x768 mode: BAD
[    3.350808] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=101, diff=1, hw=0 hw_last=0
[    3.363829] [drm:drm_mode_debug_printmodeline] Modeline 52:"1024x768" 0 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
[    3.376701] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=102, diff=1, hw=0 hw_last=0
[    3.389706] [drm:drm_mode_prune_invalid] Not using 1024x768 mode: BAD
[    3.402809] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=103, diff=1, hw=0 hw_last=0
[    3.415904] [drm:drm_mode_debug_printmodeline] Modeline 53:"800x600" 0 49500 800 816 896 1056 600 601 604 625 0x40 0x5
[    3.428850] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=104, diff=1, hw=0 hw_last=0
[    3.441945] [drm:drm_mode_prune_invalid] Not using 800x600 mode: BAD
[    3.455053] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=105, diff=1, hw=0 hw_last=0
[    3.468143] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] probed modes :
[    3.481054] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=106, diff=1, hw=0 hw_last=0
[    3.494021] [drm:drm_mode_debug_printmodeline] Modeline 45:"1280x720" 60 74250 1280 1390 1430 1650 720 725 730 750 0x8 0x5
[    3.506881] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=107, diff=1, hw=0 hw_last=0
[    3.519821] [drm:drm_mode_debug_printmodeline] Modeline 46:"1920x1080" 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0x5
[    3.532829] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=108, diff=1, hw=0 hw_last=0
[    3.545798] [drm:drm_mode_debug_printmodeline] Modeline 47:"1920x1080" 50 148500 1920 2448 2492 2640 1080 1084 1089 1125 0x40 0x5
[    3.558839] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=109, diff=1, hw=0 hw_last=0
[    3.571876] [drm:drm_mode_debug_printmodeline] Modeline 48:"1280x720" 50 74250 1280 1720 1760 1980 720 725 730 750 0x40 0x5
[    3.585060] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=110, diff=1, hw=0 hw_last=0
[    3.598200] [drm:drm_mode_debug_printmodeline] Modeline 49:"720x576" 50 27000 720 732 796 864 576 581 586 625 0x40 0xa
[    3.611394] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=111, diff=1, hw=0 hw_last=0
[    3.624599] [drm:drm_mode_debug_printmodeline] Modeline 50:"720x480" 60 27000 720 736 798 858 480 489 495 525 0x40 0xa
[    3.637877] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=112, diff=1, hw=0 hw_last=0
[    3.651133] [drm:drm_setup_crtcs] connector 33 enabled? yes
[    3.664410] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=113, diff=1, hw=0 hw_last=0
[    3.677711] [drm:drm_setup_crtcs] looking for cmdline mode on connector 33
[    3.690855] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=114, diff=1, hw=0 hw_last=0
[    3.704141] [drm:drm_setup_crtcs] looking for preferred mode on connector 33 0
[    3.717280] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=115, diff=1, hw=0 hw_last=0
[    3.730531] [drm:drm_setup_crtcs] found mode 1280x720
[    3.743716] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=116, diff=1, hw=0 hw_last=0
[    3.756963] [drm:drm_setup_crtcs] picking CRTCs for 1280x720 config
[    3.769982] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=117, diff=1, hw=0 hw_last=0
[    3.783220] [drm:drm_mode_object_put] OBJ ID: 33 (4)
[    3.796311] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=118, diff=1, hw=0 hw_last=0
[    3.809498] [drm:drm_setup_crtcs] desired mode 1280x720 set on crtc 30 (0,0)
[    3.822423] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=119, diff=1, hw=0 hw_last=0
[    3.835566] [drm:drm_mode_object_get] OBJ ID: 33 (3)
[    3.848603] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=120, diff=1, hw=0 hw_last=0
[    3.861719] [drm:drm_atomic_state_init] Allocated atomic state (ptrval)
[    3.874596] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=121, diff=1, hw=0 hw_last=0
[    3.887666] [drm:drm_mode_object_get] OBJ ID: 36 (2)
[    3.900627] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=122, diff=1, hw=0 hw_last=0
[    3.913672] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] (ptrval) state to (ptrval)
[    3.926475] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=123, diff=1, hw=0 hw_last=0
[    3.939475] [drm:drm_mode_object_get] OBJ ID: 37 (1)
[    3.952462] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=124, diff=1, hw=0 hw_last=0
[    3.965450] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] (ptrval) state to (ptrval)
[    3.978207] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=125, diff=1, hw=0 hw_last=0
[    3.991155] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] (ptrval) state to (ptrval)
[    4.004048] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=126, diff=1, hw=0 hw_last=0
[    4.016997] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state (ptrval)
[    4.029902] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=127, diff=1, hw=0 hw_last=0
[    4.042817] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] (ptrval) state to (ptrval)
[    4.055652] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=128, diff=1, hw=0 hw_last=0
[    4.068493] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state (ptrval)
[    4.081226] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=129, diff=1, hw=0 hw_last=0
[    4.093954] [drm:drm_mode_object_put] OBJ ID: 37 (2)
[    4.106586] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=130, diff=1, hw=0 hw_last=0
[    4.119224] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1280x720] for [CRTC:30:crtc-0] state (ptrval)
[    4.131619] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=131, diff=1, hw=0 hw_last=0
[    4.144194] [drm:drm_atomic_set_fb_for_plane] Set [FB:36] for [PLANE:28:plane-0] state (ptrval)
[    4.156694] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=132, diff=1, hw=0 hw_last=0
[    4.169190] [drm:drm_mode_object_get] OBJ ID: 36 (3)
[    4.181611] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=133, diff=1, hw=0 hw_last=0
[    4.194069] [drm:drm_mode_object_put] OBJ ID: 36 (4)
[    4.206332] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=134, diff=1, hw=0 hw_last=0
[    4.218793] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to (ptrval)
[    4.231056] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=135, diff=1, hw=0 hw_last=0
[    4.243501] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    4.256004] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=136, diff=1, hw=0 hw_last=0
[    4.268486] [drm:drm_mode_object_get] OBJ ID: 33 (6)
[    4.280802] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=137, diff=1, hw=0 hw_last=0
[    4.293288] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] (ptrval) state to (ptrval)
[    4.305578] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=138, diff=1, hw=0 hw_last=0
[    4.318053] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    4.330538] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=139, diff=1, hw=0 hw_last=0
[    4.343036] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [NOCRTC]
[    4.355342] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=140, diff=1, hw=0 hw_last=0
[    4.367841] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[    4.380331] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=141, diff=1, hw=0 hw_last=0
[    4.392844] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state (ptrval) to [CRTC:30:crtc-0]
[    4.405158] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=142, diff=1, hw=0 hw_last=0
[    4.417655] [drm:drm_atomic_check_only] checking (ptrval)
[    4.430211] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=143, diff=1, hw=0 hw_last=0
[    4.442787] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[    4.455145] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=144, diff=1, hw=0 hw_last=0
[    4.467703] [drm:drm_atomic_helper_check_modeset] [CONNECTOR:33:HDMI-A-1] keeps [ENCODER:32:TMDS-32], now on [CRTC:30:crtc-0]
[    4.480213] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=145, diff=1, hw=0 hw_last=0
[    4.492771] [drm:drm_atomic_commit] committing (ptrval)
[    4.505429] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=146, diff=1, hw=0 hw_last=0
[    4.518113] [drm:drm_calc_timestamping_constants] crtc 30: hwmode: htotal 1650, vtotal 750, vdisplay 720
[    4.530546] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=147, diff=1, hw=0 hw_last=0
[    4.543187] [drm:drm_calc_timestamping_constants] crtc 30: clock 74250 kHz framedur 16666666 linedur 22222
[    4.555817] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=148, diff=1, hw=0 hw_last=0
[    4.568466] rockchip-vop 1010c000.vop: [drm:vop_plane_atomic_update] Warning: not support src_alpha_ctl
[    4.581082] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=149, diff=1, hw=0 hw_last=0
[    4.619109] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=150, diff=1, hw=0 hw_last=0
[    4.631614] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=151, diff=1, hw=0 hw_last=0
[    4.631629] [drm:drm_atomic_state_default_clear] Clearing atomic state (ptrval)
[    4.631646] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[    4.643836] usb usb2: SerialNumber: 101c0000.usb
[    4.644651] hub 2-0:1.0: USB hub found
[    4.655983] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[    4.656002] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=152, diff=1, hw=0 hw_last=0
[    4.656012] [drm:drm_mode_object_put] OBJ ID: 37 (1)
[    4.656030] [drm:drm_mode_object_put] OBJ ID: 36 (3)
[    4.656044] [drm:__drm_atomic_state_free] Freeing atomic state (ptrval)
[    4.667994] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=153, diff=1, hw=0 hw_last=0
[    4.691236] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=154, diff=1, hw=0 hw_last=0
[    4.702663] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=155, diff=1, hw=0 hw_last=0
[    4.725661] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=156, diff=1, hw=0 hw_last=0
[    4.736755] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=157, diff=1, hw=0 hw_last=0
[    4.747774] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=158, diff=1, hw=0 hw_last=0
[    4.769795] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=159, diff=1, hw=0 hw_last=0
[    4.790728] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=160, diff=1, hw=0 hw_last=0
[    4.800782] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=161, diff=1, hw=0 hw_last=0
[    4.820010] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=162, diff=1, hw=0 hw_last=0
[    4.838135] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=163, diff=1, hw=0 hw_last=0
[    4.855136] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=164, diff=1, hw=0 hw_last=0
[    4.863294] hub 2-0:1.0: 1 port detected
[    4.871181] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=165, diff=1, hw=0 hw_last=0
[    4.880155] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    4.888209] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=166, diff=1, hw=0 hw_last=0
[    4.896385] ehci-platform: EHCI generic platform driver
[    4.904388] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=167, diff=1, hw=0 hw_last=0
[    4.912786] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    4.920862] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=168, diff=1, hw=0 hw_last=0
[    4.929059] ohci-platform: OHCI generic platform driver
[    4.937077] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=169, diff=1, hw=0 hw_last=0
[    4.945560] usbcore: registered new interface driver usb-storage
[    4.953690] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=170, diff=1, hw=0 hw_last=0
[    4.962081] usbcore: registered new interface driver cp210x
[    4.970248] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=171, diff=1, hw=0 hw_last=0
[    4.978628] usbserial: USB Serial support registered for cp210x
[    4.986789] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=172, diff=1, hw=0 hw_last=0
[    4.995155] usbcore: registered new interface driver ftdi_sio
[    5.003601] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=173, diff=1, hw=0 hw_last=0
[    5.012539] usbserial: USB Serial support registered for FTDI USB Serial Device
[    5.021397] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=174, diff=1, hw=0 hw_last=0
[    5.030639] usbcore: registered new interface driver pl2303
[    5.039764] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=175, diff=1, hw=0 hw_last=0
[    5.049254] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=176, diff=1, hw=0 hw_last=0
[    5.058633] usbserial: USB Serial support registered for pl2303
[    5.067861] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=177, diff=1, hw=0 hw_last=0
[    5.077360] i2c /dev entries driver
[    5.086839] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=178, diff=1, hw=0 hw_last=0
[    5.097672] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=179, diff=1, hw=0 hw_last=0
[    5.109041] Synopsys Designware Multimedia Card Interface Driver
[    5.118892] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=180, diff=1, hw=0 hw_last=0
[    5.130169] dwmmc_rockchip 10214000.dwmmc: Using external DMA controller.
[    5.135463] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=181, diff=1, hw=0 hw_last=0
[    5.140918] dwmmc_rockchip 10214000.dwmmc: Version ID is 240a
[    5.146456] dwmmc_rockchip 10214000.dwmmc: DW MMC controller at irq 25,32 bit host data width,256 deep fifo
[    5.152113] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=182, diff=1, hw=0 hw_last=0
[    5.158065] dwmmc_rockchip 10214000.dwmmc: Linked as a consumer to regulator.4
[    5.170490] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=183, diff=1, hw=0 hw_last=0
[    5.184475] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=184, diff=1, hw=0 hw_last=0
[    5.195802] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=185, diff=1, hw=0 hw_last=0
[    5.207138] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=186, diff=1, hw=0 hw_last=0
[    5.218470] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=187, diff=1, hw=0 hw_last=0
[    5.229799] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=188, diff=1, hw=0 hw_last=0
[    5.241133] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=189, diff=1, hw=0 hw_last=0
[    5.252466] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=190, diff=1, hw=0 hw_last=0
[    5.263800] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=191, diff=1, hw=0 hw_last=0
[    5.275133] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=192, diff=1, hw=0 hw_last=0
[    5.284159] mmc_host mmc0: Bus speed (slot 0) = 49500000Hz (slot req 400000Hz, actual 399193HZ div = 62)
[    5.289200] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=193, diff=1, hw=0 hw_last=0
[    5.297801] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=194, diff=1, hw=0 hw_last=0
[    5.306568] dwmmc_rockchip 10218000.dwmmc: Using external DMA controller.
[    5.311462] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=195, diff=1, hw=0 hw_last=0
[    5.316434] dwmmc_rockchip 10218000.dwmmc: Version ID is 240a
[    5.321282] dwmmc_rockchip 10218000.dwmmc: DW MMC controller at irq 26,32 bit host data width,256 deep fifo
[    5.326140] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=196, diff=1, hw=0 hw_last=0
[    5.331049] dwmmc_rockchip 10218000.dwmmc: Linked as a consumer to regulator.5
[    5.335912] mmc_host mmc1: card is non-removable.
[    5.340607] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=197, diff=1, hw=0 hw_last=0
[    5.353239] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=198, diff=1, hw=0 hw_last=0
[    5.367233] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=199, diff=1, hw=0 hw_last=0
[    5.381194] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=200, diff=1, hw=0 hw_last=0
[    5.395192] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=201, diff=1, hw=0 hw_last=0
[    5.407327] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=202, diff=1, hw=0 hw_last=0
[    5.418658] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=203, diff=1, hw=0 hw_last=0
[    5.423473] usb 2-1: new high-speed USB device number 2 using dwc2
[    5.429993] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=204, diff=1, hw=0 hw_last=0
[    5.441324] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=205, diff=1, hw=0 hw_last=0
[    5.452656] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=206, diff=1, hw=0 hw_last=0
[    5.463661] random: fast init done
[    5.467405] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=207, diff=1, hw=0 hw_last=0
[    5.475169] mmc_host mmc1: Bus speed (slot 0) = 6187500Hz (slot req 400000Hz, actual 386718HZ div = 8)
[    5.479038] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=208, diff=1, hw=0 hw_last=0
[    5.484569] mmc_host mmc0: Bus speed (slot 0) = 49500000Hz (slot req 50000000Hz, actual 49500000HZ div = 0)
[    5.488443] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=209, diff=1, hw=0 hw_last=0
[    5.492412] mmc0: new high speed SDHC card at address 0007
[    5.496571] mmcblk0: mmc0:0007 SD8GB 7.42 GiB 
[    5.500342] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=210, diff=1, hw=0 hw_last=0
[    5.504914] usbcore: registered new interface driver usbhid
[    5.508842] usbhid: USB HID core driver
[    5.512797] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=211, diff=1, hw=0 hw_last=0
[    5.518870] NET: Registered protocol family 10
[    5.523210] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=212, diff=1, hw=0 hw_last=0
[    5.528512]  mmcblk0: p1
[    5.528830] Segment Routing with IPv6
[    5.538012] NET: Registered protocol family 17
[    5.541823] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=213, diff=1, hw=0 hw_last=0
[    5.542905] ThumbEE CPU extension supported.
[    5.552554] Registering SWP/SWPB emulation handler
[    5.553677] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    5.562103] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=214, diff=1, hw=0 hw_last=0
[    5.568396] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    5.573907] clk: Not disabling unused clocks
[    5.574212] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=215, diff=1, hw=0 hw_last=0
[    5.578865] ALSA device list:
[    5.585000] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    5.588466]   No soundcards found.
[    5.588488] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=216, diff=1, hw=0 hw_last=0
[    5.604601] Freeing unused kernel memory: 2048K
[    5.606067] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    5.627207] mmc_host mmc1: Bus speed (slot 0) = 6187500Hz (slot req 50000000Hz, actual 6187500HZ div = 0)
[    5.635109] mmc1: new SDIO card at address 0001
[    5.643620] Run /init as init process
[    5.655066] >>> init from rkfs <<<
[    5.683742] usb 2-1: New USB device found, idVendor=1a40, idProduct=0101, bcdDevice= 1.11
[    5.689035] usb 2-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    5.694213] usb 2-1: Product: USB 2.0 Hub
[    5.699795] hub 2-1:1.0: USB hub found
[    5.705138] hub 2-1:1.0: 4 ports detected
[    5.719619] EXT4-fs (mmcblk0p1): warning: mounting fs with errors, running e2fsck is recommended
[    5.820732] EXT4-fs (mmcblk0p1): recovery complete
[    5.825863] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
[    6.026300] usb 2-1.1: new low-speed USB device number 3 using dwc2
[    6.181888] usb 2-1.1: New USB device found, idVendor=413c, idProduct=2003, bcdDevice= 3.01
[    6.201689] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.221052] usb 2-1.1: Product: Dell USB Keyboard
[    6.240277] usb 2-1.1: Manufacturer: Dell
[    6.266171] input: Dell Dell USB Keyboard as /devices/platform/101c0000.usb/usb2/2-1/2-1.1/2-1.1:1.0/0003:413C:2003.0001/input/input0
[    6.334120] hid-generic 0003:413C:2003.0001: input: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-101c0000.usb-1.1/input0
[    6.446335] usb 2-1.2: new full-speed USB device number 4 using dwc2
[    6.596152] usb 2-1.2: New USB device found, idVendor=0fe6, idProduct=9700, bcdDevice= 1.01
[    6.615951] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    6.635296] usb 2-1.2: Product: USB 2.0 10/100M Ethernet Adaptor
[    6.671202] dm9601 2-1.2:1.0 eth0: register 'dm9601' at usb-101c0000.usb-1.2, Davicom DM96xx USB 10/100 Ethernet, 00:e0:4c:53:44:58
[    6.773469] usb 2-1.3: new full-speed USB device number 5 using dwc2
[    6.884885] random: crng init done
[    6.906428] usb 2-1.3: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[    6.911458] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    6.916493] usb 2-1.3: Product: CP2102 USB to UART Bridge Controller
[    6.921494] usb 2-1.3: Manufacturer: Silicon Labs
[    6.926405] usb 2-1.3: SerialNumber: 0001
[    6.932422] cp210x 2-1.3:1.0: cp210x converter detected
[    6.939763] usb 2-1.3: cp210x converter now attached to ttyUSB0
[    9.689375] [drm:vblank_disable_fn] disabling vblank on crtc 0

[    9.689392] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=217, diff=0, hw=0 hw_last=0

[    9.695784] printk: console [ttyUSB0] enabled
/ # 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: putty-2018-11-28-18-56-19-with-tty0-no-revert-DRM-dumb-buffer-TEST9.log --]
[-- Type: text/x-log; name="putty-2018-11-28-18-56-19-with-tty0-no-revert-DRM-dumb-buffer-TEST9.log", Size: 13796 bytes --]

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.11.28 18:56:19 =~=~=~=~=~=~=~=~=~=~=~=

/ # ./DRM-dumb-buffer
[  430.237367] [drm:drm_stub_open] 
[  430.255295] [drm:drm_open] pid = 61, minor = 0
[  430.259955] [drm:drm_open] 
[  430.264784] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_SET_MASTER
[  430.269619] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[  430.274341] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES

fb: 0, crtc: 1, conn: 1, enc: 1

[  430.279433] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[  430.283965] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1]
[  430.288482] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] status updated from connected to disconnected
[  430.293097] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] disconnected
[  430.297607] [drm:drm_mode_object_put] OBJ ID: 38 (1)
[  430.302080] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[  430.306998] [drm:drm_sysfs_hotplug_event] generating hotplug event
[  430.311466] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETCONNECTOR
[  430.315911] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1]
[  430.320311] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] disconnected
[  430.324641] [drm:drm_mode_object_put] OBJ ID: 33 (5)

Not connected

[  430.329054] [drm:drm_ioctl] pid=61, dev=0xe200, auth=1, DRM_IOCTL_DROP_MASTER
[  440.400668] [drm:drm_release] open_count = 1
[  440.417372] [drm:drm_file_free] pid = 61, device = 0xe200, open_count = 1
[  440.433970] [drm:drm_lastclose] 
[  440.449874] [drm:drm_atomic_state_init] Allocated atomic state cf158fa8
[  440.466151] [drm:drm_mode_object_get] OBJ ID: 36 (2)
[  440.482147] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] d7aa5afc state to cf158fa8
[  440.498314] [drm:drm_mode_object_get] OBJ ID: 35 (1)
[  440.513755] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] fb81865f state to cf158fa8
[  440.529706] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] afee3753 state to cf158fa8
[  440.545566] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state afee3753
[  440.561525] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] d2593213 state to cf158fa8
[  440.577610] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state d2593213
[  440.593768] [drm:drm_mode_object_put] OBJ ID: 35 (2)
[  440.609848] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1280x720] for [CRTC:30:crtc-0] state fb81865f
[  440.626675] [drm:drm_atomic_set_fb_for_plane] Set [FB:36] for [PLANE:28:plane-0] state d7aa5afc
[  440.643560] [drm:drm_mode_object_get] OBJ ID: 36 (3)
[  440.660188] [drm:drm_mode_object_put] OBJ ID: 36 (4)
[  440.676327] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to cf158fa8
[  440.692952] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[  440.709183] [drm:drm_mode_object_get] OBJ ID: 33 (6)
[  440.725221] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] 6386fdf3 state to cf158fa8
[  440.741770] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[  440.757751] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state 6386fdf3 to [NOCRTC]
[  440.774601] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[  440.791431] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state 6386fdf3 to [CRTC:30:crtc-0]
[  440.809045] [drm:drm_atomic_check_only] checking cf158fa8
[  440.826652] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[  440.844972] [drm:drm_atomic_helper_check_modeset] [CONNECTOR:33:HDMI-A-1] keeps [ENCODER:32:TMDS-32], now on [CRTC:30:crtc-0]
[  440.863958] [drm:drm_atomic_commit] committing cf158fa8
[  440.882375] [drm:drm_calc_timestamping_constants] crtc 30: hwmode: htotal 1650, vtotal 750, vdisplay 720
[  440.901358] [drm:drm_calc_timestamping_constants] crtc 30: clock 74250 kHz framedur 16666666 linedur 22222
[  440.920420] rockchip-vop 1010c000.vop: [drm:vop_plane_atomic_update] Warning: not support src_alpha_ctl
[  440.939533] [drm:drm_vblank_enable] enabling vblank on crtc 0, ret: 0
[  440.958901] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=217, diff=0, hw=0 hw_last=0

[  441.034797] ------------[ cut here ]------------

[  441.054739] WARNING: CPU: 0 PID: 61 at drivers/gpu/drm/drm_atomic_helper.c:1406 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0
[  441.060098] [CRTC:30:crtc-0] vblank wait timed out
[  441.065433] Modules linked in:
[  441.070700] CPU: 0 PID: 61 Comm: DRM-dumb-buffer Not tainted 4.20.0-rc1-g9eb245c5e #52
[  441.075967] Hardware name: Rockchip (Device Tree)
[  441.081204] [<c01104a0>] (unwind_backtrace) from [<c010c868>] (show_stack+0x10/0x14)
[  441.086534] [<c010c868>] (show_stack) from [<c069e5d8>] (dump_stack+0x88/0x9c)
[  441.091876] [<c069e5d8>] (dump_stack) from [<c0122784>] (__warn+0xf8/0x110)
[  441.097199] [<c0122784>] (__warn) from [<c01227e4>] (warn_slowpath_fmt+0x48/0x6c)
[  441.102550] [<c01227e4>] (warn_slowpath_fmt) from [<c0445b04>] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0)
[  441.107991] [<c0445b04>] (drm_atomic_helper_wait_for_vblanks.part.1) from [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm+0x17c/0x194)
[  441.113542] [<c0477fec>] (rockchip_atomic_helper_commit_tail_rpm) from [<c0447418>] (commit_tail+0x40/0x6c)
[  441.119114] [<c0447418>] (commit_tail) from [<c0447508>] (drm_atomic_helper_commit+0xbc/0x128)
[  441.124709] [<c0447508>] (drm_atomic_helper_commit) from [<c0449b38>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
[  441.130356] [<c0449b38>] (restore_fbdev_mode_atomic) from [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
[  441.136084] [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0451614>] (drm_lastclose+0x30/0xcc)
[  441.141854] [<c0451614>] (drm_lastclose) from [<c045177c>] (drm_release+0xcc/0xfc)
[  441.147598] [<c045177c>] (drm_release) from [<c024fe44>] (__fput+0x88/0x1c4)
[  441.153288] [<c024fe44>] (__fput) from [<c013fc98>] (task_work_run+0xa4/0xc8)
[  441.158956] [<c013fc98>] (task_work_run) from [<c0125c38>] (do_exit+0x348/0xa60)
[  441.164603] [<c0125c38>] (do_exit) from [<c0127218>] (do_group_exit+0x3c/0xd0)
[  441.170332] [<c0127218>] (do_group_exit) from [<c01272bc>] (__wake_up_parent+0x0/0x18)

[  441.176196] ---[ end trace c3cab8e623731921 ]---

[  441.181949] [drm:drm_atomic_state_default_clear] Clearing atomic state cf158fa8
[  441.187750] [drm:drm_mode_object_put] OBJ ID: 33 (6)
[  441.193527] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[  441.199117] [drm:drm_mode_object_put] OBJ ID: 35 (1)
[  441.204595] [drm:drm_mode_object_put] OBJ ID: 36 (3)
[  441.209909] [drm:__drm_atomic_state_free] Freeing atomic state cf158fa8
[  441.215472] [drm:drm_fb_helper_hotplug_event.part.9] 
[  441.220655] [drm:drm_setup_crtcs] 
[  441.225766] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1]
[  441.230975] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:33:HDMI-A-1] disconnected
[  441.236080] [drm:drm_setup_crtcs] No connectors reported connected with modes
[  441.241066] [drm:drm_setup_crtcs] connector 33 enabled? no
[  441.246036] [drm:drm_setup_crtcs] picking CRTCs for 1280x720 config
[  441.251059] [drm:drm_mode_object_put] OBJ ID: 33 (4)
[  441.255880] [drm:drm_atomic_state_init] Allocated atomic state c39a433a
[  441.260611] [drm:drm_mode_object_get] OBJ ID: 36 (2)
[  441.265292] [drm:drm_atomic_get_plane_state] Added [PLANE:28:plane-0] a75a69ad state to c39a433a
[  441.269907] [drm:drm_mode_object_get] OBJ ID: 37 (1)
[  441.274382] [drm:drm_atomic_get_crtc_state] Added [CRTC:30:crtc-0] 4d69d25f state to c39a433a
[  441.278991] [drm:drm_atomic_get_plane_state] Added [PLANE:29:plane-1] 51b39695 state to c39a433a
[  441.283844] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:29:plane-1] state 51b39695
[  441.288418] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-2] 2459b2ba state to c39a433a
[  441.292993] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:31:plane-2] state 2459b2ba
[  441.297546] [drm:drm_mode_object_put] OBJ ID: 37 (2)
[  441.302073] [drm:drm_atomic_set_mode_for_crtc] Set [NOMODE] for [CRTC:30:crtc-0] state 4d69d25f
[  441.306699] [drm:drm_atomic_set_crtc_for_plane] Link [PLANE:28:plane-0] state a75a69ad to [NOCRTC]
[  441.311274] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for [PLANE:28:plane-0] state a75a69ad
[  441.315762] [drm:drm_mode_object_put] OBJ ID: 36 (3)
[  441.320079] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to c39a433a
[  441.324535] [drm:drm_mode_object_get] OBJ ID: 33 (4)
[  441.328905] [drm:drm_mode_object_get] OBJ ID: 33 (5)
[  441.333096] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:33:HDMI-A-1] 124fc64d state to c39a433a
[  441.337337] [drm:drm_mode_object_put] OBJ ID: 33 (5)
[  441.341470] [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:33:HDMI-A-1] state 124fc64d to [NOCRTC]
[  441.345748] [drm:drm_atomic_check_only] checking c39a433a
[  441.349991] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] mode changed
[  441.354241] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] enable changed
[  441.358433] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] active changed
[  441.362539] [drm:drm_atomic_helper_check_modeset] Updating routing for [CONNECTOR:33:HDMI-A-1]
[  441.366627] [drm:drm_atomic_helper_check_modeset] Disabling [CONNECTOR:33:HDMI-A-1]
[  441.370649] [drm:drm_atomic_helper_check_modeset] [CRTC:30:crtc-0] needs all connectors, enable: n, active: n
[  441.374720] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:30:crtc-0] to c39a433a
[  441.378921] [drm:drm_atomic_add_affected_planes] Adding all current planes for [CRTC:30:crtc-0] to c39a433a
[  441.383234] [drm:drm_atomic_commit] committing c39a433a

[  451.674799] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:30:crtc-0] flip_done timed out
[  461.913900] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:33:HDMI-A-1] flip_done timed out
[  472.154303] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:28:plane-0] flip_done timed out

[  472.172531] [drm:drm_atomic_helper_commit_modeset_disables] disabling [ENCODER:32:TMDS-32]

[  472.190350] rk3066hdmi-rockchip 10116000.hdmi: mode         :16
[  472.208821] rk3066hdmi-rockchip 10116000.hdmi: previous_mode:0
[  472.226471] rk3066hdmi-rockchip 10116000.hdmi: 0: next_mode    :16
[  472.243955] rk3066hdmi-rockchip 10116000.hdmi: set HDMI_SYS_POWER_MODE_A-B-E

[  472.261494] [drm:drm_atomic_helper_commit_modeset_disables] disabling [CRTC:30:crtc-0]

[  472.279305] ------------[ cut here ]------------

[  472.297033] WARNING: CPU: 0 PID: 61 at drivers/gpu/drm/rockchip/rockchip_drm_vop.c:594 vop_crtc_atomic_disable+0x2e4/0x30c
[  472.315624] Modules linked in:
[  472.333867] CPU: 0 PID: 61 Comm: DRM-dumb-buffer Tainted: G        W         4.20.0-rc1-g9eb245c5e #52
[  472.352496] Hardware name: Rockchip (Device Tree)
[  472.370803] [<c01104a0>] (unwind_backtrace) from [<c010c868>] (show_stack+0x10/0x14)
[  472.389406] [<c010c868>] (show_stack) from [<c069e5d8>] (dump_stack+0x88/0x9c)
[  472.407957] [<c069e5d8>] (dump_stack) from [<c0122784>] (__warn+0xf8/0x110)
[  472.426321] [<c0122784>] (__warn) from [<c01228b4>] (warn_slowpath_null+0x40/0x48)
[  472.444716] [<c01228b4>] (warn_slowpath_null) from [<c0479bf8>] (vop_crtc_atomic_disable+0x2e4/0x30c)
[  472.463295] [<c0479bf8>] (vop_crtc_atomic_disable) from [<c0447058>] (drm_atomic_helper_commit_modeset_disables+0x36c/0x444)
[  472.482190] [<c0447058>] (drm_atomic_helper_commit_modeset_disables) from [<c0477f20>] (rockchip_atomic_helper_commit_tail_rpm+0xb0/0x194)
[  472.501532] [<c0477f20>] (rockchip_atomic_helper_commit_tail_rpm) from [<c0447418>] (commit_tail+0x40/0x6c)
[  472.520996] [<c0447418>] (commit_tail) from [<c0447508>] (drm_atomic_helper_commit+0xbc/0x128)
[  472.540476] [<c0447508>] (drm_atomic_helper_commit) from [<c0449b38>] (restore_fbdev_mode_atomic+0x1cc/0x1dc)
[  472.560016] [<c0449b38>] (restore_fbdev_mode_atomic) from [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0)
[  472.579726] [<c044d34c>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c044d3c8>] (drm_fb_helper_set_par+0x30/0x54)
[  472.600060] [<c044d3c8>] (drm_fb_helper_set_par) from [<c044d2b4>] (drm_fb_helper_hotplug_event.part.9+0x90/0xa8)
[  472.620365] [<c044d2b4>] (drm_fb_helper_hotplug_event.part.9) from [<c044d37c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x84/0xa0)
[  472.640895] [<c044d37c>] (drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0451614>] (drm_lastclose+0x30/0xcc)
[  472.661338] [<c0451614>] (drm_lastclose) from [<c045177c>] (drm_release+0xcc/0xfc)
[  472.681648] [<c045177c>] (drm_release) from [<c024fe44>] (__fput+0x88/0x1c4)
[  472.701942] [<c024fe44>] (__fput) from [<c013fc98>] (task_work_run+0xa4/0xc8)
[  472.722529] [<c013fc98>] (task_work_run) from [<c0125c38>] (do_exit+0x348/0xa60)
[  472.743507] [<c0125c38>] (do_exit) from [<c0127218>] (do_group_exit+0x3c/0xd0)
[  472.764508] [<c0127218>] (do_group_exit) from [<c01272bc>] (__wake_up_parent+0x0/0x18)

[  472.785768] ---[ end trace c3cab8e623731922 ]---

[  472.806923] [drm:drm_crtc_vblank_off] crtc 0, vblank enabled 1, inmodeset 0
[  472.828010] [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=217, diff=0, hw=0 hw_last=0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0001-revert-rockchip_atomic_wait_for_complete.patch --]
[-- Type: text/x-patch; name="0001-revert-rockchip_atomic_wait_for_complete.patch", Size: 8974 bytes --]

From d223ef33f192a14809182e1413da5b93881b4434 Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Sat, 24 Nov 2018 21:10:45 +0100
Subject: [PATCH] revert rockchip_atomic_wait_for_complete

This patch reverts the rockchip_atomic_wait_for_complete function.
The rk3066 doesn't support a vblank counter.
The drm helper for wait for vblank gives a timeout crash in combination
with the rk3066 and is not reliable.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c |  19 ++++++
 drivers/gpu/drm/rockchip/rockchip_drm_drv.h |   8 +++
 drivers/gpu/drm/rockchip/rockchip_drm_fb.c  | 101 +++++++++++++++++++++++++++-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c |  19 ++++++
 4 files changed, 146 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 4a69e7a4e..d53e3fc81 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -78,6 +78,25 @@ void rockchip_drm_dma_detach_device(struct drm_device *drm_dev,
 	iommu_detach_device(domain, dev);
 }
 
+int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
+				 const struct rockchip_crtc_funcs *crtc_funcs)
+{
+	int pipe = drm_crtc_index(crtc);
+	struct rockchip_drm_private *priv = crtc->dev->dev_private;
+	if (pipe >= ROCKCHIP_MAX_CRTC)
+		return -EINVAL;
+	priv->crtc_funcs[pipe] = crtc_funcs;
+	return 0;
+}
+void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc)
+{
+	int pipe = drm_crtc_index(crtc);
+	struct rockchip_drm_private *priv = crtc->dev->dev_private;
+	if (pipe >= ROCKCHIP_MAX_CRTC)
+		return;
+	priv->crtc_funcs[pipe] = NULL;
+}
+
 static int rockchip_drm_init_iommu(struct drm_device *drm_dev)
 {
 	struct rockchip_drm_private *private = drm_dev->dev_private;
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index d03890314..3f7306325 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -32,6 +32,10 @@ struct drm_device;
 struct drm_connector;
 struct iommu_domain;
 
+struct rockchip_crtc_funcs {
+	void (*wait_for_update)(struct drm_crtc *crtc);
+};
+
 struct rockchip_crtc_state {
 	struct drm_crtc_state base;
 	int output_type;
@@ -51,6 +55,7 @@ struct rockchip_crtc_state {
 struct rockchip_drm_private {
 	struct drm_fb_helper fbdev_helper;
 	struct drm_gem_object *fbdev_bo;
+	const struct rockchip_crtc_funcs *crtc_funcs[ROCKCHIP_MAX_CRTC];
 	struct iommu_domain *domain;
 	struct mutex mm_lock;
 	struct drm_mm mm;
@@ -58,6 +63,9 @@ struct rockchip_drm_private {
 	struct mutex psr_list_lock;
 };
 
+int rockchip_register_crtc_funcs(struct drm_crtc *crtc,
+				 const struct rockchip_crtc_funcs *crtc_funcs);
+void rockchip_unregister_crtc_funcs(struct drm_crtc *crtc);
 int rockchip_drm_dma_attach_device(struct drm_device *drm_dev,
 				   struct device *dev);
 void rockchip_drm_dma_detach_device(struct drm_device *drm_dev,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
index ea18cb2a7..69a2b50af 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c
@@ -162,6 +162,105 @@ rockchip_drm_psr_inhibit_put_state(struct drm_atomic_state *state)
 	drm_for_each_encoder_mask(encoder, state->dev, encoder_mask)
 		rockchip_drm_psr_inhibit_put(encoder);
 }
+ 
+static void rockchip_crtc_wait_for_update(struct drm_crtc *crtc)
+{
+	struct rockchip_drm_private *priv = crtc->dev->dev_private;
+	int pipe = drm_crtc_index(crtc);
+	const struct rockchip_crtc_funcs *crtc_funcs = priv->crtc_funcs[pipe];
+
+	if (crtc_funcs && crtc_funcs->wait_for_update)
+		crtc_funcs->wait_for_update(crtc);
+}
+
+/*
+ * We can't use drm_atomic_helper_wait_for_vblanks() because rk3288 and rk3066
+ * have hardware counters for neither vblanks nor scanlines, which results in
+ * a race where:
+ *				| <-- HW vsync irq and reg take effect
+ *	       plane_commit --> |
+ *	get_vblank and wait --> |
+ *				| <-- handle_vblank, vblank->count + 1
+ *		 cleanup_fb --> |
+ *		iommu crash --> |
+ *				| <-- HW vsync irq and reg take effect
+ *
+ * This function is equivalent but uses rockchip_crtc_wait_for_update() instead
+ * of waiting for vblank_count to change.
+ */
+
+#define for_each_crtc_in_state(__state, crtc, crtc_state, __i)	\
+	for ((__i) = 0;						\
+	     (__i) < (__state)->dev->mode_config.num_crtc &&	\
+	     ((crtc) = (__state)->crtcs[__i].ptr,			\
+	     (crtc_state) = (__state)->crtcs[__i].state, 1);	\
+	     (__i)++)						\
+		for_each_if (crtc_state)
+
+#define for_each_plane_in_state(__state, plane, plane_state, __i)		\
+	for ((__i) = 0;							\
+	     (__i) < (__state)->dev->mode_config.num_total_plane &&	\
+	     ((plane) = (__state)->planes[__i].ptr,				\
+	     (plane_state) = (__state)->planes[__i].state, 1);		\
+	     (__i)++)							\
+		for_each_if (plane_state)
+
+bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev,
+					   struct drm_atomic_state *old_state,
+					   struct drm_crtc *crtc)
+{
+	struct drm_plane *plane;
+	struct drm_plane_state *old_plane_state;
+	int i;
+
+	for_each_plane_in_state(old_state, plane, old_plane_state, i) {
+		if (plane->state->crtc != crtc &&
+		    old_plane_state->crtc != crtc)
+			continue;
+
+		if (plane->state->fb != old_plane_state->fb)
+			return true;
+	}
+
+	return false;
+}
+
+static void
+rockchip_atomic_wait_for_complete(struct drm_device *dev, struct drm_atomic_state *old_state)
+{
+	struct drm_crtc_state *old_crtc_state;
+	struct drm_crtc *crtc;
+	int i, ret;
+
+	for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) {
+		/* No one cares about the old state, so abuse it for tracking
+		 * and store whether we hold a vblank reference (and should do a
+		 * vblank wait) in the ->enable boolean.
+		 */
+		old_crtc_state->enable = false;
+
+		if (!crtc->state->active)
+			continue;
+
+		if (!drm_atomic_helper_framebuffer_changed(dev,
+				old_state, crtc))
+			continue;
+
+		ret = drm_crtc_vblank_get(crtc);
+		if (ret != 0)
+			continue;
+
+		old_crtc_state->enable = true;
+	}
+
+	for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) {
+		if (!old_crtc_state->enable)
+			continue;
+
+		rockchip_crtc_wait_for_update(crtc);
+		drm_crtc_vblank_put(crtc);
+	}
+}
 
 static void
 rockchip_atomic_helper_commit_tail_rpm(struct drm_atomic_state *old_state)
@@ -181,7 +280,7 @@ rockchip_atomic_helper_commit_tail_rpm(struct drm_atomic_state *old_state)
 
 	drm_atomic_helper_commit_hw_done(old_state);
 
-	drm_atomic_helper_wait_for_vblanks(dev, old_state);
+	rockchip_atomic_wait_for_complete(dev, old_state);
 
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 0c35a88e3..76bec1bc6 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -102,6 +102,7 @@ struct vop {
 	bool is_enabled;
 
 	struct completion dsp_hold_completion;
+	struct completion wait_update_complete;
 
 	/* protected by dev->event_lock */
 	struct drm_pending_vblank_event *event;
@@ -866,6 +867,18 @@ static void vop_crtc_disable_vblank(struct drm_crtc *crtc)
 
 	spin_unlock_irqrestore(&vop->irq_lock, flags);
 }
+ 
+static void vop_crtc_wait_for_update(struct drm_crtc *crtc)
+{
+	struct vop *vop = to_vop(crtc);
+
+	reinit_completion(&vop->wait_update_complete);
+	WARN_ON(!wait_for_completion_timeout(&vop->wait_update_complete, 100));
+}
+
+static const struct rockchip_crtc_funcs private_crtc_funcs = {
+	.wait_for_update = vop_crtc_wait_for_update,
+};
 
 static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
 				const struct drm_display_mode *mode,
@@ -1198,6 +1211,9 @@ static void vop_handle_vblank(struct vop *vop)
 	}
 	spin_unlock(&drm->event_lock);
 
+	if (!completion_done(&vop->wait_update_complete))
+		complete(&vop->wait_update_complete);
+
 	if (test_and_clear_bit(VOP_PENDING_FB_UNREF, &vop->pending))
 		drm_flip_work_commit(&vop->fb_unref_work, system_unbound_wq);
 }
@@ -1357,8 +1373,10 @@ static int vop_create_crtc(struct vop *vop)
 			   vop_fb_unref_worker);
 
 	init_completion(&vop->dsp_hold_completion);
+	init_completion(&vop->wait_update_complete);
 	init_completion(&vop->line_flag_completion);
 	crtc->port = port;
+	rockchip_register_crtc_funcs(crtc, &private_crtc_funcs);
 
 	return 0;
 
@@ -1377,6 +1395,7 @@ static void vop_destroy_crtc(struct vop *vop)
 	struct drm_device *drm_dev = vop->drm_dev;
 	struct drm_plane *plane, *tmp;
 
+	rockchip_unregister_crtc_funcs(crtc);
 	of_node_put(crtc->port);
 
 	/*
-- 
2.11.0


[-- Attachment #6: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
                       ` (5 preceding siblings ...)
  2018-11-28 20:17     ` Johan Jonker
@ 2018-11-30 18:53     ` Johan Jonker
  2018-12-10  2:53       ` Tomasz Figa
  2018-12-13 17:31     ` Johan Jonker
  7 siblings, 1 reply; 11+ messages in thread
From: Johan Jonker @ 2018-11-30 18:53 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

Hi,

This is about a TV stick called MK808.
Enabled VOP an HDMI for rk3066.
Able to see pinguins at boot.

Found similar bug reports for rk3399.

http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020426.html
http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020427.html
http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020428.html


This patch doesn't seem to work for me.

+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -1601,6 +1601,8 @@ static void vop_unbind(struct device *dev, struct
device *master, void *data)
  {
         struct vop *vop = dev_get_drvdata(dev);

+       // Pair with the initial disable_irq()
+       enable_irq(vop->irq);

Compared to rk3399 the rk3066 doesn't seem to have iommu.

[    0.383273] rockchip-drm display-subsystem:
[drm:rockchip_drm_platform_probe] no iommu attached for /vop@1010c000,
using non-iommu buffers

Bugs as usual:


[    4.730057] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_flush]
*ERROR* VOP vblank IRQ stuck for 10 ms

[  596.422383] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[CRTC:30:crtc-0] flip_done timed out

[  606.661508] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[CONNECTOR:33:HDMI-A-1] flip_done timed out

[  616.901899] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
[PLANE:28:plane-0] flip_done timed out


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-30 18:53     ` Johan Jonker
@ 2018-12-10  2:53       ` Tomasz Figa
  0 siblings, 0 replies; 11+ messages in thread
From: Tomasz Figa @ 2018-12-10  2:53 UTC (permalink / raw)
  To: jbx9999; +Cc: Sean Paul, dri-devel


[-- Attachment #1.1: Type: text/plain, Size: 1985 bytes --]

Hi Johan,

It looks like VOP on RK3066 is not officially supported by upstream, so
what you're seeing is not a bug, it's just expected behavior, because
nobody had the time (or need) to enable support for your hardware yet.

I added all the people that may be potentially thinking to add support for
this SoC, but they have no obligation to do so. If you are in an urgent
need, I think you may have more luck asking your hardware or SoC vendor
directly.

Best regards,
Tomasz


On Sat, Dec 1, 2018 at 3:53 AM Johan Jonker <jbx9999@hotmail.com> wrote:

> Hi,
>
> This is about a TV stick called MK808.
> Enabled VOP an HDMI for rk3066.
> Able to see pinguins at boot.
>
> Found similar bug reports for rk3399.
>
> http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020426.html
> http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020427.html
> http://lists.infradead.org/pipermail/linux-rockchip/2018-April/020428.html
>
>
> This patch doesn't seem to work for me.
>
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -1601,6 +1601,8 @@ static void vop_unbind(struct device *dev, struct
> device *master, void *data)
>   {
>          struct vop *vop = dev_get_drvdata(dev);
>
> +       // Pair with the initial disable_irq()
> +       enable_irq(vop->irq);
>
> Compared to rk3399 the rk3066 doesn't seem to have iommu.
>
> [    0.383273] rockchip-drm display-subsystem:
> [drm:rockchip_drm_platform_probe] no iommu attached for /vop@1010c000,
> using non-iommu buffers
>
> Bugs as usual:
>
>
> [    4.730057] rockchip-vop 1010c000.vop: [drm:vop_crtc_atomic_flush]
> *ERROR* VOP vblank IRQ stuck for 10 ms
>
> [  596.422383] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> [CRTC:30:crtc-0] flip_done timed out
>
> [  606.661508] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> [CONNECTOR:33:HDMI-A-1] flip_done timed out
>
> [  616.901899] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR*
> [PLANE:28:plane-0] flip_done timed out
>
>
>

[-- Attachment #1.2: Type: text/html, Size: 2900 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
                       ` (6 preceding siblings ...)
  2018-11-30 18:53     ` Johan Jonker
@ 2018-12-13 17:31     ` Johan Jonker
  2018-12-14  3:29       ` Tomasz Figa
  7 siblings, 1 reply; 11+ messages in thread
From: Johan Jonker @ 2018-12-13 17:31 UTC (permalink / raw)
  To: Tomasz Figa; +Cc: Sean Paul, dri-devel

[-- Attachment #1: Type: text/plain, Size: 381 bytes --]

Bug fix? (PART 7)

A little bit of success here.
Penguins and other colors are on the screen.
DRM and FB old style seems to work with DVI-D.
Pure HDMI and sound not tested.
I think 'someone' forgot to add HCLK_HDMI to the pmu node.

Added a qos_hdmi idea. Let me know if that's OK?
Please advise what for qos_hdmi address I can use here.

Kind regards,

Johan Jonker

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-dts-rockchip-rk3066-add-qos_hdmi-and-HCLK_HDMI-to-pm.patch --]
[-- Type: text/x-patch; name="0001-dts-rockchip-rk3066-add-qos_hdmi-and-HCLK_HDMI-to-pm.patch", Size: 2308 bytes --]

From d4d362ae19566539bf6f011a7a013a0682777afe Mon Sep 17 00:00:00 2001
From: Johan Jonker <jbx9999@hotmail.com>
Date: Thu, 13 Dec 2018 13:55:21 +0100
Subject: [PATCH] dts: rockchip: rk3066: add qos_hdmi and HCLK_HDMI to pmu node

Add qos_hdmi and HCLK_HDMI to pmu node.

Signed-off-by: Johan Jonker <jbx9999@hotmail.com>
---
 arch/arm/boot/dts/rk3066a.dtsi | 9 +++++++--
 arch/arm/boot/dts/rk3xxx.dtsi  | 5 +++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
index ff7daec6a..190d6b68f 100644
--- a/arch/arm/boot/dts/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rk3066a.dtsi
@@ -70,6 +70,7 @@
 			 <&cru DCLK_LCDC0>,
 			 <&cru HCLK_LCDC0>;
 		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+		power-domains = <&power RK3066_PD_VIO>;
 		resets = <&cru SRST_LCDC0_AXI>,
 			 <&cru SRST_LCDC0_AHB>,
 			 <&cru SRST_LCDC0_DCLK>;
@@ -94,6 +95,7 @@
 			 <&cru DCLK_LCDC1>,
 			 <&cru HCLK_LCDC1>;
 		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+		power-domains = <&power RK3066_PD_VIO>;
 		resets = <&cru SRST_LCDC1_AXI>,
 			 <&cru SRST_LCDC1_AHB>,
 			 <&cru SRST_LCDC1_DCLK>;
@@ -112,6 +114,7 @@
 		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
 		clocks = <&cru HCLK_HDMI>;
 		clock-names = "hclk";
+		power-domains = <&power RK3066_PD_VIO>;
 		rockchip,grf = <&grf>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
@@ -753,13 +756,15 @@
 				 <&cru ACLK_IPP>,
 				 <&cru HCLK_IPP>,
 				 <&cru ACLK_RGA>,
-				 <&cru HCLK_RGA>;
+				 <&cru HCLK_RGA>,
+				 <&cru HCLK_HDMI>;
 			pm_qos = <&qos_lcdc0>,
 				 <&qos_lcdc1>,
 				 <&qos_cif0>,
 				 <&qos_cif1>,
 				 <&qos_ipp>,
-				 <&qos_rga>;
+				 <&qos_rga>,
+				 <&qos_hdmi>;
 		};
 
 		pd_video@RK3066_PD_VIDEO {
diff --git a/arch/arm/boot/dts/rk3xxx.dtsi b/arch/arm/boot/dts/rk3xxx.dtsi
index 97307a405..1f9496e81 100644
--- a/arch/arm/boot/dts/rk3xxx.dtsi
+++ b/arch/arm/boot/dts/rk3xxx.dtsi
@@ -187,6 +187,11 @@
 		reg = <0x1012f280 0x20>;
 	};
 
+	qos_hdmi: qos@1012f300 {
+		compatible = "syscon";
+		reg = <0x1012f300 0x20>;
+	};
+
 	usb_otg: usb@10180000 {
 		compatible = "rockchip,rk3066-usb", "snps,dwc2";
 		reg = <0x10180000 0x40000>;
-- 
2.11.0


[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query.
  2018-12-13 17:31     ` Johan Jonker
@ 2018-12-14  3:29       ` Tomasz Figa
  0 siblings, 0 replies; 11+ messages in thread
From: Tomasz Figa @ 2018-12-14  3:29 UTC (permalink / raw)
  To: jbx9999; +Cc: Sean Paul, dri-devel

Hi Johan,

On Fri, Dec 14, 2018 at 2:32 AM Johan Jonker <jbx9999@hotmail.com> wrote:
>
> Bug fix? (PART 7)
>
> A little bit of success here.
> Penguins and other colors are on the screen.
> DRM and FB old style seems to work with DVI-D.
> Pure HDMI and sound not tested.
> I think 'someone' forgot to add HCLK_HDMI to the pmu node.
>
> Added a qos_hdmi idea. Let me know if that's OK?
> Please advise what for qos_hdmi address I can use here.

Thanks for keeping investigating this and good to hear that you've
made some progress. Would you be able to send a patch following the
patch submission guidelines? Please see the link below.
https://www.kernel.org/doc/html/latest/process/submitting-patches.html#

Best regards,
Tomasz
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-12-14  3:29 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <3c482c26-1116-53ba-b86c-f248870a2dca@hotmail.com>
     [not found] ` <VI1PR04MB425462214D38CECB1D5ED3CDBFD50@VI1PR04MB4254.eurprd04.prod.outlook.com>
2018-11-27  9:11   ` [BUG] drm_rockchip: rk3066_hdmi: No driver support for vblank timestamp query Tomasz Figa
2018-11-27  9:12     ` Tomasz Figa
2018-11-27 15:37     ` Johan Jonker
2018-11-27 20:51     ` Johan Jonker
2018-11-28 18:53     ` Johan Jonker
2018-11-28 19:03     ` Johan Jonker
2018-11-28 20:17     ` Johan Jonker
2018-11-30 18:53     ` Johan Jonker
2018-12-10  2:53       ` Tomasz Figa
2018-12-13 17:31     ` Johan Jonker
2018-12-14  3:29       ` Tomasz Figa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.