[coreboot] Patch for Nokia-IP530, now with working PIRQ table, patch on 5591

mbertens mbertens at xs4all.nl
Thu May 27 07:14:57 CEST 2010


On Thu, 2010-05-27 at 02:27 +0200, Peter Stuge wrote:
> mbertens wrote:
> > +++ src/arch/i386/boot/pirq_routing.c	(working copy)
> > @@ -121,7 +121,11 @@
> >  
> >  			printk(BIOS_DEBUG, "INT: %c link: %x bitmap: %x  ",
> >  				'A' + j, link, bitmap);
> > -
> > +			// fix made by Marc Bertens <mbertens at xs4all.nl>
> > +			if (link > 0x5f) {
> > +				// This is basically for the 440BX
> > +				link -= 0x5f;
> > +			}
> 
> Um, except that I gave you that code.
Yes, that was already in the new comment, that it was passed to me
by you. 
> 
> It is a bit of a hack. So far this file and function is actually only
> called by Geode LX mainboards, and I don't quite understand why.
It just works fne for the i440BX, but you need a stub function
pirq_assign_irqs() in the board specific codebase (my solution).
> 
> Maybe something equivalent of this code is invoked in other ways in
> all the other boards? The gist of pirq_routing_irqs() is to call
> pci_assign_irqs() and pirq_assign_irqs(). How 
pirq_routing_irqs() calls as the last action pirq_assign_irqs()
> 
> There are various other solutions to calling pci_assign_irqs() on
> other boards:
> 
> northbridge/via/cx700/cx700_lpc.c
> northbridge/via/vx800/vx800_lpc.c
> southbridge/via/vt8231/vt8231_lpc.c
> southbridge/via/vt8235/vt8235_lpc.c
> southbridge/via/vt8237r/vt8237r_lpc.c
> mainboard/amd/serengeti/cheetah/irq_tables.c
> mainboard/msi/ms7135/irq_tables.c
> mainboard/olpc/btest/mainboard.c
> mainboard/tyan/s2882/irq_tables.c
> mainboard/iwill/dk8_htx/irq_tables.c
> mainboard/emulation/qemu-x86/mainboard.c
> mainboard/technologic/ts5300/mainboard.c
> mainboard/digitallogic/msm586seg/mainboard.c
I looked at all those you meantioned here, and soem of them are quite
similar. Maybe we can find a common solution "one size fits all", i like
sourcecode that can handle all the different board types. 
> 
> I have fairly strong opinion about those call sites being so
> different (maybe due to ignorance) but more importantly what are the
> other boards doing? There seems to be a large number of non-Geode
> systems not in the list above where pci_assign_irqs() is never
> called. The doxygen for the function says:
> 
> "This function should be called for each PCI slot in your system."
> 
> What gives? Can we find a generic solution to this interrupt problem?
First thing is that we need to identify the different board solutions
which are similar, and see what kind of solution groups we have at the
moment, and maybe its just enough to have a adjuster function for a
specific board, which is called start of the pirq_routing_irqs(), and
when no specific adjusting is required this can be left out by Kconfig
and the same applies to the pirq_assign_irqs()
> 
> 
> //Peter
> 

Marc 





More information about the coreboot mailing list