diff options
Diffstat (limited to 'arch/sparc64/kernel/sbus.c')
-rw-r--r-- | arch/sparc64/kernel/sbus.c | 47 |
1 files changed, 4 insertions, 43 deletions
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index 1d6ffdeabd4c..8812417247d4 100644 --- a/arch/sparc64/kernel/sbus.c +++ b/arch/sparc64/kernel/sbus.c | |||
@@ -691,36 +691,6 @@ void sbus_set_sbus64(struct sbus_dev *sdev, int bursts) | |||
691 | upa_writeq(val, cfg_reg); | 691 | upa_writeq(val, cfg_reg); |
692 | } | 692 | } |
693 | 693 | ||
694 | /* SBUS SYSIO INO number to Sparc PIL level. */ | ||
695 | static unsigned char sysio_ino_to_pil[] = { | ||
696 | 0, 5, 5, 7, 5, 7, 8, 9, /* SBUS slot 0 */ | ||
697 | 0, 5, 5, 7, 5, 7, 8, 9, /* SBUS slot 1 */ | ||
698 | 0, 5, 5, 7, 5, 7, 8, 9, /* SBUS slot 2 */ | ||
699 | 0, 5, 5, 7, 5, 7, 8, 9, /* SBUS slot 3 */ | ||
700 | 5, /* Onboard SCSI */ | ||
701 | 5, /* Onboard Ethernet */ | ||
702 | /*XXX*/ 8, /* Onboard BPP */ | ||
703 | 0, /* Bogon */ | ||
704 | 13, /* Audio */ | ||
705 | /*XXX*/15, /* PowerFail */ | ||
706 | 0, /* Bogon */ | ||
707 | 0, /* Bogon */ | ||
708 | 12, /* Zilog Serial Channels (incl. Keyboard/Mouse lines) */ | ||
709 | 11, /* Floppy */ | ||
710 | 0, /* Spare Hardware (bogon for now) */ | ||
711 | 0, /* Keyboard (bogon for now) */ | ||
712 | 0, /* Mouse (bogon for now) */ | ||
713 | 0, /* Serial (bogon for now) */ | ||
714 | 0, 0, /* Bogon, Bogon */ | ||
715 | 10, /* Timer 0 */ | ||
716 | 11, /* Timer 1 */ | ||
717 | 0, 0, /* Bogon, Bogon */ | ||
718 | 15, /* Uncorrectable SBUS Error */ | ||
719 | 15, /* Correctable SBUS Error */ | ||
720 | 15, /* SBUS Error */ | ||
721 | /*XXX*/ 0, /* Power Management (bogon for now) */ | ||
722 | }; | ||
723 | |||
724 | /* INO number to IMAP register offset for SYSIO external IRQ's. | 694 | /* INO number to IMAP register offset for SYSIO external IRQ's. |
725 | * This should conform to both Sunfire/Wildfire server and Fusion | 695 | * This should conform to both Sunfire/Wildfire server and Fusion |
726 | * desktop designs. | 696 | * desktop designs. |
@@ -812,21 +782,12 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino) | |||
812 | struct sbus_iommu *iommu = sbus->iommu; | 782 | struct sbus_iommu *iommu = sbus->iommu; |
813 | unsigned long reg_base = iommu->sbus_control_reg - 0x2000UL; | 783 | unsigned long reg_base = iommu->sbus_control_reg - 0x2000UL; |
814 | unsigned long imap, iclr; | 784 | unsigned long imap, iclr; |
815 | int pil, sbus_level = 0; | 785 | int sbus_level = 0; |
816 | |||
817 | pil = sysio_ino_to_pil[ino]; | ||
818 | if (!pil) { | ||
819 | printk("sbus_irq_build: Bad SYSIO INO[%x]\n", ino); | ||
820 | panic("Bad SYSIO IRQ translations..."); | ||
821 | } | ||
822 | |||
823 | if (PIL_RESERVED(pil)) | ||
824 | BUG(); | ||
825 | 786 | ||
826 | imap = sysio_irq_offsets[ino]; | 787 | imap = sysio_irq_offsets[ino]; |
827 | if (imap == ((unsigned long)-1)) { | 788 | if (imap == ((unsigned long)-1)) { |
828 | prom_printf("get_irq_translations: Bad SYSIO INO[%x] cpu[%d]\n", | 789 | prom_printf("get_irq_translations: Bad SYSIO INO[%x]\n", |
829 | ino, pil); | 790 | ino); |
830 | prom_halt(); | 791 | prom_halt(); |
831 | } | 792 | } |
832 | imap += reg_base; | 793 | imap += reg_base; |
@@ -860,7 +821,7 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino) | |||
860 | 821 | ||
861 | iclr += ((unsigned long)sbus_level - 1UL) * 8UL; | 822 | iclr += ((unsigned long)sbus_level - 1UL) * 8UL; |
862 | } | 823 | } |
863 | return build_irq(pil, sbus_level, iclr, imap); | 824 | return build_irq(sbus_level, iclr, imap); |
864 | } | 825 | } |
865 | 826 | ||
866 | /* Error interrupt handling. */ | 827 | /* Error interrupt handling. */ |