Commit 6b5e741e authored by James Hogan's avatar James Hogan Committed by Ralf Baechle

MIPS: Pistachio: Support CDMM & Fast Debug Channel

Implement the mips_cdmm_phys_base() platform callback to provide a
default Common Device Memory Map (CDMM) physical base address for the
Pistachio SoC. This allows the CDMM in each VPE to be configured and
probed for devices, such as the Fast Debug Channel (FDC).

The physical address chosen is just below the default CPC address, which
appears to also be unallocated.

The FDC IRQ is also usable on Pistachio, and is routed through the GIC,
so implement the get_c0_fdc_int() platform callback using
gic_get_c0_fdc_int(), so the FDC driver doesn't have to fall back to
polling.
Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Andrew Bresticker <abrestic@chromium.org>
Cc: James Hartley <james.hartley@imgtec.com>
Cc: linux-mips@linux-mips.org
Reviewed-by: default avatarAndrew Bresticker <abrestic@chromium.org>
Patchwork: http://patchwork.linux-mips.org/patch/9749/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 6249ecbb
...@@ -63,13 +63,19 @@ void __init plat_mem_setup(void) ...@@ -63,13 +63,19 @@ void __init plat_mem_setup(void)
plat_setup_iocoherency(); plat_setup_iocoherency();
} }
#define DEFAULT_CPC_BASE_ADDR 0x1bde0000 #define DEFAULT_CPC_BASE_ADDR 0x1bde0000
#define DEFAULT_CDMM_BASE_ADDR 0x1bdd0000
phys_addr_t mips_cpc_default_phys_base(void) phys_addr_t mips_cpc_default_phys_base(void)
{ {
return DEFAULT_CPC_BASE_ADDR; return DEFAULT_CPC_BASE_ADDR;
} }
phys_addr_t mips_cdmm_phys_base(void)
{
return DEFAULT_CDMM_BASE_ADDR;
}
static void __init mips_nmi_setup(void) static void __init mips_nmi_setup(void)
{ {
void *base; void *base;
......
...@@ -27,6 +27,11 @@ int get_c0_perfcount_int(void) ...@@ -27,6 +27,11 @@ int get_c0_perfcount_int(void)
return gic_get_c0_perfcount_int(); return gic_get_c0_perfcount_int();
} }
int get_c0_fdc_int(void)
{
return gic_get_c0_fdc_int();
}
void __init plat_time_init(void) void __init plat_time_init(void)
{ {
struct device_node *np; struct device_node *np;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment