usb: misc: nb7vpq904m: add redriver_orientation_get()

provide orientation info for external module.

Change-Id: I5e49e5f8071320beaf9d2f2a0390521d4d9f3b91
Signed-off-by: Linyu Yuan <linyyuan@codeaurora.org>
This commit is contained in:
Linyu Yuan 2020-12-09 14:05:44 +08:00 • committed by Gerrit - the friendly Code Review server
commit efa6204924
2 changed files with 29 additions and 0 deletions

View file

@ -421,6 +421,29 @@ static int ssusb_redriver_read_orientation(struct ssusb_redriver *redriver)
return 0;
}
int redriver_orientation_get(struct device_node *node)
{
struct ssusb_redriver *redriver;
struct i2c_client *client;
if (!node)
return -ENODEV;
client = of_find_i2c_device_by_node(node);
if (!client)
return -ENODEV;
redriver = i2c_get_clientdata(client);
if (!redriver)
return -EINVAL;
if (!gpio_is_valid(redriver->orientation_gpio))
return -EINVAL;
return gpio_get_value(redriver->orientation_gpio);
}
EXPORT_SYMBOL(redriver_orientation_get);
static int ssusb_redriver_ucsi_notifier(struct notifier_block *nb,
unsigned long action, void *data)
{

View file

@ -12,6 +12,7 @@ int redriver_release_usb_lanes(struct device_node *node);
int redriver_gadget_pullup(struct device_node *node, int is_on);
int redriver_notify_connect(struct device_node *node);
int redriver_notify_disconnect(struct device_node *node);
int redriver_orientation_get(struct device_node *node);
#else
@ -35,6 +36,11 @@ static inline int redriver_notify_disconnect(struct device_node *node)
return 0;
}
static inline int redriver_orientation_get(struct device_node *node)
{
return -ENODEV;
}
#endif
#endif /*__LINUX_USB_REDRIVER_H */