您尚未登录。

楼主 #1 2018-01-16 11:01:53

bugfix
会员
注册时间: 2017-11-22
已发帖子: 125
积分: 125

荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

我在Linux的dts文件里面中死活也没有找到关于LCD的width, height,format等配置参数。

我跟踪驱动代码进去,

drivers/video/fbdev/simple_fb.c

simplefb_probe() 有调用 simplefb_parse_dt() 这个设备树DeviceTree解析函数。
但是实际上设备树并没有这个东东。

感觉很神奇!

离线

#2 2018-01-16 11:03:10

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

不懂,帮顶。

离线

#3 2018-01-16 11:07:05

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

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!





离线

#4 2018-01-16 11:08:51

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

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

/**
* fdt_setup_simplefb_node - Fill and enable a simplefb node
*
* @fdt: ptr to device tree
* @node: offset of the simplefb node
* @base_address: framebuffer base address
* @width: width in pixels
* @height: height in pixels
* @stride: bytes per line
* @format: pixel format string
*
* Convenience function to fill and enable a simplefb node.
*/
int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
                u32 height, u32 stride, const char *format)
{
    char name[32];
    fdt32_t cells[4];
    int i, addrc, sizec, ret;

    of_bus_default_count_cells(fdt, fdt_parent_offset(fdt, node),
                   &addrc, &sizec);
    i = 0;
    if (addrc == 2)
        cells[i++] = cpu_to_fdt32(base_address >> 32);
    cells[i++] = cpu_to_fdt32(base_address);
    if (sizec == 2)
        cells[i++] = 0;
    cells[i++] = cpu_to_fdt32(height * stride);

    ret = fdt_setprop(fdt, node, "reg", cells, sizeof(cells[0]) * i);
    if (ret < 0)
        return ret;

    snprintf(name, sizeof(name), "framebuffer@%" PRIx64, base_address);
    ret = fdt_set_name(fdt, node, name);
    if (ret < 0)
        return ret;

    ret = fdt_setprop_u32(fdt, node, "width", width);
    if (ret < 0)
        return ret;

    ret = fdt_setprop_u32(fdt, node, "height", height);
    if (ret < 0)
        return ret;

    ret = fdt_setprop_u32(fdt, node, "stride", stride);
    if (ret < 0)
        return ret;

    ret = fdt_setprop_string(fdt, node, "format", format);
    if (ret < 0)
        return ret;

    ret = fdt_setprop_string(fdt, node, "status", "okay");
    if (ret < 0)
        return ret;

    return 0;
}





离线

楼主 #5 2018-01-16 11:10:54

bugfix
会员
注册时间: 2017-11-22
已发帖子: 125
积分: 125

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

还真是这么回事, 谢谢楼上的大佬解我心头之惑!
相当于和u-boot共享设备树,
参数只需要在 u-boot里面设置一次即可。

离线

#6 2020-11-25 15:57:36

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 45.5

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

晕哥 说:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!



晕哥  如何使用de功能 在Linux设备树中更改lcd屏幕的参数   现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码  然后编译镜像之后烧写    以后会有多种屏幕   这样不太方便  最好只修改设备树  在设备树配置参数  只更换设备树即可  这样最好

离线

#7 2020-11-25 17:09:12

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

hanzixi_angel 说:
晕哥 说:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!



晕哥  如何使用de功能 在Linux设备树中更改lcd屏幕的参数   现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码  然后编译镜像之后烧写    以后会有多种屏幕   这样不太方便  最好只修改设备树  在设备树配置参数  只更换设备树即可  这样最好

你的de功能正常了吗?

离线

#8 2020-11-26 09:22:13

hanzixi_angel
会员
注册时间: 2020-09-21
已发帖子: 54
积分: 45.5

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

smartcar 说:
hanzixi_angel 说:
晕哥 说:

这个问题我以前也纳闷过,
后来发现 u-boot的 common/fdt_support.c 里面有 fdt_setup_simplefb_node()这个函数,
他居然会自己创建设备树, 然后传递给Linux用,赶脚好神奇!



晕哥  如何使用de功能 在Linux设备树中更改lcd屏幕的参数   现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码  然后编译镜像之后烧写    以后会有多种屏幕   这样不太方便  最好只修改设备树  在设备树配置参数  只更换设备树即可  这样最好

你的de功能正常了吗?



de功能正常啊  修改了linux/drivers/gpu/drm/panel/panel-simple.c源码  适配了屏幕   但是这样修改不太好  想只修改设备树  在设备树增加屏幕参数

离线

#9 2020-11-26 09:32:21

smartcar
会员
注册时间: 2018-02-19
已发帖子: 735
积分: 735

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

hanzixi_angel 说:
smartcar 说:
hanzixi_angel 说:


晕哥  如何使用de功能 在Linux设备树中更改lcd屏幕的参数   现在都是更改linux/drivers/gpu/drm/panel/panel-simple.c源码  然后编译镜像之后烧写    以后会有多种屏幕   这样不太方便  最好只修改设备树  在设备树配置参数  只更换设备树即可  这样最好

你的de功能正常了吗?



de功能正常啊  修改了linux/drivers/gpu/drm/panel/panel-simple.c源码  适配了屏幕   但是这样修改不太好  想只修改设备树  在设备树增加屏幕参数

drm的话如果找不到现成的LCD配置估计就一定要修改那部分的代码吧,

离线

#10 2023-10-18 18:12:59

wcq6699
会员
注册时间: 2023-10-17
已发帖子: 15
积分: 0

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

U-BOOT  是不是没在FLASH固件包里面呢

离线

#11 2023-10-18 18:15:25

wcq6699
会员
注册时间: 2023-10-17
已发帖子: 15
积分: 0

Re: 荔枝派zero V3s用主线u-boot和主线Linux,为什么只需要在u-boot里面设置LCD参数,而不需要在Linux里面设置?

我怎么链接电脑看不到荔枝派设备,只是显示 多了一个通用USB集线器呢

离线

页脚

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

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