18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * arch/sh/drivers/pci/ops-snapgear.c
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Author:  David McCullough <davidm@snapgear.com>
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Ported to new API by Paul Mundt <lethal@linux-sh.org>
88c2ecf20Sopenharmony_ci *
98c2ecf20Sopenharmony_ci * Highly leveraged from pci-bigsur.c, written by Dustin McIntire.
108c2ecf20Sopenharmony_ci *
118c2ecf20Sopenharmony_ci * PCI initialization for the SnapGear boards
128c2ecf20Sopenharmony_ci */
138c2ecf20Sopenharmony_ci#include <linux/kernel.h>
148c2ecf20Sopenharmony_ci#include <linux/types.h>
158c2ecf20Sopenharmony_ci#include <linux/init.h>
168c2ecf20Sopenharmony_ci#include <linux/pci.h>
178c2ecf20Sopenharmony_ci#include <linux/sh_intc.h>
188c2ecf20Sopenharmony_ci#include "pci-sh4.h"
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciint pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin)
218c2ecf20Sopenharmony_ci{
228c2ecf20Sopenharmony_ci	int irq = -1;
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	switch (slot) {
258c2ecf20Sopenharmony_ci	case 8:  /* the PCI bridge */ break;
268c2ecf20Sopenharmony_ci	case 11: irq = evt2irq(0x300); break; /* USB    */
278c2ecf20Sopenharmony_ci	case 12: irq = evt2irq(0x360); break; /* PCMCIA */
288c2ecf20Sopenharmony_ci	case 13: irq = evt2irq(0x2a0); break; /* eth0   */
298c2ecf20Sopenharmony_ci	case 14: irq = evt2irq(0x300); break; /* eth1   */
308c2ecf20Sopenharmony_ci	case 15: irq = evt2irq(0x360); break; /* safenet (unused) */
318c2ecf20Sopenharmony_ci	}
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci	printk("PCI: Mapping SnapGear IRQ for slot %d, pin %c to irq %d\n",
348c2ecf20Sopenharmony_ci	       slot, pin - 1 + 'A', irq);
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	return irq;
378c2ecf20Sopenharmony_ci}
38