linux/arch/mips/pci/pci-lasat.c
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 2000, 2001, 04 Keith M Wesolowski
   7 */
   8#include <linux/init.h>
   9#include <linux/kernel.h>
  10#include <linux/pci.h>
  11#include <linux/types.h>
  12
  13#include <asm/lasat/lasat.h>
  14
  15#include <irq.h>
  16
  17extern struct pci_ops nile4_pci_ops;
  18extern struct pci_ops gt64xxx_pci0_ops;
  19static struct resource lasat_pci_mem_resource = {
  20        .name   = "LASAT PCI MEM",
  21        .start  = 0x18000000,
  22        .end    = 0x19ffffff,
  23        .flags  = IORESOURCE_MEM,
  24};
  25
  26static struct resource lasat_pci_io_resource = {
  27        .name   = "LASAT PCI IO",
  28        .start  = 0x1a000000,
  29        .end    = 0x1bffffff,
  30        .flags  = IORESOURCE_IO,
  31};
  32
  33static struct pci_controller lasat_pci_controller = {
  34        .mem_resource   = &lasat_pci_mem_resource,
  35        .io_resource    = &lasat_pci_io_resource,
  36};
  37
  38static int __init lasat_pci_setup(void)
  39{
  40        printk(KERN_DEBUG "PCI: starting\n");
  41
  42        if (IS_LASAT_200())
  43                lasat_pci_controller.pci_ops = &nile4_pci_ops;
  44        else
  45                lasat_pci_controller.pci_ops = &gt64xxx_pci0_ops;
  46
  47        register_pci_controller(&lasat_pci_controller);
  48
  49        return 0;
  50}
  51
  52arch_initcall(lasat_pci_setup);
  53
  54#define LASAT_IRQ_ETH1   (LASAT_IRQ_BASE + 0)
  55#define LASAT_IRQ_ETH0   (LASAT_IRQ_BASE + 1)
  56#define LASAT_IRQ_HDC    (LASAT_IRQ_BASE + 2)
  57#define LASAT_IRQ_COMP   (LASAT_IRQ_BASE + 3)
  58#define LASAT_IRQ_HDLC   (LASAT_IRQ_BASE + 4)
  59#define LASAT_IRQ_PCIA   (LASAT_IRQ_BASE + 5)
  60#define LASAT_IRQ_PCIB   (LASAT_IRQ_BASE + 6)
  61#define LASAT_IRQ_PCIC   (LASAT_IRQ_BASE + 7)
  62#define LASAT_IRQ_PCID   (LASAT_IRQ_BASE + 8)
  63
  64int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
  65{
  66        switch (slot) {
  67        case 1:
  68        case 2:
  69        case 3:
  70                return LASAT_IRQ_PCIA + (((slot-1) + (pin-1)) % 4);
  71        case 4:
  72                return LASAT_IRQ_ETH1;   /* Ethernet 1 (LAN 2) */
  73        case 5:
  74                return LASAT_IRQ_ETH0;   /* Ethernet 0 (LAN 1) */
  75        case 6:
  76                return LASAT_IRQ_HDC;    /* IDE controller */
  77        default:
  78                return 0xff;            /* Illegal */
  79        }
  80
  81        return -1;
  82}
  83
  84/* Do platform specific device initialization at pci_enable_device() time */
  85int pcibios_plat_dev_init(struct pci_dev *dev)
  86{
  87        return 0;
  88}
  89