Description:
Moves the serial initialization data from serial.c to board-evm.c file.
Signed-off-by: Sudhakar Rajashekhara <[EMAIL PROTECTED]>
---
arch/arm/mach-davinci/board-evm.c | 48 ++++++++++++++++++++++++++++-
arch/arm/mach-davinci/serial.c | 54 ++-------------------------------
include/asm-arm/arch-davinci/common.h | 2 +-
3 files changed, 51 insertions(+), 53 deletions(-)
diff --git a/arch/arm/mach-davinci/board-evm.c
b/arch/arm/mach-davinci/board-evm.c
index 399bfea..6955208 100644
--- a/arch/arm/mach-davinci/board-evm.c
+++ b/arch/arm/mach-davinci/board-evm.c
@@ -15,6 +15,7 @@
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
+#include <linux/serial_8250.h>
#include <linux/i2c/pcf857x.h>
#include <linux/leds.h>
@@ -36,6 +37,7 @@
#include <asm/arch/common.h>
#include <asm/arch/hardware.h>
#include <asm/arch/psc.h>
+#include <asm/arch/serial.h>
/* other misc. init functions */
void __init davinci_psc_init(void);
@@ -46,6 +48,49 @@ void __init davinci_init_common_hw(void);
/* NOR Flash base address set to CS0 by default */
#define NOR_FLASH_PHYS 0x02000000
+#define DAVINCI_UART_CLK 27000000
+
+static struct plat_serial8250_port serial_platform_data[] = {
+ {
+ .membase = (char *)IO_ADDRESS(DAVINCI_UART0_BASE),
+ .mapbase = (unsigned long)DAVINCI_UART0_BASE,
+ .irq = IRQ_UARTINT0,
+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+ .iotype = UPIO_MEM,
+ .regshift = 2,
+ .uartclk = DAVINCI_UART_CLK,
+ },
+ {
+ .membase = (char *)IO_ADDRESS(DAVINCI_UART1_BASE),
+ .mapbase = (unsigned long)DAVINCI_UART1_BASE,
+ .irq = IRQ_UARTINT1,
+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+ .iotype = UPIO_MEM,
+ .regshift = 2,
+ .uartclk = DAVINCI_UART_CLK,
+ },
+ {
+ .membase = (char *)IO_ADDRESS(DAVINCI_UART2_BASE),
+ .mapbase = (unsigned long)DAVINCI_UART2_BASE,
+ .irq = IRQ_UARTINT2,
+ .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+ .iotype = UPIO_MEM,
+ .regshift = 2,
+ .uartclk = DAVINCI_UART_CLK,
+ },
+ {
+ .flags = 0
+ },
+};
+
+static struct platform_device serial_device = {
+ .name = "serial8250",
+ .id = PLAT8250_DEV_PLATFORM,
+ .dev = {
+ .platform_data = serial_platform_data,
+ },
+};
+
static struct mtd_partition davinci_evm_norflash_partitions[] = {
/* bootloader (U-Boot, etc) in first 4 sectors */
{
@@ -411,6 +456,7 @@ static struct i2c_board_info __initdata i2c_info[] = {
};
static struct platform_device *davinci_evm_devices[] __initdata = {
+ &serial_device,
&davinci_evm_norflash_device,
#if defined(CONFIG_MTD_NAND_DAVINCI) || defined(CONFIG_MTD_NAND_DAVINCI_MODULE)
&davinci_evm_nandflash_device,
@@ -437,6 +483,7 @@ static void __init
davinci_evm_map_io(void)
{
davinci_map_common_io();
+ davinci_serial_init(&serial_device);
}
static __init void davinci_evm_init(void)
@@ -454,7 +501,6 @@ static __init void davinci_evm_init(void)
i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info));
davinci_board_config = davinci_evm_config;
davinci_board_config_size = ARRAY_SIZE(davinci_evm_config);
- davinci_serial_init();
setup_usb();
}
diff --git a/arch/arm/mach-davinci/serial.c b/arch/arm/mach-davinci/serial.c
index 4ebf63d..8e041d3 100644
--- a/arch/arm/mach-davinci/serial.c
+++ b/arch/arm/mach-davinci/serial.c
@@ -57,47 +57,6 @@ static inline void davinci_serial_outs(struct
plat_serial8250_port *p,
__raw_writew(value, p->membase + offset);
}
-static struct plat_serial8250_port serial_platform_data[] = {
- {
- .membase = (char *)IO_ADDRESS(DAVINCI_UART0_BASE),
- .mapbase = (unsigned long)DAVINCI_UART0_BASE,
- .irq = IRQ_UARTINT0,
- .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
- .iotype = UPIO_MEM,
- .regshift = 2,
- .uartclk = 27000000,
- },
- {
- .membase = (char *)IO_ADDRESS(DAVINCI_UART1_BASE),
- .mapbase = (unsigned long)DAVINCI_UART1_BASE,
- .irq = IRQ_UARTINT1,
- .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
- .iotype = UPIO_MEM,
- .regshift = 2,
- .uartclk = 27000000,
- },
- {
- .membase = (char *)IO_ADDRESS(DAVINCI_UART2_BASE),
- .mapbase = (unsigned long)DAVINCI_UART2_BASE,
- .irq = IRQ_UARTINT2,
- .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
- .iotype = UPIO_MEM,
- .regshift = 2,
- .uartclk = 27000000,
- },
- {
- .flags = 0
- },
-};
-
-static struct platform_device serial_device = {
- .name = "serial8250",
- .id = PLAT8250_DEV_PLATFORM,
- .dev = {
- .platform_data = serial_platform_data,
- },
-};
-
static void __init davinci_serial_reset(struct plat_serial8250_port *p)
{
/* reset both transmitter and receiver: bits 14,13 = UTRST, URRST */
@@ -113,13 +72,13 @@ static void __init davinci_serial_reset(struct
plat_serial8250_port *p)
davinci_serial_outs(p, UART_DAVINCI_PWREMU, pwremu);
}
-void __init davinci_serial_init(void)
+void __init davinci_serial_init(struct platform_device *pdev)
{
int i;
const struct davinci_uart_config *info;
char name[16];
struct clk *uart_clk;
- struct device *dev = &serial_device.dev;
+ struct device *dev = &pdev->dev;
/*
* Make sure the serial ports are muxed on at this point.
@@ -133,7 +92,7 @@ void __init davinci_serial_init(void)
return;
for (i = 0; i < DAVINCI_MAX_NR_UARTS; i++) {
- struct plat_serial8250_port *p = serial_platform_data + i;
+ struct plat_serial8250_port *p = dev->platform_data + i;
if (!(info->enabled_uarts & (1 << i))) {
p->membase = 0;
@@ -152,10 +111,3 @@ void __init davinci_serial_init(void)
}
}
}
-
-static int __init davinci_init(void)
-{
- return platform_device_register(&serial_device);
-}
-
-arch_initcall(davinci_init);
diff --git a/include/asm-arm/arch-davinci/common.h
b/include/asm-arm/arch-davinci/common.h
index 090013f..70995b5 100644
--- a/include/asm-arm/arch-davinci/common.h
+++ b/include/asm-arm/arch-davinci/common.h
@@ -15,7 +15,7 @@
struct sys_timer;
extern struct sys_timer davinci_timer;
-extern void davinci_serial_init(void);
+extern void davinci_serial_init(struct platform_device *pdev);
extern const u8 *davinci_def_priorities;
extern void davinci_irq_init(void);
extern void davinci_psc_config(unsigned int domain, unsigned int id,
--
1.5.4.1
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source