Commit c86c676c authored by Kumar Gala's avatar Kumar Gala

Merge branch '85xx' into for_paulus

parents a147c585 45d8e7aa
...@@ -208,7 +208,7 @@ EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */ ...@@ -208,7 +208,7 @@ EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
extern long *intercept_table; extern long *intercept_table;
EXPORT_SYMBOL(intercept_table); EXPORT_SYMBOL(intercept_table);
#endif /* CONFIG_PPC_STD_MMU_32 */ #endif /* CONFIG_PPC_STD_MMU_32 */
#if defined(CONFIG_40x) || defined(CONFIG_BOOKE) #ifdef CONFIG_PPC_DCR_NATIVE
EXPORT_SYMBOL(__mtdcr); EXPORT_SYMBOL(__mtdcr);
EXPORT_SYMBOL(__mfdcr); EXPORT_SYMBOL(__mfdcr);
#endif #endif
...@@ -5,7 +5,8 @@ endif ...@@ -5,7 +5,8 @@ endif
obj-$(CONFIG_MPIC) += mpic.o obj-$(CONFIG_MPIC) += mpic.o
obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o obj-$(CONFIG_PPC_INDIRECT_PCI) += indirect_pci.o
obj-$(CONFIG_PPC_MPC106) += grackle.o obj-$(CONFIG_PPC_MPC106) += grackle.o
obj-$(CONFIG_PPC_DCR) += dcr.o dcr-low.o obj-$(CONFIG_PPC_DCR) += dcr.o
obj-$(CONFIG_PPC_DCR_NATIVE) += dcr-low.o
obj-$(CONFIG_U3_DART) += dart_iommu.o obj-$(CONFIG_U3_DART) += dart_iommu.o
obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
obj-$(CONFIG_FSL_SOC) += fsl_soc.o obj-$(CONFIG_FSL_SOC) += fsl_soc.o
......
...@@ -20,8 +20,7 @@ ...@@ -20,8 +20,7 @@
#ifndef _ASM_POWERPC_DCR_NATIVE_H #ifndef _ASM_POWERPC_DCR_NATIVE_H
#define _ASM_POWERPC_DCR_NATIVE_H #define _ASM_POWERPC_DCR_NATIVE_H
#ifdef __KERNEL__ #ifdef __KERNEL__
#ifndef __ASSEMBLY__
#include <asm/reg.h>
typedef struct {} dcr_host_t; typedef struct {} dcr_host_t;
...@@ -32,7 +31,41 @@ typedef struct {} dcr_host_t; ...@@ -32,7 +31,41 @@ typedef struct {} dcr_host_t;
#define dcr_read(host, dcr_n) mfdcr(dcr_n) #define dcr_read(host, dcr_n) mfdcr(dcr_n)
#define dcr_write(host, dcr_n, value) mtdcr(dcr_n, value) #define dcr_write(host, dcr_n, value) mtdcr(dcr_n, value)
/* Device Control Registers */
void __mtdcr(int reg, unsigned int val);
unsigned int __mfdcr(int reg);
#define mfdcr(rn) \
({unsigned int rval; \
if (__builtin_constant_p(rn)) \
asm volatile("mfdcr %0," __stringify(rn) \
: "=r" (rval)); \
else \
rval = __mfdcr(rn); \
rval;})
#define mtdcr(rn, v) \
do { \
if (__builtin_constant_p(rn)) \
asm volatile("mtdcr " __stringify(rn) ",%0" \
: : "r" (v)); \
else \
__mtdcr(rn, v); \
} while (0)
/* R/W of indirect DCRs make use of standard naming conventions for DCRs */
#define mfdcri(base, reg) \
({ \
mtdcr(base ## _CFGADDR, base ## _ ## reg); \
mfdcr(base ## _CFGDATA); \
})
#define mtdcri(base, reg, data) \
do { \
mtdcr(base ## _CFGADDR, base ## _ ## reg); \
mtdcr(base ## _CFGDATA, data); \
} while (0)
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_DCR_NATIVE_H */ #endif /* _ASM_POWERPC_DCR_NATIVE_H */
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#ifndef _ASM_POWERPC_DCR_H #ifndef _ASM_POWERPC_DCR_H
#define _ASM_POWERPC_DCR_H #define _ASM_POWERPC_DCR_H
#ifdef __KERNEL__ #ifdef __KERNEL__
#ifdef CONFIG_PPC_DCR
#ifdef CONFIG_PPC_DCR_NATIVE #ifdef CONFIG_PPC_DCR_NATIVE
#include <asm/dcr-native.h> #include <asm/dcr-native.h>
...@@ -38,5 +39,6 @@ extern unsigned int dcr_resource_len(struct device_node *np, ...@@ -38,5 +39,6 @@ extern unsigned int dcr_resource_len(struct device_node *np,
unsigned int index); unsigned int index);
#endif /* CONFIG_PPC_MERGE */ #endif /* CONFIG_PPC_MERGE */
#endif /* CONFIG_PPC_DCR */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_DCR_H */ #endif /* _ASM_POWERPC_DCR_H */
...@@ -9,41 +9,9 @@ ...@@ -9,41 +9,9 @@
#ifndef __ASM_PPC_REG_BOOKE_H__ #ifndef __ASM_PPC_REG_BOOKE_H__
#define __ASM_PPC_REG_BOOKE_H__ #define __ASM_PPC_REG_BOOKE_H__
#ifndef __ASSEMBLY__ #include <asm/dcr.h>
/* Device Control Registers */
void __mtdcr(int reg, unsigned int val);
unsigned int __mfdcr(int reg);
#define mfdcr(rn) \
({unsigned int rval; \
if (__builtin_constant_p(rn)) \
asm volatile("mfdcr %0," __stringify(rn) \
: "=r" (rval)); \
else \
rval = __mfdcr(rn); \
rval;})
#define mtdcr(rn, v) \
do { \
if (__builtin_constant_p(rn)) \
asm volatile("mtdcr " __stringify(rn) ",%0" \
: : "r" (v)); \
else \
__mtdcr(rn, v); \
} while (0)
/* R/W of indirect DCRs make use of standard naming conventions for DCRs */
#define mfdcri(base, reg) \
({ \
mtdcr(base ## _CFGADDR, base ## _ ## reg); \
mfdcr(base ## _CFGDATA); \
})
#define mtdcri(base, reg, data) \
do { \
mtdcr(base ## _CFGADDR, base ## _ ## reg); \
mtdcr(base ## _CFGDATA, data); \
} while (0)
#ifndef __ASSEMBLY__
/* Performance Monitor Registers */ /* Performance Monitor Registers */
#define mfpmr(rn) ({unsigned int rval; \ #define mfpmr(rn) ({unsigned int rval; \
asm volatile("mfpmr %0," __stringify(rn) \ asm volatile("mfpmr %0," __stringify(rn) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment