From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: christian.buettner@rafi.de
Cc: barebox@lists.infradead.org
Subject: Re: Antwort: Re: Re: Re: Re: nor flash board init code
Date: Thu, 2 Aug 2012 10:46:14 +0200 [thread overview]
Message-ID: <20120802084614.GK19759@game.jcrosoft.org> (raw)
In-Reply-To: <OF076225AD.7201C17D-ONC1257A4E.0022ED93-C1257A4E.0023F301@o0802.rafi.inhouse>
Hi Christian
please do stop to post in HTML this ml is text only and please stop to
top reply
people can not follow what you write
Best Regards,
J.
On 08:32 Thu 02 Aug , christian.buettner@rafi.de wrote:
> Got the solution!
>
> PINMUX:
> /*SPI*/
> MX53_PAD_EIM_D17__ECSPI1_MISO, //SPI MISO - EEPROM SO
> MX53_PAD_EIM_D18__ECSPI1_MOSI, //SPI MOSI - EEPROM SI
> MX53_PAD_EIM_D16__ECSPI1_SCLK, //SPI SCLK - EEPROM SCK
> MX53_PAD_EIM_EB2__GPIO2_30, //SPI SS0 - EEPROM CS
>
> Data Structures:
> #define ECUv6_ECSPI1_CS0 IMX_GPIO_NR(2, 30)
>
> //SPI Flash
> const struct flash_platform_data tx53_flash = {
> .type = "mx25l8005",
> .name = "spi_flash",
> };
>
> //MX25L8005MC-15G
> static const struct spi_board_info mx53_spi_board_info[] = {
> {
> .name = "m25p",
> .max_speed_hz = 30000000,
> .bus_num = 0,
> .chip_select = 0,
> .bits_per_word = 8,
> .mode = SPI_MODE_0,
> .platform_data = (void*)&tx53_flash,
> },
> };
>
> static int ecspi_0_cs[] = { ECUv6_ECSPI1_CS0 };
>
> static struct spi_imx_master tx53_spi = {
> .chipselect = ecspi_0_cs,
> .num_chipselect = ARRAY_SIZE(ecspi_0_cs),
> };
>
> Problem was:
> The internal chipselect did not work -> Using the GPIO for Chipselect and
> the PinMux 'SPI to GPIO' (not 'SPI to SSO')
> and a lower hz setting (not the max. 70000000) made the spi flash
> working!!
>
> christian
>
> Von: Franck Jullien <franck.jullien@gmail.com>
> An: christian.buettner@rafi.de,
> Kopie: barebox@lists.infradead.org
> Datum: 30.07.2012 16:28
> Betreff: Re: Re: Re: Re: nor flash board init code
>
> ----------------------------------------------------------------------
>
> 2012/7/30 <christian.buettner@rafi.de>:
> > i always get the response:
> >
> > m25p@m25p0: unrecognized JEDEC id ffffff
> >
> > SPI Flah:MX25L8005MC-15G
> > CPU: imx53
> >
> > Here is my board init code:
> >
> > //SPI + FLASH structs
> > const struct flash_platform_data tx53_flash = {
> > .type = "mx25l8005",
> > .name = "spi_flash",
> > };
> >
> >
> > //MX25L8005MC-15G
> > static const struct spi_board_info mx53_spi_board_info[] = {
> > {
> > .name = "m25p",
> > .max_speed_hz = 30000000,
> > .bus_num = 0,
> > .chip_select = 0,
> > .bits_per_word = 8,
> > .mode = SPI_MODE_0,
> > .platform_data = &tx53_flash,
> > },
> > };
> >
> > static struct spi_imx_master tx53_spi = {
> > .num_chipselect = 1,
> > };
> >
>
> I'm not familiar with the IMX spi but in the tx51 or ccxmx51 board
> file one can read:
>
> static struct spi_imx_master tx51_spi_0_data = {
> .chipselect = spi_0_cs,
> .num_chipselect = ARRAY_SIZE(spi_0_cs),
> };
>
> #define CCXMX51_ECSPI1_CS0 IMX_GPIO_NR(4, 24)
> #define CCXMX51_ECSPI1_CS1 IMX_GPIO_NR(4, 25)
>
> static int ecspi_0_cs[] = { CCXMX51_ECSPI1_CS0, CCXMX51_ECSPI1_CS1, };
>
> static struct spi_imx_master ecspi_0_data = {
> .chipselect = ecspi_0_cs,
> .num_chipselect = ARRAY_SIZE(ecspi_0_cs),
> };
>
> Don't you need to set .chipselect ?
>
> >
> >
> > //PIN MUX:
> > MX53_PAD_EIM_D17__ECSPI1_MISO, //SPI MISO - EEPROM SO
> > MX53_PAD_EIM_D18__ECSPI1_MOSI, //SPI MOSI - EEPROM SI
> > MX53_PAD_EIM_D16__ECSPI1_SCLK, //SPI SCLK - EEPROM SCK
> > MX53_PAD_EIM_EB2__ECSPI1_SS0, //SPI SS1 - EEPROM CS
> >
> >
> > //device init code:
> > spi_register_board_info(mx53_spi_board_info,
> > ARRAY_SIZE(mx53_spi_board_info));
> >
> > imx53_add_spi0(&tx53_spi);
> >
> >
> > Any ideas, whats wrong?
> >
> > christian
> >
> >
> > Von: Franck Jullien <franck.jullien@gmail.com>
> > An: christian.buettner@rafi.de,
> > Kopie: barebox@lists.infradead.org
> > Datum: 30.07.2012 10:33
> > Betreff: Re: Re: Re: nor flash board init code
> > ________________________________
> >
> >
> >
> > 2012/7/30 <christian.buettner@rafi.de>:
> >> Whooosch and it worked!
> >>
> >> devinfo
> >> devices:
> >> ...
> >> `---- mem1
> >> `---- 0x00000000-0xfffffffe: /dev/mem
> >> `---- i2c-imx2
> >> `---- imx_spi0
> >> `---- m25p0
> >> `---- fec_imx0
> >> `---- miidev0
> >> ...
> >>
> >> barebox:/ devinfo m25p0
> >> resources:
> >> driver: none
> >>
> >> no parameters available
> >> barebox:/
> >>
> >> But why is driver in devinfo = none?
> >>
> >
> > It used to work. You need to find why it doesn't work anymore ;)
> >
> >> christian
> >>
> >>
> >> Von: Franck Jullien <franck.jullien@gmail.com>
> >> An: christian.buettner@rafi.de,
> >> Kopie: barebox@lists.infradead.org
> >> Datum: 30.07.2012 10:07
> >> Betreff: Re: Re: nor flash board init code
> >> ________________________________
> >>
> >>
> >>
> >> Hi,
> >>
> >> 2012/7/30 <christian.buettner@rafi.de>
> >>>
> >>> Thanks for the code!
> >>>
> >>> Here is my approach:
> >>>
> >>> const struct flash_platform_data tx53_flash = {
> >>> .type = "mx25l8005",
> >>> .name = "spi_flash",
> >>> };
> >>>
> >>>
> >>> //MX25L8005MC-15G
> >>> static const struct spi_board_info mx53_spi_board_info[] = {
> >>> {
> >>> .name = "mx25l8005",
> >>
> >>
> >> Here sould be the driver name: .name = "m25p",
> >>
> >>>
> >>> .max_speed_hz = 70000000,
> >>> .bus_num = 0,
> >>> .chip_select = 0,
> >>> .bits_per_word = 8,
> >>> .mode = SPI_MODE_0,
> >>> .platform_data = &tx53_flash,
> >>> },
> >>> };
> >>>
> >>> static struct spi_imx_master tx53_spi = {
> >>> .num_chipselect = 1,
> >>> };
> >>>
> >>>
> >>> init_devices {
> >>>
> >>> ...
> >>> spi_register_board_info(mx53_spi_board_info,
> >>> ARRAY_SIZE(mx53_spi_board_info));
> >>>
> >>> add_generic_device("m25p",-1,"m25p",MX53_ECSPI1_BASE_ADDR,64 *
> >>> 1024,IORESOURCE_MEM,&mx53_spi_board_info);
> >>
> >> You have to add the SPI master device here. The m25p device will be
> >> probed automagically (AFAIR).
> >>
> >>
> >>>
> >>> ...
> >>> }
> >>>
> >>>
> >>> When the m25p80.c driver probes i get no spi instance:
> >>>
> >>> static int m25p_probe(struct device_d *dev) {
> >>> struct spi_device *spi = (struct spi_device *)dev->type_data;
> >>> const struct spi_device_id *id = NULL;
> >>> ...
> >>> }
> >>>
> >>> struct spi_device *spi is always null
> >>>
> >>> Whats wrong here?
> >>>
> >>> christian
> >>>
> >>>
> >>>
> >>> Von: Franck Jullien <franck.jullien@gmail.com>
> >>> An: christian.buettner@rafi.de,
> >>> Kopie: barebox@lists.infradead.org
> >>> Datum: 27.07.2012 13:33
> >>> Betreff: Re: nor flash board init code
> >>> ________________________________
> >>>
> >>>
> >>>
> >>> 2012/7/25 <christian.buettner@rafi.de>
> >>> >
> >>> > hi all,
> >>> > is there any example board init code to load the mx25l8005 spi
> >>> > nor-flash
> >>> > through the imx53 (TX53 from KARO)?
> >>> > I want to use the m25p80 driver to read and write.
> >>> >
> >>> > christian
> >>> > _______________________________________________
> >>> > barebox mailing list
> >>> > barebox@lists.infradead.org
> >>> > http://lists.infradead.org/mailman/listinfo/barebox
> >>> >
> >>>
> >>> Hi Christian,
> >>>
> >>> This is what I use with the Altera SPI controller + an SPI flash
> device:
> >>>
> >>>
> >>>
> >>>
> http://www.elec4fun.fr/index.php?option=com_content&view=article&id=10&Itemid=153
> >>>
> >>> static struct spi_altera_master altera_spi_0_data = {
> >>> .num_chipselect = 1,
> >>> .spi_mode = 0, /* SPI mode of the EPCS flash controller */
> >>> .databits = 8, /* Data length of the EPCS flash controller
> */
> >>> .speed = 20000000, /* EPCS flash controller speed */
> >>> };
> >>>
> >>>
> >>> static struct flash_platform_data epcs_flash = {
> >>> .name = "epcs", /* Cdev name, optional */
> >>> .type = "m25p40", /* Device type, required for non JEDEC chips
> */
> >>> };
> >>>
> >>> static struct spi_board_info generic_spi_board_info[] = {
> >>> {
> >>> .name = "m25p",
> >>> .max_speed_hz = 20000000,
> >>> .bus_num = 0,
> >>> .chip_select = 0,
> >>> .bits_per_word = 8,
> >>> .mode = SPI_MODE_0,
> >>> .platform_data = &epcs_flash,
> >>> }
> >>> };
> >>>
> >>> static int myboard_devices_init(void) {
> >>>
> >>> ...
> >>>
> >>> spi_register_board_info(myboard_spi_board_info,
> >>> ARRAY_SIZE(myboard_spi_board_info));
> >>>
> >>> add_generic_device("altera_spi", -1, NULL, NIOS_SOPC_EPCS_BASE, 0x18,
> >>> IORESOURCE_MEM, &altera_spi_0_data);
> >>>
> >>> ...
> >>>
> >>> Franck.
> >>>
> >>
> >> Franck.
> >>
> >
>
> Do you have a scope ? This is the easiest way to debug SPI ;)
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
prev parent reply other threads:[~2012-08-02 8:46 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 14:31 christian.buettner
2012-07-27 11:33 ` Franck Jullien
2012-07-30 8:00 ` Antwort: " christian.buettner
2012-07-30 8:07 ` Franck Jullien
2012-07-30 8:15 ` Antwort: " christian.buettner
2012-07-30 8:33 ` Franck Jullien
2012-07-30 8:44 ` Antwort: " christian.buettner
2012-07-30 13:58 ` christian.buettner
2012-07-30 14:28 ` Franck Jullien
2012-07-30 14:49 ` Antwort: " christian.buettner
2012-07-30 17:05 ` Sascha Hauer
2012-08-02 6:32 ` christian.buettner
2012-08-02 8:46 ` Jean-Christophe PLAGNIOL-VILLARD [this message]
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=20120802084614.GK19759@game.jcrosoft.org \
--to=plagnioj@jcrosoft.com \
--cc=barebox@lists.infradead.org \
--cc=christian.buettner@rafi.de \
/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