Commit 3440caf5 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Thomas Bogendoerfer
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
parent 04e4783f
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -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 */