diff options
Diffstat (limited to 'arch/mips/mti-malta')
-rw-r--r-- | arch/mips/mti-malta/Makefile | 5 | ||||
-rw-r--r-- | arch/mips/mti-malta/malta-mtd.c | 63 | ||||
-rw-r--r-- | arch/mips/mti-malta/malta-platform.c | 107 |
3 files changed, 97 insertions, 78 deletions
diff --git a/arch/mips/mti-malta/Makefile b/arch/mips/mti-malta/Makefile index cef2db8d2225..32e847808df1 100644 --- a/arch/mips/mti-malta/Makefile +++ b/arch/mips/mti-malta/Makefile | |||
@@ -7,9 +7,8 @@ | |||
7 | # | 7 | # |
8 | obj-y := malta-amon.o malta-cmdline.o \ | 8 | obj-y := malta-amon.o malta-cmdline.o \ |
9 | malta-display.o malta-init.o malta-int.o \ | 9 | malta-display.o malta-init.o malta-int.o \ |
10 | malta-memory.o malta-mtd.o \ | 10 | malta-memory.o malta-platform.o \ |
11 | malta-platform.o malta-reset.o \ | 11 | malta-reset.o malta-setup.o malta-time.o |
12 | malta-setup.o malta-time.o | ||
13 | 12 | ||
14 | obj-$(CONFIG_EARLY_PRINTK) += malta-console.o | 13 | obj-$(CONFIG_EARLY_PRINTK) += malta-console.o |
15 | obj-$(CONFIG_PCI) += malta-pci.o | 14 | obj-$(CONFIG_PCI) += malta-pci.o |
diff --git a/arch/mips/mti-malta/malta-mtd.c b/arch/mips/mti-malta/malta-mtd.c deleted file mode 100644 index 8ad9bdf25dce..000000000000 --- a/arch/mips/mti-malta/malta-mtd.c +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2006 MIPS Technologies, Inc. | ||
7 | * written by Ralf Baechle <ralf@linux-mips.org> | ||
8 | */ | ||
9 | |||
10 | #include <linux/init.h> | ||
11 | #include <linux/platform_device.h> | ||
12 | #include <linux/mtd/partitions.h> | ||
13 | #include <linux/mtd/physmap.h> | ||
14 | #include <mtd/mtd-abi.h> | ||
15 | |||
16 | static struct mtd_partition malta_mtd_partitions[] = { | ||
17 | { | ||
18 | .name = "YAMON", | ||
19 | .offset = 0x0, | ||
20 | .size = 0x100000, | ||
21 | .mask_flags = MTD_WRITEABLE | ||
22 | }, { | ||
23 | .name = "User FS", | ||
24 | .offset = 0x100000, | ||
25 | .size = 0x2e0000 | ||
26 | }, { | ||
27 | .name = "Board Config", | ||
28 | .offset = 0x3e0000, | ||
29 | .size = 0x020000, | ||
30 | .mask_flags = MTD_WRITEABLE | ||
31 | } | ||
32 | }; | ||
33 | |||
34 | static struct physmap_flash_data malta_flash_data = { | ||
35 | .width = 4, | ||
36 | .nr_parts = ARRAY_SIZE(malta_mtd_partitions), | ||
37 | .parts = malta_mtd_partitions | ||
38 | }; | ||
39 | |||
40 | static struct resource malta_flash_resource = { | ||
41 | .start = 0x1e000000, | ||
42 | .end = 0x1e3fffff, | ||
43 | .flags = IORESOURCE_MEM | ||
44 | }; | ||
45 | |||
46 | static struct platform_device malta_flash = { | ||
47 | .name = "physmap-flash", | ||
48 | .id = 0, | ||
49 | .dev = { | ||
50 | .platform_data = &malta_flash_data, | ||
51 | }, | ||
52 | .num_resources = 1, | ||
53 | .resource = &malta_flash_resource, | ||
54 | }; | ||
55 | |||
56 | static int __init malta_mtd_init(void) | ||
57 | { | ||
58 | platform_device_register(&malta_flash); | ||
59 | |||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | module_init(malta_mtd_init) | ||
diff --git a/arch/mips/mti-malta/malta-platform.c b/arch/mips/mti-malta/malta-platform.c index 83b9bab3cd3f..72e32a7715be 100644 --- a/arch/mips/mti-malta/malta-platform.c +++ b/arch/mips/mti-malta/malta-platform.c | |||
@@ -3,10 +3,14 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 2007 MIPS Technologies, Inc. | 6 | * Copyright (C) 2006, 07 MIPS Technologies, Inc. |
7 | * written by Ralf Baechle (ralf@linux-mips.org) | 7 | * written by Ralf Baechle (ralf@linux-mips.org) |
8 | * written by Ralf Baechle <ralf@linux-mips.org> | ||
8 | * | 9 | * |
9 | * Probe driver for the Malta's UART ports: | 10 | * Copyright (C) 2008 Wind River Systems, Inc. |
11 | * updated by Tiejun Chen <tiejun.chen@windriver.com> | ||
12 | * | ||
13 | * 1. Probe driver for the Malta's UART ports: | ||
10 | * | 14 | * |
11 | * o 2 ports in the SMC SuperIO | 15 | * o 2 ports in the SMC SuperIO |
12 | * o 1 port in the CBUS UART, a discrete 16550 which normally is only used | 16 | * o 1 port in the CBUS UART, a discrete 16550 which normally is only used |
@@ -14,10 +18,17 @@ | |||
14 | * | 18 | * |
15 | * We don't use 8250_platform.c on Malta as it would result in the CBUS | 19 | * We don't use 8250_platform.c on Malta as it would result in the CBUS |
16 | * UART becoming ttyS0. | 20 | * UART becoming ttyS0. |
21 | * | ||
22 | * 2. Register RTC-CMOS platform device on Malta. | ||
17 | */ | 23 | */ |
18 | #include <linux/module.h> | ||
19 | #include <linux/init.h> | 24 | #include <linux/init.h> |
20 | #include <linux/serial_8250.h> | 25 | #include <linux/serial_8250.h> |
26 | #include <linux/mc146818rtc.h> | ||
27 | #include <linux/module.h> | ||
28 | #include <linux/mtd/partitions.h> | ||
29 | #include <linux/mtd/physmap.h> | ||
30 | #include <linux/platform_device.h> | ||
31 | #include <mtd/mtd-abi.h> | ||
21 | 32 | ||
22 | #define SMC_PORT(base, int) \ | 33 | #define SMC_PORT(base, int) \ |
23 | { \ | 34 | { \ |
@@ -45,21 +56,93 @@ static struct plat_serial8250_port uart8250_data[] = { | |||
45 | { }, | 56 | { }, |
46 | }; | 57 | }; |
47 | 58 | ||
48 | static struct platform_device uart8250_device = { | 59 | static struct platform_device malta_uart8250_device = { |
49 | .name = "serial8250", | 60 | .name = "serial8250", |
50 | .id = PLAT8250_DEV_PLATFORM2, | 61 | .id = PLAT8250_DEV_PLATFORM, |
51 | .dev = { | 62 | .dev = { |
52 | .platform_data = uart8250_data, | 63 | .platform_data = uart8250_data, |
53 | }, | 64 | }, |
54 | }; | 65 | }; |
55 | 66 | ||
56 | static int __init uart8250_init(void) | 67 | struct resource malta_rtc_resources[] = { |
68 | { | ||
69 | .start = RTC_PORT(0), | ||
70 | .end = RTC_PORT(7), | ||
71 | .flags = IORESOURCE_IO, | ||
72 | }, { | ||
73 | .start = RTC_IRQ, | ||
74 | .end = RTC_IRQ, | ||
75 | .flags = IORESOURCE_IRQ, | ||
76 | } | ||
77 | }; | ||
78 | |||
79 | static struct platform_device malta_rtc_device = { | ||
80 | .name = "rtc_cmos", | ||
81 | .id = -1, | ||
82 | .resource = malta_rtc_resources, | ||
83 | .num_resources = ARRAY_SIZE(malta_rtc_resources), | ||
84 | }; | ||
85 | |||
86 | static struct mtd_partition malta_mtd_partitions[] = { | ||
87 | { | ||
88 | .name = "YAMON", | ||
89 | .offset = 0x0, | ||
90 | .size = 0x100000, | ||
91 | .mask_flags = MTD_WRITEABLE | ||
92 | }, { | ||
93 | .name = "User FS", | ||
94 | .offset = 0x100000, | ||
95 | .size = 0x2e0000 | ||
96 | }, { | ||
97 | .name = "Board Config", | ||
98 | .offset = 0x3e0000, | ||
99 | .size = 0x020000, | ||
100 | .mask_flags = MTD_WRITEABLE | ||
101 | } | ||
102 | }; | ||
103 | |||
104 | static struct physmap_flash_data malta_flash_data = { | ||
105 | .width = 4, | ||
106 | .nr_parts = ARRAY_SIZE(malta_mtd_partitions), | ||
107 | .parts = malta_mtd_partitions | ||
108 | }; | ||
109 | |||
110 | static struct resource malta_flash_resource = { | ||
111 | .start = 0x1e000000, | ||
112 | .end = 0x1e3fffff, | ||
113 | .flags = IORESOURCE_MEM | ||
114 | }; | ||
115 | |||
116 | static struct platform_device malta_flash_device = { | ||
117 | .name = "physmap-flash", | ||
118 | .id = 0, | ||
119 | .dev = { | ||
120 | .platform_data = &malta_flash_data, | ||
121 | }, | ||
122 | .num_resources = 1, | ||
123 | .resource = &malta_flash_resource, | ||
124 | }; | ||
125 | |||
126 | static struct platform_device *malta_devices[] __initdata = { | ||
127 | &malta_uart8250_device, | ||
128 | &malta_rtc_device, | ||
129 | &malta_flash_device, | ||
130 | }; | ||
131 | |||
132 | static int __init malta_add_devices(void) | ||
57 | { | 133 | { |
58 | return platform_device_register(&uart8250_device); | 134 | int err; |
59 | } | ||
60 | 135 | ||
61 | module_init(uart8250_init); | 136 | err = platform_add_devices(malta_devices, ARRAY_SIZE(malta_devices)); |
137 | if (err) | ||
138 | return err; | ||
139 | |||
140 | /* | ||
141 | * Set RTC to BCD mode to support current alarm code. | ||
142 | */ | ||
143 | CMOS_WRITE(CMOS_READ(RTC_CONTROL) & ~RTC_DM_BINARY, RTC_CONTROL); | ||
144 | |||
145 | return 0; | ||
146 | } | ||
62 | 147 | ||
63 | MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>"); | 148 | device_initcall(malta_add_devices); |
64 | MODULE_LICENSE("GPL"); | ||
65 | MODULE_DESCRIPTION("8250 UART probe driver for the Malta CBUS UART"); | ||