14d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa/*
24d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  fixup-tb0287.c, The TANBAC TB0287 specific PCI fixups.
34d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *
4ada8e9514b5880f81cdbbd212d121380ceef7accYoichi Yuasa *  Copyright (C) 2005  Yoichi Yuasa <yuasa@linux-mips.org>
54d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *
64d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  This program is free software; you can redistribute it and/or modify
74d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  it under the terms of the GNU General Public License as published by
84d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  the Free Software Foundation; either version 2 of the License, or
94d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  (at your option) any later version.
104d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *
114d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  This program is distributed in the hope that it will be useful,
124d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  but WITHOUT ANY WARRANTY; without even the implied warranty of
134d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
144d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  GNU General Public License for more details.
154d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *
164d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  You should have received a copy of the GNU General Public License
174d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  along with this program; if not, write to the Free Software
184d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
194d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa */
204d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa#include <linux/init.h>
214d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa#include <linux/pci.h>
224d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa
234d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa#include <asm/vr41xx/tb0287.h>
244d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa
2519df0d1169b3ddcc84933794d1401aaafe2f0000Ralf Baechleint __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
264d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa{
274d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	unsigned char bus;
284d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	int irq = -1;
294d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa
304d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	bus = dev->bus->number;
314d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	if (bus == 0) {
324d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		switch (slot) {
334d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		case 16:
344d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			irq = TB0287_SM501_IRQ;
354d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
364d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		case 17:
374d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			irq = TB0287_SIL680A_IRQ;
384d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
394d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		default:
404d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
414d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		}
424d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	} else if (bus == 1) {
434d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		switch (PCI_SLOT(dev->devfn)) {
444d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		case 0:
454d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			irq = TB0287_PCI_SLOT_IRQ;
464d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
474d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		case 2:
484d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		case 3:
494d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			irq = TB0287_RTL8110_IRQ;
504d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
514d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		default:
524d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa			break;
534d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		}
544d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	} else if (bus > 1) {
554d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa		irq = TB0287_PCI_SLOT_IRQ;
564d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	}
574d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa
584d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	return irq;
594d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa}
604d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa
614d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa/* Do platform specific device initialization at pci_enable_device() time */
624d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasaint pcibios_plat_dev_init(struct pci_dev *dev)
634d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa{
644d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa	return 0;
654d666d7ada2e14d71d463c85b8b5ef2e2e6723f2Yoichi Yuasa}
66