您尚未登录。

楼主 #1 2019-09-16 19:00:50

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)





离线

楼主 #2 2019-09-16 19:01:39

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,223
积分: 9197

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

在设备升级新版内核后,发现没有 fb0 设备,开机没有打印 drm 相关的信息

首先是检查设备树,确认加入 panel 节点

panel: panel {
		compatible = "lg,lb070wv8”, “simple-panel";
		#address-cells = <1>;
		#size-cells = <0>;
		enable-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			panel_input: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&tcon0_out_lcd>;
			};
		};
	};
其次是检查内核是否开启了相关的驱动,这里使用的是 lichepi nano,依赖的驱动是 SUN4I 系列的驱动
CONFIG_DRM_SUN4I=y
CONFIG_DRM_SUN4I_HDMI=y
CONFIG_DRM_SUN4I_BACKEND=y

不过在检查完上面两个地方没有问题后,还是没有解决问题

为了获取 drm 启动过程中的更多信息,在 uboot 的 bootargs 中加入 drm.debug=0x1f debug,让内核打印 drm 的更多信息

[    1.079849] [drm:drm_core_init] Initialized
[    1.084524] [drm:sun4i_drv_probe] Adding component /soc/display-backend@1e60000
[    1.092143] [drm:sun4i_drv_probe] Adding component /soc/lcd-controller@1c0c000
[    1.099606] [drm:sun4i_drv_probe] Adding component /panel
[    1.105025] [drm:sun4i_drv_traverse_endpoints] No output to bind on port 1
[    1.124695] [drm:compare_of] Comparing of node /soc/lcd-controller@1c0c000 with /soc/display-backend@1e60000
...

发现内核尝试着挂载 /panel 节点,这个本来是不用挂载的

修改 suniv_quirks,加上 has_channel_0 的配置。缺少 has_channel_0 会让内核认为这个 TCON 没有 RGB 口

static const struct sun4i_tcon_quirks suniv_quirks = {
    .has_channel_0		= true,
	.has_channel_1		= true,
};

重新编译烧录后,drm 的启动信息如下。内核没有再去挂载 /panel 节点了,不过 drm 的启动还是没有成功

[    1.079943] [drm:drm_core_init] Initialized
[    1.084616] [drm:sun4i_drv_probe] Adding component /soc/display-backend@1e60000
[    1.092235] [drm:sun4i_drv_probe] Adding component /soc/lcd-controller@1c0c000
[    1.099662] [drm:sun4i_drv_traverse_endpoints] Endpoint is our panel... skipping
[    1.121843] [drm:compare_of] Comparing of node /soc/display-backend@1e60000 with /soc/display-backend@1e60000
[    1.131931] [drm:compare_of] Comparing of node /soc/display-backend@1e60000 with /soc/lcd-controller@1c0c000
后来在看到了这份 commit中说的内容,将 .has_channel_1 屏蔽掉,drm 正常工作了
static const struct sun4i_tcon_quirks suniv_f1c100s_quirks = {
	/*
	 * The F1C100s SoC has a second channel in TCON, but the clock input of
	 * it is not documented.
	 */
	.has_channel_0		= true,
	/* .has_channel_1	= true, */
};

感谢
非常感谢这两位大神给我的帮助

Icenowy
libunko





离线

#3 2019-09-16 19:49:21

我思故我在
会员
注册时间: 2019-09-03
已发帖子: 244
积分: 243.5

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

原来是这样, 当初按这个没有搞定: https://whycan.cn/t_2032.html

离线

#4 2019-09-17 08:20:36

迪卡
会员
所在地: 河北
注册时间: 2018-11-02
已发帖子: 916
积分: 903
个人网站

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

看来我那个方法是瞎折腾,笑哭

离线

#5 2019-09-17 13:38:23

Jmhh247
会员
注册时间: 2018-12-21
已发帖子: 262
积分: 262

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

好消息

离线

#6 2020-08-16 12:44:46

阿黄
会员
注册时间: 2018-10-03
已发帖子: 298
积分: 133

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

标记一下  在 uboot 的 bootargs 中加入 drm.debug=0x1f debug,让内核打印 drm 的更多信息

离线

#7 2020-09-03 15:25:33

孤星泪
会员
注册时间: 2020-03-18
已发帖子: 235
积分: 231

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

标记一下

离线

#8 2021-11-09 10:08:51

隆哥
会员
注册时间: 2021-11-02
已发帖子: 7
积分: 2

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

#9 2021-11-10 09:38:31

CHSHIQING
会员
注册时间: 2020-11-27
已发帖子: 46
积分: 6

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

标记一下,后面用的到

离线

#10 2022-03-24 16:30:56

lorenzo
会员
注册时间: 2022-03-24
已发帖子: 15
积分: 0

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

标记一下,先切换到4.19去折腾下usb otg

离线

#11 2022-06-22 12:38:37

dragon101788
会员
注册时间: 2019-02-21
已发帖子: 3
积分: 3

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

我就想要个usb能用的,到底要用哪个版本?不折腾的,拉下来,编译下就能用的

离线

#12 2022-06-22 20:47:47

mysteryli
会员
注册时间: 2020-03-05
已发帖子: 481
积分: 386
个人网站

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

一楼的链接好像挂了?

离线

#13 2022-11-17 16:50:04

wuyu
会员
注册时间: 2021-10-10
已发帖子: 23
积分: 15

Re: 解决f1c100s 主线Linux 升级到 4.19 之后的版本没有 framebuffer(fb0)设备问题(转转转)(Linux5.2)

@晕哥
楼主,我用licheepi zero(V3S)。在主线5.19.3的内核中尝试初始化LCD的时候,也遇到了fb0设备不出现的问题。
按照你的方法打印了drm的初始化log

[    0.056344] [drm:0xc070eda1] Initialized
[    0.056506] [drm:0xc02a4577] Adding component /soc/mixer@1100000
[    0.056609] [drm:0xc02a4577] Adding component /soc/lcd-controller@1c0c000
[    0.056676] [drm:0xc02a43ff] Endpoint is our panel... skipping
[    0.060684] panel-simple panel: supply power not found, using dummy regulator
[    0.060947] panel-simple panel: Specify missing connector_type

能帮着分析一下是什么原因导致的吗?还是说V3S DE设备的初始化只能在v5.2内核版本下工作?
吊诡的是,panel设备不出现,对应的backlight设备也没有出现在设备树当中。

我用的dts文件是参照licheepi zero官方的修改而来,官方的内核版本是v5.2

[	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm 0 1000000 0>;
		brightness-levels = <0 30 40 50 60 70 100>;
		default-brightness-level = <6>;
	};

	panel: panel {
		compatible = "urt,umsh-8596md-t", "simple-panel";
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			backlight = <&backlight>;
			#address-cells = <1>;
			#size-cells = <0>;

			panel_input: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&tcon0_out_lcd>;
			};
		};
	};
&de {
	status = "okay";
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm0_pins>;
	status = "okay";
};

&tcon0 {
	pinctrl-names = "default";
	pinctrl-0 = <&lcd_rgb666_pins_a>;
	status = "okay";
};

&tcon0_out {
	tcon0_out_lcd: endpoint@0 {
		reg = <0>;
		remote-endpoint = <&panel_input>;
	};
};
]

官方的v5.2版本,fb设备初始化成功的时候,还有下面的打印信息,我这边就没有

[
[    1.259771] sun8i-v3s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe                                                    not found, using dummy regulator
[    1.272296] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc0773d40)
[    1.279881] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc07                                                   7103c)
[    1.287569] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.294258] [drm] No driver support for vblank timestamp query.
[    1.301264] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on  
]

最近编辑记录 wuyu (2022-11-17 18:09:15)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn