Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit efa62049 authored by Linyu Yuan's avatar Linyu Yuan Committed by Gerrit - the friendly Code Review server
Browse files

usb: misc: nb7vpq904m: add redriver_orientation_get()



provide orientation info for external module.

Change-Id: I5e49e5f8071320beaf9d2f2a0390521d4d9f3b91
Signed-off-by: default avatarLinyu Yuan <linyyuan@codeaurora.org>
parent eba0b1fc
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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)
{
+6 −0
Original line number Diff line number Diff line
@@ -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 */