All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Steven A. Falco" <sfalco@harris.com>
To: Mike Frysinger <vapier.adi@gmail.com>
Cc: Stefan Roese <sr@denx.de>, linux-mtd@lists.infradead.org
Subject: Re: [Question] m25p80 driver versus spi clock rate
Date: Tue, 23 Jun 2009 14:41:30 -0400	[thread overview]
Message-ID: <4A4121DA.6050802@harris.com> (raw)
In-Reply-To: <8bd0f97a0906221404x7536c6e0m822436dfb61714dc@mail.gmail.com>

Mike Frysinger wrote:
> On Mon, Jun 22, 2009 at 16:50, Steven A. Falco wrote:
>> I am trying to figure out how the mtd/devices/m25p80.c driver is supposed
>> to set the spi clock speed.  (Perhaps I'm making a bad assuption even to
>> think that it _should_ set the clock speed.  If so, please say so.)
> 
> it shouldnt.  this is done in the board resources via the speed_hz
> field of the spi_board_info struct on a per-spi device setting.
> -mike

Thank you for the hint.  spi_board_info has a max_speed_hz field - it does
not have a speed_hz field.  The various platforms all seem to set
max_speed_hz, so perhaps that is what you meant to say.

In my case, max_speed_hz is being correctly set, but that doesn't seem to be
enough.  I have traced through the calling hierarchy, and this is what I got:

1) m25p80_read builds a spi_message, and calls spi_sync to do the transfer.

2) spi_sync calls spi_async.  I added some printk, and saw speed_hz=0 and
   max_speed_hz=50000000.  This is consistent with my platform setup (set via
   a dts file).

3) spi_async calls through pointer "transfer" to spi_bitbang_transfer (because
   the PPC4xx driver doesn't set its own transfer handler).

4) spi_bitbang_transfer calls spi_master_get_devdata, then enqueues the work

5) bitbang_work iterates through the queued transfers, and if speed_hz is
   non-zero, bitbang_work calls through setup_transfer to spi_ppc4xx_setupxfer
   which would set the divisor.  But, as noted in step 2, speed_hz=0, so the
   spi bus speed is not set.  Rather, it remains at whatever speed some other
   device chose.

Note that bitbang_work looks at speed_hz, not max_speed_hz.  So, I come back to
the same problem.  Somehow speed_hz must be set in order to make bitbang_work
call setup_transfer, yet the only place that seems to happen is in spidev.

Stefan - I believe you wrote the SPI_PPC4XX driver.  Can you comment on how
this is supposed to work?  My device tree has:

				m25p16@1 {
					compatible = "st,m25p80";
					reg = <1>;
					spi-max-frequency = <50000000>;
				};

				fpdlite@2 {
					compatible = "linux,spidev";
					reg = <2>;
					spi-max-frequency = <200000>;
				};

and the issue is that fpdlite@2 drops the frequency to 200000, but m25p16@1
does not raise the frequency to 50000000.

	Thanks,
	Steve

  reply	other threads:[~2009-06-23 18:41 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-22 20:50 [Question] m25p80 driver versus spi clock rate Steven A. Falco
2009-06-22 21:04 ` Mike Frysinger
2009-06-23 18:41   ` Steven A. Falco [this message]
2009-06-23 18:46     ` Mike Frysinger
2009-06-23 19:56       ` David Brownell
2009-06-23 20:31         ` Steven A. Falco
2009-06-23 21:08           ` David Brownell
2009-06-23 21:49             ` Steven A. Falco
2009-06-23 22:38               ` David Brownell
2009-06-24 14:25                 ` Steven A. Falco
2009-06-24 14:33                   ` Stefan Roese
2009-06-24 14:36                     ` Steven A. Falco
2009-06-24 14:50                       ` Stefan Roese
2009-06-24 15:13                   ` David Brownell
2009-06-24 16:14                     ` Steven A. Falco

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=4A4121DA.6050802@harris.com \
    --to=sfalco@harris.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=sr@denx.de \
    --cc=vapier.adi@gmail.com \
    /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 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.