aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJavier Herrero <jherrero@hvsistemas.es>2007-12-21 18:26:44 +0800
committerBryan Wu <bryan.wu@analog.com>2007-12-21 18:26:44 +0800
commitfb96c56de33def1484614c6a3d0fbef76595ce2f (patch)
treedcc6c97d85d50bbf77908155dee567bb4663a63c /arch
parentd5c4b5e3b2682a9aac07a43a8a79d3b692b22567 (diff)
downloadkernel_goldelico_gta04-fb96c56de33def1484614c6a3d0fbef76595ce2f.zip
kernel_goldelico_gta04-fb96c56de33def1484614c6a3d0fbef76595ce2f.tar.gz
kernel_goldelico_gta04-fb96c56de33def1484614c6a3d0fbef76595ce2f.tar.bz2
[Blackfin] arch: Added support for 8250-class UARTs in HV Sistemas H8606 board, modification in 8250.c driver for correct compilation with Blackfin
Signed-off-by: Javier Herrero <jherrero@hvsistemas.es> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/mach-bf533/boards/H8606.c51
1 files changed, 49 insertions, 2 deletions
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c
index 6bcf404..675fd1c 100644
--- a/arch/blackfin/mach-bf533/boards/H8606.c
+++ b/arch/blackfin/mach-bf533/boards/H8606.c
@@ -40,6 +40,7 @@
#endif
#include <linux/pata_platform.h>
#include <linux/irq.h>
+
#include <asm/dma.h>
#include <asm/bfin5xx_spi.h>
#include <asm/reboot.h>
@@ -303,7 +304,49 @@ static struct platform_device bfin_uart_device = {
};
#endif
-static struct platform_device *stamp_devices[] __initdata = {
+#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
+
+#include <linux/serial_8250.h>
+#include <linux/serial.h>
+
+/*
+ * Configuration for two 16550 UARTS in FPGA at addresses 0x20200000 and 0x202000010.
+ * running at half system clock, both with interrupt output or-ed to PF8. Change to
+ * suit different FPGA configuration, or to suit real 16550 UARTS connected to the bus
+ */
+
+static struct plat_serial8250_port serial8250_platform_data [] = {
+ {
+ .membase = 0x20200000,
+ .mapbase = 0x20200000,
+ .irq = IRQ_PF8,
+ .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE,
+ .iotype = UPIO_MEM,
+ .regshift = 1,
+ .uartclk = 66666667,
+ }, {
+ .membase = 0x20200010,
+ .mapbase = 0x20200010,
+ .irq = IRQ_PF8,
+ .flags = UPF_BOOT_AUTOCONF | UART_CONFIG_TYPE,
+ .iotype = UPIO_MEM,
+ .regshift = 1,
+ .uartclk = 66666667,
+ }, {
+ }
+};
+
+static struct platform_device serial8250_device = {
+ .id = PLAT8250_DEV_PLATFORM,
+ .name = "serial8250",
+ .dev = {
+ .platform_data = serial8250_platform_data,
+ },
+};
+
+#endif
+
+static struct platform_device *h8606_devices[] __initdata = {
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
&rtc_device,
#endif
@@ -327,13 +370,17 @@ static struct platform_device *stamp_devices[] __initdata = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
&bfin_uart_device,
#endif
+
+#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
+ &serial8250_device,
+#endif
};
static int __init H8606_init(void)
{
printk(KERN_INFO "HV Sistemas H8606 board support by http://www.hvsistemas.com\n");
printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__);
- platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
+ platform_add_devices(h8606_devices, ARRAY_SIZE(h8606_devices));
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
#endif