How to configure the frequency of a gpio-spi based SPI bus

I configured a GPIO based SPI bus like shown below. The bus works but i am not able to change the frequency in my C++ program. It’s always ~130kHz. Is there a mistake in my device tree configuration maybe? Does it make sense to specify “toradex,evalspi” as compatible in every client?

Apalis iMX6D, Ixora carrier, BSP2

gspi1: gspi1 {
                compatible = "spi-gpio";
		pinctrl-names = "default";
                #address-cells = <0x1>;

                gpio-sck = <&gpio2 4 GPIO_ACTIVE_HIGH>;
                gpio-miso = <&gpio2 5 GPIO_ACTIVE_HIGH>;
                gpio-mosi = <&gpio2 6 GPIO_ACTIVE_HIGH>;
                cs-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>, <&gpio6 10 GPIO_ACTIVE_LOW>;
                num-chipselects = <2>;
                status = "okay";

		spidev4_0: spidev@0 {
                        /* compatible = "spidev"; */
                        compatible = "toradex,evalspi";
                        reg = <0>;	/* CE0 */
                        #address-cells = <1>;
                        #size-cells = <0>;
                        spi-max-frequency = <1000000>;
		spidev4_1: spidev@1 {
			compatible = "toradex,evalspi";
			reg = <1>;
			spi-max-frequency = <1000000>;

130kHz is quite good result for spi-gpio. Try using dedicated SPI pins and eCSPI controller(s).

Unfortunately i cannot use the HW SPI due to its CS limitations. The question is not to increase the speed but more why i cannot change the speed? Its fixes ~130kHz-ish. And i would appreciate hints to improve the device tree change i did. I am still wondering about the “compatible” binding…

Obviously it can’t go faster software-wise.

BTW, if you’re using spidev instead of kernel drivers for some SPI devices, then what about toggling CS from your SW? No CS limit at all.
Do you mean current driver limit for gpio CS? Yes, that nasty bug should be fixed.