您尚未登录。

楼主 #1 2019-09-28 20:42:44

明月心惜
会员
注册时间: 2018-08-19
已发帖子: 24
积分: 29

请问nano在uboot中如何控制GPIO,用唱戏机点屏,发现背光需要PE12输出高电平

手头有一个lichee+5寸屏,一个3.5寸的唱戏机。在使用uboot的时候,发现nano点屏没有问题,唱戏机就不行。
后面去查电路找引脚,发现唱戏机使用PE12控制PWM,nano为低电平,唱戏机为高电平。
按照nano的教程将引脚改为PE12,分辨率改为480*272,然后设置了PWM反转,还是不行。

#define CONFIG_VIDEO_LCD_BL_PWM "PE6"

查看代码,定位到sunxi_display.c中void *video_hw_init(void),初始化屏幕。

*video_hw_init()>sunxi_mode_set(mode, fb_dma_addr)>sunxi_lcdc_backlight_enable()->
sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM)->gpio_lookup_name()->dm_gpio_lookup_name()

最后这个函数,ret = dm_gpio_lookup_name(name, &desc);返回失败了。

查资料感觉这个应该跟uboot驱动模型(DM),有关。是不是需要配置设备树啊,请问应该怎么配置?

也就是想通过dm驱动设置对应的PWM引脚的电平。

离线

楼主 #4 2022-04-19 02:55:28

明月心惜
会员
注册时间: 2018-08-19
已发帖子: 24
积分: 29

Re: 请问nano在uboot中如何控制GPIO,用唱戏机点屏,发现背光需要PE12输出高电平

还是我自己来结帖了,一直忙着板砖,没时间好好学习。

lichee nano 使用的是PE6 = 1点屏,由于PE6上电默认为1,所以上述配置不生效也能点屏

修改u-boot/arch/arm/mach-sunxi/board.c

static int sunxi_gpio_output2(u32 pin, u32 val)
{
	u32 dat;
	u32 bank = GPIO_BANK(pin);
	u32 num = GPIO_NUM(pin);
	struct sunxi_gpio *pio = BANK_TO_GPIO(bank);

	dat = readl(&pio->dat);
	if (val)
		dat |= 0x1 << num;
	else
		dat &= ~(0x1 << num);

	writel(dat, &pio->dat);

	return 0;
}
static int gpio_init(void)
{
	//使用非dm驱动直接设置引脚电平
	sunxi_gpio_set_cfgpin(SUNXI_GPE(12), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_output2(SUNXI_GPE(12), 1);

离线

页脚

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

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