aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c2440/mach-anubis.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-s3c2440/mach-anubis.c')
-rw-r--r--arch/arm/mach-s3c2440/mach-anubis.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2440/mach-anubis.c b/arch/arm/mach-s3c2440/mach-anubis.c
index 64456f9a0f6d..53675aa516f3 100644
--- a/arch/arm/mach-s3c2440/mach-anubis.c
+++ b/arch/arm/mach-s3c2440/mach-anubis.c
@@ -18,6 +18,9 @@
18#include <linux/serial_core.h> 18#include <linux/serial_core.h>
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20 20
21#include <linux/sm501.h>
22#include <linux/sm501-regs.h>
23
21#include <asm/mach/arch.h> 24#include <asm/mach/arch.h>
22#include <asm/mach/map.h> 25#include <asm/mach/map.h>
23#include <asm/mach/irq.h> 26#include <asm/mach/irq.h>
@@ -294,6 +297,72 @@ static struct platform_device anubis_device_asix = {
294 } 297 }
295}; 298};
296 299
300/* SM501 */
301
302static struct resource anubis_sm501_resource[] = {
303 [0] = {
304 .start = S3C2410_CS2,
305 .end = S3C2410_CS2 + SZ_8M,
306 .flags = IORESOURCE_MEM,
307 },
308 [1] = {
309 .start = S3C2410_CS2 + SZ_64M - SZ_2M,
310 .end = S3C2410_CS2 + SZ_64M - 1,
311 .flags = IORESOURCE_MEM,
312 },
313 [2] = {
314 .start = IRQ_EINT0,
315 .end = IRQ_EINT0,
316 .flags = IORESOURCE_IRQ,
317 },
318};
319
320static struct sm501_initdata anubis_sm501_initdata = {
321 .gpio_high = {
322 .set = 0x3F000000, /* 24bit panel */
323 .mask = 0x0,
324 },
325 .misc_timing = {
326 .set = 0x010100, /* SDRAM timing */
327 .mask = 0x1F1F00,
328 },
329 .misc_control = {
330 .set = SM501_MISC_PNL_24BIT,
331 .mask = 0,
332 },
333
334 /* set the SDRAM and bus clocks */
335 .mclk = 72 * MHZ,
336 .m1xclk = 144 * MHZ,
337};
338
339static struct sm501_platdata_gpio_i2c anubis_sm501_gpio_i2c[] = {
340 [0] = {
341 .pin_scl = 44,
342 .pin_sda = 45,
343 },
344 [1] = {
345 .pin_scl = 40,
346 .pin_sda = 41,
347 },
348};
349
350static struct sm501_platdata anubis_sm501_platdata = {
351 .init = &anubis_sm501_initdata,
352 .gpio_i2c = anubis_sm501_gpio_i2c,
353 .gpio_i2c_nr = ARRAY_SIZE(anubis_sm501_gpio_i2c),
354};
355
356static struct platform_device anubis_device_sm501 = {
357 .name = "sm501",
358 .id = 0,
359 .num_resources = ARRAY_SIZE(anubis_sm501_resource),
360 .resource = anubis_sm501_resource,
361 .dev = {
362 .platform_data = &anubis_sm501_platdata,
363 },
364};
365
297/* Standard Anubis devices */ 366/* Standard Anubis devices */
298 367
299static struct platform_device *anubis_devices[] __initdata = { 368static struct platform_device *anubis_devices[] __initdata = {
@@ -306,6 +375,7 @@ static struct platform_device *anubis_devices[] __initdata = {
306 &anubis_device_ide0, 375 &anubis_device_ide0,
307 &anubis_device_ide1, 376 &anubis_device_ide1,
308 &anubis_device_asix, 377 &anubis_device_asix,
378 &anubis_device_sm501,
309}; 379};
310 380
311static struct clk *anubis_clocks[] = { 381static struct clk *anubis_clocks[] = {