|
@@ -11,26 +11,89 @@
|
|
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/kernel.h>
|
|
|
|
+#include <linux/platform_device.h>
|
|
|
|
+#include <linux/smc91x.h>
|
|
|
|
|
|
#include <asm/mach-types.h>
|
|
#include <asm/mach-types.h>
|
|
#include <asm/mach/arch.h>
|
|
#include <asm/mach/arch.h>
|
|
#include <mach/addr-map.h>
|
|
#include <mach/addr-map.h>
|
|
#include <mach/mfp-pxa168.h>
|
|
#include <mach/mfp-pxa168.h>
|
|
#include <mach/pxa168.h>
|
|
#include <mach/pxa168.h>
|
|
|
|
+#include <mach/gpio.h>
|
|
|
|
|
|
#include "common.h"
|
|
#include "common.h"
|
|
|
|
|
|
static unsigned long common_pin_config[] __initdata = {
|
|
static unsigned long common_pin_config[] __initdata = {
|
|
|
|
+ /* Data Flash Interface */
|
|
|
|
+ GPIO0_DFI_D15,
|
|
|
|
+ GPIO1_DFI_D14,
|
|
|
|
+ GPIO2_DFI_D13,
|
|
|
|
+ GPIO3_DFI_D12,
|
|
|
|
+ GPIO4_DFI_D11,
|
|
|
|
+ GPIO5_DFI_D10,
|
|
|
|
+ GPIO6_DFI_D9,
|
|
|
|
+ GPIO7_DFI_D8,
|
|
|
|
+ GPIO8_DFI_D7,
|
|
|
|
+ GPIO9_DFI_D6,
|
|
|
|
+ GPIO10_DFI_D5,
|
|
|
|
+ GPIO11_DFI_D4,
|
|
|
|
+ GPIO12_DFI_D3,
|
|
|
|
+ GPIO13_DFI_D2,
|
|
|
|
+ GPIO14_DFI_D1,
|
|
|
|
+ GPIO15_DFI_D0,
|
|
|
|
+
|
|
|
|
+ /* Static Memory Controller */
|
|
|
|
+ GPIO18_SMC_nCS0,
|
|
|
|
+ GPIO34_SMC_nCS1,
|
|
|
|
+ GPIO23_SMC_nLUA,
|
|
|
|
+ GPIO25_SMC_nLLA,
|
|
|
|
+ GPIO28_SMC_RDY,
|
|
|
|
+ GPIO29_SMC_SCLK,
|
|
|
|
+ GPIO35_SMC_BE1,
|
|
|
|
+ GPIO36_SMC_BE2,
|
|
|
|
+ GPIO27_GPIO, /* Ethernet IRQ */
|
|
|
|
+
|
|
/* UART1 */
|
|
/* UART1 */
|
|
GPIO107_UART1_RXD,
|
|
GPIO107_UART1_RXD,
|
|
GPIO108_UART1_TXD,
|
|
GPIO108_UART1_TXD,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct smc91x_platdata smc91x_info = {
|
|
|
|
+ .flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct resource smc91x_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .start = SMC_CS1_PHYS_BASE + 0x300,
|
|
|
|
+ .end = SMC_CS1_PHYS_BASE + 0xfffff,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+ [1] = {
|
|
|
|
+ .start = gpio_to_irq(27),
|
|
|
|
+ .end = gpio_to_irq(27),
|
|
|
|
+ .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device smc91x_device = {
|
|
|
|
+ .name = "smc91x",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .dev = {
|
|
|
|
+ .platform_data = &smc91x_info,
|
|
|
|
+ },
|
|
|
|
+ .num_resources = ARRAY_SIZE(smc91x_resources),
|
|
|
|
+ .resource = smc91x_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
static void __init common_init(void)
|
|
static void __init common_init(void)
|
|
{
|
|
{
|
|
mfp_config(ARRAY_AND_SIZE(common_pin_config));
|
|
mfp_config(ARRAY_AND_SIZE(common_pin_config));
|
|
|
|
|
|
|
|
+ /* on-chip devices */
|
|
pxa168_add_uart(1);
|
|
pxa168_add_uart(1);
|
|
|
|
+
|
|
|
|
+ /* off-chip devices */
|
|
|
|
+ platform_device_register(&smc91x_device);
|
|
}
|
|
}
|
|
|
|
|
|
MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")
|
|
MACHINE_START(ASPENITE, "PXA168-based Aspenite Development Platform")
|