Skip to contentSkip to conversation

Enabling spidev in MCSPI1

PATCH Philip Balister 3 participants 4 messages Jan 13, 2010 – Jan 15, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

I'm trying to enable spidev on mcspi1, but when I do, the kernel while booting after the kernel is uncompressed. No useful messages are displayed. This is with a current git.

I've attached the diff I use to add the spi driver to the board file. (OVero + Summit).

With the #if 0 inplace the kernel boots, enable that code and it fails.

+#if 0
+ spi_register_board_info(overo_mcspi_board_info,
+ ARRAY_SIZE(overo_mcspi_board_info));
+#endif

Does anyone see anything obviously wrong with what I am doing?

Philip

arch/arm/mach-omap2/board-overo.c +16 -1
index d192dd9..804d88f 100644
@@ -33,6 +33,8 @@
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
 
+#include <linux/spi/spi.h>
+
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
@@ -184,6 +186,16 @@ static inline void __init overo_init_smsc911x(void)
 static inline void __init overo_init_smsc911x(void) { return; }
 #endif
 
+static struct spi_board_info overo_mcspi_board_info[] = {
+	{
+		.modalias	= "spidev",
+		.max_speed_hz	= 12000000, // 12 MHz
+		.bus_num	= 1,
+		.chip_select	= 0,
+		.mode		= SPI_MODE_1,
+	},
+};
+
 static struct mtd_partition overo_nand_partitions[] = {
 	{
 		.name           = "xloader",
@@ -424,7 +436,10 @@ static void __init overo_init(void)
 	usb_ehci_init(&ehci_pdata);
 	overo_ads7846_init();
 	overo_init_smsc911x();
-
+#if 0
+	spi_register_board_info(overo_mcspi_board_info,
+		ARRAY_SIZE(overo_mcspi_board_info));
+#endif
 	/* Ensure SDRC pins are mux'd for self-refresh */
 	omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
 	omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
#1 lore raw
Quoted 14 lines

I'm trying to enable spidev on mcspi1, but when I do, the kernel while booting after the kernel is uncompressed. No useful messages are displayed. This is with a current git.

I've attached the diff I use to add the spi driver to the board file. (OVero + Summit).

With the #if 0 inplace the kernel boots, enable that code and it fails.

arch/arm/mach-omap2/board-overo.c +4 -0
+#if 0
+       spi_register_board_info(overo_mcspi_board_info,
+               ARRAY_SIZE(overo_mcspi_board_info));
+#endif
Quoted 2 lines

Does anyone see anything obviously wrong with what I am doing?

Is SPI1 also used for touchscreen on your board, if so it might be conflicting

#2 lore raw
In reply to Philip Balister

Hi Philip,

Quoted 6 lines · Philip Balister

I'm trying to enable spidev on mcspi1, but when I do, the kernel while booting after the kernel is uncompressed. No useful messages are displayed. This is with a current git.

I've attached the diff I use to add the spi driver to the board file. (OVero + Summit).

Maybe try enabling early printk support if you haven't already?

http://www.mail-archive.com/[email protected]/msg21017.html

- Paul

#3 lore raw
Quoted 8 lines · Paul Walmsley

Hi Philip,

Quoted 4 lines · Philip Balister

I'm trying to enable spidev on mcspi1, but when I do, the kernel while booting after the kernel is uncompressed. No useful messages are displayed. This is with a current git.

Quoted 6 lines
Quoted 2 lines

I've attached the diff I use to add the spi driver to the board file. (OVero + Summit).

Maybe try enabling early printk support if you haven't already?

http://www.mail-archive.com/[email protected]/msg21017.html

I think the early printk stuff was stopping me seeing the message ....

Unfortunately, I found the conflicting driver, the 7846 touchscreen driver, and disabled it, so the kernel boots again. (Before I could boot with debugging messages enabled)

I suspect the kernel should not crash if two drivers try to claim the spi device. If someone is interested, I can reanable the bad configuration and try to collect better data.

Philip