Skip to content

Commit

Permalink
ARM: riscpc: remove expansion card irq mask register
Browse files Browse the repository at this point in the history
This register is only present on older platforms, and not on RiscPC,
so lets remove this unused support.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King committed Mar 24, 2012
1 parent b4ac084 commit 530c2ea
Showing 1 changed file with 2 additions and 101 deletions.
103 changes: 2 additions & 101 deletions arch/arm/mach-rpc/ecard.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,6 @@

#include "ecard.h"

#ifndef CONFIG_ARCH_RPC
#define HAVE_EXPMASK
#endif

struct ecard_request {
void (*fn)(struct ecard_request *);
ecard_t *ec;
Expand All @@ -78,9 +74,6 @@ struct expcard_blacklist {
static ecard_t *cards;
static ecard_t *slot_to_expcard[MAX_ECARDS];
static unsigned int ectcr;
#ifdef HAS_EXPMASK
static unsigned int have_expmask;
#endif

/* List of descriptions of cards which don't have an extended
* identification, or chunk directories containing a description.
Expand Down Expand Up @@ -391,22 +384,10 @@ int ecard_readchunk(struct in_chunk_dir *cd, ecard_t *ec, int id, int num)

static void ecard_def_irq_enable(ecard_t *ec, int irqnr)
{
#ifdef HAS_EXPMASK
if (irqnr < 4 && have_expmask) {
have_expmask |= 1 << irqnr;
__raw_writeb(have_expmask, EXPMASK_ENABLE);
}
#endif
}

static void ecard_def_irq_disable(ecard_t *ec, int irqnr)
{
#ifdef HAS_EXPMASK
if (irqnr < 4 && have_expmask) {
have_expmask &= ~(1 << irqnr);
__raw_writeb(have_expmask, EXPMASK_ENABLE);
}
#endif
}

static int ecard_def_irq_pending(ecard_t *ec)
Expand Down Expand Up @@ -598,83 +579,6 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
ecard_check_lockup(desc);
}

#ifdef HAS_EXPMASK
static unsigned char priority_masks[] =
{
0xf0, 0xf1, 0xf3, 0xf7, 0xff, 0xff, 0xff, 0xff
};

static unsigned char first_set[] =
{
0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00
};

static void
ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc)
{
const unsigned int statusmask = 15;
unsigned int status;

status = __raw_readb(EXPMASK_STATUS) & statusmask;
if (status) {
unsigned int slot = first_set[status];
ecard_t *ec = slot_to_ecard(slot);

if (ec->claimed) {
/*
* this ugly code is so that we can operate a
* prioritorising system:
*
* Card 0 highest priority
* Card 1
* Card 2
* Card 3 lowest priority
*
* Serial cards should go in 0/1, ethernet/scsi in 2/3
* otherwise you will lose serial data at high speeds!
*/
generic_handle_irq(ec->irq);
} else {
printk(KERN_WARNING "card%d: interrupt from unclaimed "
"card???\n", slot);
have_expmask &= ~(1 << slot);
__raw_writeb(have_expmask, EXPMASK_ENABLE);
}
} else
printk(KERN_WARNING "Wild interrupt from backplane (masks)\n");
}

static int __init ecard_probeirqhw(void)
{
ecard_t *ec;
int found;

__raw_writeb(0x00, EXPMASK_ENABLE);
__raw_writeb(0xff, EXPMASK_STATUS);
found = (__raw_readb(EXPMASK_STATUS) & 15) == 0;
__raw_writeb(0xff, EXPMASK_ENABLE);

if (found) {
printk(KERN_DEBUG "Expansion card interrupt "
"management hardware found\n");

/* for each card present, set a bit to '1' */
have_expmask = 0x80000000;

for (ec = cards; ec; ec = ec->next)
have_expmask |= 1 << ec->slot_no;

__raw_writeb(have_expmask, EXPMASK_ENABLE);
}

return found;
}
#else
#define ecard_irqexp_handler NULL
#define ecard_probeirqhw() (0)
#endif

static void __iomem *__ecard_address(ecard_t *ec, card_type_t type, card_speed_t speed)
{
void __iomem *address = NULL;
Expand Down Expand Up @@ -1073,7 +977,7 @@ static int __init ecard_probe(int slot, unsigned irq, card_type_t type)
static int __init ecard_init(void)
{
struct task_struct *task;
int slot, irqhw, irqbase;
int slot, irqbase;

irqbase = irq_alloc_descs(-1, 0, 8, -1);
if (irqbase < 0)
Expand All @@ -1096,10 +1000,7 @@ static int __init ecard_init(void)

ecard_probe(8, 11, ECARD_IOC);

irqhw = ecard_probeirqhw();

irq_set_chained_handler(IRQ_EXPANSIONCARD,
irqhw ? ecard_irqexp_handler : ecard_irq_handler);
irq_set_chained_handler(IRQ_EXPANSIONCARD, ecard_irq_handler);

ecard_proc_init();

Expand Down

0 comments on commit 530c2ea

Please sign in to comment.