* problem with converting from at91_spi to atmel_spi (AT91RM9200)
@ 2007-05-23 11:34 Ivan Kuten
2007-05-23 16:06 ` David Brownell
0 siblings, 1 reply; 18+ messages in thread
From: Ivan Kuten @ 2007-05-23 11:34 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
andrew-eS41wJS13H5l57MIdRCFDg
Hello,
I'm trying to convert from legacy at91_spi to newer atmel_spi driver in my board.
Linux kernel 2.6.22rc2 + corresponding patch from maxim.org.za/at91_26.html
board specific spi info :
static struct spi_board_info chub_spi_devices[] = {
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
},
};
snip from .config:
CONFIG_MTD_DATAFLASH=y
#
# SPI support
#
CONFIG_SPI=y
CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_ATMEL=y
# CONFIG_SPI_BITBANG is not set
CONFIG_SPI_AT91_MANUAL_CS=y
#
# SPI Protocol Masters
#
# CONFIG_SPI_AT25 is not set
# CONFIG_SPI_SPIDEV is not set
While boot, the board stumbles on SPI initialization:
Uncompressing Linux....................................................................... done, booting the kernel.
Linux version 2.6.22-rc1 (vano@newbox) (gcc version 3.4.2) #12 Wed May 23 14:05:30 EEST 2007
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
Machine: Promwad Chub
---snip----
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9a)
eth0: National Semiconductor DP83848 PHY
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 1 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x04000000 : "NAND Partition 1"
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffe0000 (irq 13)
Not booting further. Timer led is still blinking. Is atmel_spi usable?
I have working setup on 2.6.20 + corresponding patch from maxim.org.za/at91_26.html + legacy "at91_dataflash" + legacy "at91_spi"
Best regards, Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-23 11:34 problem with converting from at91_spi to atmel_spi (AT91RM9200) Ivan Kuten
@ 2007-05-23 16:06 ` David Brownell
[not found] ` <200705230906.13353.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
0 siblings, 1 reply; 18+ messages in thread
From: David Brownell @ 2007-05-23 16:06 UTC (permalink / raw)
To: Ivan Kuten
Cc: Bill Gatliff, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
Nicolas Ferre, Haavard Skinnemoen, andrew-eS41wJS13H5l57MIdRCFDg
On Wednesday 23 May 2007, Ivan Kuten wrote:
>
> Hello,
>
> I'm trying to convert from legacy at91_spi to newer atmel_spi driver in my board.
> Linux kernel 2.6.22rc2 + corresponding patch from maxim.org.za/at91_26.html
This is AT91rm9200, yes?
> board specific spi info :
>
> static struct spi_board_info chub_spi_devices[] = {
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> .chip_select = 0,
Chipselect zero ... I've had one report that this driver has some issues
on that chipselect. There seem to be two errata in conflict here:
- One saying that when the controller manages chipselects, it
does so incorrectly ... releasing it before it's told to do so,
which prematurely terminates transactions. ("NPCSx rises if
no data is to be transmitted")
- Another saying that if it does *not* manage chipselects, then
broken mode fault detect logic kicks in; this could be what
you're seeing. ("Mode Fault does not allow more than one
master on Chip Select 0")
I've CC'd the relevant folk from Atmel. Seems that maybe rm9200
needs to have a special case whereby chipselect zero is managed
by the hardware despite the first erratum. And maybe that because
of that erratum, the DMA chaining needs to be made to work... else
root-on-dataflash won't behave. (Or some other workaround.)
- Dave
> .max_speed_hz = 15 * 1000 * 1000,
> },
> };
>
> snip from .config:
>
> CONFIG_MTD_DATAFLASH=y
>
> #
> # SPI support
> #
> CONFIG_SPI=y
> CONFIG_SPI_DEBUG=y
> CONFIG_SPI_MASTER=y
>
> #
> # SPI Master Controller Drivers
> #
> CONFIG_SPI_ATMEL=y
> # CONFIG_SPI_BITBANG is not set
> CONFIG_SPI_AT91_MANUAL_CS=y
> #
> # SPI Protocol Masters
> #
> # CONFIG_SPI_AT25 is not set
> # CONFIG_SPI_SPIDEV is not set
>
> While boot, the board stumbles on SPI initialization:
>
> Uncompressing Linux....................................................................... done, booting the kernel.
> Linux version 2.6.22-rc1 (vano@newbox) (gcc version 3.4.2) #12 Wed May 23 14:05:30 EEST 2007
> CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
> Machine: Promwad Chub
> ---snip----
> eth0: Link now 100-FullDuplex
> eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9a)
> eth0: National Semiconductor DP83848 PHY
> NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
> Scanning device for bad blocks
> Creating 1 MTD partitions on "NAND 64MiB 3,3V 8-bit":
> 0x00000000-0x04000000 : "NAND Partition 1"
> atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffe0000 (irq 13)
>
> Not booting further. Timer led is still blinking. Is atmel_spi usable?
> I have working setup on 2.6.20 + corresponding patch from
> maxim.org.za/at91_26.html + legacy "at91_dataflash" + legacy "at91_spi"
>
> Best regards, Ivan
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <200705230906.13353.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
@ 2007-05-23 16:29 ` Ivan Kuten
2007-05-24 11:36 ` Haavard Skinnemoen
2007-05-24 15:27 ` Ivan Kuten
2 siblings, 0 replies; 18+ messages in thread
From: Ivan Kuten @ 2007-05-23 16:29 UTC (permalink / raw)
To: David Brownell
Cc: Nicolas Ferre, Bill Gatliff, Skinnemoen,
Haavard-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk,
andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Hi David,
>
> This is AT91rm9200, yes?
>
Correct, it's AT91RM9200.
While trying to catch your thought regarding chip selects & errata, I just note
that in mach-at91/*.c there are some boards which use dataflash and "mtd_dataflash" driver with
SPI chip select 0, for example board-ek.c, board-carmeva.c, board-dk.c. I can't believe
all of them has non-working dataflash (certainly at they was tested).
Best regards, Ivan
On Wed, 23 May 2007 09:06:12 -0700
David Brownell wrote:
> On Wednesday 23 May 2007, Ivan Kuten wrote:
> >
> > Hello,
> >
> > I'm trying to convert from legacy at91_spi to newer atmel_spi driver in my board.
> > Linux kernel 2.6.22rc2 + corresponding patch from maxim.org.za/at91_26.html
>
> This is AT91rm9200, yes?
>
>
> > board specific spi info :
> >
> > static struct spi_board_info chub_spi_devices[] = {
> > { /* DataFlash chip */
> > .modalias = "mtd_dataflash",
> > .chip_select = 0,
>
> Chipselect zero ... I've had one report that this driver has some issues
> on that chipselect. There seem to be two errata in conflict here:
>
> - One saying that when the controller manages chipselects, it
> does so incorrectly ... releasing it before it's told to do so,
> which prematurely terminates transactions. ("NPCSx rises if
> no data is to be transmitted")
>
> - Another saying that if it does *not* manage chipselects, then
> broken mode fault detect logic kicks in; this could be what
> you're seeing. ("Mode Fault does not allow more than one
> master on Chip Select 0")
>
> I've CC'd the relevant folk from Atmel. Seems that maybe rm9200
> needs to have a special case whereby chipselect zero is managed
> by the hardware despite the first erratum. And maybe that because
> of that erratum, the DMA chaining needs to be made to work... else
> root-on-dataflash won't behave. (Or some other workaround.)
>
> - Dave
>
>
> > .max_speed_hz = 15 * 1000 * 1000,
> > },
> > };
> >
> > snip from .config:
> >
> > CONFIG_MTD_DATAFLASH=y
> >
> > #
> > # SPI support
> > #
> > CONFIG_SPI=y
> > CONFIG_SPI_DEBUG=y
> > CONFIG_SPI_MASTER=y
> >
> > #
> > # SPI Master Controller Drivers
> > #
> > CONFIG_SPI_ATMEL=y
> > # CONFIG_SPI_BITBANG is not set
> > CONFIG_SPI_AT91_MANUAL_CS=y
> > #
> > # SPI Protocol Masters
> > #
> > # CONFIG_SPI_AT25 is not set
> > # CONFIG_SPI_SPIDEV is not set
> >
> > While boot, the board stumbles on SPI initialization:
> >
> > Uncompressing Linux....................................................................... done, booting the kernel.
> > Linux version 2.6.22-rc1 (vano@newbox) (gcc version 3.4.2) #12 Wed May 23 14:05:30 EEST 2007
> > CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
> > Machine: Promwad Chub
> > ---snip----
> > eth0: Link now 100-FullDuplex
> > eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9a)
> > eth0: National Semiconductor DP83848 PHY
> > NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
> > Scanning device for bad blocks
> > Creating 1 MTD partitions on "NAND 64MiB 3,3V 8-bit":
> > 0x00000000-0x04000000 : "NAND Partition 1"
> > atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffe0000 (irq 13)
> >
> > Not booting further. Timer led is still blinking. Is atmel_spi usable?
> > I have working setup on 2.6.20 + corresponding patch from
> > maxim.org.za/at91_26.html + legacy "at91_dataflash" + legacy "at91_spi"
> >
> > Best regards, Ivan
> >
> >
> >
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <200705230906.13353.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-23 16:29 ` Ivan Kuten
@ 2007-05-24 11:36 ` Haavard Skinnemoen
[not found] ` <20070524133646.62bbc386-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
2007-05-24 15:27 ` Ivan Kuten
2 siblings, 1 reply; 18+ messages in thread
From: Haavard Skinnemoen @ 2007-05-24 11:36 UTC (permalink / raw)
To: David Brownell
Cc: Nicolas-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk, Ferre,
Bill Gatliff, andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Wed, 23 May 2007 09:06:12 -0700
David Brownell <david-b@pacbell.net> wrote:
> On Wednesday 23 May 2007, Ivan Kuten wrote:
> > board specific spi info :
> >
> > static struct spi_board_info chub_spi_devices[] = {
> > { /* DataFlash chip */
> > .modalias = "mtd_dataflash",
> > .chip_select = 0,
>
> Chipselect zero ... I've had one report that this driver has some issues
> on that chipselect. There seem to be two errata in conflict here:
>
> - One saying that when the controller manages chipselects, it
> does so incorrectly ... releasing it before it's told to do so,
> which prematurely terminates transactions. ("NPCSx rises if
> no data is to be transmitted")
>
> - Another saying that if it does *not* manage chipselects, then
> broken mode fault detect logic kicks in; this could be what
> you're seeing. ("Mode Fault does not allow more than one
> master on Chip Select 0")
Neither of these should cause any problems for the atmel_spi driver
since it manages chip selects using gpio and sets the MODFDIS bit in MR
to disable mode fault detection (I actually ran into both erratas myself
while developing the driver.)
And I did actually test the driver on STK1000 with an add-on board
connecting a dataflash chip to cs0 on the second SPI controller. But
this was on the AT32AP7000 which uses a newer version of the SPI
controller...
> I've CC'd the relevant folk from Atmel. Seems that maybe rm9200
> needs to have a special case whereby chipselect zero is managed
> by the hardware despite the first erratum. And maybe that because
> of that erratum, the DMA chaining needs to be made to work... else
> root-on-dataflash won't behave. (Or some other workaround.)
Hmm...I don't think I understand why DMA chaining will help in this
case. Could you explain a bit more?
> > eth0: Link now 100-FullDuplex
> > eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9a)
> > eth0: National Semiconductor DP83848 PHY
> > NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
> > Scanning device for bad blocks
> > Creating 1 MTD partitions on "NAND 64MiB 3,3V 8-bit":
> > 0x00000000-0x04000000 : "NAND Partition 1"
> > atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffe0000 (irq 13)
> >
> > Not booting further. Timer led is still blinking. Is atmel_spi usable?
> > I have working setup on 2.6.20 + corresponding patch from
> > maxim.org.za/at91_26.html + legacy "at91_dataflash" + legacy "at91_spi"
Is there any way you can get a dump of what the CPU is doing? Magic
SysRq, NMI, etc?
Håvard
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <200705230906.13353.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-23 16:29 ` Ivan Kuten
2007-05-24 11:36 ` Haavard Skinnemoen
@ 2007-05-24 15:27 ` Ivan Kuten
2 siblings, 0 replies; 18+ messages in thread
From: Ivan Kuten @ 2007-05-24 15:27 UTC (permalink / raw)
To: David Brownell
Cc: Nicolas Ferre, Bill Gatliff, Skinnemoen,
Haavard-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk,
andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Wed, 23 May 2007 09:06:12 -0700
David Brownell wrote:
>
> Chipselect zero ... I've had one report that this driver has some issues
> on that chipselect. There seem to be two errata in conflict here:
>
> - One saying that when the controller manages chipselects, it
> does so incorrectly ... releasing it before it's told to do so,
> which prematurely terminates transactions. ("NPCSx rises if
> no data is to be transmitted")
>
> - Another saying that if it does *not* manage chipselects, then
> broken mode fault detect logic kicks in; this could be what
> you're seeing. ("Mode Fault does not allow more than one
> master on Chip Select 0")
>
David, as I understood new atmel_spi driver enables CONFIG_SPI_AT91_MANUAL_CS
which in turn enables workaround for 1st errata item you mentioned
at91rm9200_devices.c
...
in at91_add_device_spi function:
#ifdef CONFIG_SPI_AT91_MANUAL_CS
at91_set_gpio_output(cs_pin, 1);
#else
at91_set_A_periph(cs_pin, 0);
#endif
Regarding second errata item - I have a single device (dataflash - 8MB) on SPI chip select 0,
so I do not think this is an issue here.
Best regards, Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <20070524133646.62bbc386-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
@ 2007-05-24 16:31 ` David Brownell
[not found] ` <200705240931.43663.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-25 15:02 ` Ivan Kuten
1 sibling, 1 reply; 18+ messages in thread
From: David Brownell @ 2007-05-24 16:31 UTC (permalink / raw)
To: Haavard Skinnemoen
Cc: Bill Gatliff, spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
Nicolas Ferre, andrew-eS41wJS13H5l57MIdRCFDg
On Thursday 24 May 2007, Haavard Skinnemoen wrote:
> On Wed, 23 May 2007 09:06:12 -0700
> David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org> wrote:
> > On Wednesday 23 May 2007, Ivan Kuten wrote:
> > >
> > > .chip_select = 0,
> >
> > Chipselect zero ... I've had one report that this driver has some issues
> > on that chipselect. There seem to be two errata in conflict here:
> > ...
>
> Neither of these should cause any problems for the atmel_spi driver
> since it manages chip selects using gpio and sets the MODFDIS bit in MR
> to disable mode fault detection (I actually ran into both erratas myself
> while developing the driver.)
Yet, I got the report (at91rm9200 specific). Bill? (I remember
MODFDIS acting oddly, non-rm9200, but forget the details.) And in
any case there seem to be other folk reporting rm9200 + dataflash
issues ... while mtd_dataflash doesn't seem to be at fault. So
maybe that combination of errata isn't the issue, but something
else is making the problem.
> > I've CC'd the relevant folk from Atmel. Seems that maybe rm9200
> > needs to have a special case whereby chipselect zero is managed
> > by the hardware despite the first erratum. And maybe that because
> > of that erratum, the DMA chaining needs to be made to work... else
> > root-on-dataflash won't behave. (Or some other workaround.)
>
> Hmm...I don't think I understand why DMA chaining will help in this
> case. Could you explain a bit more?
It *might* help -- by keeping the transfer buffer busy enough that
the "auto-deselect" erratum needn't kick in with some basic request
and response protocol operations.
- Dave
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <200705240931.43663.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
@ 2007-05-24 17:20 ` Bill Gatliff
[not found] ` <4655C956.8080300-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org>
0 siblings, 1 reply; 18+ messages in thread
From: Bill Gatliff @ 2007-05-24 17:20 UTC (permalink / raw)
To: David Brownell
Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Nicolas Ferre,
Haavard Skinnemoen, andrew-eS41wJS13H5l57MIdRCFDg
[-- Attachment #1.1: Type: text/plain, Size: 1048 bytes --]
David:
David Brownell wrote:
> Yet, I got the report (at91rm9200 specific). Bill? (I remember
> MODFDIS acting oddly, non-rm9200, but forget the details.) And in
> any case there seem to be other folk reporting rm9200 + dataflash
> issues ... while mtd_dataflash doesn't seem to be at fault. So
> maybe that combination of errata isn't the issue, but something
> else is making the problem.
>
Good recall! :)
Rev. F of the AT91RM9200 manual says, in 41.9.4:
"If Mode fault is disabled, Chip Select 0 cannot be driven by a
component other than the SPI otherwise the transfer does not occur".
... but if you enable mode faulting, something else breaks IIRC.
IOW, CS0 for the 9200 doesn't work if the SPI controls it. And SPI
doesn't work for CS0 if the SPI controller _doesn't_ control it,
either. So I've just quit using CS0. :(
At least, that's where I left it with 2.6.20 during my investigations.
Haven't come back to this topic since then.
b.g.
--
Bill Gatliff
bgat-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org
[-- Attachment #1.2: Type: text/html, Size: 1641 bytes --]
[-- Attachment #2: Type: text/plain, Size: 286 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
[-- Attachment #3: Type: text/plain, Size: 210 bytes --]
_______________________________________________
spi-devel-general mailing list
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/spi-devel-general
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <4655C956.8080300-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org>
@ 2007-05-24 18:24 ` Ivan Kuten
2007-05-24 18:43 ` Bill Gatliff
2007-05-25 7:07 ` Andrew Victor
0 siblings, 2 replies; 18+ messages in thread
From: Ivan Kuten @ 2007-05-24 18:24 UTC (permalink / raw)
To: Bill Gatliff
Cc: David Brownell,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Nicolas Ferre,
Haavard Skinnemoen, andrew-eS41wJS13H5l57MIdRCFDg
On Thu, 24 May 2007 12:20:22 -0500
Bill Gatliff wrote:
> Rev. F of the AT91RM9200 manual says, in 41.9.4:
>
> "If Mode fault is disabled, Chip Select 0 cannot be driven by a
> component other than the SPI otherwise the transfer does not occur".
>
> ... but if you enable mode faulting, something else breaks IIRC.
>
> IOW, CS0 for the 9200 doesn't work if the SPI controls it. And SPI
> doesn't work for CS0 if the SPI controller _doesn't_ control it,
> either. So I've just quit using CS0. :(
>
So I assume AT91RM9200 boards such as:
static struct spi_board_info ek_spi_devices[] = {
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
},
static struct spi_board_info carmeva_spi_devices[] = {
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 10 * 1000 * 1000,
},
static struct spi_board_info dk_spi_devices[] = {
{ /* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
},
are broken cause all of them have chip_select = 0 ?
BR, Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-24 18:24 ` Ivan Kuten
@ 2007-05-24 18:43 ` Bill Gatliff
2007-05-25 7:07 ` Andrew Victor
1 sibling, 0 replies; 18+ messages in thread
From: Bill Gatliff @ 2007-05-24 18:43 UTC (permalink / raw)
To: Ivan Kuten
Cc: David Brownell,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Nicolas Ferre,
Haavard Skinnemoen, andrew-eS41wJS13H5l57MIdRCFDg
Ivan:
Ivan Kuten wrote:
> So I assume AT91RM9200 boards such as:
>
> static struct spi_board_info ek_spi_devices[] = {
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> .chip_select = 0,
> .max_speed_hz = 15 * 1000 * 1000,
> },
>
> static struct spi_board_info carmeva_spi_devices[] = {
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> .chip_select = 0,
> .max_speed_hz = 10 * 1000 * 1000,
> },
>
> static struct spi_board_info dk_spi_devices[] = {
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> .chip_select = 0,
> .max_speed_hz = 15 * 1000 * 1000,
> },
>
> are broken cause all of them have chip_select = 0 ?
>
Dunno. The problem might be confined to a particular stepping of the
chip. It could also be that I'm wrong. :)
b.g.
--
Bill Gatliff
bgat-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-24 18:24 ` Ivan Kuten
2007-05-24 18:43 ` Bill Gatliff
@ 2007-05-25 7:07 ` Andrew Victor
[not found] ` <1180076844.23793.6.camel-WDSYOcD6Br5jTuWFell1NFaTQe2KTcn/@public.gmane.org>
1 sibling, 1 reply; 18+ messages in thread
From: Andrew Victor @ 2007-05-25 7:07 UTC (permalink / raw)
To: Ivan Kuten
Cc: David Brownell,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Bill Gatliff,
Haavard Skinnemoen, Nicolas Ferre
hi,
> static struct spi_board_info dk_spi_devices[] = {
> { /* DataFlash chip */
> .modalias = "mtd_dataflash",
> .chip_select = 0,
> .max_speed_hz = 15 * 1000 * 1000,
> },
>
> are broken cause all of them have chip_select = 0 ?
I doubt it.
The DK board definitely works.
All SAN People's RM9200-based products have DataFlash on CS0 - boot from
CS0, mount root filesystem (cramfs) on CS0, writable JFFS2 partition on
CS0.
That's with legacy SPI and at91_dataflash.c. (ie, CS0 under SPI
control).
Regards,
Andrew Victor
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <1180076844.23793.6.camel-WDSYOcD6Br5jTuWFell1NFaTQe2KTcn/@public.gmane.org>
@ 2007-05-25 14:19 ` Ivan Kuten
2007-05-25 14:41 ` Andrew Victor
2007-05-25 16:51 ` David Brownell
0 siblings, 2 replies; 18+ messages in thread
From: Ivan Kuten @ 2007-05-25 14:19 UTC (permalink / raw)
To: Andrew Victor
Cc: David Brownell,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Bill Gatliff,
Haavard Skinnemoen, Nicolas Ferre
On 25 May 2007 09:07:24 +0200
Andrew Victor wrote:
> hi,
>
> > static struct spi_board_info dk_spi_devices[] = {
> > { /* DataFlash chip */
> > .modalias = "mtd_dataflash",
> > .chip_select = 0,
> > .max_speed_hz = 15 * 1000 * 1000,
> > },
> >
> > are broken cause all of them have chip_select = 0 ?
>
> I doubt it.
>
> The DK board definitely works.
> All SAN People's RM9200-based products have DataFlash on CS0 - boot from
> CS0, mount root filesystem (cramfs) on CS0, writable JFFS2 partition on
> CS0.
>
> That's with legacy SPI and at91_dataflash.c. (ie, CS0 under SPI
> control).
>
In such a case it should have
static struct spi_board_info dk_spi_devices[] = {
{ /* DataFlash chip */
// .modalias = "mtd_dataflash",
.modalias = "at91_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
},
Cause from my understanding "mtd_dataflash" triggers usage of new SPI framework (driver/spi/atmel_spi.c).
What I currently have:
at91_dataflash.c + 2.6.20+maxim + legacy SPI - working
at91_dataflash.c + 2.6.22rc1+maxim + legacy SPI - not working
mtd_dataflash.c + 2.6.20+maxim + atmel_spi.c - not working
mtd_dataflash.c + 2.6.22rc1+maxim + atmel_spi.c - not working
Now I'm trying understand what was changed between 2.6.20+maxim and 2.6.22rc1+maxim
Best regards, Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-25 14:19 ` Ivan Kuten
@ 2007-05-25 14:41 ` Andrew Victor
2007-05-25 16:51 ` David Brownell
1 sibling, 0 replies; 18+ messages in thread
From: Andrew Victor @ 2007-05-25 14:41 UTC (permalink / raw)
To: Ivan Kuten
Cc: David Brownell,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Bill Gatliff,
Haavard Skinnemoen, Nicolas Ferre
hi Ivan,
> In such a case it should have
>
> static struct spi_board_info dk_spi_devices[] = {
> { /* DataFlash chip */
> // .modalias = "mtd_dataflash",
> .modalias = "at91_dataflash",
> .chip_select = 0,
> .max_speed_hz = 15 * 1000 * 1000,
> },
Makes no difference for the legacy SPI drivers. If they are used, the
only field in this structure which is checked is "chip_select" so
at91_add_device_spi() can configure the pin (GPIO vs A_periph).
What is important is what SPI_DEVNAME is set to in at91rm9200_devices.c.
#if defined(CONFIG_AT91_SPI) || defined(CONFIG_AT91_SPI_MODULE)
/* legacy SPI driver */
#define SPI_DEVNAME "at91_spi"
#elif defined(CONFIG_SPI_AT91) || defined(CONFIG_SPI_AT91_MODULE)
/* SPI bitbanging driver */
#define SPI_DEVNAME "at91_spi"
#elif defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE)
/* new SPI driver */
#define SPI_DEVNAME "atmel_spi"
And that depends on what SPI driver(s) you have enabled in the
configuration.
Changes since 2.6.19.....
at91_dataflash.c:
- device->flags = MTD_CAP_NORFLASH;
+ device->flags = MTD_WRITEABLE;
at91_spi.c:
asm/arch/at91rm9200_pdc.h replaced with linux/atmel_pdc.h
AT91_PDC_* definitions replaced with ATMEL_PDC_*
Regards,
Andrew Victor
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <20070524133646.62bbc386-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
2007-05-24 16:31 ` David Brownell
@ 2007-05-25 15:02 ` Ivan Kuten
2007-05-25 15:55 ` Haavard Skinnemoen
1 sibling, 1 reply; 18+ messages in thread
From: Ivan Kuten @ 2007-05-25 15:02 UTC (permalink / raw)
To: Haavard Skinnemoen
Cc: Nicolas-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk, Ferre,
Bill Gatliff, David Brownell, andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Thu, 24 May 2007 13:36:46 +0200
Haavard Skinnemoen wrote:
>
> Is there any way you can get a dump of what the CPU is doing? Magic
> SysRq, NMI, etc?
>
> Håvard
Unfortunately I could not get SysRq working on Ateml dbgu.
I installed GPIO IRQ handler
static irqreturn_t chubpower_irq_handler(int irq, void *context)
{
printk(KERN_EMERG "Power!\n");
dump_stack();
return IRQ_HANDLED;
}
and triggered it when the system stumbled on Dataflash init, also I added some printks:
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9a)
eth0: National Semiconductor DP83848 PHY
spi_register_driver : line 163
enter atmel_spi_probe : line 546
atmel_spi_probe : line 603
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffe0000 (irq 13)
spi_register_master : line 428
scan_boardinfo : line 318
spi_new_device : line 213
enter atmel_spi_setup : line 390
leave atmel_spi_setup : line 462
spi_drv_probe : line 136
dataflash_probe : line 536
dataflash_status : line 114
enter spi_w8r8 : line 617
enter spi_write_then_read : line 596
before spi_sync spi_write_then_read : line 629
enter atmel_spi_transfer : line 474
enter atmel_spi_dma_map_xfer : line 201
leave atmel_spi_dma_map_xfer : line 212
enter atmel_spi_dma_map_xfer : line 201
leave atmel_spi_dma_map_xfer : line 212
enter atmel_spi_next_message : line 182
cs_activate : line 77
enter atmel_spi_next_xfer : line 106
leave atmel_spi_next_xfer : line 173
leave atmel_spi_next_message : line 195
leave atmel_spi_transfer : line 524
Power!
[<c0023e60>] (dump_stack+0x0/0x14) from [<c0029440>] (chubpower_irq_handler+0x18/0x24)
[<c0029428>] (chubpower_irq_handler+0x0/0x24) from [<c0054980>] (handle_IRQ_event+0x44/0x80)
[<c005493c>] (handle_IRQ_event+0x0/0x80) from [<c0055c18>] (handle_simple_irq+0x80/0xb4)
r7:00000003 r6:00000001 r5:0000005c r4:c01e4284
[<c0055b98>] (handle_simple_irq+0x0/0xb4) from [<c0029298>] (gpio_irq_handler+0xa0/0xcc)
r5:c01e4284 r4:0000005c
[<c00291f8>] (gpio_irq_handler+0x0/0xcc) from [<c001f048>] (asm_do_IRQ+0x48/0x70)
[<c001f000>] (asm_do_IRQ+0x0/0x70) from [<c001fac4>] (__irq_svc+0x24/0x60)
Exception stack(0xc01ddf50 to 0xc01ddf98)
df40: 00000000 fefff830 00000000 60000013
df60: c01dc000 c0020908 c01dff78 c02082ec 2001c184 41129200 2001c150 c01ddfa4
df80: c01ddfa8 c01ddf98 c0020948 c0020954 60000013 ffffffff
r7:c02082ec r6:00000003 r5:fefff000 r4:ffffffff
[<c0020908>] (default_idle+0x0/0x54) from [<c00209b4>] (cpu_idle+0x58/0x7c)
[<c002095c>] (cpu_idle+0x0/0x7c) from [<c001f2bc>] (__exception_text_end+0x48/0x58)
r6:c001df28 r5:c01efe48 r4:c01f8ae4
[<c001f274>] (__exception_text_end+0x0/0x58) from [<c0008ab8>] (start_kernel+0x27c/0x2e4)
[<c000883c>] (start_kernel+0x0/0x2e4) from [<20008030>] (0x20008030)
r6:c01dfc54 r5:c01f0304 r4:c0007175
Seems it was in the idle state.
BR,
Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-25 15:02 ` Ivan Kuten
@ 2007-05-25 15:55 ` Haavard Skinnemoen
[not found] ` <20070525175502.4927c151-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
0 siblings, 1 reply; 18+ messages in thread
From: Haavard Skinnemoen @ 2007-05-25 15:55 UTC (permalink / raw)
To: Ivan Kuten
Cc: Nicolas-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk, Ferre,
Bill Gatliff, David Brownell, andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Fri, 25 May 2007 18:02:36 +0300
Ivan Kuten <ivan.kuten@promwad.com> wrote:
> On Thu, 24 May 2007 13:36:46 +0200
> Haavard Skinnemoen wrote:
> Unfortunately I could not get SysRq working on Ateml dbgu.
> I installed GPIO IRQ handler
Right. I remember posting a patch to fix it, but rmk found some issues
with it and I never really got around to fix the issues he complained
about...
> static irqreturn_t chubpower_irq_handler(int irq, void *context)
> {
> printk(KERN_EMERG "Power!\n");
> dump_stack();
> return IRQ_HANDLED;
> }
>
> and triggered it when the system stumbled on Dataflash init, also I added some printks:
> Seems it was in the idle state.
Hmm...not too surprising really. Could you add a call to show_state()
as well? I suspect it will just show init waiting for completion in
spi_sync() though.
What might be more interesting is a dump of the contents of the SPI
controller registers, i.e. something like this:
void *p;
int i;
p = ioremap(0xfffe0000);
for (i = 0; i < 0x100; i += 16)
printk("%04x: %08x %08x %08x %08x\n", i,
readl(p + i), readl(p + i + 4),
readl(p + i + 8), readl(p + i + 12));
iounmap(p);
Could you add that?
Håvard
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-25 14:19 ` Ivan Kuten
2007-05-25 14:41 ` Andrew Victor
@ 2007-05-25 16:51 ` David Brownell
[not found] ` <200705250951.06614.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
1 sibling, 1 reply; 18+ messages in thread
From: David Brownell @ 2007-05-25 16:51 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: Andrew Victor, Bill Gatliff, Haavard Skinnemoen, Nicolas Ferre
On Friday 25 May 2007, Ivan Kuten wrote:
> On 25 May 2007 09:07:24 +0200
> Andrew Victor wrote:
>
> > hi,
> >
> > > static struct spi_board_info dk_spi_devices[] = {
> > > ...
> > >
> > > are broken cause all of them have chip_select = 0 ?
> >
> > I doubt it.
> >
> > The DK board definitely works.
> > All SAN People's RM9200-based products have DataFlash on CS0 - boot from
> > CS0, mount root filesystem (cramfs) on CS0, writable JFFS2 partition on
> > CS0.
> >
> > That's with legacy SPI and at91_dataflash.c. (ie, CS0 under SPI
> > control).
It'd be good if someone with some rm9200 board that can boot
from DataFlash tried a version of the atmel_spi config that
leaves CS0 under control of the SPI controller ... updating
the setup code would suffice, ISTR.
Because we know that both atmel_spi and mtd_datflash behave on
other hardware, even for CS0. And ISTR hearing they work OK
on rm9200, for other chipselects...
- Dave
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <200705250951.06614.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
@ 2007-05-25 16:54 ` Bill Gatliff
0 siblings, 0 replies; 18+ messages in thread
From: Bill Gatliff @ 2007-05-25 16:54 UTC (permalink / raw)
To: David Brownell
Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Nicolas Ferre,
Haavard Skinnemoen, Andrew Victor
David:
David Brownell wrote:
> It'd be good if someone with some rm9200 board that can boot
> from DataFlash tried a version of the atmel_spi config that
> leaves CS0 under control of the SPI controller ... updating
> the setup code would suffice, ISTR.
>
Alas, I have no such board. Sorry!
b.g.
--
Bill Gatliff
bgat-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
[not found] ` <20070525175502.4927c151-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
@ 2007-05-26 14:02 ` Ivan Kuten
2007-05-27 12:45 ` Haavard Skinnemoen
0 siblings, 1 reply; 18+ messages in thread
From: Ivan Kuten @ 2007-05-26 14:02 UTC (permalink / raw)
To: Haavard Skinnemoen
Cc: Nicolas-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk, Ferre,
Bill Gatliff, David Brownell, andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Fri, 25 May 2007 17:55:02 +0200
Haavard Skinnemoen wrote:
>
> Hmm...not too surprising really. Could you add a call to show_state()
> as well? I suspect it will just show init waiting for completion in
> spi_sync() though.
>
Haavard, log with show_state() is attached, seems you are right it's waiting for completion.
[<c017f040>] (schedule+0x0/0x750) from [<c017f83c>] (wait_for_completion+0xac/0x110)
[<c017f790>] (wait_for_completion+0x0/0x110) from [<c0120018>] (spi_sync+0x54/0x68)
r6:00000000 r5:c0405c78 r4:c0405c00
[<c011ffc4>] (spi_sync+0x0/0x68) from [<c0120170>] (spi_write_then_read+0x144/0x204)
r7:c01eb978 r6:c0405c78 r5:c06aa6e0 r4:00000001
[<c012002c>] (spi_write_then_read+0x0/0x204) from [<c011f664>] (dataflash_probe+0x6c/0x244)
[<c011f5f8>] (dataflash_probe+0x0/0x244) from [<c011f99c>] (spi_drv_probe+0x3c/0x48)
r6:c01eb634 r5:00000000 r4:c03ea200
[<c011f960>] (spi_drv_probe+0x0/0x48) from [<c0104e7c>] (driver_probe_device+0xe8/0x18c)
r4:c03ea200
[<c0104d94>] (driver_probe_device+0x0/0x18c) from [<c0104f30>] (__device_attach+0x10/0x14)
> What might be more interesting is a dump of the contents of the SPI
> controller registers, i.e. something like this:
>
> void *p;
> int i;
>
> p = ioremap(0xfffe0000);
> for (i = 0; i < 0x100; i += 16)
> printk("%04x: %08x %08x %08x %08x\n", i,
> readl(p + i), readl(p + i + 4),
> readl(p + i + 8), readl(p + i + 12));
> iounmap(p);
>
Here is dump of SPI regs:
Power!
0000: 00000000 000e0011 00000000 00000000
0010: 000100a0 00000000 00000000 00000018
0020: 00000000 00000000 00000000 00000000
0030: 0a0a0202 00000000 00000000 00000000
0040: 00000000 00000000 00000000 00000000
0050: 00000000 00000000 00000000 00000000
0060: 00000000 00000000 00000000 00000000
0070: 00000000 00000000 00000000 00000000
0080: 00000000 00000000 00000000 00000000
0090: 00000000 00000000 00000000 00000000
00a0: 00000000 00000000 00000000 00000000
00b0: 00000000 00000000 00000000 00000000
00c0: 00000000 00000000 00000000 00000000
00d0: 00000000 00000000 00000000 00000000
00e0: 00000000 00000000 00000000 00000000
00f0: 00000000 00000000 00000000 00000000
P.S. I placed ioremap outside irq handler, otherwise it complains
kernel BUG at mm/vmalloc.c:171!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
BR,
Ivan
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: problem with converting from at91_spi to atmel_spi (AT91RM9200)
2007-05-26 14:02 ` Ivan Kuten
@ 2007-05-27 12:45 ` Haavard Skinnemoen
0 siblings, 0 replies; 18+ messages in thread
From: Haavard Skinnemoen @ 2007-05-27 12:45 UTC (permalink / raw)
To: Ivan Kuten
Cc: Nicolas-MRDXTZLjjMs8G+1z+Pypc6QD96bmaF075NbjCUgZEJk, Ferre,
Bill Gatliff, David Brownell, andrew-eS41wJS13H5l57MIdRCFDg,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Sat, 26 May 2007 17:02:25 +0300
Ivan Kuten <ivan.kuten@promwad.com> wrote:
> Here is dump of SPI regs:
>
> Power!
> 0000: 00000000 000e0011 00000000 00000000
> 0010: 000100a0 00000000 00000000 00000018
This is interesting...SR has SPIENS, TXBUFE and ENDTX bits set,
nothing else. So the DMA transfer is complete on the TX side, but not
for RX and the TX shifter still has data in it...
Ok, this _is_ actually the second errata -- it seems to trigger even if
mode fault detection is turned off. I didn't know that, but the errata
is actually quite clear: "If Mode fault is disabled, Chip Select 0
cannot be driven by a component other than the SPI otherwise the
transfer does not occur."
Nicolas, do you know of any workaround for this? I suppose implementing
DMA chaining would help, but it doesn't sound like an entirely
watertight solution to me...
FWIW, the SAM9 and AP700x chips don't seem to have the same errata.
They have a somewhat similar quirk which is that when mode fault
checking is _enabled_, the SPI controller will refuse to start a
transfer if CS0 is already low. This is why I disabled mode fault
checking in the first place.
> P.S. I placed ioremap outside irq handler, otherwise it complains
> kernel BUG at mm/vmalloc.c:171!
> Unable to handle kernel NULL pointer dereference at virtual address 00000000
> pgd = c0004000
> [00000000] *pgd=00000000
Right...ioremap can't be called from interrupt context. My bad.
Håvard
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2007-05-27 12:45 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-23 11:34 problem with converting from at91_spi to atmel_spi (AT91RM9200) Ivan Kuten
2007-05-23 16:06 ` David Brownell
[not found] ` <200705230906.13353.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-23 16:29 ` Ivan Kuten
2007-05-24 11:36 ` Haavard Skinnemoen
[not found] ` <20070524133646.62bbc386-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
2007-05-24 16:31 ` David Brownell
[not found] ` <200705240931.43663.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-24 17:20 ` Bill Gatliff
[not found] ` <4655C956.8080300-uPd5UNENI//N9NzbbXoYwQ@public.gmane.org>
2007-05-24 18:24 ` Ivan Kuten
2007-05-24 18:43 ` Bill Gatliff
2007-05-25 7:07 ` Andrew Victor
[not found] ` <1180076844.23793.6.camel-WDSYOcD6Br5jTuWFell1NFaTQe2KTcn/@public.gmane.org>
2007-05-25 14:19 ` Ivan Kuten
2007-05-25 14:41 ` Andrew Victor
2007-05-25 16:51 ` David Brownell
[not found] ` <200705250951.06614.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2007-05-25 16:54 ` Bill Gatliff
2007-05-25 15:02 ` Ivan Kuten
2007-05-25 15:55 ` Haavard Skinnemoen
[not found] ` <20070525175502.4927c151-RzfXdsu3MTOUA/xf2v/QOMGzbamoMwWuEvhb3Hwu1Ks@public.gmane.org>
2007-05-26 14:02 ` Ivan Kuten
2007-05-27 12:45 ` Haavard Skinnemoen
2007-05-24 15:27 ` Ivan Kuten
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.