From 9b1d076de4d35f6499684b2f076ee426bc466343 Mon Sep 17 00:00:00 2001 From: Bas Laarhoven Date: Sun, 13 May 2012 18:09:57 +0200 Subject: [PATCH] ARM: OMAP: Mux: Fixed debugfs mux output (always reporting pins as output) Signed-off-by: Bas Laarhoven Signed-off-by: Koen Kooi --- arch/arm/mach-omap2/mux.c | 62 +++++++++++++++++++++++++++----------------- 1 files changed, 38 insertions(+), 24 deletions(-) diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index e1cc75d..5899266 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c @@ -522,41 +522,55 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val) i++; flags[i] = mode; - OMAP_MUX_TEST_FLAG(val, OMAP_PIN_OFF_WAKEUPENABLE); - if (val & OMAP_OFF_EN) { - if (!(val & OMAP_OFFOUT_EN)) { - if (!(val & OMAP_OFF_PULL_UP)) { - OMAP_MUX_TEST_FLAG(val, - OMAP_PIN_OFF_INPUT_PULLDOWN); + if (cpu_is_am33xx()) { + if (val & AM33XX_INPUT_EN) { + if (val & AM33XX_PULL_DISA) { + flags[ ++i] = "OMAP_PIN_INPUT"; + } else if (val & AM33XX_PULL_UP) { + flags[ ++i] = "OMAP_PIN_INPUT_PULLUP"; } else { - OMAP_MUX_TEST_FLAG(val, - OMAP_PIN_OFF_INPUT_PULLUP); + flags[ ++i] = "OMAP_PIN_INPUT_PULLDOWN"; } } else { - if (!(val & OMAP_OFFOUT_VAL)) { - OMAP_MUX_TEST_FLAG(val, - OMAP_PIN_OFF_OUTPUT_LOW); + flags[ ++i] = "OMAP_PIN_OUTPUT"; + } + } else { + OMAP_MUX_TEST_FLAG(val, OMAP_PIN_OFF_WAKEUPENABLE); + if (val & OMAP_OFF_EN) { + if (!(val & OMAP_OFFOUT_EN)) { + if (!(val & OMAP_OFF_PULL_UP)) { + OMAP_MUX_TEST_FLAG(val, + OMAP_PIN_OFF_INPUT_PULLDOWN); + } else { + OMAP_MUX_TEST_FLAG(val, + OMAP_PIN_OFF_INPUT_PULLUP); + } } else { - OMAP_MUX_TEST_FLAG(val, - OMAP_PIN_OFF_OUTPUT_HIGH); + if (!(val & OMAP_OFFOUT_VAL)) { + OMAP_MUX_TEST_FLAG(val, + OMAP_PIN_OFF_OUTPUT_LOW); + } else { + OMAP_MUX_TEST_FLAG(val, + OMAP_PIN_OFF_OUTPUT_HIGH); + } } } - } - if (val & OMAP_INPUT_EN) { - if (val & OMAP_PULL_ENA) { - if (!(val & OMAP_PULL_UP)) { - OMAP_MUX_TEST_FLAG(val, - OMAP_PIN_INPUT_PULLDOWN); + if (val & OMAP_INPUT_EN) { + if (val & OMAP_PULL_ENA) { + if (!(val & OMAP_PULL_UP)) { + OMAP_MUX_TEST_FLAG(val, + OMAP_PIN_INPUT_PULLDOWN); + } else { + OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT_PULLUP); + } } else { - OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT_PULLUP); + OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT); } } else { - OMAP_MUX_TEST_FLAG(val, OMAP_PIN_INPUT); + i++; + flags[i] = "OMAP_PIN_OUTPUT"; } - } else { - i++; - flags[i] = "OMAP_PIN_OUTPUT"; } do { -- 1.7.7.6