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

Commit daf67dfc authored by Heiko Stuebner's avatar Heiko Stuebner Committed by Kukjin Kim
Browse files

ARM: S3C24XX: trim down debug uart handling



Using the lowlevel debug uart is a corner case - even more so in a
multiplatform environment. So it seems reasonable to simply let the
developer set the appropriate uart type for the debugged SoC.

Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 46f34abc
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -670,6 +670,33 @@ choice
		  The uncompressor code port configuration is now handled
		  by CONFIG_S3C_LOWLEVEL_UART_PORT.

	config DEBUG_S3C2410_UART0
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 UART 0 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 0. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_S3C2410_UART1
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 UART 1 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 1. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_S3C2410_UART2
		depends on ARCH_S3C24XX
		select DEBUG_S3C2410_UART
		bool "Use S3C2410/S3C2412 UART 2 for low-level debug"
		help
		  Say Y here if you want the debug print routines to direct
		  their output to UART 2. The port must have been initialised
		  by the boot-loader before use.

	config DEBUG_SOCFPGA_UART
		depends on ARCH_SOCFPGA
		bool "Use SOCFPGA UART for low-level debug"
@@ -921,6 +948,9 @@ endchoice
config DEBUG_EXYNOS_UART
	bool

config DEBUG_S3C2410_UART
	bool

config DEBUG_OMAP2PLUS_UART
	bool
	depends on ARCH_OMAP2PLUS
+0 −28
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ config CPU_S3C2410
	default y
	select COMMON_CLK
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2410
	select S3C2410_COMMON_CLK
	select S3C2410_DMA if S3C24XX_DMA
	select ARM_S3C2410_CPUFREQ if ARM_S3C24XX_CPUFREQ
@@ -53,7 +52,6 @@ config CPU_S3C2412
	bool "SAMSUNG S3C2412"
	select COMMON_CLK
	select CPU_ARM926T
	select CPU_LLSERIAL_S3C2440
	select S3C2412_COMMON_CLK
	select S3C2412_DMA if S3C24XX_DMA
	select S3C2412_PM if PM
@@ -64,7 +62,6 @@ config CPU_S3C2416
	bool "SAMSUNG S3C2416/S3C2450"
	select COMMON_CLK
	select CPU_ARM926T
	select CPU_LLSERIAL_S3C2440
	select S3C2416_PM if PM
	select S3C2443_COMMON_CLK
	select S3C2443_DMA if S3C24XX_DMA
@@ -75,7 +72,6 @@ config CPU_S3C2440
	bool "SAMSUNG S3C2440"
	select COMMON_CLK
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2410_COMMON_CLK
	select S3C2410_PM if PM
	select S3C2440_DMA if S3C24XX_DMA
@@ -86,7 +82,6 @@ config CPU_S3C2442
	bool "SAMSUNG S3C2442"
	select COMMON_CLK
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2410_COMMON_CLK
	select S3C2410_DMA if S3C24XX_DMA
	select S3C2410_PM if PM
@@ -102,7 +97,6 @@ config CPU_S3C2443
	bool "SAMSUNG S3C2443"
	select COMMON_CLK
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2443_COMMON_CLK
	select S3C2443_DMA if S3C24XX_DMA
	help
@@ -164,28 +158,6 @@ config S3C2410_PM
	help
	  Power Management code common to S3C2410 and better

# low-level serial option nodes

config CPU_LLSERIAL_S3C2410_ONLY
	bool
	default y if CPU_LLSERIAL_S3C2410 && !CPU_LLSERIAL_S3C2440

config CPU_LLSERIAL_S3C2440_ONLY
	bool
	default y if CPU_LLSERIAL_S3C2440 && !CPU_LLSERIAL_S3C2410

config CPU_LLSERIAL_S3C2410
	bool
	help
	  Selected if there is an S3C2410 (or register compatible) serial
	  low-level implementation needed

config CPU_LLSERIAL_S3C2440
	bool
	help
	  Selected if there is an S3C2440 (or register compatible) serial
	  low-level implementation needed

config S3C24XX_PLL
	bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
	depends on ARM_S3C24XX_CPUFREQ
+1 −51
Original line number Diff line number Diff line
@@ -13,11 +13,9 @@
*/

#include <mach/map.h>
#include <mach/regs-gpio.h>
#include <linux/serial_s3c.h>

#define S3C2410_UART1_OFF (0x4000)
#define SHIFT_2440TXF (14-9)

	.macro addruart, rp, rv, tmp
		ldr	\rp, = S3C24XX_PA_UART
@@ -28,56 +26,11 @@
#endif
	.endm

	.macro fifo_full_s3c24xx rd, rx
		@ check for arm920 vs arm926. currently assume all arm926
		@ devices have an 64 byte FIFO identical to the s3c2440
		mrc	p15, 0, \rd, c0, c0
		and	\rd, \rd, #0xff0
		teq	\rd, #0x260
		beq	1004f
		mrc	p15, 0, \rd, c1, c0
		tst	\rd, #1
		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
		bic	\rd, \rd, #0xff000
		ldr	\rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)]
		and	\rd, \rd, #0x00ff0000
		teq	\rd, #0x00440000		@ is it 2440?
1004:
		ldr	\rd, [\rx, # S3C2410_UFSTAT]
		moveq	\rd, \rd, lsr #SHIFT_2440TXF
		tst	\rd, #S3C2410_UFSTAT_TXFULL
	.endm

	.macro  fifo_full_s3c2410 rd, rx
		ldr	\rd, [\rx, # S3C2410_UFSTAT]
		tst	\rd, #S3C2410_UFSTAT_TXFULL
	.endm

/* fifo level reading */

	.macro fifo_level_s3c24xx rd, rx
		@ check for arm920 vs arm926. currently assume all arm926
		@ devices have an 64 byte FIFO identical to the s3c2440
		mrc	p15, 0, \rd, c0, c0
		and	\rd, \rd, #0xff0
		teq	\rd, #0x260
		beq	10000f
		mrc	p15, 0, \rd, c1, c0
		tst	\rd, #1
		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
		bic	\rd, \rd, #0xff000
		ldr	\rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)]
		and	\rd, \rd, #0x00ff0000
		teq	\rd, #0x00440000		@ is it 2440?

10000:
		ldr	\rd, [\rx, # S3C2410_UFSTAT]
		andne	\rd, \rd, #S3C2410_UFSTAT_TXMASK
		andeq	\rd, \rd, #S3C2440_UFSTAT_TXMASK
	.endm

	.macro fifo_level_s3c2410 rd, rx
		ldr	\rd, [\rx, # S3C2410_UFSTAT]
		and	\rd, \rd, #S3C2410_UFSTAT_TXMASK
@@ -88,12 +41,9 @@
 * used variants of these
*/

#if defined(CONFIG_CPU_LLSERIAL_S3C2410_ONLY)
#if defined(CONFIG_DEBUG_S3C2410_UART)
#define fifo_full  fifo_full_s3c2410
#define fifo_level fifo_level_s3c2410
#elif !defined(CONFIG_CPU_LLSERIAL_S3C2440_ONLY)
#define fifo_full  fifo_full_s3c24xx
#define fifo_level fifo_level_s3c24xx
#endif

/* include the reset of the code which will do the work */