Commit 1452fc7d authored by Phil Sutter's avatar Phil Sutter Committed by Ralf Baechle

MIPS: RB532: Detect uart type, add platform device

Auto-detection works just fine, so use it instead of specifying the type
manually. Also define a platform device for the uart, as suggested by
David Daney.
Signed-off-by: default avatarPhil Sutter <n0-1@freewrt.org>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 84c2c562
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/serial_8250.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
...@@ -39,6 +40,8 @@ ...@@ -39,6 +40,8 @@
#define ETH0_RX_DMA_ADDR (DMA0_BASE_ADDR + 0 * DMA_CHAN_OFFSET) #define ETH0_RX_DMA_ADDR (DMA0_BASE_ADDR + 0 * DMA_CHAN_OFFSET)
#define ETH0_TX_DMA_ADDR (DMA0_BASE_ADDR + 1 * DMA_CHAN_OFFSET) #define ETH0_TX_DMA_ADDR (DMA0_BASE_ADDR + 1 * DMA_CHAN_OFFSET)
extern unsigned int idt_cpu_freq;
static struct resource korina_dev0_res[] = { static struct resource korina_dev0_res[] = {
{ {
.name = "korina_regs", .name = "korina_regs",
...@@ -214,12 +217,32 @@ static struct platform_device rb532_wdt = { ...@@ -214,12 +217,32 @@ static struct platform_device rb532_wdt = {
.num_resources = ARRAY_SIZE(rb532_wdt_res), .num_resources = ARRAY_SIZE(rb532_wdt_res),
}; };
static struct plat_serial8250_port rb532_uart_res[] = {
{
.membase = (char *)KSEG1ADDR(REGBASE + UART0BASE),
.irq = UART0_IRQ,
.regshift = 2,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF,
},
{
.flags = 0,
}
};
static struct platform_device rb532_uart = {
.name = "serial8250",
.id = PLAT8250_DEV_PLATFORM,
.dev.platform_data = &rb532_uart_res,
};
static struct platform_device *rb532_devs[] = { static struct platform_device *rb532_devs[] = {
&korina_dev0, &korina_dev0,
&nand_slot0, &nand_slot0,
&cf_slot0, &cf_slot0,
&rb532_led, &rb532_led,
&rb532_button, &rb532_button,
&rb532_uart,
&rb532_wdt &rb532_wdt
}; };
...@@ -294,6 +317,9 @@ static int __init plat_setup_devices(void) ...@@ -294,6 +317,9 @@ static int __init plat_setup_devices(void)
/* Initialise the NAND device */ /* Initialise the NAND device */
rb532_nand_setup(); rb532_nand_setup();
/* set the uart clock to the current cpu frequency */
rb532_uart_res[0].uartclk = idt_cpu_freq;
return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs)); return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs));
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
extern unsigned int idt_cpu_freq; extern unsigned int idt_cpu_freq;
static struct uart_port rb532_uart = { static struct uart_port rb532_uart = {
.type = PORT_16550A, .flags = UPF_BOOT_AUTOCONF,
.line = 0, .line = 0,
.irq = UART0_IRQ, .irq = UART0_IRQ,
.iotype = UPIO_MEM, .iotype = UPIO_MEM,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment