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 <h...@lst.de>
---
 arch/mips/alchemy/common/setup.c | 33 ++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/arch/mips/alchemy/common/setup.c b/arch/mips/alchemy/common/setup.c
index 0f60efe0481ecc..c2da68e7984450 100644
--- a/arch/mips/alchemy/common/setup.c
+++ b/arch/mips/alchemy/common/setup.c
@@ -37,6 +37,23 @@
 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 */
 
-- 
2.29.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to