Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3298a351 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ARM SoC multiplatform support from Arnd Bergmann:
 "Converting more ARM platforms to multiplatform support.  This time,
  OMAP gets converted, which is a major step since this is by far the
  largest platform in terms of code size.  The same thing happens to the
  vt8500 platform."

* tag 'multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  net: cwdavinci_cpdma: export symbols for cpsw
  remoteproc: omap: depend on OMAP_MBOX_FWK
  [media] davinci: do not include mach/hardware.h
  ARM: OMAP2+: Make sure files with omap initcalls include soc.h
  ARM: OMAP2+: Include soc.h to drm.c to fix compiling
  ARM: OMAP2+: Fix warning for hwspinlock omap_postcore_initcall
  ARM: multi_v7_defconfig: add ARCH_ZYNQ
  ARM: multi_v7_defconfig: remove unnecessary CONFIG_GPIOLIB
  arm: vt8500: Remove remaining mach includes
  arm: vt8500: Convert debug-macro.S to be multiplatform friendly
  arm: vt8500: Remove single platform Kconfig options
  ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S
  ARM: OMAP2+: Add minimal support for booting vexpress
  ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support
  ARM: OMAP2+: Disable code that currently does not work with multiplaform
  ARM: OMAP2+: Add multiplatform debug_ll support
  ARM: OMAP: Fix dmaengine init for multiplatform
  ARM: OMAP: Fix i2c cmdline initcall for multiplatform
  ARM: OMAP2+: Use omap initcalls
  ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform kernels
parents 5ce7aba9 acb74523
Loading
Loading
Loading
Loading
+10 −18
Original line number Diff line number Diff line
@@ -932,32 +932,24 @@ config ARCH_DAVINCI
	help
	  Support for TI's DaVinci platform.

config ARCH_OMAP
	bool "TI OMAP"
config ARCH_OMAP1
	bool "TI OMAP1"
	depends on MMU
	select ARCH_HAS_CPUFREQ
	select ARCH_HAS_HOLES_MEMORYMODEL
	select ARCH_REQUIRE_GPIOLIB
	select CLKSRC_MMIO
	select GENERIC_CLOCKEVENTS
	select HAVE_CLK
	help
	  Support for TI's OMAP platform (OMAP1/2/3/4).

config ARCH_VT8500_SINGLE
	bool "VIA/WonderMedia 85xx"
	select ARCH_HAS_CPUFREQ
	select ARCH_OMAP
	select ARCH_REQUIRE_GPIOLIB
	select CLKDEV_LOOKUP
	select COMMON_CLK
	select CPU_ARM926T
	select CLKSRC_MMIO
	select GENERIC_CLOCKEVENTS
	select GENERIC_IRQ_CHIP
	select HAVE_CLK
	select MULTI_IRQ_HANDLER
	select SPARSE_IRQ
	select USE_OF
	select HAVE_IDE
	select IRQ_DOMAIN
	select NEED_MACH_IO_H if PCCARD
	select NEED_MACH_MEMORY_H
	help
	  Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
	  Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)

endchoice

+64 −0
Original line number Diff line number Diff line
@@ -291,6 +291,13 @@ choice
		  Say Y here if you want kernel low-level debugging support
		  on MVEBU based platforms.

	config DEBUG_OMAP2PLUS_UART
		bool "Kernel low-level debugging messages via OMAP2PLUS UART"
		depends on ARCH_OMAP2PLUS
		help
		  Say Y here if you want kernel low-level debugging support
		  on OMAP2PLUS based platforms.

	config DEBUG_PICOXCELL_UART
		depends on ARCH_PICOXCELL
		bool "Use PicoXcell UART for low-level debug"
@@ -412,6 +419,13 @@ choice
		  of the tiles using the RS1 memory map, including all new A-class
		  core tiles, FPGA-based SMMs and software models.

	config DEBUG_VT8500_UART0
		bool "Use UART0 on VIA/Wondermedia SoCs"
		depends on ARCH_VT8500
		help
		  This option selects UART0 on VIA/Wondermedia System-on-a-chip
		  devices, including VT8500, WM8505, WM8650 and WM8850.

	config DEBUG_LL_UART_NONE
		bool "No low-level debugging UART"
		depends on !ARCH_MULTIPLATFORM
@@ -459,6 +473,54 @@ config DEBUG_IMX6Q_UART_PORT
	  Choose UART port on which kernel low-level debug messages
	  should be output.

choice
	prompt "Low-level debug console UART"
	depends on DEBUG_OMAP2PLUS_UART

	config DEBUG_OMAP2UART1
		bool "OMAP2/3/4 UART1 (omap2/3 sdp boards and some omap3 boards)"
		help
		  This covers at least h4, 2430sdp, 3430sdp, 3630sdp,
		  omap3 torpedo and 3530 lv som.

	config DEBUG_OMAP2UART2
		bool "OMAP2/3/4 UART2"

	config DEBUG_OMAP2UART3
		bool "OMAP2 UART3 (n8x0)"

	config DEBUG_OMAP3UART3
		bool "OMAP3 UART3 (most omap3 boards)"
		help
		  This covers at least cm_t3x, beagle, crane, devkit8000,
		  igep00x0, ldp, n900, n9(50), pandora, overo, touchbook,
		  and 3517evm.

	config DEBUG_OMAP4UART3
		bool "OMAP4/5 UART3 (omap4 blaze, panda, omap5 sevm)"

	config DEBUG_OMAP3UART4
		bool "OMAP36XX UART4"

	config DEBUG_OMAP4UART4
		bool "OMAP4/5 UART4"

	config DEBUG_TI81XXUART1
		bool "TI81XX UART1 (ti8148evm)"

	config DEBUG_TI81XXUART2
		bool "TI81XX UART2"

	config DEBUG_TI81XXUART3
		bool "TI81XX UART3 (ti8168evm)"

	config DEBUG_AM33XXUART1
		bool "AM33XX UART1"

	config DEBUG_ZOOM_UART
		bool "Zoom2/3 UART"
endchoice

choice
	prompt "Low-level debug console UART"
	depends on DEBUG_LL && DEBUG_TEGRA_UART
@@ -501,11 +563,13 @@ config DEBUG_LL_INCLUDE
				 DEBUG_IMX6Q_UART
	default "debug/highbank.S" if DEBUG_HIGHBANK_UART
	default "debug/mvebu.S" if DEBUG_MVEBU_UART
	default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
	default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
	default "debug/socfpga.S" if DEBUG_SOCFPGA_UART
	default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1
	default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \
		DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1
	default "debug/vt8500.S" if DEBUG_VT8500_UART0
	default "debug/tegra.S" if DEBUG_TEGRA_UART
	default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
	default "mach/debug-macro.S"
+1 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ CONFIG_ARCH_HIGHBANK=y
CONFIG_ARCH_SOCFPGA=y
CONFIG_ARCH_SUNXI=y
# CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set
CONFIG_ARCH_ZYNQ=y
CONFIG_ARM_ERRATA_754322=y
CONFIG_SMP=y
CONFIG_ARM_ARCH_TIMER=y
@@ -39,7 +40,6 @@ CONFIG_I2C=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_SPI=y
CONFIG_SPI_PL022=y
CONFIG_GPIOLIB=y
CONFIG_FB=y
CONFIG_FB_ARMCLCD=y
CONFIG_FRAMEBUFFER_CONSOLE=y
+5 −1
Original line number Diff line number Diff line
@@ -20,9 +20,10 @@ CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_ARCH_OMAP=y
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_OMAP_RESET_CLOCKS=y
CONFIG_OMAP_MUX_DEBUG=y
CONFIG_ARCH_VEXPRESS_CA9X4=y
CONFIG_ARM_THUMBEE=y
CONFIG_ARM_ERRATA_411920=y
CONFIG_NO_HZ=y
@@ -121,6 +122,8 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_HW_RANDOM=y
CONFIG_I2C_CHARDEV=y
CONFIG_SPI=y
@@ -194,6 +197,7 @@ CONFIG_USB_ZERO=m
CONFIG_MMC=y
CONFIG_MMC_UNSAFE_RESUME=y
CONFIG_SDIO_UART=y
CONFIG_MMC_ARMMMCI=y
CONFIG_MMC_OMAP=y
CONFIG_MMC_OMAP_HS=y
CONFIG_RTC_CLASS=y
+81 −56
Original line number Diff line number Diff line
/* arch/arm/mach-omap2/include/mach/debug-macro.S
 *
/*
 * Debugging macro include header
 *
 *  Copyright (C) 1994-1999 Russell King
@@ -13,7 +12,49 @@

#include <linux/serial_reg.h>

#include <mach/serial.h>
/* OMAP2 serial ports */
#define OMAP2_UART1_BASE	0x4806a000
#define OMAP2_UART2_BASE	0x4806c000
#define OMAP2_UART3_BASE	0x4806e000

/* OMAP3 serial ports */
#define OMAP3_UART1_BASE	OMAP2_UART1_BASE
#define OMAP3_UART2_BASE	OMAP2_UART2_BASE
#define OMAP3_UART3_BASE	0x49020000
#define OMAP3_UART4_BASE	0x49042000	/* Only on 36xx */
#define OMAP3_UART4_AM35XX_BASE	0x4809E000	/* Only on AM35xx */

/* OMAP4 serial ports */
#define OMAP4_UART1_BASE	OMAP2_UART1_BASE
#define OMAP4_UART2_BASE	OMAP2_UART2_BASE
#define OMAP4_UART3_BASE	0x48020000
#define OMAP4_UART4_BASE	0x4806e000

/* TI81XX serial ports */
#define TI81XX_UART1_BASE	0x48020000
#define TI81XX_UART2_BASE	0x48022000
#define TI81XX_UART3_BASE	0x48024000

/* AM3505/3517 UART4 */
#define AM35XX_UART4_BASE	0x4809E000	/* Only on AM3505/3517 */

/* AM33XX serial port */
#define AM33XX_UART1_BASE	0x44E09000

/* OMAP5 serial ports */
#define OMAP5_UART1_BASE	OMAP2_UART1_BASE
#define OMAP5_UART2_BASE	OMAP2_UART2_BASE
#define OMAP5_UART3_BASE	OMAP4_UART3_BASE
#define OMAP5_UART4_BASE	OMAP4_UART4_BASE
#define OMAP5_UART5_BASE	0x48066000
#define OMAP5_UART6_BASE	0x48068000

/* External port on Zoom2/3 */
#define ZOOM_UART_BASE		0x10000000
#define ZOOM_UART_VIRT		0xfa400000

#define OMAP_PORT_SHIFT		2
#define ZOOM_PORT_SHIFT		1

#define UART_OFFSET(addr)	((addr) & 0x00ffffff)

@@ -23,12 +64,6 @@ omap_uart_virt: .word 0
omap_uart_lsr:	.word	0
		.popsection

		/*
		 * Note that this code won't work if the bootloader passes
		 * a wrong machine ID number in r1. To debug, just hardcode
		 * the desired UART phys and virt addresses temporarily into
		 * the omap_uart_phys and omap_uart_virt above.
		 */
		.macro	addruart, rp, rv, tmp

		/* Use omap_uart_phys/virt if already configured */
@@ -43,74 +78,64 @@ omap_uart_lsr: .word 0
		cmpne	\rv, #0
		bne	100f			@ already configured

		/* Check the debug UART configuration set in uncompress.h */
		mov	\rp, pc
		ldr	\rv, =OMAP_UART_INFO_OFS
		and	\rp, \rp, #0xff000000
		ldr	\rp, [\rp, \rv]

		/* Select the UART to use based on the UART1 scratchpad value */
		cmp	\rp, #0			@ no port configured?
		beq	21f			@ if none, try to use UART1
		cmp	\rp, #OMAP2UART1	@ OMAP2/3/4UART1
		beq	21f			@ configure OMAP2/3/4UART1
		cmp	\rp, #OMAP2UART2	@ OMAP2/3/4UART2
		beq	22f			@ configure OMAP2/3/4UART2
		cmp	\rp, #OMAP2UART3	@ only on 24xx
		beq	23f			@ configure OMAP2UART3
		cmp	\rp, #OMAP3UART3	@ only on 34xx
		beq	33f			@ configure OMAP3UART3
		cmp	\rp, #OMAP4UART3	@ only on 44xx/54xx
		beq	43f			@ configure OMAP4/5UART3
		cmp	\rp, #OMAP3UART4	@ only on 36xx
		beq	34f			@ configure OMAP3UART4
		cmp	\rp, #OMAP4UART4	@ only on 44xx/54xx
		beq	44f			@ configure OMAP4/5UART4
		cmp	\rp, #TI81XXUART1	@ ti81Xx UART offsets different
		beq	81f			@ configure UART1
		cmp	\rp, #TI81XXUART2	@ ti81Xx UART offsets different
		beq	82f			@ configure UART2
		cmp	\rp, #TI81XXUART3	@ ti81Xx UART offsets different
		beq	83f			@ configure UART3
		cmp	\rp, #AM33XXUART1	@ AM33XX UART offsets different
		beq	84f			@ configure UART1
		cmp	\rp, #ZOOM_UART		@ only on zoom2/3
		beq	95f			@ configure ZOOM_UART

		/* Configure the UART offset from the phys/virt base */
21:		mov	\rp, #UART_OFFSET(OMAP2_UART1_BASE)	@ omap2/3/4
#ifdef CONFIG_DEBUG_OMAP2UART1
		mov	\rp, #UART_OFFSET(OMAP2_UART1_BASE)	@ omap2/3/4
		b	98f
22:		mov	\rp, #UART_OFFSET(OMAP2_UART2_BASE)	@ omap2/3/4
#endif
#ifdef CONFIG_DEBUG_OMAP2UART2
		mov	\rp, #UART_OFFSET(OMAP2_UART2_BASE)	@ omap2/3/4
		b	98f
23:		mov	\rp, #UART_OFFSET(OMAP2_UART3_BASE)
#endif
#ifdef CONFIG_DEBUG_OMAP2UART3
		mov	\rp, #UART_OFFSET(OMAP2_UART3_BASE)
		b	98f
33:		mov	\rp, #UART_OFFSET(OMAP3_UART1_BASE)
#endif
#ifdef CONFIG_DEBUG_OMAP3UART3
		mov	\rp, #UART_OFFSET(OMAP3_UART1_BASE)
		add	\rp, \rp, #0x00fb0000
		add	\rp, \rp, #0x00006000		@ OMAP3_UART3_BASE
		b	98f
34:		mov	\rp, #UART_OFFSET(OMAP3_UART1_BASE)
#endif
#ifdef CONFIG_DEBUG_OMAP4UART3
		mov	\rp, #UART_OFFSET(OMAP4_UART3_BASE)
		b	98f
#endif
#ifdef CONFIG_DEBUG_OMAP3UART4
		mov	\rp, #UART_OFFSET(OMAP3_UART1_BASE)
		add	\rp, \rp, #0x00fb0000
		add	\rp, \rp, #0x00028000		@ OMAP3_UART4_BASE
		b	98f
43:		mov	\rp, #UART_OFFSET(OMAP4_UART3_BASE)
		b	98f
44:		mov	\rp, #UART_OFFSET(OMAP4_UART4_BASE)
#endif
#ifdef CONFIG_DEBUG_OMAP4UART4
		mov	\rp, #UART_OFFSET(OMAP4_UART4_BASE)
		b	98f
81:		mov	\rp, #UART_OFFSET(TI81XX_UART1_BASE)
#endif
#ifdef CONFIG_DEBUG_TI81XXUART1
		mov	\rp, #UART_OFFSET(TI81XX_UART1_BASE)
		b	98f
82:		mov	\rp, #UART_OFFSET(TI81XX_UART2_BASE)
#endif
#ifdef CONFIG_DEBUG_TI81XXUART2
		mov	\rp, #UART_OFFSET(TI81XX_UART2_BASE)
		b	98f
83:		mov	\rp, #UART_OFFSET(TI81XX_UART3_BASE)
#endif
#ifdef CONFIG_DEBUG_TI81XXUART3
		mov	\rp, #UART_OFFSET(TI81XX_UART3_BASE)
		b	98f
84:		ldr	\rp, =AM33XX_UART1_BASE
#endif
#ifdef CONFIG_DEBUG_AM33XXUART1
		ldr	\rp, =AM33XX_UART1_BASE
		and	\rp, \rp, #0x00ffffff
		b	97f
95:		ldr	\rp, =ZOOM_UART_BASE
#endif
#ifdef CONFIG_DEBUG_ZOOM_UART
		ldr	\rp, =ZOOM_UART_BASE
		str	\rp, [\tmp, #0]		@ omap_uart_phys
		ldr	\rp, =ZOOM_UART_VIRT
		str	\rp, [\tmp, #4]		@ omap_uart_virt
		mov	\rp, #(UART_LSR << ZOOM_PORT_SHIFT)
		str	\rp, [\tmp, #8]		@ omap_uart_lsr
#endif
		b	10b

		/* AM33XX: Store both phys and virt address for the uart */
Loading