1 /* linux/arch/arm/mach-vt8500/devices-wm8505.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/wm8505_regs.h>
19 #include <mach/wm8505_irqs.h>
20 #include <mach/i8042.h>
23 void __init
wm8505_set_resources(void)
25 struct resource tmp
[3];
27 tmp
[0] = wmt_mmio_res(WM8505_GOVR_BASE
, SZ_512
);
28 wmt_res_add(&vt8500_device_wm8505_fb
, tmp
, 1);
30 tmp
[0] = wmt_mmio_res(WM8505_UART0_BASE
, 0x1040);
31 tmp
[1] = wmt_irq_res(IRQ_UART0
);
32 wmt_res_add(&vt8500_device_uart0
, tmp
, 2);
34 tmp
[0] = wmt_mmio_res(WM8505_UART1_BASE
, 0x1040);
35 tmp
[1] = wmt_irq_res(IRQ_UART1
);
36 wmt_res_add(&vt8500_device_uart1
, tmp
, 2);
38 tmp
[0] = wmt_mmio_res(WM8505_UART2_BASE
, 0x1040);
39 tmp
[1] = wmt_irq_res(IRQ_UART2
);
40 wmt_res_add(&vt8500_device_uart2
, tmp
, 2);
42 tmp
[0] = wmt_mmio_res(WM8505_UART3_BASE
, 0x1040);
43 tmp
[1] = wmt_irq_res(IRQ_UART3
);
44 wmt_res_add(&vt8500_device_uart3
, tmp
, 2);
46 tmp
[0] = wmt_mmio_res(WM8505_UART4_BASE
, 0x1040);
47 tmp
[1] = wmt_irq_res(IRQ_UART4
);
48 wmt_res_add(&vt8500_device_uart4
, tmp
, 2);
50 tmp
[0] = wmt_mmio_res(WM8505_UART5_BASE
, 0x1040);
51 tmp
[1] = wmt_irq_res(IRQ_UART5
);
52 wmt_res_add(&vt8500_device_uart5
, tmp
, 2);
54 tmp
[0] = wmt_mmio_res(WM8505_EHCI_BASE
, SZ_512
);
55 tmp
[1] = wmt_irq_res(IRQ_EHCI
);
56 wmt_res_add(&vt8500_device_ehci
, tmp
, 2);
58 tmp
[0] = wmt_mmio_res(WM8505_GEGEA_BASE
, SZ_256
);
59 wmt_res_add(&vt8500_device_ge_rops
, tmp
, 1);
61 tmp
[0] = wmt_mmio_res(WM8505_PWM_BASE
, 0x44);
62 wmt_res_add(&vt8500_device_pwm
, tmp
, 1);
64 tmp
[0] = wmt_mmio_res(WM8505_RTC_BASE
, 0x2c);
65 tmp
[1] = wmt_irq_res(IRQ_RTC
);
66 tmp
[2] = wmt_irq_res(IRQ_RTCSM
);
67 wmt_res_add(&vt8500_device_rtc
, tmp
, 3);
70 static void __init
wm8505_set_externs(void)
72 /* Non-resource-aware stuff */
73 wmt_ic_base
= WM8505_IC_BASE
;
74 wmt_sic_base
= WM8505_SIC_BASE
;
75 wmt_gpio_base
= WM8505_GPIO_BASE
;
76 wmt_pmc_base
= WM8505_PMC_BASE
;
77 wmt_i8042_base
= WM8505_PS2_BASE
;
79 wmt_nr_irqs
= WM8505_NR_IRQS
;
80 wmt_timer_irq
= IRQ_PMCOS0
;
81 wmt_gpio_ext_irq
[0] = IRQ_EXT0
;
82 wmt_gpio_ext_irq
[1] = IRQ_EXT1
;
83 wmt_gpio_ext_irq
[2] = IRQ_EXT2
;
84 wmt_gpio_ext_irq
[3] = IRQ_EXT3
;
85 wmt_gpio_ext_irq
[4] = IRQ_EXT4
;
86 wmt_gpio_ext_irq
[5] = IRQ_EXT5
;
87 wmt_gpio_ext_irq
[6] = IRQ_EXT6
;
88 wmt_gpio_ext_irq
[7] = IRQ_EXT7
;
89 wmt_i8042_kbd_irq
= IRQ_PS2KBD
;
90 wmt_i8042_aux_irq
= IRQ_PS2MOUSE
;
93 void __init
wm8505_map_io(void)
95 iotable_init(wmt_io_desc
, ARRAY_SIZE(wmt_io_desc
));
97 /* Should be done before interrupts and timers are initialized */