up->pins = devm_pinctrl_get_select_default(&pdev->dev);if(IS_ERR(up->pins)) { dev_warn(&pdev->dev,"did not get pins for uart%i error: %li\n", up->port.line, PTR_ERR(up->pins)); up->pins =NULL; }sprintf(up->name,"OMAP UART%d", up->port.line); up->port.mapbase ...
staticintpinctrl_init(struct i2c_client *client){structlge_touch_data*ts=i2c_get_clientdata(client);/* Get pinctrl if target uses pinctrl */ts->ts_pinctrl =devm_pinctrl_get(&(client->dev));if(IS_ERR(ts->ts_pinctrl)) {if(PTR_ERR(ts->ts_pinctrl) == -EPROBE_DEFER) { LGTC_ERR(...
其实整个初始化过程的核心思想就是low level的driver定义一个pinctrl_desc ,设定pin相关的定义和callback函数,注册到pin control subsystem中。我们用引脚描述符(pin descriptor)来描述一个pin。在pin control subsystem中,struct pinctrl_pin_desc用来描述一个可以控制的引脚,我们称之引脚描述符,代码如下: struct pinctrl...
pinctrl-names = "default"; pinctrl-0 = <0x2 0x3>; }; 该serial device只定义了一个state就是default,对应pinctrl-0属性定义。pinctrl-0是一个句柄(phandle)列表,每个句柄指向一个pin configuration。0x2对应上节中的uart0-data节点,0x03对应uart0-fctl 节点,也就是说,这个串口有两种配置,一种是从gph b...
(struct pinctrl *p) • 作用:释放 pinctrl 句柄,必须与 devm_pinctrl_get...4.1.7 devm_pinctrl_get_select • 函数原型:struct pinctrl *devm_pinctrl_get_select(struct device *dev, const...4.1.8 devm_pinctrl_get_select_default • 函数原型:struct pinctrl *devm_pinctrl_get_select_default(...
内核源码根目录中输入 make dtbs,编译一份设备树,下载进开发板。...3、pinctrl_select_state 在 Linux 中,加 devm_ 开头的函数,代表这个函数支持资源管理。...后来 Linux 开发出了很多 devm_ 开头的函数,代表这个函数有支持资源管理的版本,不管哪一步出错,只要错误退出,就会自动释放所申请的资源。...1)devm_...
(struct pinctrl *p) • 作用:释放 pinctrl 句柄,必须与 devm_pinctrl_get...4.1.7 devm_pinctrl_get_select • 函数原型:struct pinctrl *devm_pinctrl_get_select(struct device *dev, const...4.1.8 devm_pinctrl_get_select_default • 函数原型:struct pinctrl *devm_pinctrl_get_select_default(...