Blame view

arch/mips/pci/pci-lasat.c 2.12 KB
1f21d2bde   Brian Murphy   [MIPS] Add back s...
1
2
3
4
5
6
7
  /*
   * This file is subject to the terms and conditions of the GNU General Public
   * License.  See the file "COPYING" in the main directory of this archive
   * for more details.
   *
   * Copyright (C) 2000, 2001, 04 Keith M Wesolowski
   */
1f21d2bde   Brian Murphy   [MIPS] Add back s...
8
  #include <linux/init.h>
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
9
  #include <linux/kernel.h>
1f21d2bde   Brian Murphy   [MIPS] Add back s...
10
11
  #include <linux/pci.h>
  #include <linux/types.h>
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
12

b27418aa5   Thomas Bogendoerfer   [MIPS] Remove mip...
13
  #include <asm/lasat/lasat.h>
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
14
15
  
  #include <irq.h>
1f21d2bde   Brian Murphy   [MIPS] Add back s...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  
  extern struct pci_ops nile4_pci_ops;
  extern struct pci_ops gt64xxx_pci0_ops;
  static struct resource lasat_pci_mem_resource = {
  	.name	= "LASAT PCI MEM",
  	.start	= 0x18000000,
  	.end	= 0x19ffffff,
  	.flags	= IORESOURCE_MEM,
  };
  
  static struct resource lasat_pci_io_resource = {
  	.name	= "LASAT PCI IO",
  	.start	= 0x1a000000,
  	.end	= 0x1bffffff,
  	.flags	= IORESOURCE_IO,
  };
  
  static struct pci_controller lasat_pci_controller = {
  	.mem_resource	= &lasat_pci_mem_resource,
  	.io_resource	= &lasat_pci_io_resource,
  };
  
  static int __init lasat_pci_setup(void)
  {
  	printk(KERN_DEBUG "PCI: starting
  ");
b27418aa5   Thomas Bogendoerfer   [MIPS] Remove mip...
42
  	if (IS_LASAT_200())
1f21d2bde   Brian Murphy   [MIPS] Add back s...
43
  		lasat_pci_controller.pci_ops = &nile4_pci_ops;
b27418aa5   Thomas Bogendoerfer   [MIPS] Remove mip...
44
45
  	else
  		lasat_pci_controller.pci_ops = &gt64xxx_pci0_ops;
1f21d2bde   Brian Murphy   [MIPS] Add back s...
46
47
48
49
50
51
52
  
  	register_pci_controller(&lasat_pci_controller);
  
  	return 0;
  }
  
  arch_initcall(lasat_pci_setup);
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
53
54
55
56
57
58
59
60
61
  #define LASAT_IRQ_ETH1   (LASAT_IRQ_BASE + 0)
  #define LASAT_IRQ_ETH0   (LASAT_IRQ_BASE + 1)
  #define LASAT_IRQ_HDC    (LASAT_IRQ_BASE + 2)
  #define LASAT_IRQ_COMP   (LASAT_IRQ_BASE + 3)
  #define LASAT_IRQ_HDLC   (LASAT_IRQ_BASE + 4)
  #define LASAT_IRQ_PCIA   (LASAT_IRQ_BASE + 5)
  #define LASAT_IRQ_PCIB   (LASAT_IRQ_BASE + 6)
  #define LASAT_IRQ_PCIC   (LASAT_IRQ_BASE + 7)
  #define LASAT_IRQ_PCID   (LASAT_IRQ_BASE + 8)
1f21d2bde   Brian Murphy   [MIPS] Add back s...
62
63
64
65
66
67
68
  
  int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
  {
  	switch (slot) {
  	case 1:
  	case 2:
  	case 3:
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
69
  		return LASAT_IRQ_PCIA + (((slot-1) + (pin-1)) % 4);
1f21d2bde   Brian Murphy   [MIPS] Add back s...
70
  	case 4:
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
71
  		return LASAT_IRQ_ETH1;   /* Ethernet 1 (LAN 2) */
1f21d2bde   Brian Murphy   [MIPS] Add back s...
72
  	case 5:
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
73
  		return LASAT_IRQ_ETH0;   /* Ethernet 0 (LAN 1) */
1f21d2bde   Brian Murphy   [MIPS] Add back s...
74
  	case 6:
89becf5c0   Yoichi Yuasa   [MIPS] Lasat: Fix...
75
  		return LASAT_IRQ_HDC;    /* IDE controller */
1f21d2bde   Brian Murphy   [MIPS] Add back s...
76
77
78
79
80
81
82
83
84
85
86
87
  	default:
  		return 0xff;            /* Illegal */
  	}
  
  	return -1;
  }
  
  /* Do platform specific device initialization at pci_enable_device() time */
  int pcibios_plat_dev_init(struct pci_dev *dev)
  {
  	return 0;
  }