Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 137133
b: refs/heads/master
c: 17198f2
h: refs/heads/master
i:
  137131: 6dc6821
v: v3
  • Loading branch information
wanzongshun authored and Russell King committed Feb 10, 2009
1 parent 4eb7fb3 commit fb19bed
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 71 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b74788d8c118a48585ad5342560e0aea6ed0ccd4
refs/heads/master: 17198f2d681d34b3376f3a55b2837e56062c2439
17 changes: 10 additions & 7 deletions trunk/arch/arm/mach-w90x900/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ extern void w90p910_init_io(struct map_desc *mach_desc, int size);
extern void w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no);
extern void w90p910_init_clocks(int xtal);
extern void w90p910_map_io(struct map_desc *mach_desc, int size);
extern struct platform_device w90p910_serial_device;
extern struct sys_timer w90x900_timer;

#define W90X900_RES(name) \
Expand All @@ -67,11 +68,13 @@ struct platform_device w90x900_##devname = { \
.resource = w90x900_##regname##_resource, \
}

#define W90X900_UARTCFG(port, flag, uc, ulc, ufc) \
{ \
.hwport = port, \
.flags = flag, \
.ucon = uc, \
.ulcon = ulc, \
.ufcon = ufc, \
#define W90X900_8250PORT(name) \
{ \
.membase = name##_BA, \
.mapbase = name##_PA, \
.irq = IRQ_##name, \
.uartclk = 11313600, \
.regshift = 2, \
.iotype = UPIO_MEM, \
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, \
}
10 changes: 1 addition & 9 deletions trunk/arch/arm/mach-w90x900/mach-w90p910evb.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,16 @@
static struct map_desc w90p910_iodesc[] __initdata = {
};

static struct w90x900_uartcfg w90p910_uartcfgs[] = {
W90X900_UARTCFG(0, 0, 0, 0, 0),
W90X900_UARTCFG(1, 0, 0, 0, 0),
W90X900_UARTCFG(2, 0, 0, 0, 0),
W90X900_UARTCFG(3, 0, 0, 0, 0),
W90X900_UARTCFG(4, 0, 0, 0, 0),
};

/*Here should be your evb resourse,such as LCD*/

static struct platform_device *w90p910evb_dev[] __initdata = {
&w90p910_serial_device,
};

static void __init w90p910evb_map_io(void)
{
w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc));
w90p910_init_clocks(0);
w90p910_init_uarts(w90p910_uartcfgs, ARRAY_SIZE(w90p910_uartcfgs));
}

static void __init w90p910evb_init(void)
Expand Down
67 changes: 13 additions & 54 deletions trunk/arch/arm/mach-w90x900/w90p910.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/serial_8250.h>

#include <asm/mach/arch.h>
#include <asm/mach/map.h>
Expand All @@ -36,12 +37,6 @@

#include "cpu.h"

/*W90P910 has five uarts*/

#define MAX_UART_COUNT 5
static int uart_count;
static struct platform_device *uart_devs[MAX_UART_COUNT-1];

/* Initial IO mappings */

static struct map_desc w90p910_iodesc[] __initdata = {
Expand All @@ -53,48 +48,19 @@ static struct map_desc w90p910_iodesc[] __initdata = {
/*IODESC_ENT(LCD),*/
};

/*Init the dev resource*/

static W90X900_RES(UART0);
static W90X900_RES(UART1);
static W90X900_RES(UART2);
static W90X900_RES(UART3);
static W90X900_RES(UART4);
static W90X900_DEVICE(uart0, UART0, 0, "w90x900-uart");
static W90X900_DEVICE(uart1, UART1, 1, "w90x900-uart");
static W90X900_DEVICE(uart2, UART2, 2, "w90x900-uart");
static W90X900_DEVICE(uart3, UART3, 3, "w90x900-uart");
static W90X900_DEVICE(uart4, UART4, 4, "w90x900-uart");

static struct platform_device *uart_devices[] __initdata = {
&w90x900_uart0,
&w90x900_uart1,
&w90x900_uart2,
&w90x900_uart3,
&w90x900_uart4
};
/* Initial serial platform data */

/*Init W90P910 uart device*/
struct plat_serial8250_port w90p910_uart_data[] = {
W90X900_8250PORT(UART0),
};

void __init w90p910_init_uarts(struct w90x900_uartcfg *cfg, int no)
{
struct platform_device *platdev;
int uart, uartdev;

/*By min() to judge count of uart be used indeed*/

uartdev = ARRAY_SIZE(uart_devices);
no = min(uartdev, no);

for (uart = 0; uart < no; uart++, cfg++) {
if (cfg->hwport != uart)
printk(KERN_ERR "w90x900_uartcfg[%d] error\n", uart);
platdev = uart_devices[cfg->hwport];
uart_devs[uart] = platdev;
platdev->dev.platform_data = cfg;
}
uart_count = uart;
}
struct platform_device w90p910_serial_device = {
.name = "serial8250",
.id = PLAT8250_DEV_PLATFORM,
.dev = {
.platform_data = w90p910_uart_data,
},
};

/*Init W90P910 evb io*/

Expand Down Expand Up @@ -122,13 +88,6 @@ static int __init w90p910_init_cpu(void)

static int __init w90x900_arch_init(void)
{
int ret;

ret = w90p910_init_cpu();
if (ret != 0)
return ret;

return platform_add_devices(uart_devs, uart_count);

return w90p910_init_cpu();
}
arch_initcall(w90x900_arch_init);

0 comments on commit fb19bed

Please sign in to comment.