All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikita Kiryanov <nikita@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] sata: fix reset_sata for dwc_ahsata
Date: Wed, 26 Nov 2014 19:38:00 +0200	[thread overview]
Message-ID: <54760FF8.6050002@compulab.co.il> (raw)
In-Reply-To: <1417002047-4644-1-git-send-email-smoch@web.de>

Hi Soeren,

On 11/26/2014 01:40 PM, Soeren Moch wrote:
> - fix crash when sata device is not initialized
> - remove disable_sata_clock() since it is not clear which clock for which
>    device should be disabled here
> - call disable_sata_clock() for mx6 in preboot_os instead
>
> Signed-off-by: Soeren Moch <smoch@web.de>
> ---
> Cc: Tom Rini <trini@ti.com>
> Cc: Nikita Kiryanov <nikita@compulab.co.il>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: guillaume.gardet at free.fr
> Cc: Stefano Babic <sbabic@denx.de>
> ---
>   arch/arm/imx-common/cpu.c  |  3 +++
>   drivers/block/dwc_ahsata.c | 14 ++++++++------
>   2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/imx-common/cpu.c b/arch/arm/imx-common/cpu.c
> index b58df7d..28ccd29 100644
> --- a/arch/arm/imx-common/cpu.c
> +++ b/arch/arm/imx-common/cpu.c
> @@ -206,6 +206,9 @@ void arch_preboot_os(void)
>   {
>   #if defined(CONFIG_CMD_SATA)
>   	sata_stop();
> +#if defined(CONFIG_MX6)
> +	disable_sata_clock();
> +#endif

I think a more proper way to do this might be to mirror the
init sequence completely. The simplest init sequence calls
setup_sata() somewhere before sata_initialize() is invoked,
and the distribution of labor is:
- arch/arm/imx-common/sata.c:setup_sata() Turns on clocks
- common/cmd_sata.c: sata_initialize() Calls driver init

The inverse would be:
- common/cmd_sata.c: sata_stop() Calls driver reset
- arch/arm/imx-common/sata.c:disable_sata() Turns off clocks

Thus disable_sata() would need to be defined in
arch/arm/imx-common/sata.c; it will call disable_sata_clock(),
and be used in cm_fx6's version of stop_sata().

It's a little convoluted, but consistent with the existing code
flow, and it also fixes the MX53 problems because
arch/arm/imx-common/sata.c is not compiled for this platform.

>   #endif
>   #if defined(CONFIG_VIDEO_IPUV3)
>   	/* disable video before launching O/S */
> diff --git a/drivers/block/dwc_ahsata.c b/drivers/block/dwc_ahsata.c
> index 9a2b547..9e925d1 100644
> --- a/drivers/block/dwc_ahsata.c
> +++ b/drivers/block/dwc_ahsata.c
> @@ -594,22 +594,24 @@ int init_sata(int dev)
>
>   int reset_sata(int dev)
>   {
> -	struct ahci_probe_ent *probe_ent =
> -			(struct ahci_probe_ent *)sata_dev_desc[dev].priv;
> -	struct sata_host_regs *host_mmio =
> -			(struct sata_host_regs *)probe_ent->mmio_base;
> +	struct ahci_probe_ent *probe_ent;
> +	struct sata_host_regs *host_mmio;
>
>   	if (dev < 0 || dev > (CONFIG_SYS_SATA_MAX_DEVICE - 1)) {
>   		printf("The sata index %d is out of ranges\n\r", dev);
>   		return -1;
>   	}
>
> +	probe_ent = (struct ahci_probe_ent *)sata_dev_desc[dev].priv;
> +	if (NULL == probe_ent)
> +		/* not initialized, so nothing to reset */
> +		return 0;
> +
> +	host_mmio = probe_ent->mmio_base;

The lack of casting generates a warning during compilation:
drivers/block/dwc_ahsata.c:610:12: warning: assignment makes pointer 
from integer without a cast [enabled by default]
   host_mmio = probe_ent->mmio_base;
             ^

>   	setbits_le32(&host_mmio->ghc, SATA_HOST_GHC_HR);
>   	while (readl(&host_mmio->ghc) & SATA_HOST_GHC_HR)
>   		udelay(100);
>
> -	disable_sata_clock();
> -
>   	return 0;
>   }
>
>

-- 
Regards,
Nikita Kiryanov

  reply	other threads:[~2014-11-26 17:38 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-25 21:50 [U-Boot] [PATCH] dwc_ahsata.c: Add weak disable_sata_clock Tom Rini
2014-11-25 22:50 ` Soeren Moch
2014-11-26  0:26   ` Tom Rini
2014-11-26  1:36     ` Soeren Moch
2014-11-26 11:40       ` [U-Boot] [PATCH] sata: fix reset_sata for dwc_ahsata Soeren Moch
2014-11-26 17:38         ` Nikita Kiryanov [this message]
2014-11-26 23:32           ` Soeren Moch
2014-11-27  1:12             ` Fabio Estevam
2014-11-27  6:53               ` Soeren Moch
2014-11-27 10:56             ` Nikita Kiryanov
2014-11-27  9:11         ` [U-Boot] [PATCH v2] " Soeren Moch
2014-11-27 10:58           ` Nikita Kiryanov
2014-12-01  9:37           ` Stefano Babic

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=54760FF8.6050002@compulab.co.il \
    --to=nikita@compulab.co.il \
    --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.