Commit 0c7fbbe1 authored by Yu Tang's avatar Yu Tang Committed by Eric Miao

ARM: pxa: fix mfpr_sync to read from valid offset

Since mfpr_mmio_base[0] is not always valid on later SoCs,
fixed mpfr_sync() to read back from valid mfp offset always.
Signed-off-by: default avatarYu Tang <ytang5@marvell.com>
Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
parent 100b33c8
...@@ -139,10 +139,11 @@ static const unsigned long mfpr_edge[] = { ...@@ -139,10 +139,11 @@ static const unsigned long mfpr_edge[] = {
#define mfp_configured(p) ((p)->config != -1) #define mfp_configured(p) ((p)->config != -1)
/* /*
* perform a read-back of any MFPR register to make sure the * perform a read-back of any valid MFPR register to make sure the
* previous writings are finished * previous writings are finished
*/ */
#define mfpr_sync() (void)__raw_readl(mfpr_mmio_base + 0) static unsigned long mfpr_off_readback;
#define mfpr_sync() (void)__raw_readl(mfpr_mmio_base + mfpr_off_readback)
static inline void __mfp_config_run(struct mfp_pin *p) static inline void __mfp_config_run(struct mfp_pin *p)
{ {
...@@ -248,6 +249,9 @@ void __init mfp_init_addr(struct mfp_addr_map *map) ...@@ -248,6 +249,9 @@ void __init mfp_init_addr(struct mfp_addr_map *map)
spin_lock_irqsave(&mfp_spin_lock, flags); spin_lock_irqsave(&mfp_spin_lock, flags);
/* mfp offset for readback */
mfpr_off_readback = map[0].offset;
for (p = map; p->start != MFP_PIN_INVALID; p++) { for (p = map; p->start != MFP_PIN_INVALID; p++) {
offset = p->offset; offset = p->offset;
i = p->start; i = p->start;
......
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