> static int acquire_dma(struct s3c64xx_spi_driver_data *sdd) > { > +#if defined(CONFIG_DMADEV_PL330) > + dma_cap_mask_t mask; > + dma_cap_zero(mask); > + dma_cap_set(DMA_SLAVE, mask); > + sdd->rx_chan = > + dma_request_channel(mask, rxfilter, (void *)sdd); > + if (!sdd->rx_chan) { > + dev_err(&sdd->pdev->dev, "cannot get RxDMA\n"); > + return 0; > + } > + sdd->tx_chan = > + dma_request_channel(mask, txfilter, (void *)sdd); > + if (!sdd->tx_chan) { > + dev_err(&sdd->pdev->dev, "cannot get TxDMA\n"); > + return 0; > + } > +#else When acquiring tx_chan is failed, you must release a rx_chan before error return. If not, the rx_chan is always busy because it was allocated in the previous attempt. -- Best Regards, Chanho Park -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html