linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: N900 device tree conversion: how to do first step
Date: Thu, 13 Jun 2013 09:14:20 -0700	[thread overview]
Message-ID: <20130613161418.GJ8164@atomide.com> (raw)
In-Reply-To: <20130613155240.GB3775@amd.pavel.ucw.cz>

* Pavel Machek <pavel@ucw.cz> [130613 08:58]:
> Hi!
> 
> > * Pavel Machek <pavel@ucw.cz> [130613 07:34]:
> > > On Thu 2013-06-13 07:10:01, Tony Lindgren wrote:
> > > > * Pavel Machek <pavel@ucw.cz> [130613 06:32]:
> > > >  
> > > > > If I init spi manually (and some more hacks), it works in the
> > > > > qemu. But I have not tested on real hw for a while.
> > > > 
> > > > You should be able to initialize spi by adding the .dts entry,
> > > > or is there something missing in drivers/spi/spi-omap2-mcspi.c?
> > > 
> > > Not sure, I guess I'll find out soon. Do you have example dts that
> > > uses drivers/spi/spi-omap2-mcspi.c? Grepping spi in dts/ was not too
> > > successful.
> > 
> > Hmm I think all we have is what's written in
> > Documentation/devicetree/bindings/spi/omap-spi.txt and
> > omap4-sdp.dts.
> 
> Ok, this was easier than expected.

Cool.
 
> Now, by chance, any idea what is DT equivalent of 
> 
> omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);

You can try the attached hack after calling the above to grep for
pins in /sys/kernel/debug/omap_mux/board/core and you get the pins
in DT suitable format. There's a bug where the the pins are not
correctly split between core and wkup domains in the legacy mux fwk,
but you probably won't need to mux many wkup domain pins.

Then you just need to add the pinctr-single entries for each device,
but AFAIK most of the pins are muxed correctly in the bootloader
for the Nokia boards.
 
> (Plus I'll still have to figure out why it works on emulator but not
> on hw).

Might be the muxing..

Regards,

Tony


From: Tony Lindgren <tony@atomide.com>
Date: Fri, 7 Jun 2013 08:54:59 -0700
Subject: [PATCH] Not for merging: Allows dumping out mux entries in .dts format using legacy mux

For pinctrl-single.c we should eventually have a user space
app to configure and display pin settings. Meanwhile, allow
using the legacy mux interface to do that:

# mount -t debugfs debugfs /sys/kernel/debug
# cat /sys/kernel/debug/omap_mux/board/wkup | grep fref_clk0_out
	0x14 0x2        /* fref_clk0_out.sys_drm_msecure gpio6 OUTPUT | MODE2 */

diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index 48094b58..6f5224a 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -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;
 }
 

  reply	other threads:[~2013-06-13 16:14 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-09  1:59 N900 device tree conversion: how to do first step Pavel Machek
2013-06-09  9:24 ` Pali Rohár
2013-06-09 16:47   ` Pavel Machek
2013-06-09 17:03     ` Pali Rohár
2013-06-09 17:30 ` Pavel Machek
2013-06-09 20:11 ` Aaro Koskinen
2013-06-13 13:26   ` Pavel Machek
2013-06-13 14:10     ` Tony Lindgren
2013-06-13 14:28       ` Pavel Machek
2013-06-13 14:57         ` Tony Lindgren
2013-06-13 15:52           ` Pavel Machek
2013-06-13 16:14             ` Tony Lindgren [this message]
2013-06-13 23:08               ` Pavel Machek
2013-06-14  5:56                 ` Tony Lindgren
2013-06-14 21:28                   ` Pavel Machek
2013-06-17 11:10                     ` Tony Lindgren
2013-07-01 14:03                       ` [PATCH] N900: fix operation on emulator Pavel Machek
2013-07-01 18:22                         ` Sergei Shtylyov
2013-07-01 19:51                           ` Pavel Machek
2013-07-01 20:00                             ` Sergei Shtylyov
2013-07-01 20:53                           ` Pavel Machek
2013-07-01 21:15                       ` [PATCH] N900: enable N900-specific drivers even if device tree is enabled Pavel Machek
2013-07-04 11:47                         ` Tony Lindgren
2013-07-01 21:17                       ` [PATCH] N900: add device tree Pavel Machek
2013-07-04 17:19                         ` Aaro Koskinen
2013-07-04 20:21                           ` Pavel Machek
2013-07-04 20:32                             ` Aaro Koskinen
2013-07-13 12:17                               ` [PATCH v2] " Pavel Machek
2013-07-14 22:28                                 ` Aaro Koskinen
2013-07-28 13:44                                   ` Pavel Machek
2013-08-01 23:43                                     ` Pavel Machek
2013-08-10 11:09                                       ` Pavel Machek
2013-08-10 11:27                                         ` [PATCH] ARM: dts: omap3 / n900 support, Benoit please take me (was Re: [PATCH v2] N900: add device tree) Pavel Machek
2013-08-10 11:46                                         ` [PATCH v2] N900: add device tree Belisko Marek
2013-08-10 20:29                                           ` Jiri Kosina
2013-08-11  0:55                                             ` OMAP device tree maintainance (was Re: [PATCH v2] N900: add device tree) Pavel Machek
2013-08-11 11:50                                             ` [PATCH v2] N900: add device tree Javier Martinez Canillas
2013-08-11 13:47                                               ` Pavel Machek
2013-08-12  7:37                                                 ` Tony Lindgren
2013-08-12  7:36                                             ` Tony Lindgren
2013-08-11 15:02                                 ` Javier Martinez Canillas
2013-08-13 10:50                                   ` Benoit Cousson
2013-08-13 13:36                                     ` [PATCH v3] " Pavel Machek
2013-08-13 14:06                                       ` Benoit Cousson
2013-07-19 18:14 ` N900 device tree conversion: how to do first step Sebastian Reichel
2013-07-28 13:37   ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130613161418.GJ8164@atomide.com \
    --to=tony@atomide.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).