add some sata_mv patches

svn path=/dists/trunk/linux-2.6/; revision=10531
This commit is contained in:
Martin Michlmayr 2008-02-13 16:47:31 +00:00
parent efdb6ae2c7
commit b084799b62
3 changed files with 131 additions and 0 deletions

89
debian/patches/bugfix/sata_mv-dma.patch vendored Normal file
View File

@ -0,0 +1,89 @@
will be in rc2
From: Byron Bradley <byron.bbradley@gmail.com>
Date: Fri, 8 Feb 2008 01:33:12 +0000 (+0000)
Subject: sata_mv: platform driver allocs dma without create
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnico%2Forion.git;a=commitdiff_plain;h=86566e6e2940177f665d07cb9276ed751ad90e7e
sata_mv: platform driver allocs dma without create
When the sata_mv driver is used as a platform driver,
mv_create_dma_pools() is never called so it fails when trying
to alloc in mv_pool_start().
Signed-off-by: Byron Bradley <byron.bbradley@gmail.com>
Signed-off-by: Mark Lord <mlord@pobox.com>
---
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 080b836..8b79f1e 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -2879,6 +2879,26 @@ done:
return rc;
}
+static int mv_create_dma_pools(struct mv_host_priv *hpriv, struct device *dev)
+{
+ hpriv->crqb_pool = dmam_pool_create("crqb_q", dev, MV_CRQB_Q_SZ,
+ MV_CRQB_Q_SZ, 0);
+ if (!hpriv->crqb_pool)
+ return -ENOMEM;
+
+ hpriv->crpb_pool = dmam_pool_create("crpb_q", dev, MV_CRPB_Q_SZ,
+ MV_CRPB_Q_SZ, 0);
+ if (!hpriv->crpb_pool)
+ return -ENOMEM;
+
+ hpriv->sg_tbl_pool = dmam_pool_create("sg_tbl", dev, MV_SG_TBL_SZ,
+ MV_SG_TBL_SZ, 0);
+ if (!hpriv->sg_tbl_pool)
+ return -ENOMEM;
+
+ return 0;
+}
+
/**
* mv_platform_probe - handle a positive probe of an soc Marvell
* host
@@ -2932,6 +2952,10 @@ static int mv_platform_probe(struct platform_device *pdev)
hpriv->base = ioremap(res->start, res->end - res->start + 1);
hpriv->base -= MV_SATAHC0_REG_BASE;
+ rc = mv_create_dma_pools(hpriv, &pdev->dev);
+ if (rc)
+ return rc;
+
/* initialize adapter */
rc = mv_init_host(host, chip_soc);
if (rc)
@@ -3068,26 +3092,6 @@ static void mv_print_info(struct ata_host *host)
scc_s, (MV_HP_FLAG_MSI & hpriv->hp_flags) ? "MSI" : "INTx");
}
-static int mv_create_dma_pools(struct mv_host_priv *hpriv, struct device *dev)
-{
- hpriv->crqb_pool = dmam_pool_create("crqb_q", dev, MV_CRQB_Q_SZ,
- MV_CRQB_Q_SZ, 0);
- if (!hpriv->crqb_pool)
- return -ENOMEM;
-
- hpriv->crpb_pool = dmam_pool_create("crpb_q", dev, MV_CRPB_Q_SZ,
- MV_CRPB_Q_SZ, 0);
- if (!hpriv->crpb_pool)
- return -ENOMEM;
-
- hpriv->sg_tbl_pool = dmam_pool_create("sg_tbl", dev, MV_SG_TBL_SZ,
- MV_SG_TBL_SZ, 0);
- if (!hpriv->sg_tbl_pool)
- return -ENOMEM;
-
- return 0;
-}
-
/**
* mv_pci_init_one - handle a positive probe of a PCI Marvell host
* @pdev: PCI device found

View File

@ -0,0 +1,39 @@
needs more work
From: Byron Bradley <byron.bbradley@gmail.com>
Date: Fri, 8 Feb 2008 02:20:35 +0000 (+0000)
Subject: sata_mv: problems using it as a platform_driver
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnico%2Forion.git;a=commitdiff_plain;h=1c62b99e64caa0e96fe9d6d3a4f75f54db8f0c7f
sata_mv: problems using it as a platform_driver
On Fri, 8 Feb 2008, Byron Bradley wrote:
> In mv_platform_probe() host->iomap is set to NULL but it is dereferenced
> in mv_start_dma(), I'm not sure what the fix for this is.
The following patch makes this driver work although I have no idea if this
is the correct thing to do. Will this be OK for other devices using this
driver? The pointer only works because it is dereferenced as
iomap[MV_PRIMARY_BAR] and MV_PRIMARY_BAR = 0, will another offset ever be
used in the future?
---
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 8b79f1e..ef10578 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -2948,8 +2948,8 @@ static int mv_platform_probe(struct platform_device *pdev)
host->private_data = hpriv;
hpriv->n_ports = n_ports;
- host->iomap = NULL;
hpriv->base = ioremap(res->start, res->end - res->start + 1);
+ host->iomap = &hpriv->base;
hpriv->base -= MV_SATAHC0_REG_BASE;
rc = mv_create_dma_pools(hpriv, &pdev->dev);

View File

@ -27,3 +27,6 @@
#+ bugfix/arm/disable-video_bt848.patch
+ bugfix/arm/disable-scsi_acard.patch
#+ bugfix/arm/disable-ath5k.patch
#the following will be fixed before 2.6.25 is out:
+ bugfix/sata_mv-dma.patch
+ bugfix/sata_mv-platform_driver.patch