diff options
-rw-r--r-- | drivers/dma/Kconfig | 8 | ||||
-rw-r--r-- | drivers/dma/fsldma.c | 13 |
2 files changed, 3 insertions, 18 deletions
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 27340a7b19dd..6239c3df30ac 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig | |||
@@ -46,14 +46,6 @@ config FSL_DMA | |||
46 | MPC8560/40, MPC8555, MPC8548 and MPC8641 processors. | 46 | MPC8560/40, MPC8555, MPC8548 and MPC8641 processors. |
47 | The MPC8349, MPC8360 is also supported. | 47 | The MPC8349, MPC8360 is also supported. |
48 | 48 | ||
49 | config FSL_DMA_SELFTEST | ||
50 | bool "Enable the self test for each DMA channel" | ||
51 | depends on FSL_DMA | ||
52 | default y | ||
53 | ---help--- | ||
54 | Enable the self test for each DMA channel. A self test will be | ||
55 | performed after the channel probed to ensure the DMA works well. | ||
56 | |||
57 | config DMA_ENGINE | 49 | config DMA_ENGINE |
58 | bool | 50 | bool |
59 | 51 | ||
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index df163687c91a..9854ebbaee31 100644 --- a/drivers/dma/fsldma.c +++ b/drivers/dma/fsldma.c | |||
@@ -776,15 +776,13 @@ static void dma_do_tasklet(unsigned long data) | |||
776 | fsl_chan_ld_cleanup(fsl_chan); | 776 | fsl_chan_ld_cleanup(fsl_chan); |
777 | } | 777 | } |
778 | 778 | ||
779 | #ifdef FSL_DMA_CALLBACKTEST | 779 | static void fsl_dma_callback_test(void *param) |
780 | static void fsl_dma_callback_test(struct fsl_dma_chan *fsl_chan) | ||
781 | { | 780 | { |
781 | struct fsl_dma_chan *fsl_chan = param; | ||
782 | if (fsl_chan) | 782 | if (fsl_chan) |
783 | dev_info(fsl_chan->dev, "selftest: callback is ok!\n"); | 783 | dev_dbg(fsl_chan->dev, "selftest: callback is ok!\n"); |
784 | } | 784 | } |
785 | #endif | ||
786 | 785 | ||
787 | #ifdef CONFIG_FSL_DMA_SELFTEST | ||
788 | static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) | 786 | static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) |
789 | { | 787 | { |
790 | struct dma_chan *chan; | 788 | struct dma_chan *chan; |
@@ -875,13 +873,11 @@ static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) | |||
875 | cookie = fsl_dma_tx_submit(tx3); | 873 | cookie = fsl_dma_tx_submit(tx3); |
876 | cookie = fsl_dma_tx_submit(tx2); | 874 | cookie = fsl_dma_tx_submit(tx2); |
877 | 875 | ||
878 | #ifdef FSL_DMA_CALLBACKTEST | ||
879 | if (dma_has_cap(DMA_INTERRUPT, ((struct fsl_dma_device *) | 876 | if (dma_has_cap(DMA_INTERRUPT, ((struct fsl_dma_device *) |
880 | dev_get_drvdata(fsl_chan->dev->parent))->common.cap_mask)) { | 877 | dev_get_drvdata(fsl_chan->dev->parent))->common.cap_mask)) { |
881 | tx3->callback = fsl_dma_callback_test; | 878 | tx3->callback = fsl_dma_callback_test; |
882 | tx3->callback_param = fsl_chan; | 879 | tx3->callback_param = fsl_chan; |
883 | } | 880 | } |
884 | #endif | ||
885 | fsl_dma_memcpy_issue_pending(chan); | 881 | fsl_dma_memcpy_issue_pending(chan); |
886 | msleep(2); | 882 | msleep(2); |
887 | 883 | ||
@@ -906,7 +902,6 @@ out: | |||
906 | kfree(src); | 902 | kfree(src); |
907 | return err; | 903 | return err; |
908 | } | 904 | } |
909 | #endif | ||
910 | 905 | ||
911 | static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, | 906 | static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, |
912 | const struct of_device_id *match) | 907 | const struct of_device_id *match) |
@@ -997,11 +992,9 @@ static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, | |||
997 | } | 992 | } |
998 | } | 993 | } |
999 | 994 | ||
1000 | #ifdef CONFIG_FSL_DMA_SELFTEST | ||
1001 | err = fsl_dma_self_test(new_fsl_chan); | 995 | err = fsl_dma_self_test(new_fsl_chan); |
1002 | if (err) | 996 | if (err) |
1003 | goto err; | 997 | goto err; |
1004 | #endif | ||
1005 | 998 | ||
1006 | dev_info(&dev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id, | 999 | dev_info(&dev->dev, "#%d (%s), irq %d\n", new_fsl_chan->id, |
1007 | match->compatible, new_fsl_chan->irq); | 1000 | match->compatible, new_fsl_chan->irq); |