diff options
| -rw-r--r-- | arch/arm/cpu/arm926ejs/kirkwood/mpp.c | 10 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-kirkwood/mpp.h | 2 | 
2 files changed, 10 insertions, 2 deletions
| diff --git a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c index 3da6c98d1..03eb2de52 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c @@ -31,7 +31,7 @@ static u32 kirkwood_variant(void)  #define MPP_CTRL(i)	(KW_MPP_BASE + (i* 4))  #define MPP_NR_REGS	(1 + MPP_MAX/8) -void kirkwood_mpp_conf(u32 *mpp_list) +void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save)  {  	u32 mpp_ctrl[MPP_NR_REGS];  	unsigned int variant_mask; @@ -52,6 +52,7 @@ void kirkwood_mpp_conf(u32 *mpp_list)  	while (*mpp_list) {  		unsigned int num = MPP_NUM(*mpp_list);  		unsigned int sel = MPP_SEL(*mpp_list); +		unsigned int sel_save;  		int shift;  		if (num > MPP_MAX) { @@ -66,6 +67,13 @@ void kirkwood_mpp_conf(u32 *mpp_list)  		}  		shift = (num & 7) << 2; + +		if (mpp_save) { +			sel_save = (mpp_ctrl[num / 8] >> shift) & 0xf; +			*mpp_save = num | (sel_save << 8) | variant_mask; +			mpp_save++; +		} +  		mpp_ctrl[num / 8] &= ~(0xf << shift);  		mpp_ctrl[num / 8] |= sel << shift; diff --git a/arch/arm/include/asm/arch-kirkwood/mpp.h b/arch/arm/include/asm/arch-kirkwood/mpp.h index b3c090edc..8e50ee7f1 100644 --- a/arch/arm/include/asm/arch-kirkwood/mpp.h +++ b/arch/arm/include/asm/arch-kirkwood/mpp.h @@ -312,6 +312,6 @@  #define MPP_MAX			49 -void kirkwood_mpp_conf(unsigned int *mpp_list); +void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save);  #endif |