diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
index 5943d2ed653d..239271911429 100755
--- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
@@ -826,7 +826,7 @@
 			ecspi1: spi@30820000 {
 				#address-cells = <1>;
 				#size-cells = <0>;
-				compatible = "fsl,imx8mq-ecspi", "fsl,imx6ul-ecspi";
+				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
 				reg = <0x30820000 0x10000>;
 				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MQ_CLK_ECSPI1_ROOT>,
@@ -838,7 +838,7 @@
 			ecspi2: spi@30830000 {
 				#address-cells = <1>;
 				#size-cells = <0>;
-				compatible = "fsl,imx8mq-ecspi", "fsl,imx6ul-ecspi";
+				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
 				reg = <0x30830000 0x10000>;
 				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MQ_CLK_ECSPI2_ROOT>,
@@ -850,7 +850,7 @@
 			ecspi3: spi@30840000 {
 				#address-cells = <1>;
 				#size-cells = <0>;
-				compatible = "fsl,imx8mq-ecspi", "fsl,imx6ul-ecspi";
+				compatible = "fsl,imx8mq-ecspi", "fsl,imx51-ecspi";
 				reg = <0x30840000 0x10000>;
 				interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MQ_CLK_ECSPI3_ROOT>,
diff --git a/arch/arm64/boot/dts/freescale/maaxboard-extended-gpio.dtsi b/arch/arm64/boot/dts/freescale/maaxboard-extended-gpio.dtsi
index 25c84d58bf74..61202110b358 100755
--- a/arch/arm64/boot/dts/freescale/maaxboard-extended-gpio.dtsi
+++ b/arch/arm64/boot/dts/freescale/maaxboard-extended-gpio.dtsi
@@ -37,10 +37,10 @@
 
 		pinctrl_ecspi1: ecspi1grp {
 				fsl,pins = <
-				MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9		0x16
-				MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI	0x16
-				MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO	0x16
-				MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK	0x1816
+				MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9	0x19
+				MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI	0x19
+				MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO	0x19
+				MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK	0x19
 			>;
 		};
 
@@ -89,11 +89,23 @@
 };
 
 &ecspi1{
-	fsl,spi-num-chipselects = < 1 >;
-	cs-gpios = <&gpio5 13 0 > ;
 	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_ecspi1 >;
+	pinctrl-0 = <&pinctrl_ecspi1>;
+	fsl,spi-num-chipselects = <1>;
+	cs-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
 	status = "okay";
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	rtc@0 {
+		compatible = "rtc-m41t93";
+		reg = <0>;
+		spi-max-frequency = <5000000>;
+	};
+};
+
+&snvs_rtc {
+	status = "disabled";
 };
 
 &i2c2 {
diff --git a/arch/arm64/configs/maaxboard_defconfig b/arch/arm64/configs/maaxboard_defconfig
index a89ebacf02f7..0a796e196774 100755
--- a/arch/arm64/configs/maaxboard_defconfig
+++ b/arch/arm64/configs/maaxboard_defconfig
@@ -659,6 +659,7 @@ CONFIG_EDAC=y
 CONFIG_EDAC_GHES=y
 CONFIG_EDAC_SYNOPSYS=y
 CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_M41T93=y
 CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_MAX77686=y
 CONFIG_RTC_DRV_RK808=m
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 09ae4282ad56..a145004f649b 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -639,7 +639,6 @@ static struct sdma_driver_data sdma_imx8mq = {
 	.num_events = 48,
 	.script_addrs = &sdma_script_imx7d,
 	.check_ratio = 1,
-	.ecspi_fixed = true,
 };
 
 static struct sdma_driver_data sdma_imx8mp = {
diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c
index 39870bc38e40..f608f89f45cd 100644
--- a/drivers/spi/spi-fsl-lpspi.c
+++ b/drivers/spi/spi-fsl-lpspi.c
@@ -888,12 +888,6 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
 	controller->bus_num = pdev->id;
 	controller->slave_abort = fsl_lpspi_slave_abort;
 
-	ret = devm_spi_register_controller(&pdev->dev, controller);
-	if (ret < 0) {
-		dev_err(&pdev->dev, "spi_register_controller error.\n");
-		goto out_controller_put;
-	}
-
 	if (!fsl_lpspi->is_slave) {
 		controller->cs_gpios = devm_kzalloc(&controller->dev,
 			sizeof(int) * controller->num_chipselect, GFP_KERNEL);
@@ -901,6 +895,11 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
 		for (i = 0; i < controller->num_chipselect; i++) {
 			int cs_gpio = of_get_named_gpio(np, "cs-gpios", i);
 
+			if (cs_gpio == -EPROBE_DEFER) {
+				ret = -EPROBE_DEFER;
+				goto out_controller_put;
+			}
+
 			if (!gpio_is_valid(cs_gpio) && lpspi_platform_info)
 				cs_gpio = lpspi_platform_info->chipselect[i];
 
@@ -971,13 +970,30 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
 
 	ret = fsl_lpspi_dma_init(&pdev->dev, fsl_lpspi, controller);
 	if (ret == -EPROBE_DEFER)
-		goto out_controller_put;
-
+		goto err_disable_runtime_pm;
 	if (ret < 0)
 		dev_err(&pdev->dev, "dma setup error %d, use pio\n", ret);
+	else
+		/* disable LPSPI module IRQ when enable DMA mode successfully,
+		 * to prevent the unexpected LPSPI module IRQ events*/
+		disable_irq(irq);
+
+	ret = devm_spi_register_controller(&pdev->dev, controller);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "spi_register_controller error.\n");
+		goto err_disable_runtime_pm;
+	}
+
+	pm_runtime_mark_last_busy(fsl_lpspi->dev);
+	pm_runtime_put_autosuspend(fsl_lpspi->dev);
 
 	return 0;
 
+err_disable_runtime_pm:
+	pm_runtime_dont_use_autosuspend(fsl_lpspi->dev);
+	pm_runtime_put_sync(fsl_lpspi->dev);
+	pm_runtime_disable(fsl_lpspi->dev);
+
 out_controller_put:
 	spi_controller_put(controller);
 
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
index 91e32291c44e..0128e33eb5bc 100644
--- a/drivers/spi/spi-imx.c
+++ b/drivers/spi/spi-imx.c
@@ -1775,8 +1775,13 @@ static int spi_imx_probe(struct platform_device *pdev)
 	/* Request GPIO CS lines, if any */
 	if (!spi_imx->slave_mode && master->cs_gpios) {
 		for (i = 0; i < master->num_chipselect; i++) {
-			if (!gpio_is_valid(master->cs_gpios[i]))
+			if (!gpio_is_valid(master->cs_gpios[i])) {
+				if (master->cs_gpios[i] == -EPROBE_DEFER) {
+					ret = -EPROBE_DEFER;
+					goto out_spi_bitbang;
+				}
 				continue;
+			}
 
 			ret = devm_gpio_request(&pdev->dev,
 						master->cs_gpios[i],
