forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
extcon: Add an API to get extcon device from dt node
Added an API of_extcon_get_extcon_dev() to be used by drivers to get extcon device in the case of dt boot (this can be used instead of extcon_get_extcon_dev()). Signed-off-by: Kishon Vijay Abraham I <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]> Signed-off-by: Myungjoo Ham <[email protected]>
- Loading branch information
1 parent
5ae90d8
commit 6eee5b3
Showing
5 changed files
with
103 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/* | ||
* OF helpers for External connector (extcon) framework | ||
* | ||
* Copyright (C) 2013 Texas Instruments, Inc. | ||
* Kishon Vijay Abraham I <[email protected]> | ||
* | ||
* Copyright (C) 2013 Samsung Electronics | ||
* Chanwoo Choi <[email protected]> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
*/ | ||
|
||
#include <linux/module.h> | ||
#include <linux/slab.h> | ||
#include <linux/err.h> | ||
#include <linux/extcon.h> | ||
#include <linux/of.h> | ||
#include <linux/of_platform.h> | ||
#include <linux/extcon/of_extcon.h> | ||
|
||
/* | ||
* of_extcon_get_extcon_dev - Get the name of extcon device from devicetree | ||
* @dev - instance to the given device | ||
* @index - index into list of extcon_dev | ||
* | ||
* return the instance of extcon device | ||
*/ | ||
struct extcon_dev *of_extcon_get_extcon_dev(struct device *dev, int index) | ||
{ | ||
struct device_node *node; | ||
struct extcon_dev *edev; | ||
struct platform_device *extcon_parent_dev; | ||
|
||
if (!dev->of_node) { | ||
dev_dbg(dev, "device does not have a device node entry\n"); | ||
return ERR_PTR(-EINVAL); | ||
} | ||
|
||
node = of_parse_phandle(dev->of_node, "extcon", index); | ||
if (!node) { | ||
dev_dbg(dev, "failed to get phandle in %s node\n", | ||
dev->of_node->full_name); | ||
return ERR_PTR(-ENODEV); | ||
} | ||
|
||
extcon_parent_dev = of_find_device_by_node(node); | ||
if (!extcon_parent_dev) { | ||
dev_dbg(dev, "unable to find device by node\n"); | ||
return ERR_PTR(-EPROBE_DEFER); | ||
} | ||
|
||
edev = extcon_get_extcon_dev(dev_name(&extcon_parent_dev->dev)); | ||
if (!edev) { | ||
dev_dbg(dev, "unable to get extcon device : %s\n", | ||
dev_name(&extcon_parent_dev->dev)); | ||
return ERR_PTR(-ENODEV); | ||
} | ||
|
||
return edev; | ||
} | ||
EXPORT_SYMBOL_GPL(of_extcon_get_extcon_dev); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* | ||
* OF helpers for External connector (extcon) framework | ||
* | ||
* Copyright (C) 2013 Texas Instruments, Inc. | ||
* Kishon Vijay Abraham I <[email protected]> | ||
* | ||
* Copyright (C) 2013 Samsung Electronics | ||
* Chanwoo Choi <[email protected]> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
*/ | ||
|
||
#ifndef __LINUX_OF_EXTCON_H | ||
#define __LINUX_OF_EXTCON_H | ||
|
||
#include <linux/err.h> | ||
|
||
#if IS_ENABLED(CONFIG_OF_EXTCON) | ||
extern struct extcon_dev | ||
*of_extcon_get_extcon_dev(struct device *dev, int index); | ||
#else | ||
static inline struct extcon_dev | ||
*of_extcon_get_extcon_dev(struct device *dev, int index) | ||
{ | ||
return ERR_PTR(-ENOSYS); | ||
} | ||
#endif /* CONFIG_OF_EXTCON */ | ||
#endif /* __LINUX_OF_EXTCON_H */ |