public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Wolfgang Wegner <wolfgang@leila.ping.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mmc: new legacy MMC/SPI driver
Date: Fri, 23 Apr 2010 10:20:34 +0200	[thread overview]
Message-ID: <20100423082034.GM20047@leila.ping.de> (raw)
In-Reply-To: <1271993307-10361-1-git-send-email-vapier@gentoo.org>

Hi Mike,

On Thu, Apr 22, 2010 at 11:28:27PM -0400, Mike Frysinger wrote:

> +static short mmc_spi_init_card(struct mmc_spi_dev *pdev)
> +{
> +	unsigned short cntr = 0;
> +
> +	/* for making init process beeing silent */
> +	init_mode = 1;
> +	/* save length of log for external usage */
> +	pdev->log_len = LOG_LEN;
> +
> +	/* 10 bytes(80 cycles) with CS de-asserted */
> +	mmc_spi_dummy_clocks(pdev, 10);
> +	pdev->doassert();
> +	if (send_cmd_and_wait(pdev, GO_IDLE_STATE, 0, R1_IDLE_STATE, MMC_INIT_TIMEOUT))
> +		return 1;
> +	pdev->deassert();
> +	/* Send One Byte Delay */
> +	if (pdev->write(Null_Word, 1, pdev->priv_data) < 0)
> +		return 1;
> +	pdev->doassert();
[...]

Is there any reason to use doassert() and deassert() except to generate
the "dummy" cycles needed to initialize the card? Which driver does
_need_ an explicit cs_activate() and cs_deactivate() outside the
write() and read() functions?

CS control is done automatically by most drivers. According to
include/spi.h, the _board_code_ is supposed to supply spi_cs_[de]activate()
to be used by the driver in case the hardware can not control the chip
selects automatically. The documentation is not clear about it, but
from my point of view spi_cs_[de]activate() are not part of the
SPI API.

I think we should not clutter client drivers with such implementation
specific things.

I have to clean up my code and try to migrate to your newer code base,
but I did implement a modified version using SPI_XFER_BEGIN,
spi_setup_slave() (to clear the CS) and SPI_CS_HIGH to achieve the
CS switching in a way compliant with e.g. the coldfire SPI driver.
(Although IIRC I had to add SPI_CS_HIGH there, too)

Regards,
Wolfgang

  reply	other threads:[~2010-04-23  8:20 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-22  5:16 [U-Boot] [PATCH] spi_mmc: set default spi bus Thomas Chou
2010-04-23  3:25 ` Mike Frysinger
2010-04-23  3:28 ` [U-Boot] [PATCH] mmc: new legacy MMC/SPI driver Mike Frysinger
2010-04-23  8:20   ` Wolfgang Wegner [this message]
2010-04-23 14:55     ` Mike Frysinger
  -- strict thread matches above, loose matches on Subject: below --
2010-10-28  1:23 Mike Frysinger
2010-10-28  1:30 ` Timur Tabi
2010-10-28  1:38   ` Mike Frysinger
2010-10-28  1:53     ` Timur Tabi
2010-10-28  3:47       ` Mike Frysinger
     [not found]         ` <5610599F537DD74A8D1F5CC946A7507303479410@az33exm25.fsl.freescale.net>
2010-10-28 17:50           ` Mike Frysinger
2010-12-12 17:00 ` Mike Frysinger
2009-10-14 16:27 Mike Frysinger
2009-10-14 23:44 ` Mike Frysinger
2009-10-22 13:02 ` Wilfried Busalski
2009-10-22 13:42   ` Mike Frysinger
2009-10-22 14:31     ` Wilfried Busalski
2009-10-22 20:37       ` Mike Frysinger
2009-10-22 22:50         ` Ivan Llopard
2009-10-23  1:21           ` Mike Frysinger

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=20100423082034.GM20047@leila.ping.de \
    --to=wolfgang@leila.ping.de \
    --cc=u-boot@lists.denx.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