[PATCH 2/4] omap: Make uncompress code and DEBUG_LL code generic
Pandita, Vikram
vikram.pandita at ti.com
Mon Jan 18 20:50:20 EST 2010
>-----Original Message-----
>From: linux-omap-owner at vger.kernel.org [mailto:linux-omap-owner at vger.kernel.org] On Behalf Of Tony
>Lindgren
>Sent: Saturday, January 16, 2010 2:00 PM
>To: Russell King - ARM Linux
>Cc: linux-arm-kernel at lists.infradead.org; linux-omap at vger.kernel.org
>Subject: Re: [PATCH 2/4] omap: Make uncompress code and DEBUG_LL code generic
>
>* Russell King - ARM Linux <linux at arm.linux.org.uk> [100116 11:31]:
>> On Sat, Jan 16, 2010 at 11:18:20AM -0800, Tony Lindgren wrote:
>> > * Russell King - ARM Linux <linux at arm.linux.org.uk> [100116 01:33]:
>> > > On Fri, Jan 15, 2010 at 05:35:15PM -0800, Tony Lindgren wrote:
>> > > > diff --git a/arch/arm/mach-omap1/include/mach/debug-macro.S b/arch/arm/mach-
>omap1/include/mach/debug-macro.S
>> > > > index 23e4724..0174858 100644
>> > > > --- a/arch/arm/mach-omap1/include/mach/debug-macro.S
>> > > > +++ b/arch/arm/mach-omap1/include/mach/debug-macro.S
>> > > > @@ -15,18 +15,71 @@
>> > > >
>> > > > #include <plat/serial.h>
>> > > >
>> > > > +omap_uart_phys: .word 0x0
>> > > > +omap_uart_virt: .word 0x0
>> > >
>> > > I assume that you have no plans for XIP kernel support on OMAP, since
>> > > these will be placed in the .text section, and is therefore read-only
>> > > on XIP kernels.
>> >
>> > Did not think of that.. Maybe some addruart_premable solution here would.
>> > Or adding \tmp register for addruart and just do the detection for each
>> > character.
>>
>> How does doing it per-character help? The code is:
>>
>> ENTRY(printascii)
>> addruart r3
>> b 2f
>> 1: waituart r2, r3
>> senduart r1, r3
>> busyuart r2, r3
>> teq r1, #'\n'
>> moveq r1, #'\r'
>> beq 1b
>> 2: teq r0, #0
>> ldrneb r1, [r0], #1
>> teqne r1, #0
>> bne 1b
>> mov pc, lr
>>
>> Your wait/send/busy macros are just using the already provided base
>> address which comes via r3 from addruart. That much is fine.
>>
>> I'm at a loss to understand why you think moving the address-getting
>> functionality out of addruart into the individual wait/send/busy
>> macros is going to help in any way.
>
>Sorry, I meant doing the detection each time addruart is run, not
>for each character.
>
>> Why not do something like this:
>>
>> .pushsection .data
>> omap_uart_phys: .word 0
>> omap_uart_virt: .word 0
Also We may need a:
omap_uart_shift: .word 0
Since shift also varies depending on different omap boards (external debug board shift=1, internal omap has shift=2)
Bingo..I think this was the key solution to the problem.
I had posted long ago similar kind of implementation [1]
and I wish rmk had given this nice idea then :)
[1] http://marc.info/?l=linux-omap&m=125269221820632&w=2
See this part:
+ .align
+ .type __phy_uart_addr, #object
+__phy_uart_addr: .word 0xFF
+ .type __virt_uart_addr, #object
+__virt_uart_addr: .word 0xFF
>> .popsection
>>
>> .macro addruart, rx
>> ...
>> + ldreq \rx, =omap_uart_phys @ physical base address
>> + ldrne \rx, =omap_uart_virt @ virtual base
>> ldr \rx, [\rx]
>> + cmp \rx, #0 @ is port configured?
>> + bne 99f @ already configured
>> ...
>>
>> ?
>
>Sounds good to me. Will play with them and post refreshed patches.
>
>Regards,
>
>Tony
>--
>To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>the body of a message to majordomo at vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the linux-arm-kernel
mailing list