Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
sh
drivers
pci
fixups-dreamcast.c
Go to the documentation of this file.
1
/*
2
* arch/sh/drivers/pci/fixups-dreamcast.c
3
*
4
* PCI fixups for the Sega Dreamcast
5
*
6
* Copyright (C) 2001, 2002 M. R. Brown
7
* Copyright (C) 2002, 2003, 2006 Paul Mundt
8
*
9
* This file originally bore the message (with enclosed-$):
10
* Id: pci.c,v 1.3 2003/05/04 19:29:46 lethal Exp
11
* Dreamcast PCI: Supports SEGA Broadband Adaptor only.
12
*
13
* This file is subject to the terms and conditions of the GNU General Public
14
* License. See the file "COPYING" in the main directory of this archive
15
* for more details.
16
*/
17
18
#include <linux/sched.h>
19
#include <linux/kernel.h>
20
#include <
linux/param.h
>
21
#include <
linux/interrupt.h
>
22
#include <
linux/init.h
>
23
#include <
linux/irq.h
>
24
#include <linux/pci.h>
25
#include <
linux/dma-mapping.h
>
26
27
#include <asm/io.h>
28
#include <asm/irq.h>
29
#include <mach/pci.h>
30
31
static
void
__devinit
gapspci_fixup_resources(
struct
pci_dev
*
dev
)
32
{
33
struct
pci_channel *
p
= dev->
sysdata
;
34
35
printk
(
KERN_NOTICE
"PCI: Fixing up device %s\n"
, pci_name(dev));
36
37
switch
(dev->
device
) {
38
case
PCI_DEVICE_ID_SEGA_BBA
:
39
/*
40
* We also assume that dev->devfn == 0
41
*/
42
dev->
resource
[1].start = p->resources[0].start + 0x100;
43
dev->
resource
[1].end = dev->
resource
[1].start + 0x200 - 1;
44
45
/*
46
* This is not a normal BAR, prevent any attempts to move
47
* the BAR, as this will result in a bus lock.
48
*/
49
dev->
resource
[1].flags |=
IORESOURCE_PCI_FIXED
;
50
51
/*
52
* Redirect dma memory allocations to special memory window.
53
*/
54
BUG_ON
(!
dma_declare_coherent_memory
(&dev->
dev
,
55
GAPSPCI_DMA_BASE
,
56
GAPSPCI_DMA_BASE
,
57
GAPSPCI_DMA_SIZE
,
58
DMA_MEMORY_MAP
|
59
DMA_MEMORY_EXCLUSIVE
));
60
break
;
61
default
:
62
printk
(
"PCI: Failed resource fixup\n"
);
63
}
64
}
65
DECLARE_PCI_FIXUP_HEADER
(
PCI_ANY_ID
,
PCI_ANY_ID
, gapspci_fixup_resources);
66
67
int
__init
pcibios_map_platform_irq
(
const
struct
pci_dev
*dev,
u8
slot
,
u8
pin
)
68
{
69
/*
70
* The interrupt routing semantics here are quite trivial.
71
*
72
* We basically only support one interrupt, so we only bother
73
* updating a device's interrupt line with this single shared
74
* interrupt. Keeps routing quite simple, doesn't it?
75
*/
76
return
GAPSPCI_IRQ
;
77
}
Generated on Thu Jan 10 2013 13:17:10 for Linux Kernel by
1.8.2