[PATCH] Add basic support from ARM Versatile/PB

Alexey Zaytsev alexey.zaytsev at gmail.com
Mon Oct 11 10:49:53 EDT 2010


On Mon, Oct 11, 2010 at 18:41, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj at jcrosoft.com> wrote:
> On 23:15 Sun 10 Oct     , Alexey Zaytsev wrote:
>> Signed-off-by: Alexey Zaytsev <alexey.zaytsev at gmail.com>
>> ---
>>
>> Hi.
>>
>> It seems that barebox does not run on any ARM machines provided
>> by QEMU. This patch adds basic Versatile/PB support. It is far from
>> being complete and has not been tested on real hardware, but
>> seems to work fine in QEMU.
>>
>> Please notice, that you need to set CONFIG_VERSATILE_SMC91C111
>> in order to have networking in QEMU, as it does not provide
>> smc91x found on the real hardware.
>>
>> For a queck test, run:
>>
>>       qemu-system-arm -kernel barebox.bin -M versatilepb -cpu arm926 -nographic -m 64 -net nic,model=smc91c111 -net user
> this must be in a doc
>
> please use defaultenv and enable more functionnability
>
> as we can use it as ref board for emulation
>>
>>
>>  arch/arm/Kconfig                                |    4
>>  arch/arm/Makefile                               |    2
>>  arch/arm/boards/versatile/Kconfig               |   21 +
>>  arch/arm/boards/versatile/Makefile              |    2
>>  arch/arm/boards/versatile/config.h              |    5
>>  arch/arm/boards/versatile/env/bin/init          |    1
>>  arch/arm/boards/versatile/versatilepb.c         |   56 +++
>>  arch/arm/configs/versatilepb_defconfig          |   12 +
>>  arch/arm/include/asm/arm_timer.h                |   33 ++
>>  arch/arm/mach-versatile/Kconfig                 |   16 +
>>  arch/arm/mach-versatile/Makefile                |    2
>>  arch/arm/mach-versatile/core.c                  |  217 ++++++++++++
>>  arch/arm/mach-versatile/include/mach/clkdev.h   |    7
>>  arch/arm/mach-versatile/include/mach/debug_ll.h |   37 ++
>>  arch/arm/mach-versatile/include/mach/init.h     |    9
>>  arch/arm/mach-versatile/include/mach/platform.h |  417 +++++++++++++++++++++++
>>  16 files changed, 841 insertions(+), 0 deletions(-)
>>  create mode 100644 arch/arm/boards/versatile/Kconfig
>>  create mode 100644 arch/arm/boards/versatile/Makefile
>>  create mode 100644 arch/arm/boards/versatile/config.h
>>  create mode 100644 arch/arm/boards/versatile/env/bin/init
>>  create mode 100644 arch/arm/boards/versatile/versatilepb.c
>>  create mode 100644 arch/arm/configs/versatilepb_defconfig
>>  create mode 100644 arch/arm/include/asm/arm_timer.h
>>  create mode 100644 arch/arm/mach-versatile/Kconfig
>>  create mode 100644 arch/arm/mach-versatile/Makefile
>>  create mode 100644 arch/arm/mach-versatile/core.c
>>  create mode 100644 arch/arm/mach-versatile/include/mach/clkdev.h
>>  create mode 100644 arch/arm/mach-versatile/include/mach/debug_ll.h
>>  create mode 100644 arch/arm/mach-versatile/include/mach/init.h
>>  create mode 100644 arch/arm/mach-versatile/include/mach/platform.h
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index fa37036..d90246a 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -56,6 +56,9 @@ config ARCH_S3C24xx
>>       bool "Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443"
>>       select CPU_ARM920T
>>
>> +config ARCH_VERSATILE
>> +     bool "ARM Versatile boards (ARM926EJ-S)"
>> +     select CPU_ARM926T
>>  endchoice
>>
>>  source arch/arm/cpu/Kconfig
>> @@ -66,6 +69,7 @@ source arch/arm/mach-netx/Kconfig
>>  source arch/arm/mach-nomadik/Kconfig
>>  source arch/arm/mach-omap/Kconfig
>>  source arch/arm/mach-s3c24xx/Kconfig
>> +source arch/arm/mach-versatile/Kconfig
>>
>>  config AEABI
>>       bool "Use the ARM EABI to compile barebox"
>> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
>> index 77b6cf4..6ad14e7 100644
>> --- a/arch/arm/Makefile
>> +++ b/arch/arm/Makefile
>> @@ -45,6 +45,7 @@ machine-$(CONFIG_ARCH_NOMADIK)              := nomadik
>>  machine-$(CONFIG_ARCH_NETX)          := netx
>>  machine-$(CONFIG_ARCH_OMAP)          := omap
>>  machine-$(CONFIG_ARCH_S3C24xx)               := s3c24xx
>> +machine-$(CONFIG_ARCH_VERSATILE)     := versatile
>>
>>  # Board directory name.  This list is sorted alphanumerically
>>  # by CONFIG_* macro name.
>> @@ -80,6 +81,7 @@ board-$(CONFIG_MACH_PCM043)                 := pcm043
>>  board-$(CONFIG_MACH_PM9263)                  := pm9263
>>  board-$(CONFIG_MACH_SCB9328)                 := scb9328
>>  board-$(CONFIG_MACH_NESO)                    := guf-neso
>> +board-$(CONFIG_MACH_VERSATILEPB)             := versatile
>>
>>  machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
>>
>> diff --git a/arch/arm/boards/versatile/Kconfig b/arch/arm/boards/versatile/Kconfig
>> new file mode 100644
>> index 0000000..d5da87d
>> --- /dev/null
>> +++ b/arch/arm/boards/versatile/Kconfig
>> @@ -0,0 +1,21 @@
>> +
>> +
>> +if MACH_VERSATILEPB
>> +
>> +config ARCH_TEXT_BASE
>> +     hex
>> +     default 0
>> +
>> +config BOARDINFO
>> +     default "ARM Versatile/PB (ARM926EJ-S)"
>> +endif
>> +
>> +config VERSATILE_SMC91C111
>> +     bool "Use smc91c111 instead of smc91x (for QEMU)"
>> +     default 0
> ??

Will remove.

>> +     help
>> +      Enable this option to run barebox inside qemu.
>> +      Real versatile boards are equipped with smc911x,
>> +      but qemu only provides smc91111, which is a bit different.
> it will be beter to modify the ressources depending on the drivers enabled
>
> and nake it exclusive

Can't agree here, in my understanding, the board definition should not
depend on the drivers enabled. It might be a good idea to enable the
right driver depending on this option, but I'm not sure if this is
doable without forcing the ethernet driver always on.

>> +
>> +
>> diff --git a/arch/arm/boards/versatile/Makefile b/arch/arm/boards/versatile/Makefile
>> new file mode 100644
>> index 0000000..a17aed3
>> --- /dev/null
>> +++ b/arch/arm/boards/versatile/Makefile
>> @@ -0,0 +1,2 @@
>> +
>> +obj-$(CONFIG_MACH_VERSATILEPB) += versatilepb.o
>> diff --git a/arch/arm/boards/versatile/config.h b/arch/arm/boards/versatile/config.h
>> new file mode 100644
>> index 0000000..25bb18f
>> --- /dev/null
>> +++ b/arch/arm/boards/versatile/config.h
>> @@ -0,0 +1,5 @@
>> +
>> +#ifndef __CONFIG_H
>> +#define __CONFIG_H
>> +
>> +#endif       /* __CONFIG_H */
>> diff --git a/arch/arm/boards/versatile/env/bin/init b/arch/arm/boards/versatile/env/bin/init
>> new file mode 100644
>> index 0000000..224a6b4
>> --- /dev/null
>  +      sdram_dev.size = size;
>> +     register_device(&sdram_dev);
>> +     armlinux_add_dram(&sdram_dev);
>> +}
>> +
>> +/* 4 uarts, yay! */
>> +static struct device_d uart0_serial_device = {
>> +     .id = 1,
> why not start at 0?

Will fix.
>
> btw there is a lots of whitespace could you fix them
>

Will fix.



More information about the barebox mailing list