Upon registering spi-mux's devices through spi_add_device() the kernel gets stuck waiting for the 'spi_add_lock' mutex to be released. The mutex happens to be held by spi-mux's parent SPI bus, which unluckily, is waiting for spi-mux's probe to finish before releasing it. I might aswell be doing something wrong. But so far I trust my DT implementation: &spi { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi0_gpio7>; spi@0 { compatible = "spi-mux"; reg = <0>; #address-cells = <1>; #size-cells = <0>; spi-max-frequency = <100000000>; mux-controls = <&gpio_mux>; w5500@0 { compatible = "wiznet,w5500"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <ð1_pins>; interrupt-parent = <&gpio>; interrupts = <27 IRQ_TYPE_EDGE_FALLING>; spi-max-frequency = <30000000>; }; spi-flash@1 { compatible = "jedec,spi-nor"; reg = <1>; #address-cells = <1>; #size-cells = <0>; spi-max-frequency = <16000000>; }; }; }; Regards, Nicolas