Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c18f65816ef80b67eb4511ed8359c2dfcd69680d
Commit:     c18f65816ef80b67eb4511ed8359c2dfcd69680d
Parent:     a9a424ce9a209155f3d4b9f8ceba50cdebb7769b
Author:     Krzysztof Halasa <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 18 03:53:27 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Mon Feb 4 13:15:25 2008 +0000

    [ARM] 4712/2: Adds functions to read and write IXP4xx "feature" bits
    
    Adds functions to read and write IXP4xx "feature" (aka "fuse")
    bits, containing information about available/enabled CPU features.
    
    The uncompress.h included by boot/compressed/misc.c resides in
    a different space than rest of the kernel and thus can't use
    asm/hardware.h (including asm/arch/cpu.h - which, in turn, may use
    EXPORTed symbol "processor_id").
    
    Posted to linux-arm-kernel on 2 Dec 2007 and revised.
    
    Signed-off-by: Krzysztof Halasa <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/kernel/setup.c                   |    1 +
 include/asm-arm/arch-ixp4xx/cpu.h         |   15 ++++++++++++
 include/asm-arm/arch-ixp4xx/hardware.h    |    6 ++--
 include/asm-arm/arch-ixp4xx/ixp4xx-regs.h |   36 +++++++++++++++++++++++++---
 include/asm-arm/arch-ixp4xx/uncompress.h  |    2 +-
 5 files changed, 52 insertions(+), 8 deletions(-)

diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index bf56eb3..dd37901 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -62,6 +62,7 @@ extern int root_mountflags;
 extern void _stext, _text, _etext, __data_start, _edata, _end;
 
 unsigned int processor_id;
+EXPORT_SYMBOL(processor_id);
 unsigned int __machine_arch_type;
 EXPORT_SYMBOL(__machine_arch_type);
 
diff --git a/include/asm-arm/arch-ixp4xx/cpu.h 
b/include/asm-arm/arch-ixp4xx/cpu.h
index d2523b3..2fa3d6b 100644
--- a/include/asm-arm/arch-ixp4xx/cpu.h
+++ b/include/asm-arm/arch-ixp4xx/cpu.h
@@ -28,4 +28,19 @@ extern unsigned int processor_id;
 #define cpu_is_ixp46x()        ((processor_id & IXP4XX_PROCESSOR_ID_MASK) == \
                          IXP465_PROCESSOR_ID_VALUE)
 
+static inline u32 ixp4xx_read_feature_bits(void)
+{
+       unsigned int val = ~*IXP4XX_EXP_CFG2;
+       val &= ~IXP4XX_FEATURE_RESERVED;
+       if (!cpu_is_ixp46x())
+               val &= ~IXP4XX_FEATURE_IXP46X_ONLY;
+
+       return val;
+}
+
+static inline void ixp4xx_write_feature_bits(u32 value)
+{
+       *IXP4XX_EXP_CFG2 = ~value;
+}
+
 #endif  /* _ASM_ARCH_CPU_H */
diff --git a/include/asm-arm/arch-ixp4xx/hardware.h 
b/include/asm-arm/arch-ixp4xx/hardware.h
index 297ceda..73e8dc3 100644
--- a/include/asm-arm/arch-ixp4xx/hardware.h
+++ b/include/asm-arm/arch-ixp4xx/hardware.h
@@ -27,13 +27,13 @@
 
 #define pcibios_assign_all_busses()    1
 
+/* Register locations and bits */
+#include "ixp4xx-regs.h"
+
 #ifndef __ASSEMBLER__
 #include <asm/arch/cpu.h>
 #endif
 
-/* Register locations and bits */
-#include "ixp4xx-regs.h"
-
 /* Platform helper functions and definitions */
 #include "platform.h"
 
diff --git a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h 
b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
index 5d949d7..c704fe8 100644
--- a/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
+++ b/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
@@ -15,10 +15,6 @@
  *
  */
 
-#ifndef __ASM_ARCH_HARDWARE_H__
-#error "Do not include this directly, instead #include <asm/hardware.h>"
-#endif
-
 #ifndef _ASM_ARM_IXP4XX_H_
 #define _ASM_ARM_IXP4XX_H_
 
@@ -607,4 +603,36 @@
 
 #define DCMD_LENGTH    0x01fff         /* length mask (max = 8K - 1) */
 
+/* "fuse" bits of IXP_EXP_CFG2 */
+#define IXP4XX_FEATURE_RCOMP           (1 << 0)
+#define IXP4XX_FEATURE_USB_DEVICE      (1 << 1)
+#define IXP4XX_FEATURE_HASH            (1 << 2)
+#define IXP4XX_FEATURE_AES             (1 << 3)
+#define IXP4XX_FEATURE_DES             (1 << 4)
+#define IXP4XX_FEATURE_HDLC            (1 << 5)
+#define IXP4XX_FEATURE_AAL             (1 << 6)
+#define IXP4XX_FEATURE_HSS             (1 << 7)
+#define IXP4XX_FEATURE_UTOPIA          (1 << 8)
+#define IXP4XX_FEATURE_NPEB_ETH0       (1 << 9)
+#define IXP4XX_FEATURE_NPEC_ETH                (1 << 10)
+#define IXP4XX_FEATURE_RESET_NPEA      (1 << 11)
+#define IXP4XX_FEATURE_RESET_NPEB      (1 << 12)
+#define IXP4XX_FEATURE_RESET_NPEC      (1 << 13)
+#define IXP4XX_FEATURE_PCI             (1 << 14)
+#define IXP4XX_FEATURE_ECC_TIMESYNC    (1 << 15)
+#define IXP4XX_FEATURE_UTOPIA_PHY_LIMIT        (3 << 16)
+#define IXP4XX_FEATURE_USB_HOST                (1 << 18)
+#define IXP4XX_FEATURE_NPEA_ETH                (1 << 19)
+#define IXP4XX_FEATURE_NPEB_ETH_1_TO_3 (1 << 20)
+#define IXP4XX_FEATURE_RSA             (1 << 21)
+#define IXP4XX_FEATURE_XSCALE_MAX_FREQ (3 << 22)
+#define IXP4XX_FEATURE_RESERVED                (0xFF << 24)
+
+#define IXP4XX_FEATURE_IXP46X_ONLY (IXP4XX_FEATURE_ECC_TIMESYNC |      \
+                                   IXP4XX_FEATURE_USB_HOST |           \
+                                   IXP4XX_FEATURE_NPEA_ETH |           \
+                                   IXP4XX_FEATURE_NPEB_ETH_1_TO_3 |    \
+                                   IXP4XX_FEATURE_RSA |                \
+                                   IXP4XX_FEATURE_XSCALE_MAX_FREQ)
+
 #endif
diff --git a/include/asm-arm/arch-ixp4xx/uncompress.h 
b/include/asm-arm/arch-ixp4xx/uncompress.h
index f7a35b7..34ef48f 100644
--- a/include/asm-arm/arch-ixp4xx/uncompress.h
+++ b/include/asm-arm/arch-ixp4xx/uncompress.h
@@ -13,7 +13,7 @@
 #ifndef _ARCH_UNCOMPRESS_H_
 #define _ARCH_UNCOMPRESS_H_
 
-#include <asm/hardware.h>
+#include "ixp4xx-regs.h"
 #include <asm/mach-types.h>
 #include <linux/serial_reg.h>
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to