All of lore.kernel.org
 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 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.