Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/boards/mach-lboxre2/setup.c
15126 views
1
/*
2
* linux/arch/sh/boards/lbox/setup.c
3
*
4
* Copyright (C) 2007 Nobuhiro Iwamatsu
5
*
6
* NTT COMWARE L-BOX RE2 Support
7
*
8
* This file is subject to the terms and conditions of the GNU General Public
9
* License. See the file "COPYING" in the main directory of this archive
10
* for more details.
11
*
12
*/
13
14
#include <linux/init.h>
15
#include <linux/platform_device.h>
16
#include <linux/ata_platform.h>
17
#include <asm/machvec.h>
18
#include <asm/addrspace.h>
19
#include <mach/lboxre2.h>
20
#include <asm/io.h>
21
22
static struct resource cf_ide_resources[] = {
23
[0] = {
24
.start = 0x1f0,
25
.end = 0x1f0 + 8 ,
26
.flags = IORESOURCE_IO,
27
},
28
[1] = {
29
.start = 0x1f0 + 0x206,
30
.end = 0x1f0 +8 + 0x206 + 8,
31
.flags = IORESOURCE_IO,
32
},
33
[2] = {
34
.start = IRQ_CF0,
35
.flags = IORESOURCE_IRQ,
36
},
37
};
38
39
static struct platform_device cf_ide_device = {
40
.name = "pata_platform",
41
.id = -1,
42
.num_resources = ARRAY_SIZE(cf_ide_resources),
43
.resource = cf_ide_resources,
44
};
45
46
static struct platform_device *lboxre2_devices[] __initdata = {
47
&cf_ide_device,
48
};
49
50
static int __init lboxre2_devices_setup(void)
51
{
52
u32 cf0_io_base; /* Boot CF base address */
53
pgprot_t prot;
54
unsigned long paddrbase, psize;
55
56
/* open I/O area window */
57
paddrbase = virt_to_phys((void*)PA_AREA5_IO);
58
psize = PAGE_SIZE;
59
prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16);
60
cf0_io_base = (u32)ioremap_prot(paddrbase, psize, pgprot_val(prot));
61
if (!cf0_io_base) {
62
printk(KERN_ERR "%s : can't open CF I/O window!\n" , __func__ );
63
return -ENOMEM;
64
}
65
66
cf_ide_resources[0].start += cf0_io_base ;
67
cf_ide_resources[0].end += cf0_io_base ;
68
cf_ide_resources[1].start += cf0_io_base ;
69
cf_ide_resources[1].end += cf0_io_base ;
70
71
return platform_add_devices(lboxre2_devices,
72
ARRAY_SIZE(lboxre2_devices));
73
74
}
75
device_initcall(lboxre2_devices_setup);
76
77
/*
78
* The Machine Vector
79
*/
80
static struct sh_machine_vector mv_lboxre2 __initmv = {
81
.mv_name = "L-BOX RE2",
82
.mv_nr_irqs = 72,
83
.mv_init_irq = init_lboxre2_IRQ,
84
};
85
86