MIPS/alchemy: factor out the DMA coherent setup

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>
This commit is contained in:
Christoph Hellwig 2021-02-10 10:56:37 +01:00 committed by Thomas Bogendoerfer
parent 04e4783fcc
commit 3440caf5f2

View File

@ -37,6 +37,23 @@
extern void __init board_setup(void); extern void __init board_setup(void);
extern void __init alchemy_set_lpj(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) void __init plat_mem_setup(void)
{ {
alchemy_set_lpj(); alchemy_set_lpj();
@ -48,20 +65,8 @@ void __init plat_mem_setup(void)
/* Clear to obtain best system bus performance */ /* Clear to obtain best system bus performance */
clear_c0_config(1 << 19); /* Clear Config[OD] */ clear_c0_config(1 << 19); /* Clear Config[OD] */
hw_coherentio = 0; coherentio = alchemy_dma_coherent() ?
coherentio = IO_COHERENCE_ENABLED; IO_COHERENCE_ENABLED : IO_COHERENCE_DISABLED;
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;
}
board_setup(); /* board specific setup */ board_setup(); /* board specific setup */