fixup-tb0226.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * fixup-tb0226.c, The TANBAC TB0226 specific PCI fixups.
  4. *
  5. * Copyright (C) 2002-2005 Yoichi Yuasa <yuasa@linux-mips.org>
  6. */
  7. #include <linux/init.h>
  8. #include <linux/pci.h>
  9. #include <asm/vr41xx/giu.h>
  10. #include <asm/vr41xx/tb0226.h>
  11. int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
  12. {
  13. int irq = -1;
  14. switch (slot) {
  15. case 12:
  16. vr41xx_set_irq_trigger(GD82559_1_PIN,
  17. IRQ_TRIGGER_LEVEL,
  18. IRQ_SIGNAL_THROUGH);
  19. vr41xx_set_irq_level(GD82559_1_PIN, IRQ_LEVEL_LOW);
  20. irq = GD82559_1_IRQ;
  21. break;
  22. case 13:
  23. vr41xx_set_irq_trigger(GD82559_2_PIN,
  24. IRQ_TRIGGER_LEVEL,
  25. IRQ_SIGNAL_THROUGH);
  26. vr41xx_set_irq_level(GD82559_2_PIN, IRQ_LEVEL_LOW);
  27. irq = GD82559_2_IRQ;
  28. break;
  29. case 14:
  30. switch (pin) {
  31. case 1:
  32. vr41xx_set_irq_trigger(UPD720100_INTA_PIN,
  33. IRQ_TRIGGER_LEVEL,
  34. IRQ_SIGNAL_THROUGH);
  35. vr41xx_set_irq_level(UPD720100_INTA_PIN,
  36. IRQ_LEVEL_LOW);
  37. irq = UPD720100_INTA_IRQ;
  38. break;
  39. case 2:
  40. vr41xx_set_irq_trigger(UPD720100_INTB_PIN,
  41. IRQ_TRIGGER_LEVEL,
  42. IRQ_SIGNAL_THROUGH);
  43. vr41xx_set_irq_level(UPD720100_INTB_PIN,
  44. IRQ_LEVEL_LOW);
  45. irq = UPD720100_INTB_IRQ;
  46. break;
  47. case 3:
  48. vr41xx_set_irq_trigger(UPD720100_INTC_PIN,
  49. IRQ_TRIGGER_LEVEL,
  50. IRQ_SIGNAL_THROUGH);
  51. vr41xx_set_irq_level(UPD720100_INTC_PIN,
  52. IRQ_LEVEL_LOW);
  53. irq = UPD720100_INTC_IRQ;
  54. break;
  55. default:
  56. break;
  57. }
  58. break;
  59. default:
  60. break;
  61. }
  62. return irq;
  63. }
  64. /* Do platform specific device initialization at pci_enable_device() time */
  65. int pcibios_plat_dev_init(struct pci_dev *dev)
  66. {
  67. return 0;
  68. }