1 /* linux/arch/arm/mach-vt8500/devices-vt8500.c
3 * Copyright (C) 2010 Alexey Charkov <alchark@gmail.com>
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
16 #include <linux/platform_device.h>
18 #include <mach/vt8500_regs.h>
19 #include <mach/vt8500_irqs.h>
20 #include <mach/i8042.h>
23 void __init
vt8500_set_resources(void)
25 struct resource tmp
[3];
27 tmp
[0] = wmt_mmio_res(VT8500_LCDC_BASE
, SZ_1K
);
28 tmp
[1] = wmt_irq_res(IRQ_LCDC
);
29 wmt_res_add(&vt8500_device_lcdc
, tmp
, 2);
31 tmp
[0] = wmt_mmio_res(VT8500_UART0_BASE
, 0x1040);
32 tmp
[1] = wmt_irq_res(IRQ_UART0
);
33 wmt_res_add(&vt8500_device_uart0
, tmp
, 2);
35 tmp
[0] = wmt_mmio_res(VT8500_UART1_BASE
, 0x1040);
36 tmp
[1] = wmt_irq_res(IRQ_UART1
);
37 wmt_res_add(&vt8500_device_uart1
, tmp
, 2);
39 tmp
[0] = wmt_mmio_res(VT8500_UART2_BASE
, 0x1040);
40 tmp
[1] = wmt_irq_res(IRQ_UART2
);
41 wmt_res_add(&vt8500_device_uart2
, tmp
, 2);
43 tmp
[0] = wmt_mmio_res(VT8500_UART3_BASE
, 0x1040);
44 tmp
[1] = wmt_irq_res(IRQ_UART3
);
45 wmt_res_add(&vt8500_device_uart3
, tmp
, 2);
47 tmp
[0] = wmt_mmio_res(VT8500_EHCI_BASE
, SZ_512
);
48 tmp
[1] = wmt_irq_res(IRQ_EHCI
);
49 wmt_res_add(&vt8500_device_ehci
, tmp
, 2);
51 tmp
[0] = wmt_mmio_res(VT8500_GEGEA_BASE
, SZ_256
);
52 wmt_res_add(&vt8500_device_ge_rops
, tmp
, 1);
54 tmp
[0] = wmt_mmio_res(VT8500_PWM_BASE
, 0x44);
55 wmt_res_add(&vt8500_device_pwm
, tmp
, 1);
57 tmp
[0] = wmt_mmio_res(VT8500_RTC_BASE
, 0x2c);
58 tmp
[1] = wmt_irq_res(IRQ_RTC
);
59 tmp
[2] = wmt_irq_res(IRQ_RTCSM
);
60 wmt_res_add(&vt8500_device_rtc
, tmp
, 3);
63 static void __init
vt8500_set_externs(void)
65 /* Non-resource-aware stuff */
66 wmt_ic_base
= VT8500_IC_BASE
;
67 wmt_gpio_base
= VT8500_GPIO_BASE
;
68 wmt_pmc_base
= VT8500_PMC_BASE
;
69 wmt_i8042_base
= VT8500_PS2_BASE
;
71 wmt_nr_irqs
= VT8500_NR_IRQS
;
72 wmt_timer_irq
= IRQ_PMCOS0
;
73 wmt_gpio_ext_irq
[0] = IRQ_EXT0
;
74 wmt_gpio_ext_irq
[1] = IRQ_EXT1
;
75 wmt_gpio_ext_irq
[2] = IRQ_EXT2
;
76 wmt_gpio_ext_irq
[3] = IRQ_EXT3
;
77 wmt_gpio_ext_irq
[4] = IRQ_EXT4
;
78 wmt_gpio_ext_irq
[5] = IRQ_EXT5
;
79 wmt_gpio_ext_irq
[6] = IRQ_EXT6
;
80 wmt_gpio_ext_irq
[7] = IRQ_EXT7
;
81 wmt_i8042_kbd_irq
= IRQ_PS2KBD
;
82 wmt_i8042_aux_irq
= IRQ_PS2MOUSE
;
85 void __init
vt8500_map_io(void)
87 iotable_init(wmt_io_desc
, ARRAY_SIZE(wmt_io_desc
));
89 /* Should be done before interrupts and timers are initialized */