You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
MN10300: And Panasonic AM34 subarch and implement SMP
Implement the Panasonic MN10300 AM34 CPU subarch and implement SMP support for MN10300. Also implement support for the MN2WS0060 processor and the ASB2364 evaluation board which are AM34 based. Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: Kiyoshi Owada <owada.kiyoshi@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
committed by
David Howells
parent
04157a6e7d
commit
368dd5acd1
@@ -13,6 +13,4 @@
|
||||
|
||||
#include <unit/clock.h>
|
||||
|
||||
#define MN10300_WDCLK MN10300_IOCLK
|
||||
|
||||
#endif /* _ASM_PROC_CLOCK_H */
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef _ASM_PROC_INTCTL_REGS_H
|
||||
#define _ASM_PROC_INTCTL_REGS_H
|
||||
|
||||
#ifndef _ASM_INTCTL_REGS_H
|
||||
# error "please don't include this file directly"
|
||||
#endif
|
||||
|
||||
/* intr acceptance group reg */
|
||||
#define IAGR __SYSREG(0xd4000100, u16)
|
||||
|
||||
/* group number register */
|
||||
#define IAGR_GN 0x00fc
|
||||
|
||||
#define __GET_XIRQ_TRIGGER(X, Z) (((Z) >> ((X) * 2)) & 3)
|
||||
|
||||
#define __SET_XIRQ_TRIGGER(X, Y, Z) \
|
||||
({ \
|
||||
typeof(Z) x = (Z); \
|
||||
x &= ~(3 << ((X) * 2)); \
|
||||
x |= ((Y) & 3) << ((X) * 2); \
|
||||
(Z) = x; \
|
||||
})
|
||||
|
||||
/* external pin intr spec reg */
|
||||
#define EXTMD __SYSREG(0xd4000200, u16)
|
||||
#define GET_XIRQ_TRIGGER(X) __GET_XIRQ_TRIGGER(X, EXTMD)
|
||||
#define SET_XIRQ_TRIGGER(X, Y) __SET_XIRQ_TRIGGER(X, Y, EXTMD)
|
||||
|
||||
#endif /* _ASM_PROC_INTCTL_REGS_H */
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/fpu.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/busctl-regs.h>
|
||||
|
||||
/*
|
||||
* initialise the on-silicon processor peripherals
|
||||
@@ -75,3 +76,37 @@ asmlinkage void __init processor_init(void)
|
||||
|
||||
calibrate_clock();
|
||||
}
|
||||
|
||||
/*
|
||||
* determine the memory size and base from the memory controller regs
|
||||
*/
|
||||
void __init get_mem_info(unsigned long *mem_base, unsigned long *mem_size)
|
||||
{
|
||||
unsigned long base, size;
|
||||
|
||||
*mem_base = 0;
|
||||
*mem_size = 0;
|
||||
|
||||
base = SDBASE(0);
|
||||
if (base & SDBASE_CE) {
|
||||
size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT;
|
||||
size = ~size + 1;
|
||||
base &= SDBASE_CBA;
|
||||
|
||||
printk(KERN_INFO "SDRAM[0]: %luMb @%08lx\n", size >> 20, base);
|
||||
*mem_size += size;
|
||||
*mem_base = base;
|
||||
}
|
||||
|
||||
base = SDBASE(1);
|
||||
if (base & SDBASE_CE) {
|
||||
size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT;
|
||||
size = ~size + 1;
|
||||
base &= SDBASE_CBA;
|
||||
|
||||
printk(KERN_INFO "SDRAM[1]: %luMb @%08lx\n", size >> 20, base);
|
||||
*mem_size += size;
|
||||
if (*mem_base == 0)
|
||||
*mem_base = base;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user