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:
parent
04e4783fcc
commit
3440caf5f2
@ -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 */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user