diff options
author | Olof Johansson <olof@lixom.net> | 2015-09-27 01:23:26 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2015-09-27 01:23:26 -0400 |
commit | e46fc90ec2612ef7578c6e3e28ad477a116e24da (patch) | |
tree | 99668ecce537d7381b8545e0a7b34dda4ef81935 | |
parent | b8ba826f8d9587fe830d29a0d03abb5b1e0a76e5 (diff) | |
parent | 385877c01361401113c101ef5a80a9f0998e072b (diff) |
Merge tag 'pxa-fixes-v4.3' of https://github.com/rjarzmik/linux into fixes
ARM: pxa: fixes for v4.3
These fixes are mainly regression fixes triggered by irq changes,
common clock framework introduction and sound side-effect of
other platforms.
* tag 'pxa-fixes-v4.3' of https://github.com/rjarzmik/linux:
ARM: pxa: balloon3: Fix build error
ARM: pxa: ssp: Fix build error by removing originally incorrect DT binding
ARM: pxa: fix DFI bus lockups on startup
Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r-- | arch/arm/mach-pxa/balloon3.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/include/mach/addr-map.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-pxa/pxa3xx.c | 21 | ||||
-rw-r--r-- | arch/arm/plat-pxa/ssp.c | 1 |
4 files changed, 28 insertions, 3 deletions
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index 70366b35d299..c1cda989c705 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c | |||
@@ -502,7 +502,7 @@ static void balloon3_irq_handler(unsigned int __irq, struct irq_desc *desc) | |||
502 | balloon3_irq_enabled; | 502 | balloon3_irq_enabled; |
503 | do { | 503 | do { |
504 | struct irq_data *d = irq_desc_get_irq_data(desc); | 504 | struct irq_data *d = irq_desc_get_irq_data(desc); |
505 | struct irq_chip *chip = irq_data_get_chip(d); | 505 | struct irq_chip *chip = irq_desc_get_chip(desc); |
506 | unsigned int irq; | 506 | unsigned int irq; |
507 | 507 | ||
508 | /* clear useless edge notification */ | 508 | /* clear useless edge notification */ |
diff --git a/arch/arm/mach-pxa/include/mach/addr-map.h b/arch/arm/mach-pxa/include/mach/addr-map.h index d28fe291233a..07b93fd24474 100644 --- a/arch/arm/mach-pxa/include/mach/addr-map.h +++ b/arch/arm/mach-pxa/include/mach/addr-map.h | |||
@@ -44,6 +44,13 @@ | |||
44 | */ | 44 | */ |
45 | 45 | ||
46 | /* | 46 | /* |
47 | * DFI Bus for NAND, PXA3xx only | ||
48 | */ | ||
49 | #define NAND_PHYS 0x43100000 | ||
50 | #define NAND_VIRT IOMEM(0xf6300000) | ||
51 | #define NAND_SIZE 0x00100000 | ||
52 | |||
53 | /* | ||
47 | * Internal Memory Controller (PXA27x and later) | 54 | * Internal Memory Controller (PXA27x and later) |
48 | */ | 55 | */ |
49 | #define IMEMC_PHYS 0x58000000 | 56 | #define IMEMC_PHYS 0x58000000 |
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index ce0f8d6242e2..06005d3f2ba3 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -47,6 +47,13 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int)); | |||
47 | #define ISRAM_START 0x5c000000 | 47 | #define ISRAM_START 0x5c000000 |
48 | #define ISRAM_SIZE SZ_256K | 48 | #define ISRAM_SIZE SZ_256K |
49 | 49 | ||
50 | /* | ||
51 | * NAND NFC: DFI bus arbitration subset | ||
52 | */ | ||
53 | #define NDCR (*(volatile u32 __iomem*)(NAND_VIRT + 0)) | ||
54 | #define NDCR_ND_ARB_EN (1 << 12) | ||
55 | #define NDCR_ND_ARB_CNTL (1 << 19) | ||
56 | |||
50 | static void __iomem *sram; | 57 | static void __iomem *sram; |
51 | static unsigned long wakeup_src; | 58 | static unsigned long wakeup_src; |
52 | 59 | ||
@@ -362,7 +369,12 @@ static struct map_desc pxa3xx_io_desc[] __initdata = { | |||
362 | .pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE), | 369 | .pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE), |
363 | .length = SMEMC_SIZE, | 370 | .length = SMEMC_SIZE, |
364 | .type = MT_DEVICE | 371 | .type = MT_DEVICE |
365 | } | 372 | }, { |
373 | .virtual = (unsigned long)NAND_VIRT, | ||
374 | .pfn = __phys_to_pfn(NAND_PHYS), | ||
375 | .length = NAND_SIZE, | ||
376 | .type = MT_DEVICE | ||
377 | }, | ||
366 | }; | 378 | }; |
367 | 379 | ||
368 | void __init pxa3xx_map_io(void) | 380 | void __init pxa3xx_map_io(void) |
@@ -419,6 +431,13 @@ static int __init pxa3xx_init(void) | |||
419 | */ | 431 | */ |
420 | ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); | 432 | ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); |
421 | 433 | ||
434 | /* | ||
435 | * Disable DFI bus arbitration, to prevent a system bus lock if | ||
436 | * somebody disables the NAND clock (unused clock) while this | ||
437 | * bit remains set. | ||
438 | */ | ||
439 | NDCR = (NDCR & ~NDCR_ND_ARB_EN) | NDCR_ND_ARB_CNTL; | ||
440 | |||
422 | if ((ret = pxa_init_dma(IRQ_DMA, 32))) | 441 | if ((ret = pxa_init_dma(IRQ_DMA, 32))) |
423 | return ret; | 442 | return ret; |
424 | 443 | ||
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c index ad9529cc4203..daa1a65f2eb7 100644 --- a/arch/arm/plat-pxa/ssp.c +++ b/arch/arm/plat-pxa/ssp.c | |||
@@ -107,7 +107,6 @@ static const struct of_device_id pxa_ssp_of_ids[] = { | |||
107 | { .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP }, | 107 | { .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP }, |
108 | { .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP }, | 108 | { .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP }, |
109 | { .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP }, | 109 | { .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP }, |
110 | { .compatible = "mrvl,lpss-ssp", .data = (void *) LPSS_SSP }, | ||
111 | { }, | 110 | { }, |
112 | }; | 111 | }; |
113 | MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids); | 112 | MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids); |