diff options
Diffstat (limited to 'arch/arm/mach-s3c2440/mach-anubis.c')
-rw-r--r-- | arch/arm/mach-s3c2440/mach-anubis.c | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/arch/arm/mach-s3c2440/mach-anubis.c b/arch/arm/mach-s3c2440/mach-anubis.c index 47258915a2f9..09af8b23500b 100644 --- a/arch/arm/mach-s3c2440/mach-anubis.c +++ b/arch/arm/mach-s3c2440/mach-anubis.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2440/mach-anubis.c | 1 | /* linux/arch/arm/mach-s3c2440/mach-anubis.c |
2 | * | 2 | * |
3 | * Copyright (c) 2003-2005 Simtec Electronics | 3 | * Copyright (c) 2003-2005,2008 Simtec Electronics |
4 | * http://armlinux.simtec.co.uk/ | 4 | * http://armlinux.simtec.co.uk/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
@@ -17,6 +17,8 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
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 | #include <linux/ata_platform.h> | ||
21 | #include <linux/i2c.h> | ||
20 | 22 | ||
21 | #include <linux/sm501.h> | 23 | #include <linux/sm501.h> |
22 | #include <linux/sm501-regs.h> | 24 | #include <linux/sm501-regs.h> |
@@ -241,14 +243,18 @@ static struct s3c2410_platform_nand anubis_nand_info = { | |||
241 | 243 | ||
242 | /* IDE channels */ | 244 | /* IDE channels */ |
243 | 245 | ||
246 | struct pata_platform_info anubis_ide_platdata = { | ||
247 | .ioport_shift = 5, | ||
248 | }; | ||
249 | |||
244 | static struct resource anubis_ide0_resource[] = { | 250 | static struct resource anubis_ide0_resource[] = { |
245 | { | 251 | { |
246 | .start = S3C2410_CS3, | 252 | .start = S3C2410_CS3, |
247 | .end = S3C2410_CS3 + (8*32) - 1, | 253 | .end = S3C2410_CS3 + (8*32) - 1, |
248 | .flags = IORESOURCE_MEM, | 254 | .flags = IORESOURCE_MEM, |
249 | }, { | 255 | }, { |
250 | .start = S3C2410_CS3 + (1<<26), | 256 | .start = S3C2410_CS3 + (1<<26) + (6*32), |
251 | .end = S3C2410_CS3 + (1<<26) + (8*32) - 1, | 257 | .end = S3C2410_CS3 + (1<<26) + (7*32) - 1, |
252 | .flags = IORESOURCE_MEM, | 258 | .flags = IORESOURCE_MEM, |
253 | }, { | 259 | }, { |
254 | .start = IRQ_IDE0, | 260 | .start = IRQ_IDE0, |
@@ -258,10 +264,14 @@ static struct resource anubis_ide0_resource[] = { | |||
258 | }; | 264 | }; |
259 | 265 | ||
260 | static struct platform_device anubis_device_ide0 = { | 266 | static struct platform_device anubis_device_ide0 = { |
261 | .name = "simtec-ide", | 267 | .name = "pata_platform", |
262 | .id = 0, | 268 | .id = 0, |
263 | .num_resources = ARRAY_SIZE(anubis_ide0_resource), | 269 | .num_resources = ARRAY_SIZE(anubis_ide0_resource), |
264 | .resource = anubis_ide0_resource, | 270 | .resource = anubis_ide0_resource, |
271 | .dev = { | ||
272 | .platform_data = &anubis_ide_platdata, | ||
273 | .coherent_dma_mask = ~0, | ||
274 | }, | ||
265 | }; | 275 | }; |
266 | 276 | ||
267 | static struct resource anubis_ide1_resource[] = { | 277 | static struct resource anubis_ide1_resource[] = { |
@@ -270,8 +280,8 @@ static struct resource anubis_ide1_resource[] = { | |||
270 | .end = S3C2410_CS4 + (8*32) - 1, | 280 | .end = S3C2410_CS4 + (8*32) - 1, |
271 | .flags = IORESOURCE_MEM, | 281 | .flags = IORESOURCE_MEM, |
272 | }, { | 282 | }, { |
273 | .start = S3C2410_CS4 + (1<<26), | 283 | .start = S3C2410_CS4 + (1<<26) + (6*32), |
274 | .end = S3C2410_CS4 + (1<<26) + (8*32) - 1, | 284 | .end = S3C2410_CS4 + (1<<26) + (7*32) - 1, |
275 | .flags = IORESOURCE_MEM, | 285 | .flags = IORESOURCE_MEM, |
276 | }, { | 286 | }, { |
277 | .start = IRQ_IDE0, | 287 | .start = IRQ_IDE0, |
@@ -280,12 +290,15 @@ static struct resource anubis_ide1_resource[] = { | |||
280 | }, | 290 | }, |
281 | }; | 291 | }; |
282 | 292 | ||
283 | |||
284 | static struct platform_device anubis_device_ide1 = { | 293 | static struct platform_device anubis_device_ide1 = { |
285 | .name = "simtec-ide", | 294 | .name = "pata_platform", |
286 | .id = 1, | 295 | .id = 1, |
287 | .num_resources = ARRAY_SIZE(anubis_ide1_resource), | 296 | .num_resources = ARRAY_SIZE(anubis_ide1_resource), |
288 | .resource = anubis_ide1_resource, | 297 | .resource = anubis_ide1_resource, |
298 | .dev = { | ||
299 | .platform_data = &anubis_ide_platdata, | ||
300 | .coherent_dma_mask = ~0, | ||
301 | }, | ||
289 | }; | 302 | }; |
290 | 303 | ||
291 | /* Asix AX88796 10/100 ethernet controller */ | 304 | /* Asix AX88796 10/100 ethernet controller */ |
@@ -409,6 +422,15 @@ static struct clk *anubis_clocks[] = { | |||
409 | &s3c24xx_uclk, | 422 | &s3c24xx_uclk, |
410 | }; | 423 | }; |
411 | 424 | ||
425 | /* I2C devices. */ | ||
426 | |||
427 | static struct i2c_board_info anubis_i2c_devs[] __initdata = { | ||
428 | { | ||
429 | I2C_BOARD_INFO("tps65011", 0x48), | ||
430 | .irq = IRQ_EINT20, | ||
431 | } | ||
432 | }; | ||
433 | |||
412 | static void __init anubis_map_io(void) | 434 | static void __init anubis_map_io(void) |
413 | { | 435 | { |
414 | /* initialise the clocks */ | 436 | /* initialise the clocks */ |
@@ -448,6 +470,9 @@ static void __init anubis_map_io(void) | |||
448 | static void __init anubis_init(void) | 470 | static void __init anubis_init(void) |
449 | { | 471 | { |
450 | platform_add_devices(anubis_devices, ARRAY_SIZE(anubis_devices)); | 472 | platform_add_devices(anubis_devices, ARRAY_SIZE(anubis_devices)); |
473 | |||
474 | i2c_register_board_info(0, anubis_i2c_devs, | ||
475 | ARRAY_SIZE(anubis_i2c_devs)); | ||
451 | } | 476 | } |
452 | 477 | ||
453 | 478 | ||