SPI trouble on Colibri 270 (PXA)...
Marek Vasut
marek.vasut at gmail.com
Wed Apr 21 05:44:41 EDT 2010
Dne Út 20. dubna 2010 17:20:37 Jakob Viketoft napsal(a):
> Eric Miao wrote:
> > On Tue, Apr 20, 2010 at 7:58 PM, Jakob Viketoft <jakob at viketoft.se> wrote:
> <...>
>
> >> I haven't seen any other board using the same combination (the m25p80
> >> and the pxa2xx), but I'm still opting for an error on my part
> >> somewhere. I've attached my SPI configuration (board setup) in the end
> >> of the mail.
> >
> > Not looked into m25p80 code, but CS is normally asserted before a
> > transfer begins and deasserted after a transfer is done. I doubt there
> > are some cases where the transfer is not set up correctly.
>
> Well, in this case when doing a read you must set up a write transfer to
> write the read command + address and then a read transfer to actually
> read back the data. In this case the cs musn't be deasserted between
> transfers because this means the operation is terminated.
>
> > Actually, cs_assert() and cs_deassert() are there in pxa2xx_spi.c as two
> > very good debugging point to print out the transfer information to see
> > if they are setup correctly.
>
> When I look at how these two are used I get a an serie of assert,
> assert, deassert for each read operation (which should be correct
> behaviour). This suggests that something else is deasserting the cs or
> that the CPU is doing something on it's own accord. Hmmm...
>
> Regards,
>
> /Jakob
>
You can try using gpio-spi driver as used in palmz72.c ... I had issues with
pxa2xx-spi interfacing the OV96xx camera, but it worked well for me with gpio-
spi.
Looking at it now, it seems the patch was never merged, here's a shortened
version, try something similar:
From 777212ce6d3bacea76281aa3d74839a3c38b32a4 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marek.vasut at gmail.com>
Date: Sat, 22 Aug 2009 05:15:10 +0200
Subject: [PATCH 3/3] PalmZ72: Add support for OV9640 camera sensor
Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
---
arch/arm/mach-pxa/include/mach/palmz72.h | 5 +
arch/arm/mach-pxa/palmz72.c | 126
+++++++++++++++++++++++++++++-
2 files changed, 130 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index c3645aa..e4449ad 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -30,6 +30,7 @@
#include <linux/wm97xx_batt.h>
#include <linux/power_supply.h>
#include <linux/usb/gpio_vbus.h>
+#include <linux/i2c-gpio.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -120,6 +123,28 @@ static unsigned long palmz72_pin_config[] __initdata = {
GPIO22_GPIO, /* LCD border color */
GPIO96_GPIO, /* lcd power */
+ /* I2C */
+ GPIO117_GPIO, /* I2C_SCL */
+ GPIO118_GPIO, /* I2C_SDA */
+static struct i2c_gpio_platform_data palmz72_i2c_bus_data = {
+ .sda_pin = 118,
+ .scl_pin = 117,
+ .udelay = 10,
+ .timeout = 100,
+};
+
+static struct platform_device palmz72_i2c_bus_device = {
+ .name = "i2c-gpio",
+ .id = 0, /* we use this as a replacement for i2c-pxa */
+ .dev = {
+ .platform_data = &palmz72_i2c_bus_data,
+ }
+};
#ifdef CONFIG_PM
/* We have some black magic here
@@ -576,6 +665,8 @@ static struct platform_device *devices[] __initdata = {
&palmz72_asoc,
&power_supply,
&palmz72_gpio_vbus,
+ &palmz72_i2c_bus_device,
};
More information about the linux-arm-kernel
mailing list