mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-27 13:05:03 +08:00
[MTD] [NAND] Blackfin NFC Driver: do not clobber DMAC1_PERIMUX
Only set DMAC1_PERIMUX once we have requested and been granted the dma channel to prevent breaking other peripherals in the error case Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
65c24491b4
commit
08d2503ecc
@ -552,7 +552,6 @@ static void bf5xx_nand_dma_write_buf(struct mtd_info *mtd,
|
|||||||
static int bf5xx_nand_dma_init(struct bf5xx_nand_info *info)
|
static int bf5xx_nand_dma_init(struct bf5xx_nand_info *info)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
unsigned short val;
|
|
||||||
|
|
||||||
/* Do not use dma */
|
/* Do not use dma */
|
||||||
if (!hardware_ecc)
|
if (!hardware_ecc)
|
||||||
@ -560,13 +559,6 @@ static int bf5xx_nand_dma_init(struct bf5xx_nand_info *info)
|
|||||||
|
|
||||||
init_completion(&info->dma_completion);
|
init_completion(&info->dma_completion);
|
||||||
|
|
||||||
#ifdef CONFIG_BF54x
|
|
||||||
/* Setup DMAC1 channel mux for NFC which shared with SDH */
|
|
||||||
val = bfin_read_DMAC1_PERIMUX();
|
|
||||||
val &= 0xFFFE;
|
|
||||||
bfin_write_DMAC1_PERIMUX(val);
|
|
||||||
SSYNC();
|
|
||||||
#endif
|
|
||||||
/* Request NFC DMA channel */
|
/* Request NFC DMA channel */
|
||||||
ret = request_dma(CH_NFC, "BF5XX NFC driver");
|
ret = request_dma(CH_NFC, "BF5XX NFC driver");
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -574,6 +566,12 @@ static int bf5xx_nand_dma_init(struct bf5xx_nand_info *info)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_BF54x
|
||||||
|
/* Setup DMAC1 channel mux for NFC which shared with SDH */
|
||||||
|
bfin_write_DMAC1_PERIMUX(bfin_read_DMAC1_PERIMUX() & ~1);
|
||||||
|
SSYNC();
|
||||||
|
#endif
|
||||||
|
|
||||||
set_dma_callback(CH_NFC, (void *) bf5xx_nand_dma_irq, (void *) info);
|
set_dma_callback(CH_NFC, (void *) bf5xx_nand_dma_irq, (void *) info);
|
||||||
|
|
||||||
/* Turn off the DMA channel first */
|
/* Turn off the DMA channel first */
|
||||||
|
Loading…
Reference in New Issue
Block a user