Re: [PATCH] mtd: only use __xipram annotation when XIP_KERNEL is set

From: Arnd Bergmann
Date: Fri Mar 04 2016 - 19:25:40 EST


On Friday 04 March 2016 16:10:57 Brian Norris wrote:
> 5d284e353eb1 ARM: pxa: avoid accessing interrupt registers directly
>
> CC drivers/mtd/chips/cfi_cmdset_0002.o
> drivers/mtd/chips/cfi_cmdset_0002.c: In function âxip_udelayâ:
> drivers/mtd/chips/cfi_cmdset_0002.c:962:35: warning: initialization makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:967:8: error: âICIPâ undeclared (first use in this function)
> drivers/mtd/chips/cfi_cmdset_0002.c:967:8: note: each undeclared identifier is reported only once for each function it appears in
> drivers/mtd/chips/cfi_cmdset_0002.c:967:15: error: âICMRâ undeclared (first use in this function)
> drivers/mtd/chips/cfi_cmdset_0002.c:981:123: error: invalid operands to binary / (have âvoid *â and âintâ)
> drivers/mtd/chips/cfi_cmdset_0002.c:982:14: warning: assignment makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:984:124: error: invalid operands to binary / (have âvoid *â and âintâ)
> drivers/mtd/chips/cfi_cmdset_0002.c:1034:10: warning: assignment makes integer from pointer without a cast [enabled by default]
> drivers/mtd/chips/cfi_cmdset_0002.c:1045:118: error: invalid operands to binary / (have âvoid *â and âintâ)
>
> Looks like arch/arm/mach-pxa/include/mach/mtd-xip.h can't find ICIP or ICMR...
>

Right, I also have a workaround for that one, but found later that it
won't work. I think this is the patch that broke it five years ago:

commit 5d284e353eb11ab2e8b1c5671ba06489b0bd1e0c
Author: Eric Miao <eric.y.miao@xxxxxxxxx>
Date: Wed Apr 27 22:48:04 2011 +0800

ARM: pxa: avoid accessing interrupt registers directly

Signed-off-by: Eric Miao <eric.y.miao@xxxxxxxxx>

diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h
deleted file mode 100644
index 662288eb6f95..000000000000
--- a/arch/arm/mach-pxa/include/mach/regs-intc.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASM_MACH_REGS_INTC_H
-#define __ASM_MACH_REGS_INTC_H
-
-#include <mach/hardware.h>
-
-/*
- * Interrupt Controller
- */
-
-#define ICIP __REG(0x40D00000) /* Interrupt Controller IRQ Pending Register */
-#define ICMR __REG(0x40D00004) /* Interrupt Controller Mask Register */
-#define ICLR __REG(0x40D00008) /* Interrupt Controller Level Register */
-#define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */
-#define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */
-#define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */
-#define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */

and it's possible that nobody ever noticed...

I guess we can bring back the macros for the case that MTD_XIP and XIP_KERNEL
are both enabled.

Arnd