diff options
author | Paul Mackerras <paulus@samba.org> | 2008-04-16 17:45:35 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-16 17:45:35 -0400 |
commit | c7cd5b98072f7e04a50415b9501793bd905ecc16 (patch) | |
tree | 1c0bdbf863dcc4262abebf8dc3a4d7f5218c22b2 /arch | |
parent | e92716f2aa68cdfbf6ec24d6f31f08b072e1a246 (diff) | |
parent | 7132799b0e49c48cf119dbe02d20810860d20991 (diff) |
Merge branch 'for-2.6.26' of master.kernel.org:/pub/scm/linux/kernel/git/olof/pasemi
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/pasemi/iommu.c | 19 | ||||
-rw-r--r-- | arch/powerpc/sysdev/mpic.c | 9 |
2 files changed, 13 insertions, 15 deletions
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index 5803f11c77fc..86967bdd8774 100644 --- a/arch/powerpc/platforms/pasemi/iommu.c +++ b/arch/powerpc/platforms/pasemi/iommu.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2005-2007, PA Semi, Inc | 2 | * Copyright (C) 2005-2008, PA Semi, Inc |
3 | * | 3 | * |
4 | * Maintained by: Olof Johansson <olof@lixom.net> | 4 | * Maintained by: Olof Johansson <olof@lixom.net> |
5 | * | 5 | * |
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/abs_addr.h> | 27 | #include <asm/abs_addr.h> |
28 | #include <asm/firmware.h> | 28 | #include <asm/firmware.h> |
29 | 29 | ||
30 | |||
31 | #define IOBMAP_PAGE_SHIFT 12 | 30 | #define IOBMAP_PAGE_SHIFT 12 |
32 | #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) | 31 | #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) |
33 | #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) | 32 | #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) |
@@ -35,13 +34,13 @@ | |||
35 | #define IOB_BASE 0xe0000000 | 34 | #define IOB_BASE 0xe0000000 |
36 | #define IOB_SIZE 0x3000 | 35 | #define IOB_SIZE 0x3000 |
37 | /* Configuration registers */ | 36 | /* Configuration registers */ |
38 | #define IOBCAP_REG 0x10 | 37 | #define IOBCAP_REG 0x40 |
39 | #define IOBCOM_REG 0x40 | 38 | #define IOBCOM_REG 0x100 |
40 | /* Enable IOB address translation */ | 39 | /* Enable IOB address translation */ |
41 | #define IOBCOM_ATEN 0x00000100 | 40 | #define IOBCOM_ATEN 0x00000100 |
42 | 41 | ||
43 | /* Address decode configuration register */ | 42 | /* Address decode configuration register */ |
44 | #define IOB_AD_REG 0x53 | 43 | #define IOB_AD_REG 0x14c |
45 | /* IOBCOM_AD_REG fields */ | 44 | /* IOBCOM_AD_REG fields */ |
46 | #define IOB_AD_VGPRT 0x00000e00 | 45 | #define IOB_AD_VGPRT 0x00000e00 |
47 | #define IOB_AD_VGAEN 0x00000100 | 46 | #define IOB_AD_VGAEN 0x00000100 |
@@ -56,13 +55,13 @@ | |||
56 | #define IOB_AD_TRNG_2G 0x00000001 | 55 | #define IOB_AD_TRNG_2G 0x00000001 |
57 | #define IOB_AD_TRNG_128G 0x00000003 | 56 | #define IOB_AD_TRNG_128G 0x00000003 |
58 | 57 | ||
59 | #define IOB_TABLEBASE_REG 0x55 | 58 | #define IOB_TABLEBASE_REG 0x154 |
60 | 59 | ||
61 | /* Base of the 64 4-byte L1 registers */ | 60 | /* Base of the 64 4-byte L1 registers */ |
62 | #define IOB_XLT_L1_REGBASE 0xac0 | 61 | #define IOB_XLT_L1_REGBASE 0x2b00 |
63 | 62 | ||
64 | /* Register to invalidate TLB entries */ | 63 | /* Register to invalidate TLB entries */ |
65 | #define IOB_AT_INVAL_TLB_REG 0xb40 | 64 | #define IOB_AT_INVAL_TLB_REG 0x2d00 |
66 | 65 | ||
67 | /* The top two bits of the level 1 entry contains valid and type flags */ | 66 | /* The top two bits of the level 1 entry contains valid and type flags */ |
68 | #define IOBMAP_L1E_V 0x40000000 | 67 | #define IOBMAP_L1E_V 0x40000000 |
@@ -76,7 +75,7 @@ | |||
76 | #define IOBMAP_L2E_V 0x80000000 | 75 | #define IOBMAP_L2E_V 0x80000000 |
77 | #define IOBMAP_L2E_V_CACHED 0xc0000000 | 76 | #define IOBMAP_L2E_V_CACHED 0xc0000000 |
78 | 77 | ||
79 | static u32 __iomem *iob; | 78 | static void __iomem *iob; |
80 | static u32 iob_l1_emptyval; | 79 | static u32 iob_l1_emptyval; |
81 | static u32 iob_l2_emptyval; | 80 | static u32 iob_l2_emptyval; |
82 | static u32 *iob_l2_base; | 81 | static u32 *iob_l2_base; |
@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn) | |||
219 | for (i = 0; i < 64; i++) { | 218 | for (i = 0; i < 64; i++) { |
220 | /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ | 219 | /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ |
221 | regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); | 220 | regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); |
222 | out_le32(iob+IOB_XLT_L1_REGBASE+i, regword); | 221 | out_le32(iob+IOB_XLT_L1_REGBASE+i*4, regword); |
223 | } | 222 | } |
224 | 223 | ||
225 | /* set 2GB translation window, based at 0 */ | 224 | /* set 2GB translation window, based at 0 */ |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 6131fd2b6619..8619f2a3f1f6 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -1410,11 +1410,6 @@ void mpic_cpu_set_priority(int prio) | |||
1410 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); | 1410 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), prio); |
1411 | } | 1411 | } |
1412 | 1412 | ||
1413 | /* | ||
1414 | * XXX: someone who knows mpic should check this. | ||
1415 | * do we need to eoi the ipi including for kexec cpu here (see xics comments)? | ||
1416 | * or can we reset the mpic in the new kernel? | ||
1417 | */ | ||
1418 | void mpic_teardown_this_cpu(int secondary) | 1413 | void mpic_teardown_this_cpu(int secondary) |
1419 | { | 1414 | { |
1420 | struct mpic *mpic = mpic_primary; | 1415 | struct mpic *mpic = mpic_primary; |
@@ -1434,6 +1429,10 @@ void mpic_teardown_this_cpu(int secondary) | |||
1434 | 1429 | ||
1435 | /* Set current processor priority to max */ | 1430 | /* Set current processor priority to max */ |
1436 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); | 1431 | mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf); |
1432 | /* We need to EOI the IPI since not all platforms reset the MPIC | ||
1433 | * on boot and new interrupts wouldn't get delivered otherwise. | ||
1434 | */ | ||
1435 | mpic_eoi(mpic); | ||
1437 | 1436 | ||
1438 | spin_unlock_irqrestore(&mpic_lock, flags); | 1437 | spin_unlock_irqrestore(&mpic_lock, flags); |
1439 | } | 1438 | } |