Re: [PATCH 02/10] Alchemy: Au1300 new interrupt controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 07 Mar 2009 13:20:08 -0600
Kevin Hickey <khickey@xxxxxxxxxxx> wrote:

> > > +asmlinkage void plat_irq_dispatch(void)
> > > +{
> > > +	unsigned int intr;
> > > +	u32 bank;
> > > +	u32 reg_msk;
> > > +	unsigned int pending = read_c0_status() & read_c0_cause();
> > > +	/*
> > > +	 * C0 timer tick
> > > +	 */
> > > +	if (pending & CAUSEF_IP7)
> > > +		do_IRQ(MIPS_CPU_IRQ_BASE + 7);
> > > +	else if (pending & (CAUSEF_IP2 | CAUSEF_IP3)) {
> > > +		intr = au_ioread32(&gpio_int->pri_enc);
> > > +		bank = GPINT_BANK_FROM_INT(intr);
> > > +		reg_msk = GPINT_BIT_FROM_INT(bank, intr);
> > > +
> > > +		if (intr != 127) {
> > > +			if (pending & CAUSEF_IP3)
> > > +				board_irq_dispatch(intr);
> > 
> > What is this supposed to do? (missed debug code?)
> board_irq_dispatch (which as I said above should be in a non-devboard
> include) is used to display the IRQ number on the hex LEDs on the DB1300
> board.  I tried to keep it generic so that other boards could do what
> they want or leave it unimplemented and have it optimized out.  The
> CAUSEF_IP3 part is there to not display the timer tick (since it pretty
> much floods out the other IRQ displays).  I should really do that
> segregation in the board_irq_dispatch call; I was pretty focused on my
> board when I wrote this code.

Oh okay. I was wondering about the IP3.
We should probably make a list of all (possible) hooks available into
the alchemy core code (and give them nice prefixed names ;-) )


> > (FWIW, I'm working on getting rid of the explicit CPU-type config
> > options and instead do runtime detection and configuration of
> > dma/dbdma/irq/ and so on).
> 
> Why?  Won't that just lead to a larger kernel binary since it will have
> all of the tables in it?  I would prefer to only compile in the data
> that I need.  Unless I'm missing what you're doing...

All Alchemy chips are more or less identical. Some have different
sd/ddr controller, some have different dma, and some lack peripherals
others do have;  most periperhals have identical mmio addresses across
chip types.

Interestingly even the devboard designers assigned a unique 4bit value
to each board type; with a bit of work you could in theory build one
kernel binary which runs on all of them.

That's what I'm aiming at.

Best regards,
	Manuel Lauss



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux