On Thu, May 02, 2024 at 01:36:23PM +0100, Jonathan Cameron wrote: > Superficially sounds like you want a mixture of appropriate analog front ends > and a Mux. I haven't tried the combination but it should be possible to do > something like this with > > An IIO mux via this binding > https://elixir.bootlin.com/linux/v6.9-rc6/source/Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.yaml > (that includes a gpio-mux example). > > Consumed in turn by a pair of AFE devices. > > Then you should be able to just read from which ever of the AFE device you want. > A sysfs read from > /sys/bus/iio/devices/iio\:deviceA/in_voltage_raw > will switch the mux to appropriate place then request the > voltage from the iio-mux, which in turn requests it from the ADC IIO driver. > > /sys/bus/iio/devices/iio\:deviceB/in_current_raw > switches the mux the other way and otherwise the flow as above. > > Jonathan > On Thu, May 02, 2024 at 03:49:03PM +0200, Peter Rosin wrote: > I just realized that it's also possible to do this "the other way around". Maybe > that makes more sense? > > Cheers, > Peter > > mux: gpio-mux { > compatible = "gpio-mux"; > #mux-control-cells = <0>; > > gpios-mux = <&main_gpio0 29 GPIO_ACTIVE_HIGH>; > }; > > rcs: raw-current-sense { > compatible = "io-channel-mux"; > io-channels = <&adc 0>; > io-channel-names = "parent"; > #io-channel-cells = <1>; > > mux-controls = <&mux>; > > channels = "raw-current", ""; > }; > > rvs: raw-voltage-sense { > compatible = "io-channel-mux"; > io-channels = <&adc 1>; > io-channel-names = "parent"; > #io-channel-cells = <1>; > > mux-controls = <&mux>; > > channels = "", "raw-voltage"; > }; > > current-sense { > compatible = "current-sense-shunt"; > io-channels = <&rcs 0>; > io-channel-name = "current"; > > shunt-resistor-micro-ohms = <3300000>; > }; > > voltage-sense { > compatible = "voltage-divider"; > io-channels = <&rvs 1>; > io-channel-name = "voltage"; > > output-ohms = <22>; > full-ohms = <222>; > }; > > Cheers, > Peter A lot of good information. I didn't know about the iio-mux. It might solve our problem, and I will do some testing with it. Thanks a lot for the help! Regards, João Paulo Gonçalves