All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sshtylyov@mvista.com>
To: "Arnaud Patard (Rtp)" <arnaud.patard@rtp-net.org>
Cc: linux-ide@vger.kernel.org, s.hauer@pengutronix.de, jgarzik@pobox.com
Subject: Re: [patch 1/1] ata: Add iMX pata support
Date: Sun, 17 Jul 2011 17:32:14 +0400	[thread overview]
Message-ID: <4E22E45E.40807@ru.mvista.com> (raw)
In-Reply-To: <20110716210420.234549871@rtp-net.org>

Hello.

On 17-07-2011 1:04, Arnaud Patard (Rtp) wrote:

> Add basic support for pata on iMX. It has been tested only on imx51.
> SDMA support will probably be added later so this version supports only
> PIO.

> Signed-off-by: Arnaud Patard<arnaud.patard@rtp-net.org>
[...]
> Index: linux-2.6-submit/drivers/ata/pata_imx.c
> ===================================================================
> --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> +++ linux-2.6-submit/drivers/ata/pata_imx.c	2011-07-16 22:35:41.000000000 +0200
> @@ -0,0 +1,254 @@
[...]
> + * TODO:
> + * - dmaengine support
> + * - check if timing stuff needed

    Sure, it's needed, especially if you want to support DMA.

> +#define PATA_IMX_ATA_CONTROL		0x24
> +#define PATA_IMX_ATA_CTRL_FIFO_RST_B	(1<<7)
> +#define PATA_IMX_ATA_CTRL_ATA_RST_B	(1<<6)
> +#define PATA_IMX_ATA_CTRL_IORDY_EN	(1<<0)

    So, it seems to support advanced PIO modes...

> +static int __devinit pata_imx_probe(struct platform_device *pdev)
> +{
> +	struct ata_host *host;
> +	struct ata_port *ap;
> +	struct pata_imx_priv *priv;
> +	int irq = 0;
> +	struct resource *io_res;
> +	struct resource *irq_res;
> +
> +	io_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (io_res == NULL)
> +		return -EINVAL;
> +
> +	irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);

    Why not use platform_get_irq()?

> +	if (irq_res == NULL)
> +		return -EINVAL;
> +	irq = irq_res->start;
> +
> +	priv = kzalloc(sizeof(struct pata_imx_priv), GFP_KERNEL);
> +	if (!priv)
> +		return -ENOMEM;
> +
> +	priv->clk = clk_get(&pdev->dev, "imx-pata");

    Does iMX support clkdev?

[...]
> +	ap->ops = &pata_imx_port_ops;
> +	/* pio 0-4 */
> +	ap->pio_mask = ATA_PIO4;

    But you don't support PIO1-4!

> +	ap->flags |= ATA_FLAG_SLAVE_POSS;
> +
> +	priv->host_regs = devm_ioremap(&pdev->dev, io_res->start, 0x40);
> +	ap->ioaddr.cmd_addr = devm_ioremap(&pdev->dev,
> +					io_res->start + PATA_IMX_DRIVE_DATA,
> +					0x20);
> +	ap->ioaddr.ctl_addr = devm_ioremap(&pdev->dev,
> +					io_res->start + PATA_IMX_DRIVE_CONTROL,
> +					0x04);

    Why not ioremap all registers as one block?

> +	ata_port_desc(ap, "cmd 0x%llx ctl 0x%llx",
> +		(unsigned long long)io_res->start + PATA_IMX_DRIVE_DATA,
> +		(unsigned long long)io_res->start + PATA_IMX_DRIVE_CONTROL);
> +
> +	/* deassert resets */
> +	__raw_writel(PATA_IMX_ATA_CTRL_FIFO_RST_B |
> +			PATA_IMX_ATA_CTRL_ATA_RST_B |
> +			PATA_IMX_ATA_CTRL_IORDY_EN,

    You can't enable IORDY by default, only when the drive supports it!

[...]
> +#ifdef CONFIG_PM
> +static int pata_imx_suspend(struct device *dev)
> +{
> +	struct platform_device *pdev = to_platform_device(dev);
> +	struct ata_host *host = platform_get_drvdata(pdev);

    You can just use dev_get_drvdata(), without calling to_platfrom_device().

> +	struct pata_imx_priv *priv = host->private_data;
> +	int ret;
> +
> +	ret = ata_host_suspend(host, PMSG_SUSPEND);
> +

    Empty line not needed here...

> +	if (!ret)
> +		__raw_writel(0, priv->host_regs + PATA_IMX_ATA_INT_EN);
[...]
> +static int pata_imx_resume(struct device *dev)
> +{
> +	struct platform_device *pdev = to_platform_device(dev);
> +	struct ata_host *host = platform_get_drvdata(pdev);

    Just use dev_get_drvdata().

> +	struct pata_imx_priv *priv = host->private_data;
[...]

WBR, Sergei

  reply	other threads:[~2011-07-17 13:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-16 21:04 [patch 1/1] ata: Add iMX pata support Arnaud Patard
2011-07-17 13:32 ` Sergei Shtylyov [this message]
2011-07-21 15:59   ` Arnaud Patard
2011-07-22 11:56     ` Sergei Shtylyov
  -- strict thread matches above, loose matches on Subject: below --
2011-07-22 10:46 Arnaud Patard
2011-07-22 11:52 ` Sergei Shtylyov
2011-07-26 14:58 Arnaud Patard

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=4E22E45E.40807@ru.mvista.com \
    --to=sshtylyov@mvista.com \
    --cc=arnaud.patard@rtp-net.org \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=s.hauer@pengutronix.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.