Commit 45fe729b authored by Stephen Boyd's avatar Stephen Boyd Committed by Greg Kroah-Hartman
Browse files

usb: typec: Stub out typec_switch APIs when CONFIG_TYPEC=n



Ease driver development by adding stubs for the typec_switch APIs when
CONFIG_TYPEC=n. Copy the same method used for the typec_mux APIs to be
consistent.

Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarXu Yang <xu.yang_2@nxp.com>
Link: https://lore.kernel.org/r/20250916021620.1303995-1-xu.yang_2@nxp.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 368ed48a
Loading
Loading
Loading
Loading
+41 −5
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
#ifndef __USB_TYPEC_MUX
#define __USB_TYPEC_MUX

#include <linux/err.h>
#include <linux/property.h>
#include <linux/usb/typec.h>

@@ -24,16 +25,13 @@ struct typec_switch_desc {
	void *drvdata;
};

#if IS_ENABLED(CONFIG_TYPEC)

struct typec_switch *fwnode_typec_switch_get(struct fwnode_handle *fwnode);
void typec_switch_put(struct typec_switch *sw);
int typec_switch_set(struct typec_switch *sw,
		     enum typec_orientation orientation);

static inline struct typec_switch *typec_switch_get(struct device *dev)
{
	return fwnode_typec_switch_get(dev_fwnode(dev));
}

struct typec_switch_dev *
typec_switch_register(struct device *parent,
		      const struct typec_switch_desc *desc);
@@ -42,6 +40,44 @@ void typec_switch_unregister(struct typec_switch_dev *sw);
void typec_switch_set_drvdata(struct typec_switch_dev *sw, void *data);
void *typec_switch_get_drvdata(struct typec_switch_dev *sw);

#else

static inline struct typec_switch *
fwnode_typec_switch_get(struct fwnode_handle *fwnode)
{
	return NULL;
}

static inline void typec_switch_put(struct typec_switch *sw) {}

static inline int typec_switch_set(struct typec_switch *sw,
				   enum typec_orientation orientation)
{
	return 0;
}

static inline struct typec_switch_dev *
typec_switch_register(struct device *parent,
		      const struct typec_switch_desc *desc)
{
	return ERR_PTR(-EOPNOTSUPP);
}

static inline void typec_switch_unregister(struct typec_switch_dev *sw) {}

static inline void typec_switch_set_drvdata(struct typec_switch_dev *sw, void *data) {}
static inline void *typec_switch_get_drvdata(struct typec_switch_dev *sw)
{
	return ERR_PTR(-EOPNOTSUPP);
}

#endif /* CONFIG_TYPEC */

static inline struct typec_switch *typec_switch_get(struct device *dev)
{
	return fwnode_typec_switch_get(dev_fwnode(dev));
}

struct typec_mux_state {
	struct typec_altmode *alt;
	unsigned long mode;