diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-31 18:33:04 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-31 18:33:04 -0400 |
| commit | ec7a19bfec544aa73e347369232f9bd654954aa3 (patch) | |
| tree | ecb7317f9941f3a3976f38883bdd9df6e4f1c8f7 | |
| parent | 26847fa6eb4fd653171f86d249caa761ce1e87c7 (diff) | |
| parent | ad36cb0d1d3e2b7f161cd33932433f9349cade1e (diff) | |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Pull powerpc updates from Benjamin Herrenschmidt:
"Kumar sent me a handful of Freescale related fixes and I added another
regression fix to the pile.
PS. I -will- eventually learn about that signed tag business :-)"
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/kvm/book3s_32: Fix MTMSR_EERI macro
powerpc/85xx: p1022ds: fix DIU/LBC switching with NAND enabled
powerpc/85xx: p1022ds: disable the NAND flash node if video is enabled
powerpc/85xx: Fix sram_offset parameter type
powerpc/85xx: P3041DS - change espi input-clock from 40MHz to 35MHz
powerpc/85xx: Fix pci base address error for p2020rdb-pc in dts
| -rw-r--r-- | arch/powerpc/boot/dts/p2020rdb-pc_32b.dts | 4 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/p2020rdb-pc_36b.dts | 4 | ||||
| -rw-r--r-- | arch/powerpc/boot/dts/p3041ds.dts | 2 | ||||
| -rw-r--r-- | arch/powerpc/kvm/book3s_rmhandlers.S | 1 | ||||
| -rw-r--r-- | arch/powerpc/platforms/85xx/p1022_ds.c | 122 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h | 4 | ||||
| -rw-r--r-- | arch/powerpc/sysdev/fsl_85xx_l2ctlr.c | 39 |
7 files changed, 121 insertions, 55 deletions
diff --git a/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts b/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts index 852e5b27485d..57573bd52caa 100644 --- a/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts +++ b/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts | |||
| @@ -56,7 +56,7 @@ | |||
| 56 | ranges = <0x0 0x0 0xffe00000 0x100000>; | 56 | ranges = <0x0 0x0 0xffe00000 0x100000>; |
| 57 | }; | 57 | }; |
| 58 | 58 | ||
| 59 | pci0: pcie@ffe08000 { | 59 | pci2: pcie@ffe08000 { |
| 60 | reg = <0 0xffe08000 0 0x1000>; | 60 | reg = <0 0xffe08000 0 0x1000>; |
| 61 | status = "disabled"; | 61 | status = "disabled"; |
| 62 | }; | 62 | }; |
| @@ -76,7 +76,7 @@ | |||
| 76 | }; | 76 | }; |
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | pci2: pcie@ffe0a000 { | 79 | pci0: pcie@ffe0a000 { |
| 80 | reg = <0 0xffe0a000 0 0x1000>; | 80 | reg = <0 0xffe0a000 0 0x1000>; |
| 81 | ranges = <0x2000000 0x0 0xe0000000 0 0x80000000 0x0 0x20000000 | 81 | ranges = <0x2000000 0x0 0xe0000000 0 0x80000000 0x0 0x20000000 |
| 82 | 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; | 82 | 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; |
diff --git a/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts b/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts index b5a56ca51cf7..470247ea68b4 100644 --- a/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts +++ b/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts | |||
| @@ -56,7 +56,7 @@ | |||
| 56 | ranges = <0x0 0xf 0xffe00000 0x100000>; | 56 | ranges = <0x0 0xf 0xffe00000 0x100000>; |
| 57 | }; | 57 | }; |
| 58 | 58 | ||
| 59 | pci0: pcie@fffe08000 { | 59 | pci2: pcie@fffe08000 { |
| 60 | reg = <0xf 0xffe08000 0 0x1000>; | 60 | reg = <0xf 0xffe08000 0 0x1000>; |
| 61 | status = "disabled"; | 61 | status = "disabled"; |
| 62 | }; | 62 | }; |
| @@ -76,7 +76,7 @@ | |||
| 76 | }; | 76 | }; |
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | pci2: pcie@fffe0a000 { | 79 | pci0: pcie@fffe0a000 { |
| 80 | reg = <0xf 0xffe0a000 0 0x1000>; | 80 | reg = <0xf 0xffe0a000 0 0x1000>; |
| 81 | ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000 | 81 | ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000 |
| 82 | 0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>; | 82 | 0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>; |
diff --git a/arch/powerpc/boot/dts/p3041ds.dts b/arch/powerpc/boot/dts/p3041ds.dts index 22a215e94162..6cdcadc80c30 100644 --- a/arch/powerpc/boot/dts/p3041ds.dts +++ b/arch/powerpc/boot/dts/p3041ds.dts | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | #size-cells = <1>; | 58 | #size-cells = <1>; |
| 59 | compatible = "spansion,s25sl12801"; | 59 | compatible = "spansion,s25sl12801"; |
| 60 | reg = <0>; | 60 | reg = <0>; |
| 61 | spi-max-frequency = <40000000>; /* input clock */ | 61 | spi-max-frequency = <35000000>; /* input clock */ |
| 62 | partition@u-boot { | 62 | partition@u-boot { |
| 63 | label = "u-boot"; | 63 | label = "u-boot"; |
| 64 | reg = <0x00000000 0x00100000>; | 64 | reg = <0x00000000 0x00100000>; |
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S index ab523f3c1731..9ecf6e35cd8d 100644 --- a/arch/powerpc/kvm/book3s_rmhandlers.S +++ b/arch/powerpc/kvm/book3s_rmhandlers.S | |||
| @@ -67,7 +67,6 @@ kvmppc_skip_Hinterrupt: | |||
| 67 | #elif defined(CONFIG_PPC_BOOK3S_32) | 67 | #elif defined(CONFIG_PPC_BOOK3S_32) |
| 68 | 68 | ||
| 69 | #define FUNC(name) name | 69 | #define FUNC(name) name |
| 70 | #define MTMSR_EERI(reg) mtmsr (reg) | ||
| 71 | 70 | ||
| 72 | .macro INTERRUPT_TRAMPOLINE intno | 71 | .macro INTERRUPT_TRAMPOLINE intno |
| 73 | 72 | ||
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c index 89ee02c54561..3c732acf331d 100644 --- a/arch/powerpc/platforms/85xx/p1022_ds.c +++ b/arch/powerpc/platforms/85xx/p1022_ds.c | |||
| @@ -208,6 +208,7 @@ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) | |||
| 208 | u8 __iomem *lbc_lcs0_ba = NULL; | 208 | u8 __iomem *lbc_lcs0_ba = NULL; |
| 209 | u8 __iomem *lbc_lcs1_ba = NULL; | 209 | u8 __iomem *lbc_lcs1_ba = NULL; |
| 210 | phys_addr_t cs0_addr, cs1_addr; | 210 | phys_addr_t cs0_addr, cs1_addr; |
| 211 | u32 br0, or0, br1, or1; | ||
| 211 | const __be32 *iprop; | 212 | const __be32 *iprop; |
| 212 | unsigned int num_laws; | 213 | unsigned int num_laws; |
| 213 | u8 b; | 214 | u8 b; |
| @@ -256,11 +257,70 @@ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) | |||
| 256 | } | 257 | } |
| 257 | num_laws = be32_to_cpup(iprop); | 258 | num_laws = be32_to_cpup(iprop); |
| 258 | 259 | ||
| 259 | cs0_addr = lbc_br_to_phys(ecm, num_laws, in_be32(&lbc->bank[0].br)); | 260 | /* |
| 260 | cs1_addr = lbc_br_to_phys(ecm, num_laws, in_be32(&lbc->bank[1].br)); | 261 | * Indirect mode requires both BR0 and BR1 to be set to "GPCM", |
| 262 | * otherwise writes to these addresses won't actually appear on the | ||
| 263 | * local bus, and so the PIXIS won't see them. | ||
| 264 | * | ||
| 265 | * In FCM mode, writes go to the NAND controller, which does not pass | ||
| 266 | * them to the localbus directly. So we force BR0 and BR1 into GPCM | ||
| 267 | * mode, since we don't care about what's behind the localbus any | ||
| 268 | * more. | ||
| 269 | */ | ||
| 270 | br0 = in_be32(&lbc->bank[0].br); | ||
| 271 | br1 = in_be32(&lbc->bank[1].br); | ||
| 272 | or0 = in_be32(&lbc->bank[0].or); | ||
| 273 | or1 = in_be32(&lbc->bank[1].or); | ||
| 274 | |||
| 275 | /* Make sure CS0 and CS1 are programmed */ | ||
| 276 | if (!(br0 & BR_V) || !(br1 & BR_V)) { | ||
| 277 | pr_err("p1022ds: CS0 and/or CS1 is not programmed\n"); | ||
| 278 | goto exit; | ||
| 279 | } | ||
| 280 | |||
| 281 | /* | ||
| 282 | * Use the existing BRx/ORx values if it's already GPCM. Otherwise, | ||
| 283 | * force the values to simple 32KB GPCM windows with the most | ||
| 284 | * conservative timing. | ||
| 285 | */ | ||
| 286 | if ((br0 & BR_MSEL) != BR_MS_GPCM) { | ||
| 287 | br0 = (br0 & BR_BA) | BR_V; | ||
| 288 | or0 = 0xFFFF8000 | 0xFF7; | ||
| 289 | out_be32(&lbc->bank[0].br, br0); | ||
| 290 | out_be32(&lbc->bank[0].or, or0); | ||
| 291 | } | ||
| 292 | if ((br1 & BR_MSEL) != BR_MS_GPCM) { | ||
| 293 | br1 = (br1 & BR_BA) | BR_V; | ||
| 294 | or1 = 0xFFFF8000 | 0xFF7; | ||
| 295 | out_be32(&lbc->bank[1].br, br1); | ||
| 296 | out_be32(&lbc->bank[1].or, or1); | ||
| 297 | } | ||
| 298 | |||
| 299 | cs0_addr = lbc_br_to_phys(ecm, num_laws, br0); | ||
| 300 | if (!cs0_addr) { | ||
| 301 | pr_err("p1022ds: could not determine physical address for CS0" | ||
| 302 | " (BR0=%08x)\n", br0); | ||
| 303 | goto exit; | ||
| 304 | } | ||
| 305 | cs1_addr = lbc_br_to_phys(ecm, num_laws, br1); | ||
| 306 | if (!cs0_addr) { | ||
| 307 | pr_err("p1022ds: could not determine physical address for CS1" | ||
| 308 | " (BR1=%08x)\n", br1); | ||
| 309 | goto exit; | ||
| 310 | } | ||
| 261 | 311 | ||
| 262 | lbc_lcs0_ba = ioremap(cs0_addr, 1); | 312 | lbc_lcs0_ba = ioremap(cs0_addr, 1); |
| 313 | if (!lbc_lcs0_ba) { | ||
| 314 | pr_err("p1022ds: could not ioremap CS0 address %llx\n", | ||
| 315 | (unsigned long long)cs0_addr); | ||
| 316 | goto exit; | ||
| 317 | } | ||
| 263 | lbc_lcs1_ba = ioremap(cs1_addr, 1); | 318 | lbc_lcs1_ba = ioremap(cs1_addr, 1); |
| 319 | if (!lbc_lcs1_ba) { | ||
| 320 | pr_err("p1022ds: could not ioremap CS1 address %llx\n", | ||
| 321 | (unsigned long long)cs1_addr); | ||
| 322 | goto exit; | ||
| 323 | } | ||
| 264 | 324 | ||
| 265 | /* Make sure we're in indirect mode first. */ | 325 | /* Make sure we're in indirect mode first. */ |
| 266 | if ((in_be32(&guts->pmuxcr) & PMUXCR_ELBCDIU_MASK) != | 326 | if ((in_be32(&guts->pmuxcr) & PMUXCR_ELBCDIU_MASK) != |
| @@ -419,18 +479,6 @@ void __init p1022_ds_pic_init(void) | |||
| 419 | 479 | ||
| 420 | #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) | 480 | #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) |
| 421 | 481 | ||
| 422 | |||
