/Linux-v5.10/Documentation/devicetree/bindings/mux/ |
D | mux-controller.txt | 4 A multiplexer (or mux) controller will have one, or several, consumer devices 5 that uses the mux controller. Thus, a mux controller can possibly control 7 multiplexer needed by each consumer, but a single mux controller can of course 10 A mux controller provides a number of states to its consumers, and the state 18 Mux controller consumers should specify a list of mux controllers that they 19 want to use with a property containing a 'mux-ctrl-list': 21 mux-ctrl-list ::= <single-mux-ctrl> [mux-ctrl-list] 22 single-mux-ctrl ::= <mux-ctrl-phandle> [mux-ctrl-specifier] 23 mux-ctrl-phandle : phandle to mux controller node 24 mux-ctrl-specifier : array of #mux-control-cells specifying the [all …]
|
D | reg-mux.txt | 8 "reg-mux" : if parent device of mux controller is not syscon device 9 "mmio-mux" : if parent device of mux controller is syscon device 10 - #mux-control-cells : <1> 11 - mux-reg-masks : an array of register offset and pre-shifted bitfield mask 12 pairs, each describing a single mux control. 13 * Standard mux-controller bindings as decribed in mux-controller.txt 21 pair in the mux-reg-masks array. 24 The parent device of mux controller is not a syscon device. 32 mux: mux-controller { 33 compatible = "reg-mux"; [all …]
|
D | adi,adg792a.txt | 5 - #mux-control-cells : <0> if parallel (the three muxes are bound together 6 with a single mux controller controlling all three muxes), or <1> if 7 not (one mux controller for each mux). 8 * Standard mux-controller bindings as described in mux-controller.txt 18 - idle-state : if present, array of states that the mux controllers will have 27 * Three independent mux controllers (of which one is used). 28 * Mux 0 is disconnected when idle, mux 1 idles in the previously 29 * selected state and mux 2 idles with signal B. 32 mux: mux-controller@50 { 35 #mux-control-cells = <1>; [all …]
|
/Linux-v5.10/drivers/clk/mediatek/ |
D | clk-mux.c | 13 #include "clk-mux.h" 22 struct mtk_clk_mux *mux = to_mtk_clk_mux(hw); in mtk_clk_mux_enable() local 23 u32 mask = BIT(mux->data->gate_shift); in mtk_clk_mux_enable() 25 return regmap_update_bits(mux->regmap, mux->data->mux_ofs, in mtk_clk_mux_enable() 31 struct mtk_clk_mux *mux = to_mtk_clk_mux(hw); in mtk_clk_mux_disable() local 32 u32 mask = BIT(mux->data->gate_shift); in mtk_clk_mux_disable() 34 regmap_update_bits(mux->regmap, mux->data->mux_ofs, mask, mask); in mtk_clk_mux_disable() 39 struct mtk_clk_mux *mux = to_mtk_clk_mux(hw); in mtk_clk_mux_enable_setclr() local 41 return regmap_write(mux->regmap, mux->data->clr_ofs, in mtk_clk_mux_enable_setclr() 42 BIT(mux->data->gate_shift)); in mtk_clk_mux_enable_setclr() [all …]
|
D | clk-cpumux.c | 21 struct mtk_clk_cpumux *mux = to_mtk_clk_cpumux(hw); in clk_cpumux_get_parent() local 24 regmap_read(mux->regmap, mux->reg, &val); in clk_cpumux_get_parent() 26 val >>= mux->shift; in clk_cpumux_get_parent() 27 val &= mux->mask; in clk_cpumux_get_parent() 34 struct mtk_clk_cpumux *mux = to_mtk_clk_cpumux(hw); in clk_cpumux_set_parent() local 37 val = index << mux->shift; in clk_cpumux_set_parent() 38 mask = mux->mask << mux->shift; in clk_cpumux_set_parent() 40 return regmap_update_bits(mux->regmap, mux->reg, mask, val); in clk_cpumux_set_parent() 49 mtk_clk_register_cpumux(const struct mtk_composite *mux, in mtk_clk_register_cpumux() argument 60 init.name = mux->name; in mtk_clk_register_cpumux() [all …]
|
/Linux-v5.10/drivers/i2c/muxes/ |
D | i2c-mux-reg.c | 10 #include <linux/i2c-mux.h> 15 #include <linux/platform_data/i2c-mux-reg.h> 23 static int i2c_mux_reg_set(const struct regmux *mux, unsigned int chan_id) in i2c_mux_reg_set() argument 25 if (!mux->data.reg) in i2c_mux_reg_set() 34 switch (mux->data.reg_size) { in i2c_mux_reg_set() 36 if (mux->data.little_endian) in i2c_mux_reg_set() 37 iowrite32(chan_id, mux->data.reg); in i2c_mux_reg_set() 39 iowrite32be(chan_id, mux->data.reg); in i2c_mux_reg_set() 40 if (!mux->data.write_only) in i2c_mux_reg_set() 41 ioread32(mux->data.reg); in i2c_mux_reg_set() [all …]
|
D | i2c-mux-gpio.c | 9 #include <linux/i2c-mux.h> 10 #include <linux/platform_data/i2c-mux-gpio.h> 25 static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val) in i2c_mux_gpio_set() argument 31 gpiod_set_array_value_cansleep(mux->ngpios, mux->gpios, NULL, values); in i2c_mux_gpio_set() 36 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_select() local 38 i2c_mux_gpio_set(mux, chan); in i2c_mux_gpio_select() 45 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_deselect() local 47 i2c_mux_gpio_set(mux, mux->data.idle); in i2c_mux_gpio_deselect() 53 static int i2c_mux_gpio_probe_dt(struct gpiomux *mux, in i2c_mux_gpio_probe_dt() argument 75 mux->data.parent = i2c_adapter_id(adapter); in i2c_mux_gpio_probe_dt() [all …]
|
D | i2c-mux-gpmux.c | 11 #include <linux/i2c-mux.h> 13 #include <linux/mux/consumer.h> 17 struct mux { struct 25 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_select() argument 28 ret = mux_control_select(mux->control, chan); in i2c_mux_select() 29 mux->do_not_deselect = ret < 0; in i2c_mux_select() 36 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_deselect() local 38 if (mux->do_not_deselect) in i2c_mux_deselect() 41 return mux_control_deselect(mux->control); in i2c_mux_deselect() 64 { .compatible = "i2c-mux", }, [all …]
|
/Linux-v5.10/drivers/clk/ti/ |
D | mux.c | 31 struct clk_omap_mux *mux = to_clk_omap_mux(hw); in ti_clk_mux_get_parent() local 36 * FIXME need a mux-specific flag to determine if val is bitwise or in ti_clk_mux_get_parent() 42 val = ti_clk_ll_ops->clk_readl(&mux->reg) >> mux->shift; in ti_clk_mux_get_parent() 43 val &= mux->mask; in ti_clk_mux_get_parent() 45 if (mux->table) { in ti_clk_mux_get_parent() 49 if (mux->table[i] == val) in ti_clk_mux_get_parent() 54 if (val && (mux->flags & CLK_MUX_INDEX_BIT)) in ti_clk_mux_get_parent() 57 if (val && (mux->flags & CLK_MUX_INDEX_ONE)) in ti_clk_mux_get_parent() 68 struct clk_omap_mux *mux = to_clk_omap_mux(hw); in ti_clk_mux_set_parent() local 71 if (mux->table) { in ti_clk_mux_set_parent() [all …]
|
/Linux-v5.10/drivers/mux/ |
D | core.c | 10 #define pr_fmt(fmt) "mux-core: " fmt 18 #include <linux/mux/consumer.h> 19 #include <linux/mux/driver.h> 32 .name = "mux", 59 .name = "mux-chip", 64 * mux_chip_alloc() - Allocate a mux-chip. 65 * @dev: The parent device implementing the mux interface. 66 * @controllers: The number of mux controllers to allocate for this chip. 69 * After allocating the mux-chip with the desired number of mux controllers 70 * but before registering the chip, the mux driver is required to configure [all …]
|
/Linux-v5.10/drivers/iio/multiplexer/ |
D | iio-mux.c | 15 #include <linux/mux/consumer.h> 28 struct mux { struct 38 static int iio_mux_select(struct mux *mux, int idx) in iio_mux_select() argument 40 struct mux_child *child = &mux->child[idx]; in iio_mux_select() 41 struct iio_chan_spec const *chan = &mux->chan[idx]; in iio_mux_select() 45 ret = mux_control_select(mux->control, chan->channel); in iio_mux_select() 47 mux->cached_state = -1; in iio_mux_select() 51 if (mux->cached_state == chan->channel) in iio_mux_select() 64 ret = iio_write_channel_ext_info(mux->parent, attr, in iio_mux_select() 69 mux_control_deselect(mux->control); in iio_mux_select() [all …]
|
/Linux-v5.10/sound/soc/codecs/ |
D | tas5086.c | 551 /* Input mux controls */ 576 /* Output mux controls */ 578 { "Channel 1 Mux", "Channel 2 Mux", "Channel 3 Mux", 579 "Channel 4 Mux", "Channel 5 Mux", "Channel 6 Mux" }; 616 SND_SOC_DAPM_MUX("Channel 1 Mux", SND_SOC_NOPM, 0, 0, 618 SND_SOC_DAPM_MUX("Channel 2 Mux", SND_SOC_NOPM, 0, 0, 620 SND_SOC_DAPM_MUX("Channel 3 Mux", SND_SOC_NOPM, 0, 0, 622 SND_SOC_DAPM_MUX("Channel 4 Mux", SND_SOC_NOPM, 0, 0, 624 SND_SOC_DAPM_MUX("Channel 5 Mux", SND_SOC_NOPM, 0, 0, 626 SND_SOC_DAPM_MUX("Channel 6 Mux", SND_SOC_NOPM, 0, 0, [all …]
|
D | rt5665.c | 956 SOC_DAPM_ENUM("IF1_1 01 ADC Swap Mux", rt5665_if1_1_01_adc_enum); 959 SOC_DAPM_ENUM("IF1_1 23 ADC Swap Mux", rt5665_if1_1_23_adc_enum); 962 SOC_DAPM_ENUM("IF1_1 45 ADC Swap Mux", rt5665_if1_1_45_adc_enum); 965 SOC_DAPM_ENUM("IF1_1 67 ADC Swap Mux", rt5665_if1_1_67_adc_enum); 968 SOC_DAPM_ENUM("IF1_2 01 ADC Swap Mux", rt5665_if1_2_01_adc_enum); 971 SOC_DAPM_ENUM("IF1_2 23 ADC1 Swap Mux", rt5665_if1_2_23_adc_enum); 974 SOC_DAPM_ENUM("IF1_2 45 ADC1 Swap Mux", rt5665_if1_2_45_adc_enum); 977 SOC_DAPM_ENUM("IF1_2 67 ADC1 Swap Mux", rt5665_if1_2_67_adc_enum); 1880 "DD Mux", "ADC" 1948 SOC_DAPM_ENUM("Stereo1 DMIC Mux", rt5665_sto1_dmic_enum); [all …]
|
D | rt5677.c | 1739 /* Mux */ 2886 /* ADC Mux */ 2887 SND_SOC_DAPM_MUX("Stereo1 DMIC Mux", SND_SOC_NOPM, 0, 0, 2889 SND_SOC_DAPM_MUX("Stereo1 ADC1 Mux", SND_SOC_NOPM, 0, 0, 2891 SND_SOC_DAPM_MUX("Stereo1 ADC2 Mux", SND_SOC_NOPM, 0, 0, 2893 SND_SOC_DAPM_MUX("Stereo2 DMIC Mux", SND_SOC_NOPM, 0, 0, 2895 SND_SOC_DAPM_MUX("Stereo2 ADC1 Mux", SND_SOC_NOPM, 0, 0, 2897 SND_SOC_DAPM_MUX("Stereo2 ADC2 Mux", SND_SOC_NOPM, 0, 0, 2899 SND_SOC_DAPM_MUX("Stereo2 ADC LR Mux", SND_SOC_NOPM, 0, 0, 2901 SND_SOC_DAPM_MUX("Stereo3 DMIC Mux", SND_SOC_NOPM, 0, 0, [all …]
|
/Linux-v5.10/drivers/clk/ |
D | clk-mux.c | 26 static inline u32 clk_mux_readl(struct clk_mux *mux) in clk_mux_readl() argument 28 if (mux->flags & CLK_MUX_BIG_ENDIAN) in clk_mux_readl() 29 return ioread32be(mux->reg); in clk_mux_readl() 31 return readl(mux->reg); in clk_mux_readl() 34 static inline void clk_mux_writel(struct clk_mux *mux, u32 val) in clk_mux_writel() argument 36 if (mux->flags & CLK_MUX_BIG_ENDIAN) in clk_mux_writel() 37 iowrite32be(val, mux->reg); in clk_mux_writel() 39 writel(val, mux->reg); in clk_mux_writel() 89 struct clk_mux *mux = to_clk_mux(hw); in clk_mux_get_parent() local 92 val = clk_mux_readl(mux) >> mux->shift; in clk_mux_get_parent() [all …]
|
/Linux-v5.10/include/linux/mux/ |
D | driver.h | 3 * mux/driver.h - definitions for the multiplexer driver interface 13 #include <dt-bindings/mux/mux.h> 21 * struct mux_control_ops - Mux controller operations for a mux chip. 22 * @set: Set the state of the given mux controller. 25 int (*set)(struct mux_control *mux, int state); 29 * struct mux_control - Represents a mux controller. 30 * @lock: Protects the mux controller state. 31 * @chip: The mux chip that is handling this mux controller. 32 * @cached_state: The current mux controller state, or -1 if none. 33 * @states: The number of mux controller states. [all …]
|
/Linux-v5.10/Documentation/devicetree/bindings/net/ |
D | mdio-mux-multiplexer.txt | 3 This is a special case of MDIO mux when MDIO mux is defined as a consumer 4 of a mux producer device. The mux producer can be of any type like mmio mux 5 producer, gpio mux producer or generic register based mux producer. 9 - compatible : should be "mmio-mux-multiplexer" 10 - mux-controls : mux controller node to use for operating the mux 17 Documentation/devicetree/bindings/mux/mux-controller.txt 18 and Documentation/devicetree/bindings/net/mdio-mux.txt 21 In below example the Mux producer and consumer are separate nodes. 29 mux: mux-controller { // Mux Producer 30 compatible = "reg-mux"; [all …]
|
/Linux-v5.10/include/dt-bindings/clock/ |
D | tegra186-clock.h | 384 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2S2 */ 386 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_I2S3 */ 388 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_SPDF_IN */ 392 /** @clkdesc{spi_clks, out, mux, CLK_RST_CONTROLLER_CLK_SOURCE_SPI3} */ 394 /** @clkdesc{i2c_clks, out, mux, CLK_RST_CONTROLLER_CLK_SOURCE_I2C1} */ 396 /** @clkdesc{i2c_clks, out, mux, CLK_RST_CONTROLLER_CLK_SOURCE_I2C5} */ 398 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_SPI1 */ 400 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_ISP */ 402 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_VI */ 404 /** @brief output of mux controlled by CLK_RST_CONTROLLER_CLK_SOURCE_SDMMC1 */ [all …]
|
/Linux-v5.10/Documentation/i2c/ |
D | i2c-topology.rst | 8 1. A mux may be needed on the bus to prevent address collisions. 23 I2C transfers, and all adapters with a parent are part of an "i2c-mux" 26 Depending of the particular mux driver, something happens when there is 27 an I2C transfer on one of its child adapters. The mux driver can 28 obviously operate a mux, but it can also do arbitration with an external 29 bus master or open a gate. The mux driver has two operations for this, 38 mux-locked or parent-locked muxes. As is evident from below, it can be 39 useful to know if a mux is mux-locked or if it is parent-locked. The 46 i2c-mux-gpio Normally parent-locked, mux-locked iff 48 same I2C root adapter that they mux. [all …]
|
/Linux-v5.10/drivers/pinctrl/sirf/ |
D | pinctrl-atlas7.c | 29 /* Definition of Pad&Mux Properties */ 174 * @mux_reg: The mux register offset. 175 * This register contains the mux. 180 * @mux_bit: The start bit of mux register. 224 * struct atlas7_pad_mux - Atlas7 mux 227 * @func: The mux func on this Pad. 245 #define MUX(b, pad, f, dr, db, dvr, dvb) \ macro 1529 MUX(1, 119, 0, N, N, N, N), 1530 MUX(1, 120, 0, N, N, N, N), 1531 MUX(1, 121, 0, N, N, N, N), [all …]
|
/Linux-v5.10/Documentation/devicetree/bindings/i2c/ |
D | i2c-mux-gpmux.txt | 1 General Purpose I2C Bus Mux 3 This binding describes an I2C bus multiplexer that uses a mux controller 4 from the mux subsystem to route the I2C signals. 11 | .------. | .------+ child bus A, on MUX value set to 0 12 | | I2C |-|--| Mux | 13 | '------' | '--+---+ child bus B, on MUX value set to 1 15 | | MUX- | | | | | | 21 - compatible: i2c-mux 24 - mux-controls: The phandle of the mux controller to use for operating the 25 mux. [all …]
|
/Linux-v5.10/drivers/clk/uniphier/ |
D | clk-uniphier-mux.c | 25 struct uniphier_clk_mux *mux = to_uniphier_clk_mux(hw); in uniphier_clk_mux_set_parent() local 27 return regmap_write_bits(mux->regmap, mux->reg, mux->masks[index], in uniphier_clk_mux_set_parent() 28 mux->vals[index]); in uniphier_clk_mux_set_parent() 33 struct uniphier_clk_mux *mux = to_uniphier_clk_mux(hw); in uniphier_clk_mux_get_parent() local 39 ret = regmap_read(mux->regmap, mux->reg, &val); in uniphier_clk_mux_get_parent() 44 if ((mux->masks[i] & val) == mux->vals[i]) in uniphier_clk_mux_get_parent() 61 struct uniphier_clk_mux *mux; in uniphier_clk_register_mux() local 65 mux = devm_kzalloc(dev, sizeof(*mux), GFP_KERNEL); in uniphier_clk_register_mux() 66 if (!mux) in uniphier_clk_register_mux() 75 mux->regmap = regmap; in uniphier_clk_register_mux() [all …]
|
/Linux-v5.10/Documentation/devicetree/bindings/iio/multiplexer/ |
D | io-channel-mux.txt | 7 - compatible : "io-channel-mux" 13 - mux-controls : Mux controller node to use for operating the mux 14 - channels : List of strings, labeling the mux controller states. 18 the list of strings in the channels property, and also matches the mux 19 controller state. The mux controller state is described in 20 ../mux/mux-controller.txt 23 mux: mux-controller { 24 compatible = "gpio-mux"; 25 #mux-control-cells = <0>; 27 mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>, [all …]
|
/Linux-v5.10/drivers/usb/typec/ |
D | mux.c | 183 return dev_fwnode(dev) == fwnode && dev_name_ends_with(dev, "-mux"); in mux_fwnode_match() 249 * Finds a mux linked to the caller. This function is primarily meant for the 250 * Type-C drivers. Returns a reference to the mux on success, NULL if no 252 * was found but the mux has not been enumerated yet. 257 struct typec_mux *mux; in fwnode_typec_mux_get() local 259 mux = fwnode_connection_find_match(fwnode, "mode-switch", (void *)desc, in fwnode_typec_mux_get() 261 if (!IS_ERR_OR_NULL(mux)) in fwnode_typec_mux_get() 262 WARN_ON(!try_module_get(mux->dev.parent->driver->owner)); in fwnode_typec_mux_get() 264 return mux; in fwnode_typec_mux_get() 270 * @mux: USB Type-C Connector Multiplexer/DeMultiplexer [all …]
|
/Linux-v5.10/arch/arm64/boot/dts/amlogic/ |
D | meson-gxbb.dtsi | 98 reg-names = "mux", "pull", "gpio"; 105 mux { 113 mux { 122 mux { 130 mux { 139 mux { 147 mux { 156 mux { 164 mux { 172 mux { [all …]
|