Message ID | 20220615172129.1314056-3-pmalani@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb: typec: Introduce typec-switch binding | expand |
On Wed, Jun 15, 2022 at 05:20:18PM +0000, Prashant Malani wrote: > There are some drivers that can use the Type C mux API, but don't have > to. Introduce CONFIG guards for the mux functions so that drivers can > include the header file and not run into compilation errors on systems > which don't have CONFIG_TYPEC enabled. When CONFIG_TYPEC is not enabled, > the Type C mux functions will be stub versions of the original calls. > > Reported-by: kernel test robot <lkp@intel.com> > Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> > Tested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> > Signed-off-by: Prashant Malani <pmalani@chromium.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > > Changes since v3: > - No changes. > > Changes since v2: > - Fix up return types for some of the stubs. Remove 1 unnecessary stub > in the else condition. > - Remove unnecessary IS_MODULE config guard. > - Added Reviewed-by and Tested-by tags. > > Changes since v1: > - Added static inline to stub functions. > - Updated function signature of stub functions from "struct typec_mux" > to "struct typec_mux_dev" in accordance with updates from commit > 713fd49b430c ("usb: typec: mux: Introduce indirection") > > include/linux/usb/typec_mux.h | 44 ++++++++++++++++++++++++++++++----- > 1 file changed, 38 insertions(+), 6 deletions(-) > > diff --git a/include/linux/usb/typec_mux.h b/include/linux/usb/typec_mux.h > index ee57781dcf28..9292f0e07846 100644 > --- a/include/linux/usb/typec_mux.h > +++ b/include/linux/usb/typec_mux.h > @@ -58,17 +58,13 @@ struct typec_mux_desc { > void *drvdata; > }; > > +#if IS_ENABLED(CONFIG_TYPEC) > + > struct typec_mux *fwnode_typec_mux_get(struct fwnode_handle *fwnode, > const struct typec_altmode_desc *desc); > void typec_mux_put(struct typec_mux *mux); > int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state); > > -static inline struct typec_mux * > -typec_mux_get(struct device *dev, const struct typec_altmode_desc *desc) > -{ > - return fwnode_typec_mux_get(dev_fwnode(dev), desc); > -} > - > struct typec_mux_dev * > typec_mux_register(struct device *parent, const struct typec_mux_desc *desc); > void typec_mux_unregister(struct typec_mux_dev *mux); > @@ -76,4 +72,40 @@ void typec_mux_unregister(struct typec_mux_dev *mux); > void typec_mux_set_drvdata(struct typec_mux_dev *mux, void *data); > void *typec_mux_get_drvdata(struct typec_mux_dev *mux); > > +#else > + > +static inline struct typec_mux *fwnode_typec_mux_get(struct fwnode_handle *fwnode, > + const struct typec_altmode_desc *desc) > +{ > + return NULL; > +} > + > +static inline void typec_mux_put(struct typec_mux *mux) {} > + > +static inline int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state) > +{ > + return 0; > +} > + > +static inline struct typec_mux_dev * > +typec_mux_register(struct device *parent, const struct typec_mux_desc *desc) > +{ > + return ERR_PTR(-EOPNOTSUPP); > +} > +static inline void typec_mux_unregister(struct typec_mux_dev *mux) {} > + > +static inline void typec_mux_set_drvdata(struct typec_mux_dev *mux, void *data) {} > +static inline void *typec_mux_get_drvdata(struct typec_mux_dev *mux) > +{ > + return ERR_PTR(-EOPNOTSUPP); > +} > + > +#endif /* CONFIG_TYPEC */ > + > +static inline struct typec_mux * > +typec_mux_get(struct device *dev, const struct typec_altmode_desc *desc) > +{ > + return fwnode_typec_mux_get(dev_fwnode(dev), desc); > +} > + > #endif /* __USB_TYPEC_MUX */ > -- > 2.36.1.476.g0c4daa206d-goog
diff --git a/include/linux/usb/typec_mux.h b/include/linux/usb/typec_mux.h index ee57781dcf28..9292f0e07846 100644 --- a/include/linux/usb/typec_mux.h +++ b/include/linux/usb/typec_mux.h @@ -58,17 +58,13 @@ struct typec_mux_desc { void *drvdata; }; +#if IS_ENABLED(CONFIG_TYPEC) + struct typec_mux *fwnode_typec_mux_get(struct fwnode_handle *fwnode, const struct typec_altmode_desc *desc); void typec_mux_put(struct typec_mux *mux); int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state); -static inline struct typec_mux * -typec_mux_get(struct device *dev, const struct typec_altmode_desc *desc) -{ - return fwnode_typec_mux_get(dev_fwnode(dev), desc); -} - struct typec_mux_dev * typec_mux_register(struct device *parent, const struct typec_mux_desc *desc); void typec_mux_unregister(struct typec_mux_dev *mux); @@ -76,4 +72,40 @@ void typec_mux_unregister(struct typec_mux_dev *mux); void typec_mux_set_drvdata(struct typec_mux_dev *mux, void *data); void *typec_mux_get_drvdata(struct typec_mux_dev *mux); +#else + +static inline struct typec_mux *fwnode_typec_mux_get(struct fwnode_handle *fwnode, + const struct typec_altmode_desc *desc) +{ + return NULL; +} + +static inline void typec_mux_put(struct typec_mux *mux) {} + +static inline int typec_mux_set(struct typec_mux *mux, struct typec_mux_state *state) +{ + return 0; +} + +static inline struct typec_mux_dev * +typec_mux_register(struct device *parent, const struct typec_mux_desc *desc) +{ + return ERR_PTR(-EOPNOTSUPP); +} +static inline void typec_mux_unregister(struct typec_mux_dev *mux) {} + +static inline void typec_mux_set_drvdata(struct typec_mux_dev *mux, void *data) {} +static inline void *typec_mux_get_drvdata(struct typec_mux_dev *mux) +{ + return ERR_PTR(-EOPNOTSUPP); +} + +#endif /* CONFIG_TYPEC */ + +static inline struct typec_mux * +typec_mux_get(struct device *dev, const struct typec_altmode_desc *desc) +{ + return fwnode_typec_mux_get(dev_fwnode(dev), desc); +} + #endif /* __USB_TYPEC_MUX */