1 // SPDX-License-Identifier: GPL-2.0-only
3 * linux/arch/arm/mach-pxa/mp900.c
5 * Support for the NEC MobilePro900/C platform
7 * Based on mach-pxa/gumstix.c
9 * 2007, 2008 Kristoffer Ericson <kristoffer.ericson@gmail.com>
10 * 2007, 2008 Michael Petchkovsky <mkpetch@internode.on.net>
13 #include <linux/init.h>
14 #include <linux/device.h>
15 #include <linux/platform_device.h>
16 #include <linux/types.h>
17 #include <linux/usb/isp116x.h>
19 #include <asm/mach-types.h>
20 #include <asm/mach/arch.h>
25 static void isp116x_pfm_delay(struct device
*dev
, int delay
)
28 /* 400MHz PXA2 = 2.5ns / instruction */
32 /* 4 Instructions = 4 x 2.5ns = 10ns */
33 __asm__
volatile ("0:\n"
41 static struct isp116x_platform_data isp116x_pfm_data
= {
42 .remote_wakeup_enable
= 1,
43 .delay
= isp116x_pfm_delay
,
46 static struct resource isp116x_pfm_resources
[] = {
49 .end
= 0x0d000000 + 1,
50 .flags
= IORESOURCE_MEM
,
53 .start
= 0x0d000000 + 4,
54 .end
= 0x0d000000 + 5,
55 .flags
= IORESOURCE_MEM
,
60 .flags
= IORESOURCE_IRQ
,
64 static struct platform_device mp900c_dummy_device
= {
65 .name
= "mp900c_dummy",
69 static struct platform_device mp900c_usb
= {
70 .name
= "isp116x-hcd",
71 .num_resources
= ARRAY_SIZE(isp116x_pfm_resources
),
72 .resource
= isp116x_pfm_resources
,
73 .dev
.platform_data
= &isp116x_pfm_data
,
76 static struct platform_device
*devices
[] __initdata
= {
81 static void __init
mp900c_init(void)
83 printk(KERN_INFO
"MobilePro 900/C machine init\n");
84 pxa_set_ffuart_info(NULL
);
85 pxa_set_btuart_info(NULL
);
86 pxa_set_stuart_info(NULL
);
87 platform_add_devices(devices
, ARRAY_SIZE(devices
));
90 /* Maintainer - Michael Petchkovsky <mkpetch@internode.on.net> */
91 MACHINE_START(NEC_MP900
, "MobilePro900/C")
92 .atag_offset
= 0x220100,
93 .init_time
= pxa_timer_init
,
94 .map_io
= pxa25x_map_io
,
95 .nr_irqs
= PXA_NR_IRQS
,
96 .init_irq
= pxa25x_init_irq
,
97 .handle_irq
= pxa25x_handle_irq
,
98 .init_machine
= mp900c_init
,
99 .restart
= pxa_restart
,