2 * arch/arm/mach-ks8695/board-dsm320.c
4 * DSM-320 D-Link Wireless Media Player, board support.
6 * Copyright 2008 Simtec Electronics
7 * Daniel Silverstone <dsilvers@simtec.co.uk>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
13 #include <linux/gpio.h>
14 #include <linux/kernel.h>
15 #include <linux/types.h>
16 #include <linux/interrupt.h>
17 #include <linux/init.h>
18 #include <linux/platform_device.h>
20 #include <linux/mtd/mtd.h>
21 #include <linux/mtd/map.h>
22 #include <linux/mtd/physmap.h>
23 #include <linux/mtd/partitions.h>
25 #include <asm/mach-types.h>
27 #include <asm/mach/arch.h>
28 #include <asm/mach/map.h>
29 #include <asm/mach/irq.h>
31 #include <mach/devices.h>
32 #include <mach/gpio-ks8695.h>
37 static int dsm320_pci_map_irq(const struct pci_dev
*dev
, u8 slot
, u8 pin
)
42 return KS8695_IRQ_EXTERN0
;
45 return KS8695_IRQ_EXTERN2
;
48 return KS8695_IRQ_EXTERN0
;
53 static struct ks8695_pci_cfg __initdata dsm320_pci
= {
54 .mode
= KS8695_MODE_MINIPCI
,
55 .map_irq
= dsm320_pci_map_irq
,
58 static void __init
dsm320_register_pci(void)
60 /* Initialise the GPIO lines for interrupt mode */
62 ks8695_gpio_interrupt(KS8695_GPIO_0
, IRQ_TYPE_LEVEL_LOW
);
64 ks8695_gpio_interrupt(KS8695_GPIO_2
, IRQ_TYPE_LEVEL_LOW
);
66 ks8695_init_pci(&dsm320_pci
);
70 static inline void __init
dsm320_register_pci(void) { }
73 static struct physmap_flash_data dsm320_nor_pdata
= {
78 static struct resource dsm320_nor_resource
[] = {
80 .start
= SZ_32M
, /* We expect the bootloader to map
83 .end
= SZ_32M
+ SZ_4M
- 1,
84 .flags
= IORESOURCE_MEM
,
88 static struct platform_device dsm320_device_nor
= {
89 .name
= "physmap-flash",
91 .num_resources
= ARRAY_SIZE(dsm320_nor_resource
),
92 .resource
= dsm320_nor_resource
,
94 .platform_data
= &dsm320_nor_pdata
,
98 void __init
dsm320_register_nor(void)
102 ret
= platform_device_register(&dsm320_device_nor
);
104 printk(KERN_ERR
"failed to register physmap-flash device\n");
107 static void __init
dsm320_init(void)
109 /* GPIO registration */
110 ks8695_register_gpios();
112 /* PCI registration */
113 dsm320_register_pci();
116 ks8695_add_device_lan(); /* eth0 = LAN */
119 dsm320_register_nor();
122 MACHINE_START(DSM320
, "D-Link DSM-320 Wireless Media Player")
123 /* Maintainer: Simtec Electronics. */
124 .atag_offset
= 0x100,
125 .map_io
= ks8695_map_io
,
126 .init_irq
= ks8695_init_irq
,
127 .init_machine
= dsm320_init
,
128 .init_time
= ks8695_timer_init
,
129 .restart
= ks8695_restart
,