From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Gabor Juhos <juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
Gabor Juhos <juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
Subject: Re: [PATCH 5/6] spi/ath79: avoid multiple initialization of the SPI controller
Date: Tue, 05 Feb 2013 13:00:33 +0000 [thread overview]
Message-ID: <20130205130033.3EE403E0E27@localhost> (raw)
In-Reply-To: <1356601349-23617-6-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
On Thu, 27 Dec 2012 10:42:28 +0100, Gabor Juhos <juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org> wrote:
> Currently we are initializing the SPI controller in
> the chip select line function, and that function is
> called once for each SPI device on the bus. If a
> board has multiple SPI devices, the controller will
> be initialized multiple times.
>
> Introduce ath79_spi_{en,dis}able helper functions,
> and call those from probe/response in order to avoid
> the mutliple initialization of the controller.
>
> Signed-off-by: Gabor Juhos <juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
Applied, thanks.
g.
> ---
> drivers/spi/spi-ath79.c | 41 ++++++++++++++++++++++++-----------------
> 1 file changed, 24 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c
> index 19d539e..842acd8 100644
> --- a/drivers/spi/spi-ath79.c
> +++ b/drivers/spi/spi-ath79.c
> @@ -96,16 +96,8 @@ static void ath79_spi_chipselect(struct spi_device *spi, int is_active)
>
> }
>
> -static int ath79_spi_setup_cs(struct spi_device *spi)
> +static void ath79_spi_enable(struct ath79_spi *sp)
> {
> - struct ath79_spi *sp = ath79_spidev_to_sp(spi);
> - struct ath79_spi_controller_data *cdata;
> - int status;
> -
> - cdata = spi->controller_data;
> - if (spi->chip_select && !cdata)
> - return -EINVAL;
> -
> /* enable GPIO mode */
> ath79_spi_wr(sp, AR71XX_SPI_REG_FS, AR71XX_SPI_FS_GPIO);
>
> @@ -115,6 +107,24 @@ static int ath79_spi_setup_cs(struct spi_device *spi)
>
> /* TODO: setup speed? */
> ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, 0x43);
> +}
> +
> +static void ath79_spi_disable(struct ath79_spi *sp)
> +{
> + /* restore CTRL register */
> + ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, sp->reg_ctrl);
> + /* disable GPIO mode */
> + ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
> +}
> +
> +static int ath79_spi_setup_cs(struct spi_device *spi)
> +{
> + struct ath79_spi_controller_data *cdata;
> + int status;
> +
> + cdata = spi->controller_data;
> + if (spi->chip_select && !cdata)
> + return -EINVAL;
>
> status = 0;
> if (spi->chip_select) {
> @@ -135,17 +145,10 @@ static int ath79_spi_setup_cs(struct spi_device *spi)
>
> static void ath79_spi_cleanup_cs(struct spi_device *spi)
> {
> - struct ath79_spi *sp = ath79_spidev_to_sp(spi);
> -
> if (spi->chip_select) {
> struct ath79_spi_controller_data *cdata = spi->controller_data;
> gpio_free(cdata->gpio);
> }
> -
> - /* restore CTRL register */
> - ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, sp->reg_ctrl);
> - /* disable GPIO mode */
> - ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
> }
>
> static int ath79_spi_setup(struct spi_device *spi)
> @@ -268,12 +271,15 @@ static int ath79_spi_probe(struct platform_device *pdev)
> dev_dbg(&pdev->dev, "register read/write delay is %u nsecs\n",
> sp->rrw_delay);
>
> + ath79_spi_enable(sp);
> ret = spi_bitbang_start(&sp->bitbang);
> if (ret)
> - goto err_clk_disable;
> + goto err_disable;
>
> return 0;
>
> +err_disable:
> + ath79_spi_disable(sp);
> err_clk_disable:
> clk_disable(sp->clk);
> err_clk_put:
> @@ -292,6 +298,7 @@ static int ath79_spi_remove(struct platform_device *pdev)
> struct ath79_spi *sp = platform_get_drvdata(pdev);
>
> spi_bitbang_stop(&sp->bitbang);
> + ath79_spi_disable(sp);
> clk_disable(sp->clk);
> clk_put(sp->clk);
> iounmap(sp->base);
> --
> 1.7.10
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
next prev parent reply other threads:[~2013-02-05 13:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-27 9:42 [PATCH 0/6] spi/ath79: various fixes Gabor Juhos
[not found] ` <1356601349-23617-1-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2012-12-27 9:42 ` [PATCH 1/6] spi/ath79: add delay between SCK changes Gabor Juhos
[not found] ` <1356601349-23617-2-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 12:57 ` Grant Likely
2013-02-05 19:52 ` Gabor Juhos
2012-12-27 9:42 ` [PATCH 2/6] spi/ath79: add missing HIGH->LOW SCK transition Gabor Juhos
[not found] ` <1356601349-23617-3-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 12:57 ` Grant Likely
2012-12-27 9:42 ` [PATCH 3/6] spi/ath79: remove superfluous chip select code Gabor Juhos
[not found] ` <1356601349-23617-4-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 12:58 ` Grant Likely
2012-12-27 9:42 ` [PATCH 4/6] spi/ath79: use gpio_request_one Gabor Juhos
[not found] ` <1356601349-23617-5-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 12:59 ` Grant Likely
2012-12-27 9:42 ` [PATCH 5/6] spi/ath79: avoid multiple initialization of the SPI controller Gabor Juhos
[not found] ` <1356601349-23617-6-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 13:00 ` Grant Likely [this message]
2012-12-27 9:42 ` [PATCH 6/6] spi/ath79: add shutdown handler Gabor Juhos
[not found] ` <1356601349-23617-7-git-send-email-juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org>
2013-02-05 13:02 ` Grant Likely
2013-02-05 19:53 ` Gabor Juhos
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=20130205130033.3EE403E0E27@localhost \
--to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
--cc=juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/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.