uboot gpio

gpio_request_by_name_nodev(dev, node, “gpio”, 0, &gpio, GPIOD_IS_OUT);
// 调用gpio_request_by_name_nodev来获取node节点中的"lgpio"属性,并转化为gpio_desc描述符,标志为输出
GPIOD_IS_IN 输入
dm_gpio_set_value(&gpio, 0); // 将gpio设置输出低电平
dm_gpio_set_value(&gpio, 1); // 将gpio设置输出高电平

dm_gpio_is_valid //判断该gpio_desc是否可用

dm_gpio_request //申请gpio_desc描述的GPIO
dm_gpio_get_value //获取gpio_desc描述的GPIO的值

uboot启动驱动
static void owner_option(void)
{
struct udevice *dev2;
uclass_get_device_by_driver(UCLASS_MISC,
DM_GET_DRIVER(option), &dev2);
}
将函数添加board_init中

option.c
驱动
#include <common.h>
#include <dm.h>
#include <errno.h>
#include <asm-generic/gpio.h>
#include <dm/lists.h>
#include <misc.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include <command.h>
#include <dm/of_access.h>
#include <dm/ofnode.h>

static int option_probe(struct udevice *dev)
{
struct gpio_desc gpio_eeprom_wp;
struct device_node *np;
int ret;
np = of_find_compatible_node(NULL,NULL,"—");
if(np == NULL)
{
printf("%s :can not get —\r\n",func);
}
else
{
printf("%s : get — node successed : -->%s\r\n",func,np->name);
}

ret = gpio_request_by_name(dev, "gpio", 0, &gpio,
			   GPIOD_IS_OUT);
if(ret)
{
	printf("%s :can not get eepro_wp gpio\r\n",__func__);
}
else
{
	printf("%s :get eepro_wp gpio \r\n",__func__);
}

/---------------操作gpio---------------/
return 0;
}

static int option_remove(struct udevice *dev)
{
return 0;
}

static const struct udevice_id option_ids[] = {
{ .compatible = “—” },
{ }
};

U_BOOT_DRIVER(option) = {
.name = “—”,
.id = UCLASS_GPIO,
.of_match = misc_vantron_ids,
.probe = option_probe,
.remove = option_remove,
};

dts
gpio-verify {
compatible="—";
pinctrl-names = “default”;
pinctrl-0 = <&pin>;
gpio = <&gpio gpio10 GPIO_ACTIVE_HIGH>;
status = “okay”;
};

参考连接:https://blog.csdn.net/weixin_68294039/article/details/125937245

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值