pci-lasat.c 2.4 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 42 43 44 45 46 47 48 49 50 51 52
/*
 * 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
 */
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <asm/bootinfo.h>

extern struct pci_ops nile4_pci_ops;
extern struct pci_ops gt64120_pci_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("PCI: starting\n");

        switch (mips_machtype) {
            case MACH_LASAT_100:
                lasat_pci_controller.pci_ops = &gt64120_pci_ops;
                break;
            case MACH_LASAT_200:
                lasat_pci_controller.pci_ops = &nile4_pci_ops;
                break;
            default:
                panic("pcibios_init: mips_machtype incorrect");
        }

	register_pci_controller(&lasat_pci_controller);
53 54

	return 0;
L
Linus Torvalds 已提交
55
}
56 57

arch_initcall(lasat_pci_setup);
L
Linus Torvalds 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

#define LASATINT_ETH1   0
#define LASATINT_ETH0   1
#define LASATINT_HDC    2
#define LASATINT_COMP   3
#define LASATINT_HDLC   4
#define LASATINT_PCIA   5
#define LASATINT_PCIB   6
#define LASATINT_PCIC   7
#define LASATINT_PCID   8

int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{
    switch (slot) {
        case 1:
            return LASATINT_PCIA;   /* Expansion Module 0 */
        case 2:
            return LASATINT_PCIB;   /* Expansion Module 1 */
        case 3:
            return LASATINT_PCIC;   /* Expansion Module 2 */
        case 4:
            return LASATINT_ETH1;   /* Ethernet 1 (LAN 2) */
        case 5:
            return LASATINT_ETH0;   /* Ethernet 0 (LAN 1) */
        case 6:
            return LASATINT_HDC;    /* IDE controller */
        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;
}