MIPS: Sanitise coherentio semantics
The coherentio variable has previously been used as a boolean value, indicating whether the user specified that coherent I/O should be enabled or disabled. It failed to take into account the case where the user does not specify any preference, in which case it makes sense that we should default to coherent I/O if the hardware supports it (hw_coherentio is non-zero). Introduce an enum to clarify the 3 different values of coherentio & use it throughout the code, modifying plat_device_is_coherent() & r4k_cache_init() to take into account the default case. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: Paul Burton <paul.burton@imgtec.com> Patchwork: https://patchwork.linux-mips.org/patch/14347/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
87dd9a4de4
commit
f23020230e
@@ -1935,7 +1935,8 @@ void r4k_cache_init(void)
|
||||
__local_flush_icache_user_range = local_r4k_flush_icache_user_range;
|
||||
|
||||
#if defined(CONFIG_DMA_NONCOHERENT) || defined(CONFIG_DMA_MAYBE_COHERENT)
|
||||
if (coherentio) {
|
||||
if ((coherentio == IO_COHERENCE_ENABLED) ||
|
||||
((coherentio == IO_COHERENCE_DEFAULT) && hw_coherentio)) {
|
||||
_dma_cache_wback_inv = (void *)cache_noop;
|
||||
_dma_cache_wback = (void *)cache_noop;
|
||||
_dma_cache_inv = (void *)cache_noop;
|
||||
|
@@ -25,13 +25,14 @@
|
||||
#include <dma-coherence.h>
|
||||
|
||||
#ifdef CONFIG_DMA_MAYBE_COHERENT
|
||||
int coherentio = 0; /* User defined DMA coherency from command line. */
|
||||
/* User defined DMA coherency from command line. */
|
||||
enum coherent_io_user_state coherentio = IO_COHERENCE_DEFAULT;
|
||||
EXPORT_SYMBOL_GPL(coherentio);
|
||||
int hw_coherentio = 0; /* Actual hardware supported DMA coherency setting. */
|
||||
|
||||
static int __init setcoherentio(char *str)
|
||||
{
|
||||
coherentio = 1;
|
||||
coherentio = IO_COHERENCE_ENABLED;
|
||||
pr_info("Hardware DMA cache coherency (command line)\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -39,7 +40,7 @@ early_param("coherentio", setcoherentio);
|
||||
|
||||
static int __init setnocoherentio(char *str)
|
||||
{
|
||||
coherentio = 0;
|
||||
coherentio = IO_COHERENCE_DISABLED;
|
||||
pr_info("Software DMA cache coherency (command line)\n");
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user