MIPS/alchemy: factor out the DMA coherent setup
authorChristoph Hellwig <hch@lst.de>
Wed, 10 Feb 2021 09:56:37 +0000 (10:56 +0100)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Sat, 13 Feb 2021 08:51:45 +0000 (09:51 +0100)
Factor out a alchemy_dma_coherent helper that determines if the platform
is DMA coherent.  Also stop initializing the hw_coherentio variable, given
that is only ever set to a non-zero value by the malta setup code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/alchemy/common/setup.c

index 0f60efe0481ecc71cd1b3ebce655601c1e6fd71e..c2da68e79844505d0dd00439d993f9dfb21271fd 100644 (file)
 extern void __init board_setup(void);
 extern void __init alchemy_set_lpj(void);
 
+static bool alchemy_dma_coherent(void)
+{
+       switch (alchemy_get_cputype()) {
+       case ALCHEMY_CPU_AU1000:
+       case ALCHEMY_CPU_AU1500:
+       case ALCHEMY_CPU_AU1100:
+               return false;
+       case ALCHEMY_CPU_AU1200:
+               /* Au1200 AB USB does not support coherent memory */
+               if ((read_c0_prid() & PRID_REV_MASK) == 0)
+                       return false;
+               return true;
+       default:
+               return true;
+       }
+}
+
 void __init plat_mem_setup(void)
 {
        alchemy_set_lpj();
@@ -48,20 +65,8 @@ void __init plat_mem_setup(void)
                /* Clear to obtain best system bus performance */
                clear_c0_config(1 << 19); /* Clear Config[OD] */
 
-       hw_coherentio = 0;
-       coherentio = IO_COHERENCE_ENABLED;
-       switch (alchemy_get_cputype()) {
-       case ALCHEMY_CPU_AU1000:
-       case ALCHEMY_CPU_AU1500:
-       case ALCHEMY_CPU_AU1100:
-               coherentio = IO_COHERENCE_DISABLED;
-               break;
-       case ALCHEMY_CPU_AU1200:
-               /* Au1200 AB USB does not support coherent memory */
-               if (0 == (read_c0_prid() & PRID_REV_MASK))
-                       coherentio = IO_COHERENCE_DISABLED;
-               break;
-       }
+       coherentio = alchemy_dma_coherent() ?
+               IO_COHERENCE_ENABLED : IO_COHERENCE_DISABLED;
 
        board_setup();  /* board specific setup */