Commit 30c0527d authored by Finn Thain's avatar Finn Thain Committed by Geert Uytterhoeven

m68k/mac: cleanup mac_irq_pending

mac_irq_pending() has only one caller (mac_esp.c). Nothing tests for Baboon, PSC or OSS pending interrupts. Until that need arises, let's keep it simple and remove all the unused abstraction. Replace it with a routine to check for SCSI DRQ.
Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent 56e63689
...@@ -254,6 +254,8 @@ ...@@ -254,6 +254,8 @@
extern volatile __u8 *via1,*via2; extern volatile __u8 *via1,*via2;
extern int rbv_present,via_alt_mapping; extern int rbv_present,via_alt_mapping;
extern int via2_scsi_drq_pending(void);
static inline int rbv_set_video_bpp(int bpp) static inline int rbv_set_video_bpp(int bpp)
{ {
char val = (bpp==1)?0:(bpp==2)?1:(bpp==4)?2:(bpp==8)?3:-1; char val = (bpp==1)?0:(bpp==2)?1:(bpp==4)?2:(bpp==8)?3:-1;
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
extern void mac_reset(void); extern void mac_reset(void);
extern void mac_poweroff(void); extern void mac_poweroff(void);
extern void mac_init_IRQ(void); extern void mac_init_IRQ(void);
extern int mac_irq_pending(unsigned int);
extern void mac_irq_enable(struct irq_data *data); extern void mac_irq_enable(struct irq_data *data);
extern void mac_irq_disable(struct irq_data *data); extern void mac_irq_disable(struct irq_data *data);
......
...@@ -123,10 +123,3 @@ void baboon_irq_disable(int irq) ...@@ -123,10 +123,3 @@ void baboon_irq_disable(int irq)
if (baboon_disabled) if (baboon_disabled)
mac_irq_disable(irq_get_irq_data(IRQ_NUBUS_C)); mac_irq_disable(irq_get_irq_data(IRQ_NUBUS_C));
} }
int baboon_irq_pending(int irq)
{
int irq_idx = IRQ_IDX(irq);
return baboon->mb_ifr & (1 << irq_idx);
}
...@@ -142,7 +142,6 @@ extern void via_register_interrupts(void); ...@@ -142,7 +142,6 @@ extern void via_register_interrupts(void);
extern void via_irq_enable(int); extern void via_irq_enable(int);
extern void via_irq_disable(int); extern void via_irq_disable(int);
extern void via_irq_clear(int); extern void via_irq_clear(int);
extern int via_irq_pending(int);
/* /*
* OSS hooks * OSS hooks
...@@ -152,7 +151,6 @@ extern void oss_register_interrupts(void); ...@@ -152,7 +151,6 @@ extern void oss_register_interrupts(void);
extern void oss_irq_enable(int); extern void oss_irq_enable(int);
extern void oss_irq_disable(int); extern void oss_irq_disable(int);
extern void oss_irq_clear(int); extern void oss_irq_clear(int);
extern int oss_irq_pending(int);
/* /*
* PSC hooks * PSC hooks
...@@ -162,7 +160,6 @@ extern void psc_register_interrupts(void); ...@@ -162,7 +160,6 @@ extern void psc_register_interrupts(void);
extern void psc_irq_enable(int); extern void psc_irq_enable(int);
extern void psc_irq_disable(int); extern void psc_irq_disable(int);
extern void psc_irq_clear(int); extern void psc_irq_clear(int);
extern int psc_irq_pending(int);
/* /*
* IOP hooks * IOP hooks
...@@ -239,7 +236,6 @@ void __init mac_init_IRQ(void) ...@@ -239,7 +236,6 @@ void __init mac_init_IRQ(void)
/* /*
* mac_irq_enable - enable an interrupt source * mac_irq_enable - enable an interrupt source
* mac_irq_disable - disable an interrupt source * mac_irq_disable - disable an interrupt source
* mac_irq_pending - returns the pending status of an IRQ (nonzero = pending)
* *
* These routines are just dispatchers to the VIA/OSS/PSC routines. * These routines are just dispatchers to the VIA/OSS/PSC routines.
*/ */
...@@ -314,34 +310,6 @@ void mac_irq_disable(struct irq_data *data) ...@@ -314,34 +310,6 @@ void mac_irq_disable(struct irq_data *data)
} }
} }
int mac_irq_pending(unsigned int irq)
{
switch(IRQ_SRC(irq)) {
case 1:
return via_irq_pending(irq);
case 2:
case 7:
if (oss_present)
return oss_irq_pending(irq);
else
return via_irq_pending(irq);
case 3:
case 5:
case 6:
if (psc_present)
return psc_irq_pending(irq);
else if (oss_present)
return oss_irq_pending(irq);
break;
case 4:
if (psc_present)
return psc_irq_pending(irq);
break;
}
return 0;
}
EXPORT_SYMBOL(mac_irq_pending);
static int num_debug[8]; static int num_debug[8];
irqreturn_t mac_debug_handler(int irq, void *dev_id) irqreturn_t mac_debug_handler(int irq, void *dev_id)
......
...@@ -219,32 +219,3 @@ void oss_irq_disable(int irq) { ...@@ -219,32 +219,3 @@ void oss_irq_disable(int irq) {
#endif #endif
} }
} }
/*
* Check to see if a specific OSS interrupt is pending
*/
int oss_irq_pending(int irq)
{
switch(irq) {
case IRQ_MAC_SCC:
return oss->irq_pending & OSS_IP_IOPSCC;
break;
case IRQ_MAC_ADB:
return oss->irq_pending & OSS_IP_IOPISM;
break;
case IRQ_MAC_SCSI:
return oss->irq_pending & OSS_IP_SCSI;
break;
case IRQ_NUBUS_9:
case IRQ_NUBUS_A:
case IRQ_NUBUS_B:
case IRQ_NUBUS_C:
case IRQ_NUBUS_D:
case IRQ_NUBUS_E:
irq -= NUBUS_SOURCE_BASE;
return oss->irq_pending & (1 << irq);
break;
}
return 0;
}
...@@ -180,12 +180,3 @@ void psc_irq_disable(int irq) { ...@@ -180,12 +180,3 @@ void psc_irq_disable(int irq) {
#endif #endif
psc_write_byte(pIER, 1 << irq_idx); psc_write_byte(pIER, 1 << irq_idx);
} }
int psc_irq_pending(int irq)
{
int irq_src = IRQ_SRC(irq);
int irq_idx = IRQ_IDX(irq);
int pIFR = pIERbase + (irq_src << 4);
return psc_read_byte(pIFR) & (1 << irq_idx);
}
...@@ -585,28 +585,6 @@ void via_irq_disable(int irq) { ...@@ -585,28 +585,6 @@ void via_irq_disable(int irq) {
} }
} }
/*
* Returns nonzero if an interrupt is pending on the given
* VIA/IRQ combination.
*/
int via_irq_pending(int irq)
{
int irq_src = IRQ_SRC(irq);
int irq_idx = IRQ_IDX(irq);
int irq_bit = 1 << irq_idx;
if (irq_src == 1) {
return via1[vIFR] & irq_bit;
} else if (irq_src == 2) {
return via2[gIFR] & irq_bit;
} else if (irq_src == 7) {
/* Always 0 for MAC_VIA_QUADRA if the slot irq is disabled. */
return ~via2[gBufA] & irq_bit;
}
return 0;
}
void via1_set_head(int head) void via1_set_head(int head)
{ {
if (head == 0) if (head == 0)
...@@ -615,3 +593,9 @@ void via1_set_head(int head) ...@@ -615,3 +593,9 @@ void via1_set_head(int head)
via1[vBufA] |= VIA1A_vHeadSel; via1[vBufA] |= VIA1A_vHeadSel;
} }
EXPORT_SYMBOL(via1_set_head); EXPORT_SYMBOL(via1_set_head);
int via2_scsi_drq_pending(void)
{
return via2[gIFR] & (1 << IRQ_IDX(IRQ_MAC_SCSIDRQ));
}
EXPORT_SYMBOL(via2_scsi_drq_pending);
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/macints.h> #include <asm/macints.h>
#include <asm/macintosh.h> #include <asm/macintosh.h>
#include <asm/mac_via.h>
#include <scsi/scsi_host.h> #include <scsi/scsi_host.h>
...@@ -149,7 +150,7 @@ static inline int mac_esp_wait_for_dreq(struct esp *esp) ...@@ -149,7 +150,7 @@ static inline int mac_esp_wait_for_dreq(struct esp *esp)
do { do {
if (mep->pdma_regs == NULL) { if (mep->pdma_regs == NULL) {
if (mac_irq_pending(IRQ_MAC_SCSIDRQ)) if (via2_scsi_drq_pending())
return 0; return 0;
} else { } else {
if (nubus_readl(mep->pdma_regs) & 0x200) if (nubus_readl(mep->pdma_regs) & 0x200)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment