summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0039-ARM-OMAP-Mux-Fixed-debugfs-mux-output-always-reporti.patch
blob: 4ba9cf8ec3514b5dd47459bf7f05f92f5a975daf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
From e8f558360cca470b15e95e0620aa0eb6e4cc7980 Mon Sep 17 00:00:00 2001
From: Bas Laarhoven <sjml@xs4all.nl>
Date: Sun, 13 May 2012 18:09:57 +0200
Subject: [PATCH 39/79] ARM: OMAP: Mux: Fixed debugfs mux output (always
 reporting pins as output)

Signed-off-by: Bas Laarhoven <sjml@xs4all.nl>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
---
 arch/arm/mach-omap2/mux.c |   62 +++++++++++++++++++++++++++------------------
 1 file 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.10