Kumba schrieb:
>
> The second part is the actual IP30 Patch that makes these beasts boot.
> Assuming you've already lit incense candles and sacrificed a PC to the
> MIPS Gods above.
>
> That's just one example, though. There's probably more, but I've mostly
> done forward ports, and haven't really messed with re-writing much.
> Hence why I'd like to ask others to look, poke, prod, compile, and boot,
> and see if they have other suggestions for improving and fixing this up.
I think there is a problem on SMP kernels.
In include/asm-mips/mach-ip30/heart.h
> +/* HEART internal register space */
> +#define HEART_PIU_BASE 0x900000000ff00000
> +
> +/* full addresses */
> +#define HEART_MODE ((volatile ulong *)0x900000000ff00000)
> +#define HEART_SDRAM_MODE ((volatile ulong *)0x900000000ff00008)
> +#define HEART_MEM_REF ((volatile ulong *)0x900000000ff00010)
> +#define HEART_MEM_REQ_ARB ((volatile ulong *)0x900000000ff00018)
> +#define HEART_MEMCFG0 ((volatile ulong *)0x900000000ff00020)
> +#define HEART_MEMCFG1 ((volatile ulong *)0x900000000ff00028)
> +#define HEART_MEMCFG2 ((volatile ulong *)0x900000000ff00030)
> +#define HEART_MEMCFG3 ((volatile ulong *)0x900000000ff00038)
> +#define HEART_FC_MODE ((volatile ulong *)0x900000000ff00040)
> +#define HEART_FC_TIMER_LIMIT ((volatile ulong *)0x900000000ff00048)
> +#define HEART_FC0_ADDR ((volatile ulong *)0x900000000ff00050)
> +#define HEART_FC1_ADDR ((volatile ulong *)0x900000000ff00058)
> +#define HEART_FC0_CR_CNT ((volatile ulong *)0x900000000ff00060)
> +#define HEART_FC1_CR_CNT ((volatile ulong *)0x900000000ff00068)
> +#define HEART_FC0_TIMER ((volatile ulong *)0x900000000ff00070)
> +#define HEART_FC1_TIMER ((volatile ulong *)0x900000000ff00078)
> +#define HEART_STATUS ((volatile ulong *)0x900000000ff00080)
> +#define HEART_BERR_ADDR ((volatile ulong *)0x900000000ff00088)
> +#define HEART_BERR_MISC ((volatile ulong *)0x900000000ff00090)
> +#define HEART_MEMERR_ADDR ((volatile ulong *)0x900000000ff00098)
> +#define HEART_MEMERR_DATA ((volatile ulong *)0x900000000ff000a0)
> +#define HEART_PIUR_ACC_ERR ((volatile ulong *)0x900000000ff000a8)
> +#define HEART_MLAN_CLK_DIV ((volatile ulong *)0x900000000ff000b0)
> +#define HEART_MLAN_CTL ((volatile ulong *)0x900000000ff000b8)
> +#define HEART_IMR(x) ((volatile ulong *)0x900000000ff10000 + (8 *
> (x)))
This gives a wrong address for the second IRQ Mask Register.
I schould be.
#define HEART_IMR(x) ((volatile ulong *)(0x900000000ff10000 + (8 *
(x))))
.
.
this two braces more , because without it 8*8*(x) was added to the base addr.
checked in the assembler and on a DUAL IP30.
without it it got stopped early with no output.
with it it stopped much later. sometimes i got a starting and then stopped
init.
now it goes until initcall genl_init wich is generic netlink init.
a smp kernel fully works with only one cpu in both versions.
a patch for a 2.6.20 kernel was more like my versions too.
> +#define HEART_SET_ISR ((volatile ulong *)0x900000000ff10020)
> +#define HEART_CLR_ISR ((volatile ulong *)0x900000000ff10028)
> +#define HEART_ISR ((volatile ulong *)0x900000000ff10030)
> +#define HEART_IMSR ((volatile ulong *)0x900000000ff10038)
> +#define HEART_CAUSE ((volatile ulong *)0x900000000ff10040)
> +#define HEART_COUNT ((volatile ulong *)0x900000000ff20000) /*
> 52-bit counter */
> +#define HEART_COMPARE ((volatile ulong *)0x900000000ff30000) /*
> 24-bit compare */
> +#define HEART_TRIGGER ((volatile ulong *)0x900000000ff40000)
> +#define HEART_PRID ((volatile ulong *)0x900000000ff50000)
> +#define HEART_SYNC ((volatile ulong *)0x900000000ff60000)
> Thanks!,
>
>
> --Kumba
>
|