diff mbox

[2/3] ARM: PRIMA2: make mach-prima2 common for all SiRF series SoC

Message ID CAGsJ_4y3Snvf-2DLSrpU5+zmytkARtNxJN_nPdiOngd+BK-aDA@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Barry Song Aug. 28, 2012, 8:08 a.m. UTC
2012/8/28 Barry Song <21cnbao@gmail.com>:
> 2012/8/21 Arnd Bergmann <arnd@arndb.de>:
>> On Tuesday 21 August 2012, Barry Song wrote:
>>> then i add these to Kconfig.debug as it is a common way
>>>
>>>         config DEBUG_PRIMA2_UART1
>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART1"
>>>                 depends on ARCH_PRIMA2
>>>                 help
>>>                   Say Y here if you want the debug print routines to direct
>>>                   their output to UART1 serial port on SiRFprimaII devices.
>>>
>>>         config DEBUG_MARCO_UART1
>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART2"
>>>                 depends on ARCH_MARCO
>>>                 help
>>>                   Say Y here if you want the debug print routines to direct
>>>                   their output to UART1 serial port on SiRFmarco devices.
>>>
>>> and these in mach-prima2/include/mach/uart.h
>>>
>>>   #ifdef CONFIG_DEBUG_PRIMA2_UART1
>>>   #define SIRFSOC_UART1_PA_BASE          0xb0060000
>>>   #elif defined(CONFIG_DEBUG_MARCO_UART1)
>>>   #define SIRFSOC_UART1_PA_BASE          0xcc060000
>>>   #endif
>>>
>>> the above codes seem still ugly ?
>>>
>>
>> No, that's fine, about as a good as it gets with today's kernel
>> capabilities. Just fix the description to have the correct
>> SoC name instead of "DaVinci DA8XX" ;-)
>
> except the DEBUG_LL uart base address, i missed the zreladdr-y. for
> primaii, it is 0x00008000, for marco, it is 0x40008000 as marco's
> memory space begins from 0x4000000.
> i would to have AUTO_ZRELADDR for the whole SiRF series.
> but for uImage load address difference in uImage header, which blocks
> multiple SoCs from using same uImage, is "KERNEL_NOLOAD" uImage type
> the current generic solution?

also add Stephen Warren.

i have two verified ways to resolve this problem:

1. use "kernel noload", build uImage by:

make uImage UIMAGE_TYPE=kernel_noload
and add the following patch in kernel:


>
>>
>>         Arnd
>
> -barry

-barry

Comments

Stephen Warren Aug. 28, 2012, 2:28 p.m. UTC | #1
On 08/28/2012 01:08 AM, Barry Song wrote:
> 2012/8/28 Barry Song <21cnbao@gmail.com>:
>> 2012/8/21 Arnd Bergmann <arnd@arndb.de>:
>>> On Tuesday 21 August 2012, Barry Song wrote:
>>>> then i add these to Kconfig.debug as it is a common way
>>>>
>>>>         config DEBUG_PRIMA2_UART1
>>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART1"
>>>>                 depends on ARCH_PRIMA2
>>>>                 help
>>>>                   Say Y here if you want the debug print routines to direct
>>>>                   their output to UART1 serial port on SiRFprimaII devices.
>>>>
>>>>         config DEBUG_MARCO_UART1
>>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART2"
>>>>                 depends on ARCH_MARCO
>>>>                 help
>>>>                   Say Y here if you want the debug print routines to direct
>>>>                   their output to UART1 serial port on SiRFmarco devices.
>>>>
>>>> and these in mach-prima2/include/mach/uart.h
>>>>
>>>>   #ifdef CONFIG_DEBUG_PRIMA2_UART1
>>>>   #define SIRFSOC_UART1_PA_BASE          0xb0060000
>>>>   #elif defined(CONFIG_DEBUG_MARCO_UART1)
>>>>   #define SIRFSOC_UART1_PA_BASE          0xcc060000
>>>>   #endif
>>>>
>>>> the above codes seem still ugly ?
>>>>
>>>
>>> No, that's fine, about as a good as it gets with today's kernel
>>> capabilities. Just fix the description to have the correct
>>> SoC name instead of "DaVinci DA8XX" ;-)
>>
>> except the DEBUG_LL uart base address, i missed the zreladdr-y. for
>> primaii, it is 0x00008000, for marco, it is 0x40008000 as marco's
>> memory space begins from 0x4000000.
>> i would to have AUTO_ZRELADDR for the whole SiRF series.
>> but for uImage load address difference in uImage header, which blocks
>> multiple SoCs from using same uImage, is "KERNEL_NOLOAD" uImage type
>> the current generic solution?
> 
> also add Stephen Warren.
> 
> i have two verified ways to resolve this problem:
> 
> 1. use "kernel noload", build uImage by:
> 
> make uImage UIMAGE_TYPE=kernel_noload
> and add the following patch in kernel:

Very recent U-Boot have a bootz command, which acts just like bootm, but
allows use of a raw zImage or the kernel, rather than a
uImage-wrapped-zImage. This was implemented by Marek Vasut.
Barry Song Aug. 28, 2012, 2:57 p.m. UTC | #2
2012/8/28 Stephen Warren <swarren@wwwdotorg.org>:
> On 08/28/2012 01:08 AM, Barry Song wrote:
>> 2012/8/28 Barry Song <21cnbao@gmail.com>:
>>> 2012/8/21 Arnd Bergmann <arnd@arndb.de>:
>>>> On Tuesday 21 August 2012, Barry Song wrote:
>>>>> then i add these to Kconfig.debug as it is a common way
>>>>>
>>>>>         config DEBUG_PRIMA2_UART1
>>>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART1"
>>>>>                 depends on ARCH_PRIMA2
>>>>>                 help
>>>>>                   Say Y here if you want the debug print routines to direct
>>>>>                   their output to UART1 serial port on SiRFprimaII devices.
>>>>>
>>>>>         config DEBUG_MARCO_UART1
>>>>>                 bool "Kernel low-level debugging on DaVinci DA8XX using UART2"
>>>>>                 depends on ARCH_MARCO
>>>>>                 help
>>>>>                   Say Y here if you want the debug print routines to direct
>>>>>                   their output to UART1 serial port on SiRFmarco devices.
>>>>>
>>>>> and these in mach-prima2/include/mach/uart.h
>>>>>
>>>>>   #ifdef CONFIG_DEBUG_PRIMA2_UART1
>>>>>   #define SIRFSOC_UART1_PA_BASE          0xb0060000
>>>>>   #elif defined(CONFIG_DEBUG_MARCO_UART1)
>>>>>   #define SIRFSOC_UART1_PA_BASE          0xcc060000
>>>>>   #endif
>>>>>
>>>>> the above codes seem still ugly ?
>>>>>
>>>>
>>>> No, that's fine, about as a good as it gets with today's kernel
>>>> capabilities. Just fix the description to have the correct
>>>> SoC name instead of "DaVinci DA8XX" ;-)
>>>
>>> except the DEBUG_LL uart base address, i missed the zreladdr-y. for
>>> primaii, it is 0x00008000, for marco, it is 0x40008000 as marco's
>>> memory space begins from 0x4000000.
>>> i would to have AUTO_ZRELADDR for the whole SiRF series.
>>> but for uImage load address difference in uImage header, which blocks
>>> multiple SoCs from using same uImage, is "KERNEL_NOLOAD" uImage type
>>> the current generic solution?
>>
>> also add Stephen Warren.
>>
>> i have two verified ways to resolve this problem:
>>
>> 1. use "kernel noload", build uImage by:
>>
>> make uImage UIMAGE_TYPE=kernel_noload
>> and add the following patch in kernel:
>
> Very recent U-Boot have a bootz command, which acts just like bootm, but
> allows use of a raw zImage or the kernel, rather than a
> uImage-wrapped-zImage. This was implemented by Marek Vasut.

Thanks, Stephen. i guess xianglong will try bootz on SiRFmarco and try
to move from uImage to raw zImage.

Based on your past "kernel_noload" support patch, we actually can
compile an uImage by:
make uImage UIMAGE_TYPE=kernel_noload UIMAGE_ENTRYADDR=0x0
and it gets a cross-SoCs uImage which doesn't care about zreladdr-y in
Makefile.boot.
actually it just jumps to (loaded uImage dram address + 0x40).

anyway, we don't need to modify mach-prima2/Makefile.boot for marco any more.

do people think we have a chance to delete mach-xxx/Makefile.boot for
some platforms if  zreladdr-y and related address don't make many
senses again?

-barry
diff mbox

Patch

diff --git a/arch/arm/mach-prima2/Makefile.boot
b/arch/arm/mach-prima2/Makefile.boot
index 53c5225..059bcd7 100644
--- a/arch/arm/mach-prima2/Makefile.boot
+++ b/arch/arm/mach-prima2/Makefile.boot
@@ -1,12 +1,4 @@ 

-zreladdr-y             += 0x00008000
-params_phys-y          := 0x00000100
-initrd_phys-y          := 0x00800000
#we use kernel_noload uImage and AUTO_ZRELADDR
+zreladdr-y             += 0x0

2. don't use kernel's uImage target, mkimage uImage out of kernel by
giving mkimage the "-a 0x40008000" and keep kernel unchanged.

anyway, i think arm SoC needs a generic way to handle this kind of problem.

if we move to 1, i think almost all ARM SoCs don't need Makefile.boot again.