Re: [PATCH v1 1/1] mux: consumer: Add dummy functions for !CONFIG_MULTIPLEXER case

From: Kuppuswamy, Sathyanarayanan
Date: Sat Jul 08 2017 - 19:05:00 EST


Hi Peter,

On 7/8/2017 1:55 PM, Peter Rosin wrote:
On 2017-07-07 23:41, sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx wrote:
From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx>

Add dummy functions to avoid compile time issues when CONFIG_MULTIPLEXER
is not enabled.
Hi!

Consumers should "select MULTIPLEXER",
If their driver can't work without mux_* calls then you can make it compulsory. But its not always true.
so this does not make sense.
Or do you have a driver that has an optional mux consumer?
I came across this case when I was working on Intel USB MUX driver. I think you know the history behind it. Although I am not planning to merge that driver now, but I think the use case is still valid.

Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx>
---
include/linux/mux/consumer.h | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)

diff --git a/include/linux/mux/consumer.h b/include/linux/mux/consumer.h
index 5577e1b..744a5b8 100644
--- a/include/linux/mux/consumer.h
+++ b/include/linux/mux/consumer.h
@@ -16,6 +16,7 @@
struct device;
struct mux_control;
+#ifdef CONFIG_MULTIPLEXER
unsigned int mux_control_states(struct mux_control *mux);
int __must_check mux_control_select(struct mux_control *mux,
unsigned int state);
@@ -29,4 +30,41 @@ void mux_control_put(struct mux_control *mux);
struct mux_control *devm_mux_control_get(struct device *dev,
const char *mux_name);
+#else
+unsigned int mux_control_states(struct mux_control *mux)
static inline

Cheers,
peda

+{
+ return -ENODEV;
+}
+
+int __must_check mux_control_select(struct mux_control *mux,
+ unsigned int state)
+{
+ return -ENODEV;
+}
+
+int __must_check mux_control_try_select(struct mux_control *mux,
+ unsigned int state)
+{
+ return -ENODEV;
+}
+
+int mux_control_deselect(struct mux_control *mux)
+{
+ return -ENODEV;
+}
+
+struct mux_control *mux_control_get(struct device *dev, const char *mux_name)
+{
+ return ERR_PTR(-ENODEV);
+}
+
+void mux_control_put(struct mux_control *mux) {}
+
+struct mux_control *devm_mux_control_get(struct device *dev,
+ const char *mux_name)
+{
+ return ERR_PTR(-ENODEV);
+}
+#endif
+
#endif /* _LINUX_MUX_CONSUMER_H */