@@ -47,7 +47,7 @@ static void fsl_edma_enable_request(struct fsl_edma_chan *fsl_chan)
47
47
struct edma_regs * regs = & fsl_chan -> edma -> regs ;
48
48
u32 ch = fsl_chan -> vchan .chan .chan_id ;
49
49
50
- if (fsl_chan -> edma -> drvdata -> version == v1 ) {
50
+ if (fsl_chan -> edma -> drvdata -> flags & FSL_EDMA_DRV_WRAP_IO ) {
51
51
edma_writeb (fsl_chan -> edma , EDMA_SEEI_SEEI (ch ), regs -> seei );
52
52
edma_writeb (fsl_chan -> edma , ch , regs -> serq );
53
53
} else {
@@ -64,7 +64,7 @@ void fsl_edma_disable_request(struct fsl_edma_chan *fsl_chan)
64
64
struct edma_regs * regs = & fsl_chan -> edma -> regs ;
65
65
u32 ch = fsl_chan -> vchan .chan .chan_id ;
66
66
67
- if (fsl_chan -> edma -> drvdata -> version == v1 ) {
67
+ if (fsl_chan -> edma -> drvdata -> flags & FSL_EDMA_DRV_WRAP_IO ) {
68
68
edma_writeb (fsl_chan -> edma , ch , regs -> cerq );
69
69
edma_writeb (fsl_chan -> edma , EDMA_CEEI_CEEI (ch ), regs -> ceei );
70
70
} else {
@@ -120,7 +120,7 @@ void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan,
120
120
muxaddr = fsl_chan -> edma -> muxbase [ch / chans_per_mux ];
121
121
slot = EDMAMUX_CHCFG_SOURCE (slot );
122
122
123
- if (fsl_chan -> edma -> drvdata -> version == v3 )
123
+ if (fsl_chan -> edma -> drvdata -> flags & FSL_EDMA_DRV_CONFIG32 )
124
124
mux_configure32 (fsl_chan , muxaddr , ch_off , slot , enable );
125
125
else
126
126
mux_configure8 (fsl_chan , muxaddr , ch_off , slot , enable );
@@ -682,43 +682,34 @@ void fsl_edma_cleanup_vchan(struct dma_device *dmadev)
682
682
}
683
683
684
684
/*
685
- * On the 32 channels Vybrid/mpc577x edma version (here called "v1"),
686
- * register offsets are different compared to ColdFire mcf5441x 64 channels
687
- * edma (here called "v2").
685
+ * On the 32 channels Vybrid/mpc577x edma version, register offsets are
686
+ * different compared to ColdFire mcf5441x 64 channels edma.
688
687
*
689
688
* This function sets up register offsets as per proper declared version
690
689
* so must be called in xxx_edma_probe() just after setting the
691
690
* edma "version" and "membase" appropriately.
692
691
*/
693
692
void fsl_edma_setup_regs (struct fsl_edma_engine * edma )
694
693
{
694
+ bool is64 = !!(edma -> drvdata -> flags & FSL_EDMA_DRV_EDMA64 );
695
+
695
696
edma -> regs .cr = edma -> membase + EDMA_CR ;
696
697
edma -> regs .es = edma -> membase + EDMA_ES ;
697
698
edma -> regs .erql = edma -> membase + EDMA_ERQ ;
698
699
edma -> regs .eeil = edma -> membase + EDMA_EEI ;
699
700
700
- edma -> regs .serq = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
701
- EDMA64_SERQ : EDMA_SERQ );
702
- edma -> regs .cerq = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
703
- EDMA64_CERQ : EDMA_CERQ );
704
- edma -> regs .seei = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
705
- EDMA64_SEEI : EDMA_SEEI );
706
- edma -> regs .ceei = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
707
- EDMA64_CEEI : EDMA_CEEI );
708
- edma -> regs .cint = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
709
- EDMA64_CINT : EDMA_CINT );
710
- edma -> regs .cerr = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
711
- EDMA64_CERR : EDMA_CERR );
712
- edma -> regs .ssrt = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
713
- EDMA64_SSRT : EDMA_SSRT );
714
- edma -> regs .cdne = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
715
- EDMA64_CDNE : EDMA_CDNE );
716
- edma -> regs .intl = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
717
- EDMA64_INTL : EDMA_INTR );
718
- edma -> regs .errl = edma -> membase + ((edma -> drvdata -> version == v2 ) ?
719
- EDMA64_ERRL : EDMA_ERR );
720
-
721
- if (edma -> drvdata -> version == v2 ) {
701
+ edma -> regs .serq = edma -> membase + (is64 ? EDMA64_SERQ : EDMA_SERQ );
702
+ edma -> regs .cerq = edma -> membase + (is64 ? EDMA64_CERQ : EDMA_CERQ );
703
+ edma -> regs .seei = edma -> membase + (is64 ? EDMA64_SEEI : EDMA_SEEI );
704
+ edma -> regs .ceei = edma -> membase + (is64 ? EDMA64_CEEI : EDMA_CEEI );
705
+ edma -> regs .cint = edma -> membase + (is64 ? EDMA64_CINT : EDMA_CINT );
706
+ edma -> regs .cerr = edma -> membase + (is64 ? EDMA64_CERR : EDMA_CERR );
707
+ edma -> regs .ssrt = edma -> membase + (is64 ? EDMA64_SSRT : EDMA_SSRT );
708
+ edma -> regs .cdne = edma -> membase + (is64 ? EDMA64_CDNE : EDMA_CDNE );
709
+ edma -> regs .intl = edma -> membase + (is64 ? EDMA64_INTL : EDMA_INTR );
710
+ edma -> regs .errl = edma -> membase + (is64 ? EDMA64_ERRL : EDMA_ERR );
711
+
712
+ if (is64 ) {
722
713
edma -> regs .erqh = edma -> membase + EDMA64_ERQH ;
723
714
edma -> regs .eeih = edma -> membase + EDMA64_EEIH ;
724
715
edma -> regs .errh = edma -> membase + EDMA64_ERRH ;
0 commit comments