On 12/19/2012 05:09 AM, Nathan Hintz wrote:
> The existing IRQ logic incorrectly indicates cores that have no IRQ
> assignment as being assigned to the shared IRQ; this includes setting
> the "irq" field in the bcma_device struct to "2".  This is evidenced by
> output of bcma_core_mips_print_irq, which is as follows:
> 
> [    0.112000] bcma: bus0: Initializing MIPS core...
> [    0.112000] bcma: bus0: Moved i2s interrupt to oob line 7 instead of 8
> [    0.112000] bcma: bus0: set_irq: core 0x0800, irq 2 => 2
> [    0.112000] bcma: bus0: set_irq: core 0x0812, irq 3 => 3
> [    0.112000] bcma: bus0: set_irq: core 0x082d, irq 4 => 4
> [    0.112000] bcma: bus0: set_irq: core 0x0819, irq 5 => 5
> [    0.112000] bcma: bus0: set_irq: core 0x0820, irq 6 => 6
> [    0.112000] bcma: bus0: set_irq: core 0x0834, irq 2 => 2
> [    0.112000] bcma: bus0: IRQ reconfiguration done
> [    0.112000] bcma: core 0x0800, irq : 2(S)* 3  4  5  6  D  I 
> [    0.112000] bcma: core 0x082c, irq : 2(S)* 3  4  5  6  D  I <-- Incorrect
> [    0.112000] bcma: core 0x0812, irq : 2(S)  3* 4  5  6  D  I 
> [    0.112000] bcma: core 0x082d, irq : 2(S)  3  4* 5  6  D  I 
> [    0.112000] bcma: core 0x0819, irq : 2(S)  3  4  5* 6  D  I 
> [    0.112000] bcma: core 0x0820, irq : 2(S)  3  4  5  6* D  I 
> [    0.112000] bcma: core 0x082e, irq : 2(S)* 3  4  5  6  D  I <-- Incorrect
> [    0.112000] bcma: core 0x080e, irq : 2(S)* 3  4  5  6  D  I <-- Incorrect
> [    0.112000] bcma: core 0x0834, irq : 2(S)* 3  4  5  6  D  I 
> [    0.116000] bcma: bus0: PCIEcore in host mode found
> 

With this patch applied I get the following on my bcm4706:

[    0.000000] bcma: bus0: Found chip with id 0x5300, rev 0x01 and
package 0x00
[    0.000000] bcma: bus0: Core 0 found: BCM4706 ChipCommon (manuf
0x4BF, id 0x500, rev 0x1F, class 0x0)
[    0.000000] bcma: bus0: Core 3 found: MIPS 74K (manuf 0x4A7, id
0x82C, rev 0x00, class 0x0)
[    1.956000] bcma: bus0: Core 1 found: BCM4706 GBit MAC (manuf 0x4BF,
id 0x52D, rev 0x00, class 0x0)
[    1.956000] bcma: bus0: Core 2 found: BCM4706 GBit MAC (manuf 0x4BF,
id 0x52D, rev 0x00, class 0x0)
[    1.956000] bcma: bus0: Core 4 found: USB 2.0 Host (manuf 0x4BF, id
0x819, rev 0x04, class 0x0)
[    1.956000] bcma: bus0: Core 5 found: PCIe (manuf 0x4BF, id 0x820,
rev 0x0E, class 0x0)
[    1.956000] bcma: bus0: Core 6 found: PCIe (manuf 0x4BF, id 0x820,
rev 0x0E, class 0x0)
[    1.956000] bcma: bus0: Core 7 found: AMEMC (DDR) (manuf 0x4BF, id
0x52E, rev 0x00, class 0x0)
[    1.956000] bcma: bus0: Core 8 found: BCM4706 SOC RAM (manuf 0x4BF,
id 0x50E, rev 0x05, class 0x0)
[    1.956000] bcma: bus0: Core 9 found: ALTA (I2S) (manuf 0x4BF, id
0x534, rev 0x00, class 0x0)
[    1.956000] bcma: bus0: Core 10 found: BCM4706 GBit MAC Common (manuf
0x43B, id 0x5DC, rev 0x00, class 0x0)
[    2.120000] bcma: bus0: Initializing MIPS core...
[    2.120000] bcma: bus0: set_irq: core 0x0820, irq 3 => 2
[    2.120000] bcma: bus0: set_irq: core 0x0819, irq 6 => 3
[    2.120000] bcma: bus0: set_irq: core 0x052d, irq 4 => 2
[    2.120000] bcma: bus0: set_irq: core 0x0820, irq 5 => 4
[    2.120000] bcma: bus0: IRQ reconfiguration done
[    2.120000] bcma: core 0x0500, irq : I  D  2(S)* 3  4  5  6
[    2.120000] bcma: core 0x082c, irq : I* D  2(S)  3  4  5  6
[    2.120000] bcma: core 0x052d, irq : I  D  2(S)* 3  4  5  6
[    2.120000] bcma: core 0x052d, irq : I  D* 2(S)  3  4  5  6
[    2.120000] bcma: core 0x0819, irq : I  D  2(S)  3* 4  5  6
[    2.120000] bcma: core 0x0820, irq : I  D  2(S)* 3  4  5  6
[    2.120000] bcma: core 0x0820, irq : I  D  2(S)  3  4* 5  6
[    2.120000] bcma: core 0x052e, irq : I  D* 2(S)  3  4  5  6
[    2.124000] bcma: core 0x050e, irq : I* D  2(S)  3  4  5  6
[    2.124000] bcma: core 0x0534, irq : I  D* 2(S)  3  4  5  6
[    2.124000] bcma: core 0x05dc, irq : I* D  2(S)  3  4  5  6

This does not look correct to me, I will change the irq code to explicit
assign the irqs based on the chip used, like it is done in the Broadcom
gpl code, currently these are just 4 cases.

Hauke
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to