All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josua Mayer <josua@solid-run.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Magnus Damm <magnus.damm@gmail.com>,
	Wolfram Sang <wsa-dev@sang-engineering.com>,
	Marc Kleine-Budde <mkl@pengutronix.de>,
	Vincent Mailhol <mailhol@kernel.org>,
	Vinod Koul <vkoul@kernel.org>,
	Kishon Vijay Abraham I <kishon@kernel.org>,
	Peter Rosin <peda@axentia.se>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Andreas Kemnade <andreas@kemnade.info>,
	Kevin Hilman <khilman@baylibre.com>,
	Roger Quadros <rogerq@kernel.org>,
	Tony Lindgren <tony@atomide.com>, Vignesh R <vigneshr@ti.com>,
	Janusz Krzysztofik <jmkrzyszt@gmail.com>,
	Andi Shyti <andi.shyti@kernel.org>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	kernel test robot <lkp@intel.com>
Cc: "oe-kbuild-all@lists.linux.dev" <oe-kbuild-all@lists.linux.dev>,
	Mikhail Anikin <mikhail.anikin@solid-run.com>,
	Yazan Shhady <yazan.shhady@solid-run.com>,
	Jon Nettleton <jon@solid-run.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"linux-phy@lists.infradead.org" <linux-phy@lists.infradead.org>
Subject: Re: [PATCH v4 2/7] mux: Add helper functions for getting optional and selected mux-state
Date: Thu, 8 Jan 2026 07:42:39 +0000	[thread overview]
Message-ID: <3396461.44csPzL39Z@josua-pc> (raw)
In-Reply-To: <202601010305.tpY47HE4-lkp@intel.com>

On Wednesday, 31 December 2025 21:18:51 IST kernel test robot wrote:
> Hi Josua,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on 8f0b4cce4481fb22653697cced8d0d04027cb1e8]
> 
> url:   
> https://github.com/intel-lab-lkp/linux/commits/Josua-Mayer/phy-can-transcei
> ver-rename-temporary-helper-function-to-avoid-conflict/20251229-223153 base:
>   8f0b4cce4481fb22653697cced8d0d04027cb1e8
> patch link:   
> https://lore.kernel.org/r/20251229-rz-sdio-mux-v4-2-a023e55758fe%40solid-ru
> n.com patch subject: [PATCH v4 2/7] mux: Add helper functions for getting
> optional and selected mux-state config: parisc-randconfig-002-20260101
> (https://download.01.org/0day-ci/archive/20260101/202601010305.tpY47HE4-lkp
> @intel.com/config) compiler: hppa-linux-gcc (GCC) 10.5.0
> reproduce (this is a W=1 build):
> (https://download.01.org/0day-ci/archive/20260101/202601010305.tpY47HE4-lkp
> @intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version
> of the same patch/commit), kindly add following tags
> 
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes:
> | https://lore.kernel.org/oe-kbuild-all/202601010305.tpY47HE4-lkp@intel.com
> | /
> All error/warnings (new ones prefixed by >>):
> 
>    In file included from drivers/mux/core.c:19:
> 
>    include/linux/mux/consumer.h: In function 'mux_control_put':
> >> include/linux/mux/consumer.h:138:9: warning: 'return' with a value, in
> >> function returning void [-Wreturn-type]
>      138 |  return -EOPNOTSUPP;
> 
>          |         ^
> 
To be fixed in next version

>    include/linux/mux/consumer.h:136:20: note: declared here
>      136 | static inline void mux_control_put(struct mux_control *mux)
> 
>          |                    ^~~~~~~~~~~~~~~
> 
>    drivers/mux/core.c: At top level:
> >> drivers/mux/core.c:302:14: error: redefinition of 'mux_control_states'
> 
>      302 | unsigned int mux_control_states(struct mux_control *mux)
> 
>          |              ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:70:28: note: previous definition of
> 'mux_control_states' was here 70 | static inline unsigned int
> mux_control_states(struct mux_control *mux)
>          |                            ^~~~~~~~~~~~~~~~~~

I don't understand how this is possible.
In the header file line 136 the inline declaration for mux_control_states is 
gated by ifdef CONFIG_MULTIPLEXER else case.

The build of mux/core.c itself is gated in Makefile by CONFIG_MULTIPLEXER.

So mux/core.c is not being built when CONFIG_MULTIPLEXER is not set.
If it is set, we hit in the header file the non-inline declaration near start
of the file.

> >> 
> >> drivers/mux/core.c:365:5: error: redefinition of
> >> 'mux_control_select_delay'
> 
>      365 | int mux_control_select_delay(struct mux_control *mux, unsigned
> int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:74:32: note: previous definition of
> 'mux_control_select_delay' was here 74 | static inline int __must_check
> mux_control_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:403:5: error: redefinition of 'mux_state_select_delay'
> 
>      403 | int mux_state_select_delay(struct mux_state *mstate, unsigned int
> delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:79:32: note: previous definition of
> 'mux_state_select_delay' was here 79 | static inline int __must_check
> mux_state_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:425:5: error: redefinition of
> >> 'mux_control_try_select_delay'
>      425 | int mux_control_try_select_delay(struct mux_control *mux,
> unsigned int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:84:32: note: previous definition of
> 'mux_control_try_select_delay' was here 84 | static inline int __must_check
> mux_control_try_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:459:5: error: redefinition of
> >> 'mux_state_try_select_delay'
>      459 | int mux_state_try_select_delay(struct mux_state *mstate, unsigned
> int delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:90:32: note: previous definition of
> 'mux_state_try_select_delay' was here 90 | static inline int __must_check
> mux_state_try_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:477:5: error: redefinition of 'mux_control_deselect'
> 
>      477 | int mux_control_deselect(struct mux_control *mux)
> 
>          |     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:118:19: note: previous definition of
> 'mux_control_deselect' was here 118 | static inline int
> mux_control_deselect(struct mux_control *mux)
>          |                   ^~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:503:5: error: redefinition of 'mux_state_deselect'
> 
>      503 | int mux_state_deselect(struct mux_state *mstate)
> 
>          |     ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:122:19: note: previous definition of
> 'mux_state_deselect' was here 122 | static inline int
> mux_state_deselect(struct mux_state *mstate)
>          |                   ^~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:625:21: error: redefinition of 'mux_control_get'
> 
>      625 | struct mux_control *mux_control_get(struct device *dev, const
> char *mux_name)
>          |                     ^~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:127:35: note: previous definition of
> 'mux_control_get' was here 127 | static inline struct mux_control
> *mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:638:21: error: redefinition of
> >> 'mux_control_get_optional'
>      638 | struct mux_control *mux_control_get_optional(struct device *dev,
> const char *mux_name)
>          |                     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:131:35: note: previous definition of
> 'mux_control_get_optional' was here 131 | static inline struct mux_control
> *mux_control_get_optional(struct device *dev,
>          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:650:6: error: redefinition of 'mux_control_put'
> 
>      650 | void mux_control_put(struct mux_control *mux)
> 
>          |      ^~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:136:20: note: previous definition of
> 'mux_control_put' was here 136 | static inline void mux_control_put(struct
> mux_control *mux)
>          |                    ^~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:671:21: error: redefinition of 'devm_mux_control_get'
> 
>      671 | struct mux_control *devm_mux_control_get(struct device *dev,
> 
>          |                     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:141:35: note: previous definition of
> 'devm_mux_control_get' was here 141 | static inline struct mux_control
> *devm_mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:774:19: error: redefinition of 'devm_mux_state_get'
> 
>      774 | struct mux_state *devm_mux_state_get(struct device *dev, const
> char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:145:33: note: previous definition of
> 'devm_mux_state_get' was here 145 | static inline struct mux_state
> *devm_mux_state_get(struct device *dev, const char *mux_name)
>          |                                 ^~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:788:19: error: redefinition of
> >> 'devm_mux_state_get_optional'
>      788 | struct mux_state *devm_mux_state_get_optional(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:149:33: note: previous definition of
> 'devm_mux_state_get_optional' was here 149 | static inline struct mux_state
> *devm_mux_state_get_optional(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:838:19: error: redefinition of
> >> 'devm_mux_state_get_selected'
>      838 | struct mux_state *devm_mux_state_get_selected(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:154:33: note: previous definition of
> 'devm_mux_state_get_selected' was here 154 | static inline struct mux_state
> *devm_mux_state_get_selected(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:854:19: error: redefinition of
> >> 'devm_mux_state_get_optional_selected'
>      854 | struct mux_state *devm_mux_state_get_optional_selected(struct
> device *dev,
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:159:33: note: previous definition of
> 'devm_mux_state_get_optional_selected' was here 159 | static inline struct
> mux_state *devm_mux_state_get_optional_selected(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          |                                 ~~~
> 
> --
>    In file included from core.c:19:
> 
>    include/linux/mux/consumer.h: In function 'mux_control_put':
> >> include/linux/mux/consumer.h:138:9: warning: 'return' with a value, in
> >> function returning void [-Wreturn-type]
>      138 |  return -EOPNOTSUPP;
> 
>          |         ^
> 
>    include/linux/mux/consumer.h:136:20: note: declared here
>      136 | static inline void mux_control_put(struct mux_control *mux)
> 
>          |                    ^~~~~~~~~~~~~~~
> 
>    core.c: At top level:
>    core.c:302:14: error: redefinition of 'mux_control_states'
>      302 | unsigned int mux_control_states(struct mux_control *mux)
> 
>          |              ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:70:28: note: previous definition of
> 'mux_control_states' was here 70 | static inline unsigned int
> mux_control_states(struct mux_control *mux)
>          |                            ^~~~~~~~~~~~~~~~~~
> 
>    core.c:365:5: error: redefinition of 'mux_control_select_delay'
>      365 | int mux_control_select_delay(struct mux_control *mux, unsigned
> int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:74:32: note: previous definition of
> 'mux_control_select_delay' was here 74 | static inline int __must_check
> mux_control_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:403:5: error: redefinition of 'mux_state_select_delay'
>      403 | int mux_state_select_delay(struct mux_state *mstate, unsigned int
> delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:79:32: note: previous definition of
> 'mux_state_select_delay' was here 79 | static inline int __must_check
> mux_state_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:425:5: error: redefinition of 'mux_control_try_select_delay'
>      425 | int mux_control_try_select_delay(struct mux_control *mux,
> unsigned int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:84:32: note: previous definition of
> 'mux_control_try_select_delay' was here 84 | static inline int __must_check
> mux_control_try_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:459:5: error: redefinition of 'mux_state_try_select_delay'
>      459 | int mux_state_try_select_delay(struct mux_state *mstate, unsigned
> int delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:90:32: note: previous definition of
> 'mux_state_try_select_delay' was here 90 | static inline int __must_check
> mux_state_try_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:477:5: error: redefinition of 'mux_control_deselect'
>      477 | int mux_control_deselect(struct mux_control *mux)
> 
>          |     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:118:19: note: previous definition of
> 'mux_control_deselect' was here 118 | static inline int
> mux_control_deselect(struct mux_control *mux)
>          |                   ^~~~~~~~~~~~~~~~~~~~
> 
>    core.c:503:5: error: redefinition of 'mux_state_deselect'
>      503 | int mux_state_deselect(struct mux_state *mstate)
> 
>          |     ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:122:19: note: previous definition of
> 'mux_state_deselect' was here 122 | static inline int
> mux_state_deselect(struct mux_state *mstate)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    core.c:625:21: error: redefinition of 'mux_control_get'
>      625 | struct mux_control *mux_control_get(struct device *dev, const
> char *mux_name)
>          |                     ^~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:127:35: note: previous definition of
> 'mux_control_get' was here 127 | static inline struct mux_control
> *mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~
> 
>    core.c:638:21: error: redefinition of 'mux_control_get_optional'
>      638 | struct mux_control *mux_control_get_optional(struct device *dev,
> const char *mux_name)
>          |                     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:131:35: note: previous definition of
> 'mux_control_get_optional' was here 131 | static inline struct mux_control
> *mux_control_get_optional(struct device *dev,
>          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:650:6: error: redefinition of 'mux_control_put'
>      650 | void mux_control_put(struct mux_control *mux)
> 
>          |      ^~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:136:20: note: previous definition of
> 'mux_control_put' was here 136 | static inline void mux_control_put(struct
> mux_control *mux)
>          |                    ^~~~~~~~~~~~~~~
> 
>    core.c:671:21: error: redefinition of 'devm_mux_control_get'
>      671 | struct mux_control *devm_mux_control_get(struct device *dev,
> 
>          |                     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:141:35: note: previous definition of
> 'devm_mux_control_get' was here 141 | static inline struct mux_control
> *devm_mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~~~~~~
> 
>    core.c:774:19: error: redefinition of 'devm_mux_state_get'
>      774 | struct mux_state *devm_mux_state_get(struct device *dev, const
> char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:145:33: note: previous definition of
> 'devm_mux_state_get' was here 145 | static inline struct mux_state
> *devm_mux_state_get(struct device *dev, const char *mux_name)
>          |                                 ^~~~~~~~~~~~~~~~~~
> 
>    core.c:788:19: error: redefinition of 'devm_mux_state_get_optional'
>      788 | struct mux_state *devm_mux_state_get_optional(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:149:33: note: previous definition of
> 'devm_mux_state_get_optional' was here 149 | static inline struct mux_state
> *devm_mux_state_get_optional(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:838:19: error: redefinition of 'devm_mux_state_get_selected'
>      838 | struct mux_state *devm_mux_state_get_selected(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> vim +/mux_control_states +302 drivers/mux/core.c
> 
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  295
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  296 
> /** a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 297   * mux_control_states() - Query the number of multiplexer states.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  298  
> * @mux: The mux-control to query. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  299   * a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  300   * Return: The
> number of multiplexer states. a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  301   */ a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14 @302  unsigned int mux_control_states(struct
> mux_control *mux) a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  303  { a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  304  	return mux->states; a3b02a9c6591ce drivers/mux/mux-
core.c
> Peter Rosin        2017-05-14  305  } a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  306  EXPORT_SYMBOL_GPL(mux_control_states);
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  307
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  308 
> /* a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  309
>   * The mux->lock must be down when calling this function. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  310   */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  311 
> static int __mux_control_select(struct mux_control *mux, int state)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  312  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  313 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  314 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  315  	if (WARN_ON(state < 0 || state >= mux->states))
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  316 
> 		return -EINVAL; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  317 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  318  	if (mux->cached_state == state) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  319  		
return 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  320
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  321 
> 	ret = mux_control_set(mux, state); a3b02a9c6591ce drivers/mux/mux-
core.c
> Peter Rosin        2017-05-14  322  	if (ret >= 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  323  		
return 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  324
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  325 
> 	/* The mux update failed, try to revert if appropriate... */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  326 
> 	if (mux->idle_state != MUX_IDLE_AS_IS) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  327 
> 		mux_control_set(mux, mux->idle_state); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  328 a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  329  	return ret;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  330  }
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  331
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  332 
> static void mux_control_delay(struct mux_control *mux, unsigned int
> delay_us) 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  333  { 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  334  	ktime_t delayend; 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  335  	s64 remaining; 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  336 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  337  	if (!
delay_us)
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  338 
> 		return; 17b5b576ff5faf drivers/mux/core.c     Vincent 
Whitchurch
> 2021-10-07  339 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  340  	delayend = ktime_add_us(mux->last_change, delay_us);
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  341 
> 	remaining = ktime_us_delta(delayend, ktime_get()); 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  342  	if (remaining 
>
> 0) 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  343
>  		fsleep(remaining); 17b5b576ff5faf drivers/mux/core.c     
Vincent
> Whitchurch 2021-10-07  344  } 17b5b576ff5faf drivers/mux/core.c     Vincent
> Whitchurch 2021-10-07  345 a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  346  /** 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  347   * mux_control_select_delay() - Select
> the given multiplexer state. a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  348   * @mux: The mux-control to request a change
> of state from. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  349   * @state: The new requested state. 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  350   * @delay_us:
> The time to delay (in microseconds) if the mux state is changed.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  351  
> * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  352 
>  * On successfully selecting the mux-control state, it will be locked until
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  353  
> * there is a call to mux_control_deselect(). If the mux-control is already
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  354  
> * selected when mux_control_select() is called, the caller will be blocked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  355  
> * until mux_control_deselect() or mux_state_deselect() is called (by
> someone 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  356   * else). a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  357   * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin      
>  2017-05-14  358   * Therefore, make sure to call mux_control_deselect()
> when the operation is a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin    
>    2017-05-14  359   * complete and the mux-control is free for others to
> use, but do not call a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin     
>   2017-05-14  360   * mux_control_deselect() if mux_control_select() fails.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  361  
> * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  362 
>  * Return: 0 when the mux-control state has the requested state or a
> negative a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  363   * errno on error. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  364   */ 17b5b576ff5faf drivers/mux/core.c  
>   Vincent Whitchurch 2021-10-07 @365  int mux_control_select_delay(struct
> mux_control *mux, unsigned int state, 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  366  			     unsigned int 
delay_us)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  367  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  368 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  369 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  370  	ret = down_killable(&mux->lock); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  371  	if (ret < 0)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  372 
> 		return ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter 
Rosin       
> 2017-05-14  373 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  374  	ret = __mux_control_select(mux, state); 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  375  	if (ret >= 0)
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  376 
> 		mux_control_delay(mux, delay_us); a3b02a9c6591ce 
drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  377 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  378  	if (ret < 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  379 
> 		up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  380 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  381  	return ret; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter
> Rosin        2017-05-14  382  } 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  383 
> EXPORT_SYMBOL_GPL(mux_control_select_delay); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  384 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  385  /**
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  386  
> * mux_state_select_delay() - Select the given multiplexer state.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  387  
> * @mstate: The mux-state to select. 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  388   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  389   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  390  
> * On successfully selecting the mux-state, its mux-control will be locked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  391  
> * until there is a call to mux_state_deselect(). If the mux-control is
> already 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  392   * selected when mux_state_select() is called, the caller will be
> blocked 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  393   * until mux_state_deselect() or mux_control_deselect() is called (by
> someone 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  394   * else). 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  395   * 84564481bc4520 drivers/mux/core.c     Aswath Govindraju
>  2022-01-07  396   * Therefore, make sure to call mux_state_deselect() when
> the operation is 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  397   * complete and the mux-control is free for others to use,
> but do not call 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  398   * mux_state_deselect() if mux_state_select() fails.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  399  
> * 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  400 
>  * Return: 0 when the mux-state has been selected or a negative
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  401  
> * errno on error. 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  402   */ 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07 @403  int mux_state_select_delay(struct mux_state
> *mstate, unsigned int delay_us) 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  404  { 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  405  	return
> mux_control_select_delay(mstate->mux, mstate->state, delay_us);
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  406  }
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  407 
> EXPORT_SYMBOL_GPL(mux_state_select_delay); 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  408 a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  409  /**
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  410  
> * mux_control_try_select_delay() - Try to select the given multiplexer
> state. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 411   * @mux: The mux-control to request a change of state from.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  412  
> * @state: The new requested state. 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  413   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  414   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  415  
> * On successfully selecting the mux-control state, it will be locked until
> f22d1117b9c3e2 drivers/mux/core.c     Peter Rosin        2022-01-07  416  
> * mux_control_deselect() is called. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  417   * a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  418   * Therefore,
> make sure to call mux_control_deselect() when the operation is
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  419  
> * complete and the mux-control is free for others to use, but do not call
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  420  
> * mux_control_deselect() if mux_control_try_select() fails. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  421   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  422  
> * Return: 0 when the mux-control state has the requested state or a
> negative a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  423   * errno on error. Specifically -EBUSY if the mux-control
> is contended. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  424   */ 17b5b576ff5faf drivers/mux/core.c     Vincent
> Whitchurch 2021-10-07 @425  int mux_control_try_select_delay(struct
> mux_control *mux, unsigned int state, 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  426  				 
unsigned int delay_us)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  427  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  428 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  429 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  430  	if (down_trylock(&mux->lock)) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  431  		
return -EBUSY;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  432
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  433 
> 	ret = __mux_control_select(mux, state); 17b5b576ff5faf drivers/mux/
core.c 
>    Vincent Whitchurch 2021-10-07  434  	if (ret >= 0) 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  435 
> 		mux_control_delay(mux, delay_us); a3b02a9c6591ce 
drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  436 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  437  	if (ret < 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  438 
> 		up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  439 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  440  	return ret; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter
> Rosin        2017-05-14  441  } 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  442 
> EXPORT_SYMBOL_GPL(mux_control_try_select_delay); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  443 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  444  /**
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  445  
> * mux_state_try_select_delay() - Try to select the given multiplexer state.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  446  
> * @mstate: The mux-state to select. 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  447   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  448   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  449  
> * On successfully selecting the mux-state, its mux-control will be locked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  450  
> * until mux_state_deselect() is called. 84564481bc4520 drivers/mux/core.c  
>   Aswath Govindraju  2022-01-07  451   * 84564481bc4520 drivers/mux/core.c 
>    Aswath Govindraju  2022-01-07  452   * Therefore, make sure to call
> mux_state_deselect() when the operation is 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  453   * complete and
> the mux-control is free for others to use, but do not call 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  454   *
> mux_state_deselect() if mux_state_try_select() fails. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  455   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  456  
> * Return: 0 when the mux-state has been selected or a negative errno on
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  457  
> * error. Specifically -EBUSY if the mux-control is contended.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  458  
> */ 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07 @459
>  int mux_state_try_select_delay(struct mux_state *mstate, unsigned int
> delay_us) 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  460  { 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  461  	return mux_control_try_select_delay(mstate->mux,
> mstate->state, delay_us); 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07  462  } 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07  463  EXPORT_SYMBOL_GPL(mux_state_try_select_delay);
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  464
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  465 
> /** a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 466   * mux_control_deselect() - Deselect the previously selected
> multiplexer state. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  467   * @mux: The mux-control to deselect. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  468   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  469  
> * It is required that a single call is made to mux_control_deselect() for
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  470  
> * each and every successful call made to either of mux_control_select() or
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  471  
> * mux_control_try_select(). a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  472   * a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  473   * Return: 0 on success and a negative
> errno on error. An error can only a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  474   * occur if the mux has an idle state.
> Note that even if an error occurs, the a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  475   * mux-control
> is unlocked and is thus free for the next access. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  476   */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 @477 
> int mux_control_deselect(struct mux_control *mux) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  478  { a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  479  	int ret = 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  480
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  481 
> 	if (mux->idle_state != MUX_IDLE_AS_IS && a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  482  	   
> mux->idle_state != mux->cached_state) a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  483  		ret = 
mux_control_set(mux,
> mux->idle_state); a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  484 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  485  	up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  486 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  487  	return ret; a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  488  } a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  489 
> EXPORT_SYMBOL_GPL(mux_control_deselect); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  490





WARNING: multiple messages have this Message-ID (diff)
From: Josua Mayer <josua@solid-run.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Magnus Damm <magnus.damm@gmail.com>,
	Wolfram Sang <wsa-dev@sang-engineering.com>,
	Marc Kleine-Budde <mkl@pengutronix.de>,
	Vincent Mailhol <mailhol@kernel.org>,
	Vinod Koul <vkoul@kernel.org>,
	Kishon Vijay Abraham I <kishon@kernel.org>,
	Peter Rosin <peda@axentia.se>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Andreas Kemnade <andreas@kemnade.info>,
	Kevin Hilman <khilman@baylibre.com>,
	Roger Quadros <rogerq@kernel.org>,
	Tony Lindgren <tony@atomide.com>, Vignesh R <vigneshr@ti.com>,
	Janusz Krzysztofik <jmkrzyszt@gmail.com>,
	Andi Shyti <andi.shyti@kernel.org>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	kernel test robot <lkp@intel.com>
Cc: "oe-kbuild-all@lists.linux.dev" <oe-kbuild-all@lists.linux.dev>,
	Mikhail Anikin <mikhail.anikin@solid-run.com>,
	Yazan Shhady <yazan.shhady@solid-run.com>,
	Jon Nettleton <jon@solid-run.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>,
	"linux-phy@lists.infradead.org" <linux-phy@lists.infradead.org>
Subject: Re: [PATCH v4 2/7] mux: Add helper functions for getting optional and selected mux-state
Date: Thu, 8 Jan 2026 07:42:39 +0000	[thread overview]
Message-ID: <3396461.44csPzL39Z@josua-pc> (raw)
In-Reply-To: <202601010305.tpY47HE4-lkp@intel.com>

On Wednesday, 31 December 2025 21:18:51 IST kernel test robot wrote:
> Hi Josua,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on 8f0b4cce4481fb22653697cced8d0d04027cb1e8]
> 
> url:   
> https://github.com/intel-lab-lkp/linux/commits/Josua-Mayer/phy-can-transcei
> ver-rename-temporary-helper-function-to-avoid-conflict/20251229-223153 base:
>   8f0b4cce4481fb22653697cced8d0d04027cb1e8
> patch link:   
> https://lore.kernel.org/r/20251229-rz-sdio-mux-v4-2-a023e55758fe%40solid-ru
> n.com patch subject: [PATCH v4 2/7] mux: Add helper functions for getting
> optional and selected mux-state config: parisc-randconfig-002-20260101
> (https://download.01.org/0day-ci/archive/20260101/202601010305.tpY47HE4-lkp
> @intel.com/config) compiler: hppa-linux-gcc (GCC) 10.5.0
> reproduce (this is a W=1 build):
> (https://download.01.org/0day-ci/archive/20260101/202601010305.tpY47HE4-lkp
> @intel.com/reproduce)
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version
> of the same patch/commit), kindly add following tags
> 
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes:
> | https://lore.kernel.org/oe-kbuild-all/202601010305.tpY47HE4-lkp@intel.com
> | /
> All error/warnings (new ones prefixed by >>):
> 
>    In file included from drivers/mux/core.c:19:
> 
>    include/linux/mux/consumer.h: In function 'mux_control_put':
> >> include/linux/mux/consumer.h:138:9: warning: 'return' with a value, in
> >> function returning void [-Wreturn-type]
>      138 |  return -EOPNOTSUPP;
> 
>          |         ^
> 
To be fixed in next version

>    include/linux/mux/consumer.h:136:20: note: declared here
>      136 | static inline void mux_control_put(struct mux_control *mux)
> 
>          |                    ^~~~~~~~~~~~~~~
> 
>    drivers/mux/core.c: At top level:
> >> drivers/mux/core.c:302:14: error: redefinition of 'mux_control_states'
> 
>      302 | unsigned int mux_control_states(struct mux_control *mux)
> 
>          |              ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:70:28: note: previous definition of
> 'mux_control_states' was here 70 | static inline unsigned int
> mux_control_states(struct mux_control *mux)
>          |                            ^~~~~~~~~~~~~~~~~~

I don't understand how this is possible.
In the header file line 136 the inline declaration for mux_control_states is 
gated by ifdef CONFIG_MULTIPLEXER else case.

The build of mux/core.c itself is gated in Makefile by CONFIG_MULTIPLEXER.

So mux/core.c is not being built when CONFIG_MULTIPLEXER is not set.
If it is set, we hit in the header file the non-inline declaration near start
of the file.

> >> 
> >> drivers/mux/core.c:365:5: error: redefinition of
> >> 'mux_control_select_delay'
> 
>      365 | int mux_control_select_delay(struct mux_control *mux, unsigned
> int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:74:32: note: previous definition of
> 'mux_control_select_delay' was here 74 | static inline int __must_check
> mux_control_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:403:5: error: redefinition of 'mux_state_select_delay'
> 
>      403 | int mux_state_select_delay(struct mux_state *mstate, unsigned int
> delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:79:32: note: previous definition of
> 'mux_state_select_delay' was here 79 | static inline int __must_check
> mux_state_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:425:5: error: redefinition of
> >> 'mux_control_try_select_delay'
>      425 | int mux_control_try_select_delay(struct mux_control *mux,
> unsigned int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:84:32: note: previous definition of
> 'mux_control_try_select_delay' was here 84 | static inline int __must_check
> mux_control_try_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:459:5: error: redefinition of
> >> 'mux_state_try_select_delay'
>      459 | int mux_state_try_select_delay(struct mux_state *mstate, unsigned
> int delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:90:32: note: previous definition of
> 'mux_state_try_select_delay' was here 90 | static inline int __must_check
> mux_state_try_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:477:5: error: redefinition of 'mux_control_deselect'
> 
>      477 | int mux_control_deselect(struct mux_control *mux)
> 
>          |     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:118:19: note: previous definition of
> 'mux_control_deselect' was here 118 | static inline int
> mux_control_deselect(struct mux_control *mux)
>          |                   ^~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:503:5: error: redefinition of 'mux_state_deselect'
> 
>      503 | int mux_state_deselect(struct mux_state *mstate)
> 
>          |     ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:122:19: note: previous definition of
> 'mux_state_deselect' was here 122 | static inline int
> mux_state_deselect(struct mux_state *mstate)
>          |                   ^~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:625:21: error: redefinition of 'mux_control_get'
> 
>      625 | struct mux_control *mux_control_get(struct device *dev, const
> char *mux_name)
>          |                     ^~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:127:35: note: previous definition of
> 'mux_control_get' was here 127 | static inline struct mux_control
> *mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:638:21: error: redefinition of
> >> 'mux_control_get_optional'
>      638 | struct mux_control *mux_control_get_optional(struct device *dev,
> const char *mux_name)
>          |                     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:131:35: note: previous definition of
> 'mux_control_get_optional' was here 131 | static inline struct mux_control
> *mux_control_get_optional(struct device *dev,
>          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:650:6: error: redefinition of 'mux_control_put'
> 
>      650 | void mux_control_put(struct mux_control *mux)
> 
>          |      ^~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:136:20: note: previous definition of
> 'mux_control_put' was here 136 | static inline void mux_control_put(struct
> mux_control *mux)
>          |                    ^~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:671:21: error: redefinition of 'devm_mux_control_get'
> 
>      671 | struct mux_control *devm_mux_control_get(struct device *dev,
> 
>          |                     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:141:35: note: previous definition of
> 'devm_mux_control_get' was here 141 | static inline struct mux_control
> *devm_mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:774:19: error: redefinition of 'devm_mux_state_get'
> 
>      774 | struct mux_state *devm_mux_state_get(struct device *dev, const
> char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:145:33: note: previous definition of
> 'devm_mux_state_get' was here 145 | static inline struct mux_state
> *devm_mux_state_get(struct device *dev, const char *mux_name)
>          |                                 ^~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:788:19: error: redefinition of
> >> 'devm_mux_state_get_optional'
>      788 | struct mux_state *devm_mux_state_get_optional(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:149:33: note: previous definition of
> 'devm_mux_state_get_optional' was here 149 | static inline struct mux_state
> *devm_mux_state_get_optional(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:838:19: error: redefinition of
> >> 'devm_mux_state_get_selected'
>      838 | struct mux_state *devm_mux_state_get_selected(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:154:33: note: previous definition of
> 'devm_mux_state_get_selected' was here 154 | static inline struct mux_state
> *devm_mux_state_get_selected(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> >> 
> >> drivers/mux/core.c:854:19: error: redefinition of
> >> 'devm_mux_state_get_optional_selected'
>      854 | struct mux_state *devm_mux_state_get_optional_selected(struct
> device *dev,
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from drivers/mux/core.c:19:
>    include/linux/mux/consumer.h:159:33: note: previous definition of
> 'devm_mux_state_get_optional_selected' was here 159 | static inline struct
> mux_state *devm_mux_state_get_optional_selected(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          |                                 ~~~
> 
> --
>    In file included from core.c:19:
> 
>    include/linux/mux/consumer.h: In function 'mux_control_put':
> >> include/linux/mux/consumer.h:138:9: warning: 'return' with a value, in
> >> function returning void [-Wreturn-type]
>      138 |  return -EOPNOTSUPP;
> 
>          |         ^
> 
>    include/linux/mux/consumer.h:136:20: note: declared here
>      136 | static inline void mux_control_put(struct mux_control *mux)
> 
>          |                    ^~~~~~~~~~~~~~~
> 
>    core.c: At top level:
>    core.c:302:14: error: redefinition of 'mux_control_states'
>      302 | unsigned int mux_control_states(struct mux_control *mux)
> 
>          |              ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:70:28: note: previous definition of
> 'mux_control_states' was here 70 | static inline unsigned int
> mux_control_states(struct mux_control *mux)
>          |                            ^~~~~~~~~~~~~~~~~~
> 
>    core.c:365:5: error: redefinition of 'mux_control_select_delay'
>      365 | int mux_control_select_delay(struct mux_control *mux, unsigned
> int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:74:32: note: previous definition of
> 'mux_control_select_delay' was here 74 | static inline int __must_check
> mux_control_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:403:5: error: redefinition of 'mux_state_select_delay'
>      403 | int mux_state_select_delay(struct mux_state *mstate, unsigned int
> delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:79:32: note: previous definition of
> 'mux_state_select_delay' was here 79 | static inline int __must_check
> mux_state_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:425:5: error: redefinition of 'mux_control_try_select_delay'
>      425 | int mux_control_try_select_delay(struct mux_control *mux,
> unsigned int state,
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:84:32: note: previous definition of
> 'mux_control_try_select_delay' was here 84 | static inline int __must_check
> mux_control_try_select_delay(struct mux_control *mux,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:459:5: error: redefinition of 'mux_state_try_select_delay'
>      459 | int mux_state_try_select_delay(struct mux_state *mstate, unsigned
> int delay_us)
>          |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:90:32: note: previous definition of
> 'mux_state_try_select_delay' was here 90 | static inline int __must_check
> mux_state_try_select_delay(struct mux_state *mstate,
>          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:477:5: error: redefinition of 'mux_control_deselect'
>      477 | int mux_control_deselect(struct mux_control *mux)
> 
>          |     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:118:19: note: previous definition of
> 'mux_control_deselect' was here 118 | static inline int
> mux_control_deselect(struct mux_control *mux)
>          |                   ^~~~~~~~~~~~~~~~~~~~
> 
>    core.c:503:5: error: redefinition of 'mux_state_deselect'
>      503 | int mux_state_deselect(struct mux_state *mstate)
> 
>          |     ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:122:19: note: previous definition of
> 'mux_state_deselect' was here 122 | static inline int
> mux_state_deselect(struct mux_state *mstate)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    core.c:625:21: error: redefinition of 'mux_control_get'
>      625 | struct mux_control *mux_control_get(struct device *dev, const
> char *mux_name)
>          |                     ^~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:127:35: note: previous definition of
> 'mux_control_get' was here 127 | static inline struct mux_control
> *mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~
> 
>    core.c:638:21: error: redefinition of 'mux_control_get_optional'
>      638 | struct mux_control *mux_control_get_optional(struct device *dev,
> const char *mux_name)
>          |                     ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:131:35: note: previous definition of
> 'mux_control_get_optional' was here 131 | static inline struct mux_control
> *mux_control_get_optional(struct device *dev,
>          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:650:6: error: redefinition of 'mux_control_put'
>      650 | void mux_control_put(struct mux_control *mux)
> 
>          |      ^~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:136:20: note: previous definition of
> 'mux_control_put' was here 136 | static inline void mux_control_put(struct
> mux_control *mux)
>          |                    ^~~~~~~~~~~~~~~
> 
>    core.c:671:21: error: redefinition of 'devm_mux_control_get'
>      671 | struct mux_control *devm_mux_control_get(struct device *dev,
> 
>          |                     ^~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:141:35: note: previous definition of
> 'devm_mux_control_get' was here 141 | static inline struct mux_control
> *devm_mux_control_get(struct device *dev, const char *mux_name)
>          |                                   ^~~~~~~~~~~~~~~~~~~~
> 
>    core.c:774:19: error: redefinition of 'devm_mux_state_get'
>      774 | struct mux_state *devm_mux_state_get(struct device *dev, const
> char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:145:33: note: previous definition of
> 'devm_mux_state_get' was here 145 | static inline struct mux_state
> *devm_mux_state_get(struct device *dev, const char *mux_name)
>          |                                 ^~~~~~~~~~~~~~~~~~
> 
>    core.c:788:19: error: redefinition of 'devm_mux_state_get_optional'
>      788 | struct mux_state *devm_mux_state_get_optional(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    In file included from core.c:19:
>    include/linux/mux/consumer.h:149:33: note: previous definition of
> 'devm_mux_state_get_optional' was here 149 | static inline struct mux_state
> *devm_mux_state_get_optional(struct device *dev,
>          |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
>    core.c:838:19: error: redefinition of 'devm_mux_state_get_selected'
>      838 | struct mux_state *devm_mux_state_get_selected(struct device *dev,
> const char *mux_name)
>          |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> vim +/mux_control_states +302 drivers/mux/core.c
> 
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  295
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  296 
> /** a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 297   * mux_control_states() - Query the number of multiplexer states.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  298  
> * @mux: The mux-control to query. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  299   * a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  300   * Return: The
> number of multiplexer states. a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  301   */ a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14 @302  unsigned int mux_control_states(struct
> mux_control *mux) a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  303  { a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  304  	return mux->states; a3b02a9c6591ce drivers/mux/mux-
core.c
> Peter Rosin        2017-05-14  305  } a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  306  EXPORT_SYMBOL_GPL(mux_control_states);
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  307
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  308 
> /* a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  309
>   * The mux->lock must be down when calling this function. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  310   */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  311 
> static int __mux_control_select(struct mux_control *mux, int state)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  312  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  313 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  314 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  315  	if (WARN_ON(state < 0 || state >= mux->states))
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  316 
> 		return -EINVAL; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  317 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  318  	if (mux->cached_state == state) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  319  		
return 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  320
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  321 
> 	ret = mux_control_set(mux, state); a3b02a9c6591ce drivers/mux/mux-
core.c
> Peter Rosin        2017-05-14  322  	if (ret >= 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  323  		
return 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  324
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  325 
> 	/* The mux update failed, try to revert if appropriate... */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  326 
> 	if (mux->idle_state != MUX_IDLE_AS_IS) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  327 
> 		mux_control_set(mux, mux->idle_state); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  328 a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  329  	return ret;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  330  }
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  331
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  332 
> static void mux_control_delay(struct mux_control *mux, unsigned int
> delay_us) 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  333  { 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  334  	ktime_t delayend; 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  335  	s64 remaining; 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  336 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  337  	if (!
delay_us)
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  338 
> 		return; 17b5b576ff5faf drivers/mux/core.c     Vincent 
Whitchurch
> 2021-10-07  339 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch
> 2021-10-07  340  	delayend = ktime_add_us(mux->last_change, delay_us);
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  341 
> 	remaining = ktime_us_delta(delayend, ktime_get()); 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  342  	if (remaining 
>
> 0) 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  343
>  		fsleep(remaining); 17b5b576ff5faf drivers/mux/core.c     
Vincent
> Whitchurch 2021-10-07  344  } 17b5b576ff5faf drivers/mux/core.c     Vincent
> Whitchurch 2021-10-07  345 a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  346  /** 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  347   * mux_control_select_delay() - Select
> the given multiplexer state. a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  348   * @mux: The mux-control to request a change
> of state from. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  349   * @state: The new requested state. 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  350   * @delay_us:
> The time to delay (in microseconds) if the mux state is changed.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  351  
> * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  352 
>  * On successfully selecting the mux-control state, it will be locked until
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  353  
> * there is a call to mux_control_deselect(). If the mux-control is already
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  354  
> * selected when mux_control_select() is called, the caller will be blocked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  355  
> * until mux_control_deselect() or mux_state_deselect() is called (by
> someone 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  356   * else). a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  357   * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin      
>  2017-05-14  358   * Therefore, make sure to call mux_control_deselect()
> when the operation is a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin    
>    2017-05-14  359   * complete and the mux-control is free for others to
> use, but do not call a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin     
>   2017-05-14  360   * mux_control_deselect() if mux_control_select() fails.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  361  
> * a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  362 
>  * Return: 0 when the mux-control state has the requested state or a
> negative a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  363   * errno on error. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  364   */ 17b5b576ff5faf drivers/mux/core.c  
>   Vincent Whitchurch 2021-10-07 @365  int mux_control_select_delay(struct
> mux_control *mux, unsigned int state, 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  366  			     unsigned int 
delay_us)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  367  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  368 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  369 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  370  	ret = down_killable(&mux->lock); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  371  	if (ret < 0)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  372 
> 		return ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter 
Rosin       
> 2017-05-14  373 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  374  	ret = __mux_control_select(mux, state); 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  375  	if (ret >= 0)
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  376 
> 		mux_control_delay(mux, delay_us); a3b02a9c6591ce 
drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  377 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  378  	if (ret < 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  379 
> 		up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  380 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  381  	return ret; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter
> Rosin        2017-05-14  382  } 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  383 
> EXPORT_SYMBOL_GPL(mux_control_select_delay); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  384 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  385  /**
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  386  
> * mux_state_select_delay() - Select the given multiplexer state.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  387  
> * @mstate: The mux-state to select. 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  388   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  389   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  390  
> * On successfully selecting the mux-state, its mux-control will be locked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  391  
> * until there is a call to mux_state_deselect(). If the mux-control is
> already 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  392   * selected when mux_state_select() is called, the caller will be
> blocked 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  393   * until mux_state_deselect() or mux_control_deselect() is called (by
> someone 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07
>  394   * else). 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  395   * 84564481bc4520 drivers/mux/core.c     Aswath Govindraju
>  2022-01-07  396   * Therefore, make sure to call mux_state_deselect() when
> the operation is 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  397   * complete and the mux-control is free for others to use,
> but do not call 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  398   * mux_state_deselect() if mux_state_select() fails.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  399  
> * 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  400 
>  * Return: 0 when the mux-state has been selected or a negative
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  401  
> * errno on error. 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  402   */ 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07 @403  int mux_state_select_delay(struct mux_state
> *mstate, unsigned int delay_us) 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  404  { 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  405  	return
> mux_control_select_delay(mstate->mux, mstate->state, delay_us);
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  406  }
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  407 
> EXPORT_SYMBOL_GPL(mux_state_select_delay); 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  408 a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  409  /**
> 17b5b576ff5faf drivers/mux/core.c     Vincent Whitchurch 2021-10-07  410  
> * mux_control_try_select_delay() - Try to select the given multiplexer
> state. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 411   * @mux: The mux-control to request a change of state from.
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  412  
> * @state: The new requested state. 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  413   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  414   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  415  
> * On successfully selecting the mux-control state, it will be locked until
> f22d1117b9c3e2 drivers/mux/core.c     Peter Rosin        2022-01-07  416  
> * mux_control_deselect() is called. a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  417   * a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  418   * Therefore,
> make sure to call mux_control_deselect() when the operation is
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  419  
> * complete and the mux-control is free for others to use, but do not call
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  420  
> * mux_control_deselect() if mux_control_try_select() fails. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  421   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  422  
> * Return: 0 when the mux-control state has the requested state or a
> negative a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  423   * errno on error. Specifically -EBUSY if the mux-control
> is contended. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  424   */ 17b5b576ff5faf drivers/mux/core.c     Vincent
> Whitchurch 2021-10-07 @425  int mux_control_try_select_delay(struct
> mux_control *mux, unsigned int state, 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  426  				 
unsigned int delay_us)
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  427  {
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  428 
> 	int ret; a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  429 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  430  	if (down_trylock(&mux->lock)) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  431  		
return -EBUSY;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  432
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  433 
> 	ret = __mux_control_select(mux, state); 17b5b576ff5faf drivers/mux/
core.c 
>    Vincent Whitchurch 2021-10-07  434  	if (ret >= 0) 17b5b576ff5faf
> drivers/mux/core.c     Vincent Whitchurch 2021-10-07  435 
> 		mux_control_delay(mux, delay_us); a3b02a9c6591ce 
drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  436 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  437  	if (ret < 0) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  438 
> 		up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c 
Peter Rosin       
> 2017-05-14  439 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  440  	return ret; a3b02a9c6591ce drivers/mux/mux-core.c 
Peter
> Rosin        2017-05-14  441  } 17b5b576ff5faf drivers/mux/core.c    
> Vincent Whitchurch 2021-10-07  442 
> EXPORT_SYMBOL_GPL(mux_control_try_select_delay); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  443 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  444  /**
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  445  
> * mux_state_try_select_delay() - Try to select the given multiplexer state.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  446  
> * @mstate: The mux-state to select. 84564481bc4520 drivers/mux/core.c    
> Aswath Govindraju  2022-01-07  447   * @delay_us: The time to delay (in
> microseconds) if the mux state is changed. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  448   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  449  
> * On successfully selecting the mux-state, its mux-control will be locked
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  450  
> * until mux_state_deselect() is called. 84564481bc4520 drivers/mux/core.c  
>   Aswath Govindraju  2022-01-07  451   * 84564481bc4520 drivers/mux/core.c 
>    Aswath Govindraju  2022-01-07  452   * Therefore, make sure to call
> mux_state_deselect() when the operation is 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  453   * complete and
> the mux-control is free for others to use, but do not call 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  454   *
> mux_state_deselect() if mux_state_try_select() fails. 84564481bc4520
> drivers/mux/core.c     Aswath Govindraju  2022-01-07  455   *
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  456  
> * Return: 0 when the mux-state has been selected or a negative errno on
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  457  
> * error. Specifically -EBUSY if the mux-control is contended.
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  458  
> */ 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07 @459
>  int mux_state_try_select_delay(struct mux_state *mstate, unsigned int
> delay_us) 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  460  { 84564481bc4520 drivers/mux/core.c     Aswath Govindraju 
> 2022-01-07  461  	return mux_control_try_select_delay(mstate->mux,
> mstate->state, delay_us); 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07  462  } 84564481bc4520 drivers/mux/core.c     Aswath
> Govindraju  2022-01-07  463  EXPORT_SYMBOL_GPL(mux_state_try_select_delay);
> 84564481bc4520 drivers/mux/core.c     Aswath Govindraju  2022-01-07  464
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  465 
> /** a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 
> 466   * mux_control_deselect() - Deselect the previously selected
> multiplexer state. a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  467   * @mux: The mux-control to deselect. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  468   *
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  469  
> * It is required that a single call is made to mux_control_deselect() for
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  470  
> * each and every successful call made to either of mux_control_select() or
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  471  
> * mux_control_try_select(). a3b02a9c6591ce drivers/mux/mux-core.c Peter
> Rosin        2017-05-14  472   * a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  473   * Return: 0 on success and a negative
> errno on error. An error can only a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  474   * occur if the mux has an idle state.
> Note that even if an error occurs, the a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  475   * mux-control
> is unlocked and is thus free for the next access. a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  476   */
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14 @477 
> int mux_control_deselect(struct mux_control *mux) a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  478  { a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  479  	int ret = 0;
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  480
> a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin        2017-05-14  481 
> 	if (mux->idle_state != MUX_IDLE_AS_IS && a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  482  	   
> mux->idle_state != mux->cached_state) a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  483  		ret = 
mux_control_set(mux,
> mux->idle_state); a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  484 a3b02a9c6591ce drivers/mux/mux-core.c Peter Rosin       
> 2017-05-14  485  	up(&mux->lock); a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  486 a3b02a9c6591ce drivers/mux/mux-core.c
> Peter Rosin        2017-05-14  487  	return ret; a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  488  } a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  489 
> EXPORT_SYMBOL_GPL(mux_control_deselect); a3b02a9c6591ce
> drivers/mux/mux-core.c Peter Rosin        2017-05-14  490





-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

  reply	other threads:[~2026-01-08  7:42 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-29 14:27 [PATCH v4 0/7] mmc: host: renesas_sdhi_core: support configuring an optional sdio mux Josua Mayer
2025-12-29 14:27 ` Josua Mayer
2025-12-29 14:27 ` [PATCH v4 1/7] phy: can-transceiver: rename temporary helper function to avoid conflict Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2025-12-29 14:27 ` [PATCH v4 2/7] mux: Add helper functions for getting optional and selected mux-state Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2025-12-31 19:18   ` kernel test robot
2025-12-31 19:18     ` kernel test robot
2026-01-08  7:42     ` Josua Mayer [this message]
2026-01-08  7:42       ` Josua Mayer
2026-01-08  7:45       ` Krzysztof Kozlowski
2026-01-08  7:45         ` Krzysztof Kozlowski
2025-12-29 14:27 ` [PATCH v4 3/7] mux: add help text for MULTIPLEXER config option Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2025-12-29 14:27 ` [PATCH v4 4/7] phy: can-transceiver: drop temporary helper getting optional mux-state Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2025-12-29 14:27 ` [PATCH v4 5/7] i2c: omap: switch to new generic helper for getting selected mux-state Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2026-01-14 11:52   ` Wolfram Sang
2026-01-14 11:52     ` Wolfram Sang
2025-12-29 14:27 ` [PATCH v4 6/7] dt-bindings: mmc: renesas,sdhi: Add mux-states property Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2025-12-29 14:27 ` [PATCH v4 7/7] mmc: host: renesas_sdhi_core: support selecting an optional mux Josua Mayer
2025-12-29 14:27   ` Josua Mayer
2026-01-14 11:49   ` Wolfram Sang
2026-01-14 11:49     ` Wolfram Sang
2026-01-18  7:33     ` Josua Mayer
2026-01-18  7:33       ` Josua Mayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3396461.44csPzL39Z@josua-pc \
    --to=josua@solid-run.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=andi.shyti@kernel.org \
    --cc=andreas@kemnade.info \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=geert+renesas@glider.be \
    --cc=jmkrzyszt@gmail.com \
    --cc=jon@solid-run.com \
    --cc=khilman@baylibre.com \
    --cc=kishon@kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=magnus.damm@gmail.com \
    --cc=mailhol@kernel.org \
    --cc=mikhail.anikin@solid-run.com \
    --cc=mkl@pengutronix.de \
    --cc=neil.armstrong@linaro.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=peda@axentia.se \
    --cc=robh@kernel.org \
    --cc=rogerq@kernel.org \
    --cc=tony@atomide.com \
    --cc=ulf.hansson@linaro.org \
    --cc=vigneshr@ti.com \
    --cc=vkoul@kernel.org \
    --cc=wsa-dev@sang-engineering.com \
    --cc=yazan.shhady@solid-run.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.