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