diff options
Diffstat (limited to 'arch/arm/mach-s3c2440/mach-anubis.c')
-rw-r--r-- | arch/arm/mach-s3c2440/mach-anubis.c | 70 |
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 | |||
302 | static 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 | |||
320 | static 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 | |||
339 | static 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 | |||
350 | static 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 | |||
356 | static 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 | ||
299 | static struct platform_device *anubis_devices[] __initdata = { | 368 | static 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 | ||
311 | static struct clk *anubis_clocks[] = { | 381 | static struct clk *anubis_clocks[] = { |