@@ -35,11 +35,10 @@
#include <linux/irq.h>
#include <linux/interrupt.h>
-
#include "omap_hwmod.h"
-
#include "soc.h"
#include "control.h"
+#include "id.h"
#include "mux.h"
#include "prm.h"
#include "common.h"
@@ -505,17 +504,17 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
#define OMAP_MUX_TEST_FLAG(val, mask) \
if (((val) & (mask)) == (mask)) { \
i++; \
- flags[i] = #mask; \
+ flags[i] = #mask + sizeof("OMAP_PIN_") - 1; \
}
/* REVISIT: Add checking for non-optimal mux settings */
static inline void omap_mux_decode(struct seq_file *s, u16 val)
{
char *flags[OMAP_MUX_MAX_NR_FLAGS];
- char mode[sizeof("OMAP_MUX_MODE") + 1];
+ char mode[sizeof("MODE") + 1];
int i = -1;
- sprintf(mode, "OMAP_MUX_MODE%d", val & 0x7);
+ sprintf(mode, "MODE%d", val & 0x7);
i++;
flags[i] = mode;
@@ -553,7 +552,7 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val)
}
} else {
i++;
- flags[i] = "OMAP_PIN_OUTPUT";
+ flags[i] = "OUTPUT";
}
do {
@@ -568,15 +567,26 @@ static inline void omap_mux_decode(struct seq_file *s, u16 val)
static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
{
struct omap_mux_partition *partition = s->private;
+ int pbase = (int)partition->base;
struct omap_mux_entry *e;
- u8 omap_gen = omap_rev() >> 28;
+
+ if (!(pbase & 0xfff))
+ pbase = 0x40;
+ else
+ pbase = 0;
+
+ seq_printf(s, "\t\tpinctrl-single,pins = <\n");
list_for_each_entry(e, &partition->muxmodes, node) {
struct omap_mux *m = &e->mux;
char m0_def[OMAP_MUX_DEFNAME_LEN];
char *m0_name = m->muxnames[0];
u16 val;
- int i, mode;
+ int padconf_offset, i, mode;
+
+ padconf_offset = m->reg_offset - pbase;
+ if (cpu_is_omap3630() && padconf_offset > 0x5ca)
+ continue;
if (!m0_name)
continue;
@@ -591,18 +601,14 @@ static int omap_mux_dbg_board_show(struct seq_file *s, void *unused)
}
val = omap_mux_read(partition, m->reg_offset);
mode = val & OMAP_MUX_MODE7;
- if (mode != 0)
- seq_printf(s, "/* %s */\n", m->muxnames[mode]);
-
- /*
- * XXX: Might be revisited to support differences across
- * same OMAP generation.
- */
- seq_printf(s, "OMAP%d_MUX(%s, ", omap_gen, m0_def);
+ seq_printf(s, "\t\t\t0x%x 0x%x\t/* %s.%s gpio%i ",
+ padconf_offset, val, m->muxnames[0], m->muxnames[mode], m->gpio);
omap_mux_decode(s, val);
- seq_printf(s, "),\n");
+ seq_printf(s, " */\n");
}
+ seq_printf(s, "\t\t>;\n");
+
return 0;
}