Message ID | 1351718515-871-1-git-send-email-swarren@wwwdotorg.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Oct 31, 2012 at 10:21 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > Arnd, Olof, could this patch be placed into a standalone topic branch in > arm-soc branch; I'd like to make use of this patch for both Tegra and > bcm2835 this cycle, and perhaps others might too. Thanks. Done, applied to single-patch branch devel/debug_ll_init. I'll bring that in at next/multiplatform as well. -Olof
On 11/05/2012 10:37 AM, Olof Johansson wrote: > On Wed, Oct 31, 2012 at 10:21 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > >> Arnd, Olof, could this patch be placed into a standalone topic branch in >> arm-soc branch; I'd like to make use of this patch for both Tegra and >> bcm2835 this cycle, and perhaps others might too. Thanks. > > Done, applied to single-patch branch devel/debug_ll_init. I'll bring > that in at next/multiplatform as well. Thanks very much. I've merged this into the Tegra tree.
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h index 195ac2f..2fe141f 100644 --- a/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h @@ -40,6 +40,13 @@ extern void iotable_init(struct map_desc *, int); extern void vm_reserve_area_early(unsigned long addr, unsigned long size, void *caller); +#ifdef CONFIG_DEBUG_LL +extern void debug_ll_addr(unsigned long *paddr, unsigned long *vaddr); +extern void debug_ll_io_init(void); +#else +static inline void debug_ll_io_init(void) {} +#endif + struct mem_type; extern const struct mem_type *get_mem_type(unsigned int type); /* diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index 66f711b..6809200 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S @@ -100,6 +100,13 @@ ENTRY(printch) b 1b ENDPROC(printch) +ENTRY(debug_ll_addr) + addruart r2, r3, ip + str r2, [r0] + str r3, [r1] + mov pc, lr +ENDPROC(debug_ll_addr) + #else ENTRY(printascii) @@ -119,4 +126,11 @@ ENTRY(printch) mov pc, lr ENDPROC(printch) +ENTRY(debug_ll_addr) + mov r2, #0 + str r2, [r0] + str r2, [r1] + mov pc, lr +ENDPROC(debug_ll_addr) + #endif diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index b675918..08d04fc 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -893,6 +893,22 @@ static void __init pci_reserve_io(void) #define pci_reserve_io() do { } while (0) #endif +#ifdef CONFIG_DEBUG_LL +void __init debug_ll_io_init(void) +{ + struct map_desc map; + + debug_ll_addr(&map.pfn, &map.virtual); + if (!map.pfn || !map.virtual) + return; + map.pfn = __phys_to_pfn(map.pfn); + map.virtual &= PAGE_MASK; + map.length = PAGE_SIZE; + map.type = MT_DEVICE; + create_mapping(&map); +} +#endif + static void * __initdata vmalloc_min = (void *)(VMALLOC_END - (240 << 20) - VMALLOC_OFFSET);