与devm_pinctrl_get() 功能相同的函数
时间: 2024-03-06 19:50:52 浏览: 34
与 `devm_pinctrl_get()` 功能相同的函数是 `pinctrl_get()`。这两个函数的作用都是获取设备的 pin control 句柄,但是它们的使用方式略有不同。
`pinctrl_get()` 函数的使用方式如下:
```
struct pinctrl *pinctrl;
int ret;
pinctrl = pinctrl_get(dev);
if (IS_ERR(pinctrl)) {
dev_err(dev, "Failed to get pinctrl\n");
return PTR_ERR(pinctrl);
}
ret = pinctrl_select_state(pinctrl, "default");
if (ret < 0) {
dev_err(dev, "Failed to select default pinctrl state\n");
pinctrl_put(pinctrl);
return ret;
}
/* ... */
pinctrl_put(pinctrl);
```
与 `devm_pinctrl_get()` 不同,`pinctrl_get()` 获取的是一个非 devm 的 pinctrl 句柄,因此需要在使用完后显式调用 `pinctrl_put()` 函数释放资源。另外,如果 `pinctrl_get()` 函数出错,需要手动调用 `pinctrl_put()` 函数释放已经获取的 pinctrl 句柄。
需要注意的是,如果在获取 pinctrl 句柄后不需要再手动释放资源,最好使用 `devm_pinctrl_get()` 函数,因为它能够自动释放资源,避免出现内存泄漏等问题。