summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-samsung
diff options
context:
space:
mode:
authorAlexey Galakhov <agalakhov@gmail.com>2012-05-14 15:38:05 +0600
committerSascha Hauer <s.hauer@pengutronix.de>2012-05-14 19:46:02 +0200
commit932f54688f83ab4a7532614042398dd46722dcd2 (patch)
tree6fb899b4697628f909224ea7e526d9c833d29d08 /arch/arm/mach-samsung
parent1503fe67d11616dccafd3068ad4d3c771df03c4c (diff)
downloadbarebox-932f54688f83ab4a7532614042398dd46722dcd2.tar.gz
barebox-932f54688f83ab4a7532614042398dd46722dcd2.tar.xz
Support most Samsung SoCs in S3C serial driver
Ok, I assume this should go into separate series. It fits both S5PV210 and S3C6410. This adds support for S3C and S5P architectures (all of my knowledge) to the serial driver. Since the only difference between them is in clock handling, this is moved to an arch-dependent separate function. Most modern architectures should define S3C_UART_HAS_UBRDIVSLOT and S3C_UART_HAS_UINTM. This adds support for most Signed-off-by: Alexey Galakhov <agalakhov@gmail.com> Signed-off-by: Juergen Beisewrt <kernel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-samsung')
-rw-r--r--arch/arm/mach-samsung/include/mach/s3c-generic.h4
-rw-r--r--arch/arm/mach-samsung/s3c24xx-clocks.c17
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-samsung/include/mach/s3c-generic.h b/arch/arm/mach-samsung/include/mach/s3c-generic.h
index 4ea3dd7ea4..5d3808ef5b 100644
--- a/arch/arm/mach-samsung/include/mach/s3c-generic.h
+++ b/arch/arm/mach-samsung/include/mach/s3c-generic.h
@@ -30,5 +30,9 @@ uint32_t s3c_get_fclk(void);
uint32_t s3c_get_hclk(void);
uint32_t s3c_get_pclk(void);
uint32_t s3c_get_uclk(void);
+
+unsigned s3c_get_uart_clk(unsigned src);
+
uint32_t s3c24xx_get_memory_size(void);
+
void s3c24xx_disable_second_sdram_bank(void);
diff --git a/arch/arm/mach-samsung/s3c24xx-clocks.c b/arch/arm/mach-samsung/s3c24xx-clocks.c
index a99d1b9d18..13e68678e1 100644
--- a/arch/arm/mach-samsung/s3c24xx-clocks.c
+++ b/arch/arm/mach-samsung/s3c24xx-clocks.c
@@ -118,6 +118,23 @@ uint32_t s3c24_get_uclk(void)
}
/**
+ * Return correct UART frequency based on the UCON register
+ */
+unsigned s3c_get_uart_clk(unsigned src)
+{
+ switch (src & 3) {
+ case 0:
+ case 2:
+ return s3c_get_pclk();
+ case 1:
+ return 0; /* TODO UEXTCLK */
+ case 3:
+ return 0; /* TODO FCLK/n */
+ }
+ return 0; /* not reached, to make compiler happy */
+}
+
+/**
* Show the user the current clock settings
*/
int s3c24xx_dump_clocks(void)