权智A133P of_get_named_gpio_flags踩坑

enum of_gpio_flags cs_flags; 
*cs_gpio = of_get_named_gpio_flags(dev->of_node, "cs-gpios", 0,&cs_flags);

权智A133P linux起不来,修改为

struct gpio_config config_gpio;
*cs_gpio = of_get_named_gpio_flags(dev->of_node, "cs-gpios", 0,(enum of_gpio_flags *)&config_gpio);

linux系统正常

int of_get_named_gpio_flags(struct device_node *np, const char *propname, int index, enum of_gpio_flags *flags);

/*
功能:函数用于获取指定名称的 gpio 信息
np: 需要查找 GPIO 的节点;
propname: GPIO 信息的属性名字;
index:    属性 propname 中属性值的索引(表示获取属性里的第几个值);    
flags: 存放 gpio 的 flags;
返回值: 成功:返回 gpio 编号, flags 存放 gpio 配置信息;失败:返回 null
*/

其中flags一定得注意,按文档里的说明应就是一个int类型的值,但根本就不能为int参数(会导致kernel panic),通过阅读内核里的代码得出, flags的参数应为struct gpio_config类型。

你可能感兴趣的:(LInux嵌入式,linux,运维,服务器)