[PATCH 05/13] ARM: LPC32XX: arch Kconfig, plat Kconfig, and makefiles
Uwe Kleine-König
u.kleine-koenig at pengutronix.de
Wed Feb 3 05:51:52 EST 2010
Hi Kevin,
On Wed, Jan 27, 2010 at 05:43:23PM -0800, wellsk40 at gmail.com wrote:
> From: Kevin Wells <wellsk40 at gmail.com>
>
> Added Kconfig for the LPC32XX arch, Kconfig.plat for platforms based
> on the LPC32XX, and the initial makefiles. Kconfig.plat currently
> supports the Phytec PHY3250 platform.
>
> Signed-off-by: Kevin Wells <wellsk40 at gmail.com>
> ---
> arch/arm/mach-lpc32xx/Kconfig | 158 +++++++++++++++++++++++++++++++++++
> arch/arm/mach-lpc32xx/Kconfig.plat | 98 ++++++++++++++++++++++
> arch/arm/mach-lpc32xx/Makefile | 9 ++
> arch/arm/mach-lpc32xx/Makefile.boot | 4 +
> 4 files changed, 269 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-lpc32xx/Kconfig b/arch/arm/mach-lpc32xx/Kconfig
> new file mode 100644
> index 0000000..a277885
> --- /dev/null
> +++ b/arch/arm/mach-lpc32xx/Kconfig
> @@ -0,0 +1,158 @@
> +if ARCH_LPC32XX
> +
> +menu "LPC32XX chip options"
> +
> +config ARCH_LPC32XX_IRAM_SIZE
> + int
> + default 131072 if ARCH_LPC32XX_20
> + default 262144 if ARCH_LPC32XX_30 || ARCH_LPC32XX_40 || ARCH_LPC32XX_50
> +
> +choice
> + prompt "Select 32x0 device variation"
> + default ARCH_LPC32XX_50
> +
> + config ARCH_LPC32XX_20
> + bool "LPC3220"
> + help
> + 128K IRAM, no ethernet or LCD
> +
> + config ARCH_LPC32XX_30
> + bool "LPC3230"
> + help
> + 256K IRAM and LCD, no ethernet
> +
> + config ARCH_LPC32XX_40
> + bool "LPC3240"
> + help
> + 256K IRAM and ethernet, no LCD
> +
> + config ARCH_LPC32XX_50
> + bool "LPC3250"
> + help
> + 256K IRAM and ethernet and LCD
> +
> +endchoice
It's sad this is a choice and only a single "device variation" is
selectable. Maybe you can autodetect these?
> +menu "Serial port configuration"
> +
> +menu "Individual UART enable selections"
> +
> +config ARCH_LPC32XX_HSUART1_ENABLE
> + bool "Enable high speed UART1"
> + help
> + Also enable LPC32xx high speed serial support in drivers/serial
> +
> +config ARCH_LPC32XX_HSUART2_ENABLE
> + bool "Enable high speed UART2"
> + help
> + Also enable LPC32xx high speed serial support in drivers/serial
> +
> +config ARCH_LPC32XX_UART3_ENABLE
> + bool "Enable standard UART3"
> + help
> + Also enable 8250 serial support in drivers/serial
> +
> +config ARCH_LPC32XX_UART4_ENABLE
> + bool "Enable standard UART4"
> + help
> + Also enable 8250 serial support in drivers/serial
> +
> +config ARCH_LPC32XX_UART5_ENABLE
> + bool "Enable standard UART5"
> + default y
> + help
> + Also enable 8250 serial support in drivers/serial
> +
> +config ARCH_LPC32XX_UART6_ENABLE
> + bool "Enable standard UART6"
> + help
> + Also enable 8250 serial support in drivers/serial
> +
> +config ARCH_LPC32XX_HSUART7_ENABLE
> + bool "Enable high speed UART7"
> + help
> + Also enable LPC32xx high speed serial support in drivers/serial
> +
> +endmenu
IMHO "enable" is a bit misleading here. Depending on the selection here
the devices are defined or not.
> +config ARCH_LPC32XX_UART6_IRDAMODE
> + bool "Use IRDA mode on UART6"
> + depends on ARCH_LPC32XX_UART6_ENABLE
> + help
> + Enables the IrDA modulator for UART6
> +
> +choice
> + prompt "Kernel uncompress status output UART selection"
> + default ARCH_LPC32XX_UNCOMP_U5
> +
> + config ARCH_LPC32XX_UNCOMP_HSU1
> + bool "High speed UART 1"
> + help
> + Kernel uncompress output is on high speed UART 1
> +
> + config ARCH_LPC32XX_UNCOMP_HSU2
> + bool "High speed UART 2"
> + help
> + Kernel uncompress output is on high speed UART 2
> +
> + config ARCH_LPC32XX_UNCOMP_U3
> + bool "Standard UART 3"
> + help
> + Kernel uncompress output is on standard UART 3
> +
> + config ARCH_LPC32XX_UNCOMP_U4
> + bool "Standard UART 4"
> + help
> + Kernel uncompress output is on standard UART 4
> +
> + config ARCH_LPC32XX_UNCOMP_U5
> + bool "Standard UART 5"
> + help
> + Kernel uncompress output is on standard UART 5
> +
> + config ARCH_LPC32XX_UNCOMP_U6
> + bool "Standard UART 6"
> + help
> + Kernel uncompress output is on standard UART 6
> +
> + config ARCH_LPC32XX_UNCOMP_HSU7
> + bool "High speed UART 7"
> + help
> + Kernel uncompress output is on high speed UART 7
> +
> +endchoice
Can you autodetect this?
> +choice
> + prompt "debug output (printascii) UART selection"
> + default ARCH_LPC32XX_DEBUGO_U5
> +
> + config ARCH_LPC32XX_DEBUGO_U3
> + bool "Standard UART 3"
> + help
> + printascii messages are output on standard UART 3
> +
> + config ARCH_LPC32XX_DEBUGO_U4
> + bool "Standard UART 4"
> + help
> + printascii messages are output on standard UART 4
> +
> + config ARCH_LPC32XX_DEBUGO_U5
> + bool "Standard UART 5"
> + help
> + printascii messages are output on standard UART 5
> +
> + config ARCH_LPC32XX_DEBUGO_U6
> + bool "Standard UART 6"
> + help
> + printascii messages are output on standard UART 6
> +
> +endchoice
IMHO this isn't something that needs configuration via Kconfig. It's
enough to have this via #defines in debug-macro.S.
> +endmenu
> +
> +endmenu
> +
> +source "arch/arm/mach-lpc32xx/Kconfig.plat"
> +
> +endif
> +
> diff --git a/arch/arm/mach-lpc32xx/Kconfig.plat b/arch/arm/mach-lpc32xx/Kconfig.plat
> new file mode 100644
> index 0000000..a67d1ad
> --- /dev/null
> +++ b/arch/arm/mach-lpc32xx/Kconfig.plat
> @@ -0,0 +1,98 @@
> +menu "LPC32XX platform choices"
> +
> +choice
> + prompt "Choose your board"
> + default MACH_PHY3250
> + help
> + This menu selects the LPC3250 board to support for this build
> +
> + config MACH_PHY3250
> + bool "Phytec 3250 development board"
> + help
> + Support for the Phytec 3250 development board
> +
> +endchoice
Again, support more than one mach per kernel?
> +choice
> + prompt "Phytec LCD module revisions"
> + depends on MACH_PHY3250
> + default PHY3250_QVGA_PANEL_1307_1
> + help
> + Select one of the supported LCD panel revisions
> +
> +config PHY3250_QVGA_PANEL_1307_0
> + bool "1307.0 QVGA panel (portrait mode RGB565)"
> + help
> + Use LCD module version 1307.0
> +
> +config PHY3250_QVGA_PANEL_1307_1
> + bool "1307.1 QVGA panel (portrait mode RGB565)"
> + help
> + Use LCD module version 1307.1
> +
> +endchoice
autodetect? kernel-parameter?
> +choice
> + prompt "Phytec CPU module revisions"
> + depends on MACH_PHY3250
> + default PHY3250_CPU_MODULE_1304_1
> + help
> + Select one of the supported CPU module revisions
> +
> +config PHY3250_CPU_MODULE_1304_0
> + bool "1304.0 CPU module"
> + help
> + Use CPU module version 1304.0
> +
> +config PHY3250_CPU_MODULE_1304_1
> + bool "1304.1 CPU module"
> + help
> + Use CPU module version 1304.1
> +
> +endchoice
ditto, autodetect? kernel-parameter?
> +choice
> + prompt "Phytec Carrier board revisions"
> + depends on MACH_PHY3250
> + default PHY3250_CARRIER_1305_3
> + help
> + Select one of the supported carrier board revisions
> +
> +config PHY3250_CARRIER_1305_01
> + bool "1305.0 or 1305.1 carrier board"
> + help
> + Use carrier board version 1305.0 or 1305.1
> +
> +config PHY3250_CARRIER_1305_2
> + bool "1305.2 carrier board"
> + help
> + Use carrier board version 1305.2
> +
> +config PHY3250_CARRIER_1305_3
> + bool "1305.3 carrier board"
> + help
> + Use carrier board version 1305.3
> +
> +endchoice
ditto
> +choice
> + prompt "Internal IRAM use"
> + default MACH_LPC32XX_IRAM_RESERVED
> + depends on MACH_PHY3250
> +
> +config MACH_LPC32XX_IRAM_RESERVED
> + bool "IRAM is not used (reserved)"
> + help
> + IRAM is not used for video or networking and can be used for
> + other purposes or drivers
> +
> +config MACH_LPC32XX_IRAM_FOR_CLCD
> + bool "Use IRAM as a video frame buffer"
> + help
> + IRAM will be used for the LCD frame buffer. If the required buffer
> + size is larger than the size of IRAM, then SDRAM will be used
> + instead.
> +
> +endchoice
A request API would be nice here!?
> +endmenu
> diff --git a/arch/arm/mach-lpc32xx/Makefile b/arch/arm/mach-lpc32xx/Makefile
> new file mode 100644
> index 0000000..9c76c70
> --- /dev/null
> +++ b/arch/arm/mach-lpc32xx/Makefile
> @@ -0,0 +1,9 @@
> +#
> +# Makefile for the linux kernel.
> +#
> +
> +obj-y := timer.o irq.o common.o serial.o clock.o
> +obj-y += gpiolib.o pm.o pm_events.o suspend.o
wow, 4 tabs!
> +obj-$(CONFIG_MACH_PHY3250) += phy3250.o
> +
> diff --git a/arch/arm/mach-lpc32xx/Makefile.boot b/arch/arm/mach-lpc32xx/Makefile.boot
> new file mode 100644
> index 0000000..b796b41
> --- /dev/null
> +++ b/arch/arm/mach-lpc32xx/Makefile.boot
> @@ -0,0 +1,4 @@
> + zreladdr-y := 0x80008000
> +params_phys-y := 0x80000100
I hope your bootloader passes the atag list via r2. If so there is no
need to define params_phys-y.
> +initrd_phys-y := 0x82000000
initrd_phys is only needed for bootp. Do you need it?
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
More information about the linux-arm-kernel
mailing list