Thread (4 messages) 4 messages, 2 authors, 2011-07-26

Re: [patch v3 1/1] ata: Add iMX pata support

From: Sascha Hauer <s.hauer@pengutronix.de>
Date: 2011-07-26 12:15:42

On Tue, Jul 26, 2011 at 12:04:27PM +0200, Arnaud Patard wrote:
Sascha Hauer [off-list ref] writes:
quoted
Hi Arnaud,
Hi,
quoted
On Sun, Jul 24, 2011 at 08:38:07PM +0200, Arnaud Patard wrote:
quoted
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.

v2:
  - enable only when needed IORDY
  - use dev_get_drvdata
v3:
  - add missing clk_put() calls
  - use platform_get_irq()
  - fix resume code to avoid disabling IORDY on resume

Signed-off-by: Arnaud Patard <redacted>
Index: linux-2.6-submit/drivers/ata/Kconfig
===================================================================
--- linux-2.6-submit.orig/drivers/ata/Kconfig	2011-07-22 23:29:06.000000000 +0200
+++ linux-2.6-submit/drivers/ata/Kconfig	2011-07-22 23:30:58.000000000 +0200
@@ -467,6 +467,15 @@ config PATA_ICSIDE
 	  interface card.  This is not required for ICS partition support.
 	  If you are unsure, say N to this.
 
+config PATA_IMX
+	tristate "PATA support for Freescale iMX (Experimental)"
+	depends on ARCH_MX5 && EXPERIMENTAL
Should this really depend on EXPERIMENTAL? This driver looks pretty
straightforward.
I've been wondering about it but given that it has been tested only on
efika platforms, I prefered to keep it. If you think it's better to
remove it, fine. I'll do it.
Only the efika platform registers the device, so there's no risk to
harm other boards.
quoted
IS_ERR(priv->clk)

(also for the checks below)

Does it really make sense to continue when the clock failed?
if you have uboot version like the one I have, the clock will be already
enabled before booting linux so the driver will work. Maybe too fragile ?
I've changed the checks on my local version and about to test it. Let me
know if you think it should really be a failure, in order to avoid
having to send a new version only to make it a failure.
Yes, it should be a failure.
quoted
quoted
+	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);
It looks strange to ioremap the register offsets again. Why not just a

	ap->ioaddr.cmd_addr = priv->host_regs + PATA_IMX_DRIVE_DATA
	ap->ioaddr.ctl_addr = priv->host_regs + PATA_IMX_DRIVE_CONTROL

Hm, probably copied from the pxa driver, but this uses different
resources which makes different ioremaps necessary.
There are holes in the register map in the manual, that's why I used
several ioremap. I prefer staying near to what the manual says and avoid
remapping unknown registers.
Having holes in the register space is a very common case, no need to do
several ioremaps. Besides, ioremap will give you a whole page anyway.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help