linux-4.4.1/pinctrl_register()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#a91c5505]
#backlinks
*説明 [#a39d0300]
-パス: [[linux-4.4.1/drivers/pinctrl/core.c]]
-FIXME: これは何?
--説明
**引数 [#u9fe02d2]
-struct pinctrl_desc *pctldesc
--
--[[linux-4.4.1/pinctrl_desc]]
-struct device *dev
--
--[[linux-4.4.1/device]]
-void *driver_data
--
**返り値 [#he9118b7]
-struct pinctrl_dev *
--
--[[linux-4.4.1/pinctrl_dev]]
**参考 [#e895af3e]
*実装 [#of4cb504]
/**
* pinctrl_register() - register a pin controller device
* @pctldesc: descriptor for this pin controller
* @dev: parent device for this pin controller
* @driver_data: private pin controller data for this pi...
*/
struct pinctrl_dev *pinctrl_register(struct pinctrl_desc...
struct device *dev, ...
{
struct pinctrl_dev *pctldev;
int ret;
-
--[[linux-4.4.1/pinctrl_dev]]
if (!pctldesc)
return ERR_PTR(-EINVAL);
if (!pctldesc->name)
return ERR_PTR(-EINVAL);
-
--[[linux-4.4.1/ERR_PTR()]]
pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL);
if (pctldev == NULL) {
dev_err(dev, "failed to alloc struct pin...
return ERR_PTR(-ENOMEM);
}
-
--[[linux-4.4.1/kzalloc()]]
--[[linux-4.4.1/dev_err()]]
/* Initialize pin control device struct */
pctldev->owner = pctldesc->owner;
pctldev->desc = pctldesc;
pctldev->driver_data = driver_data;
INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KER...
INIT_LIST_HEAD(&pctldev->gpio_ranges);
pctldev->dev = dev;
mutex_init(&pctldev->mutex);
-
--[[linux-4.4.1/INIT_RADIX_TREE()]]
--[[linux-4.4.1/INIT_LIST_HEAD()]]
--[[linux-4.4.1/mutex_init()]]
/* check core ops for sanity */
ret = pinctrl_check_ops(pctldev);
if (ret) {
dev_err(dev, "pinctrl ops lacks necessar...
goto out_err;
}
-
--[[linux-4.4.1/pinctrl_check_ops()]]
/* If we're implementing pinmuxing, check the op...
if (pctldesc->pmxops) {
ret = pinmux_check_ops(pctldev);
if (ret)
goto out_err;
}
-
--[[linux-4.4.1/pinmux_check_ops()]]
/* If we're implementing pinconfig, check the op...
if (pctldesc->confops) {
ret = pinconf_check_ops(pctldev);
if (ret)
goto out_err;
}
-
--[[linux-4.4.1/pinconf_check_ops()]]
/* Register all the pins */
dev_dbg(dev, "try to register %d pins ...\n", p...
ret = pinctrl_register_pins(pctldev, pctldesc->p...
if (ret) {
dev_err(dev, "error during pin registrat...
pinctrl_free_pindescs(pctldev, pctldesc-...
pctldesc->npins);
goto out_err;
}
-
--[[linux-4.4.1/dev_dbg()]]
--[[linux-4.4.1/pinctrl_register_pins()]]
--[[linux-4.4.1/pinctrl_free_pindescs()]]
mutex_lock(&pinctrldev_list_mutex);
list_add_tail(&pctldev->node, &pinctrldev_list);
mutex_unlock(&pinctrldev_list_mutex);
-
--[[linux-4.4.1/mutex_lock()]]
--[[linux-4.4.1/pinctrldev_list_mutex(global)]]
--[[linux-4.4.1/list_add_tail()]]
--[[linux-4.4.1/pinctrldev_list(global)]]
--[[linux-4.4.1/mutex_unlock()]]
pctldev->p = pinctrl_get(pctldev->dev);
-
--[[linux-4.4.1/pinctrl_get()]]
if (!IS_ERR(pctldev->p)) {
-
--[[linux-4.4.1/IS_ERR()]]
pctldev->hog_default =
pinctrl_lookup_state(pctldev->p,...
if (IS_ERR(pctldev->hog_default)) {
dev_dbg(dev, "failed to lookup t...
} else {
if (pinctrl_select_state(pctldev...
pctldev-...
dev_err(dev,
"failed to selec...
}
-
--[[linux-4.4.1/pinctrl_lookup_state()]]
--[[linux-4.4.1/IS_ERR()]]
--[[linux-4.4.1/dev_dbg()]]
--[[linux-4.4.1/pinctrl_select_state()]]
pctldev->hog_sleep =
pinctrl_lookup_state(pctldev->p,
PINC...
if (IS_ERR(pctldev->hog_sleep))
dev_dbg(dev, "failed to lookup t...
}
pinctrl_init_device_debugfs(pctldev);
-
--[[linux-4.4.1/pinctrl_init_device_debugfs()]]
return pctldev;
out_err:
mutex_destroy(&pctldev->mutex);
kfree(pctldev);
-
--[[linux-4.4.1/mutex_destroy()]]
--[[linux-4.4.1/kfree()]]
return ERR_PTR(ret);
}
EXPORT_SYMBOL_GPL(pinctrl_register);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#odd7ee6e]
終了行:
*参照元 [#a91c5505]
#backlinks
*説明 [#a39d0300]
-パス: [[linux-4.4.1/drivers/pinctrl/core.c]]
-FIXME: これは何?
--説明
**引数 [#u9fe02d2]
-struct pinctrl_desc *pctldesc
--
--[[linux-4.4.1/pinctrl_desc]]
-struct device *dev
--
--[[linux-4.4.1/device]]
-void *driver_data
--
**返り値 [#he9118b7]
-struct pinctrl_dev *
--
--[[linux-4.4.1/pinctrl_dev]]
**参考 [#e895af3e]
*実装 [#of4cb504]
/**
* pinctrl_register() - register a pin controller device
* @pctldesc: descriptor for this pin controller
* @dev: parent device for this pin controller
* @driver_data: private pin controller data for this pi...
*/
struct pinctrl_dev *pinctrl_register(struct pinctrl_desc...
struct device *dev, ...
{
struct pinctrl_dev *pctldev;
int ret;
-
--[[linux-4.4.1/pinctrl_dev]]
if (!pctldesc)
return ERR_PTR(-EINVAL);
if (!pctldesc->name)
return ERR_PTR(-EINVAL);
-
--[[linux-4.4.1/ERR_PTR()]]
pctldev = kzalloc(sizeof(*pctldev), GFP_KERNEL);
if (pctldev == NULL) {
dev_err(dev, "failed to alloc struct pin...
return ERR_PTR(-ENOMEM);
}
-
--[[linux-4.4.1/kzalloc()]]
--[[linux-4.4.1/dev_err()]]
/* Initialize pin control device struct */
pctldev->owner = pctldesc->owner;
pctldev->desc = pctldesc;
pctldev->driver_data = driver_data;
INIT_RADIX_TREE(&pctldev->pin_desc_tree, GFP_KER...
INIT_LIST_HEAD(&pctldev->gpio_ranges);
pctldev->dev = dev;
mutex_init(&pctldev->mutex);
-
--[[linux-4.4.1/INIT_RADIX_TREE()]]
--[[linux-4.4.1/INIT_LIST_HEAD()]]
--[[linux-4.4.1/mutex_init()]]
/* check core ops for sanity */
ret = pinctrl_check_ops(pctldev);
if (ret) {
dev_err(dev, "pinctrl ops lacks necessar...
goto out_err;
}
-
--[[linux-4.4.1/pinctrl_check_ops()]]
/* If we're implementing pinmuxing, check the op...
if (pctldesc->pmxops) {
ret = pinmux_check_ops(pctldev);
if (ret)
goto out_err;
}
-
--[[linux-4.4.1/pinmux_check_ops()]]
/* If we're implementing pinconfig, check the op...
if (pctldesc->confops) {
ret = pinconf_check_ops(pctldev);
if (ret)
goto out_err;
}
-
--[[linux-4.4.1/pinconf_check_ops()]]
/* Register all the pins */
dev_dbg(dev, "try to register %d pins ...\n", p...
ret = pinctrl_register_pins(pctldev, pctldesc->p...
if (ret) {
dev_err(dev, "error during pin registrat...
pinctrl_free_pindescs(pctldev, pctldesc-...
pctldesc->npins);
goto out_err;
}
-
--[[linux-4.4.1/dev_dbg()]]
--[[linux-4.4.1/pinctrl_register_pins()]]
--[[linux-4.4.1/pinctrl_free_pindescs()]]
mutex_lock(&pinctrldev_list_mutex);
list_add_tail(&pctldev->node, &pinctrldev_list);
mutex_unlock(&pinctrldev_list_mutex);
-
--[[linux-4.4.1/mutex_lock()]]
--[[linux-4.4.1/pinctrldev_list_mutex(global)]]
--[[linux-4.4.1/list_add_tail()]]
--[[linux-4.4.1/pinctrldev_list(global)]]
--[[linux-4.4.1/mutex_unlock()]]
pctldev->p = pinctrl_get(pctldev->dev);
-
--[[linux-4.4.1/pinctrl_get()]]
if (!IS_ERR(pctldev->p)) {
-
--[[linux-4.4.1/IS_ERR()]]
pctldev->hog_default =
pinctrl_lookup_state(pctldev->p,...
if (IS_ERR(pctldev->hog_default)) {
dev_dbg(dev, "failed to lookup t...
} else {
if (pinctrl_select_state(pctldev...
pctldev-...
dev_err(dev,
"failed to selec...
}
-
--[[linux-4.4.1/pinctrl_lookup_state()]]
--[[linux-4.4.1/IS_ERR()]]
--[[linux-4.4.1/dev_dbg()]]
--[[linux-4.4.1/pinctrl_select_state()]]
pctldev->hog_sleep =
pinctrl_lookup_state(pctldev->p,
PINC...
if (IS_ERR(pctldev->hog_sleep))
dev_dbg(dev, "failed to lookup t...
}
pinctrl_init_device_debugfs(pctldev);
-
--[[linux-4.4.1/pinctrl_init_device_debugfs()]]
return pctldev;
out_err:
mutex_destroy(&pctldev->mutex);
kfree(pctldev);
-
--[[linux-4.4.1/mutex_destroy()]]
--[[linux-4.4.1/kfree()]]
return ERR_PTR(ret);
}
EXPORT_SYMBOL_GPL(pinctrl_register);
-
--[[linux-4.4.1/EXPORT_SYMBOL_GPL()]]
*コメント [#odd7ee6e]
ページ名: