mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/3] Char: cyclades, remove bogus iomap
@ 2008-08-14 16:25 Jiri Slaby
  2008-08-14 16:25 ` [PATCH 2/3] Char: sx, fix io unmapping Jiri Slaby
  2008-08-18 21:44 ` [PATCH 1/3] Char: cyclades, " Andrew Morton
  0 siblings, 2 replies; 5+ messages in thread
From: Jiri Slaby @ 2008-08-14 16:25 UTC (permalink / raw)
  To: Andrew Morton; +Cc: alan, linux-kernel, Jiri Slaby

readl/writel are not expected to accept iomap return value. Replace
bogus mapping by standard ioremap.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
---
 drivers/char/cyclades.c |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c
index 33737bb..6e480e8 100644
--- a/drivers/char/cyclades.c
+++ b/drivers/char/cyclades.c
@@ -4976,12 +4976,14 @@ static int __devinit cy_pci_probe(struct pci_dev *pdev,
 			device_id == PCI_DEVICE_ID_CYCLOM_Y_Hi) {
 		card_name = "Cyclom-Y";
 
-		addr0 = pci_iomap(pdev, 0, CyPCI_Yctl);
+		addr0 = ioremap_nocache(pci_resource_start(pdev, 0),
+				CyPCI_Yctl);
 		if (addr0 == NULL) {
 			dev_err(&pdev->dev, "can't remap ctl region\n");
 			goto err_reg;
 		}
-		addr2 = pci_iomap(pdev, 2, CyPCI_Ywin);
+		addr2 = ioremap_nocache(pci_resource_start(pdev, 2),
+				CyPCI_Ywin);
 		if (addr2 == NULL) {
 			dev_err(&pdev->dev, "can't remap base region\n");
 			goto err_unmap;
@@ -4996,7 +4998,8 @@ static int __devinit cy_pci_probe(struct pci_dev *pdev,
 	} else if (device_id == PCI_DEVICE_ID_CYCLOM_Z_Hi) {
 		struct RUNTIME_9060 __iomem *ctl_addr;
 
-		ctl_addr = addr0 = pci_iomap(pdev, 0, CyPCI_Zctl);
+		ctl_addr = addr0 = ioremap_nocache(pci_resource_start(pdev, 0),
+				CyPCI_Zctl);
 		if (addr0 == NULL) {
 			dev_err(&pdev->dev, "can't remap ctl region\n");
 			goto err_reg;
@@ -5009,8 +5012,8 @@ static int __devinit cy_pci_probe(struct pci_dev *pdev,
 
 		mailbox = (u32)readl(&ctl_addr->mail_box_0);
 
-		addr2 = pci_iomap(pdev, 2, mailbox == ZE_V1 ?
-				CyPCI_Ze_win : CyPCI_Zwin);
+		addr2 = ioremap_nocache(pci_resource_start(pdev, 2),
+				mailbox == ZE_V1 ? CyPCI_Ze_win : CyPCI_Zwin);
 		if (addr2 == NULL) {
 			dev_err(&pdev->dev, "can't remap base region\n");
 			goto err_unmap;
@@ -5142,9 +5145,9 @@ err_null:
 	cy_card[card_no].base_addr = NULL;
 	free_irq(irq, &cy_card[card_no]);
 err_unmap:
-	pci_iounmap(pdev, addr0);
+	iounmap(addr0);
 	if (addr2)
-		pci_iounmap(pdev, addr2);
+		iounmap(addr2);
 err_reg:
 	pci_release_regions(pdev);
 err_dis:
@@ -5169,9 +5172,9 @@ static void __devexit cy_pci_remove(struct pci_dev *pdev)
 		cy_writew(cinfo->ctl_addr + 0x68,
 				readw(cinfo->ctl_addr + 0x68) & ~0x0900);
 
-	pci_iounmap(pdev, cinfo->base_addr);
+	iounmap(cinfo->base_addr);
 	if (cinfo->ctl_addr)
-		pci_iounmap(pdev, cinfo->ctl_addr);
+		iounmap(cinfo->ctl_addr);
 	if (cinfo->irq
 #ifndef CONFIG_CYZ_INTR
 		&& !IS_CYC_Z(*cinfo)
-- 
1.5.6.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/3] Char: sx, fix io unmapping
  2008-08-14 16:25 [PATCH 1/3] Char: cyclades, remove bogus iomap Jiri Slaby
@ 2008-08-14 16:25 ` Jiri Slaby
  2008-08-14 16:25   ` [PATCH 3/3] Char: sx, remove bogus iomap Jiri Slaby
  2008-08-18 21:44 ` [PATCH 1/3] Char: cyclades, " Andrew Morton
  1 sibling, 1 reply; 5+ messages in thread
From: Jiri Slaby @ 2008-08-14 16:25 UTC (permalink / raw)
  To: Andrew Morton; +Cc: alan, linux-kernel, Jiri Slaby, R.E.Wolff

board->base is increased for CF cards after mapping. Use board->base2
for unmapping the region, since it holds the original/correct address.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: R.E.Wolff@BitWizard.nl
---
 drivers/char/sx.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/sx.c b/drivers/char/sx.c
index c385206..5b8d7a1 100644
--- a/drivers/char/sx.c
+++ b/drivers/char/sx.c
@@ -2504,7 +2504,7 @@ static void __devexit sx_remove_card(struct sx_board *board,
 		del_timer(&board->timer);
 		if (pdev) {
 #ifdef CONFIG_PCI
-			pci_iounmap(pdev, board->base);
+			pci_iounmap(pdev, board->base2);
 			pci_release_region(pdev, IS_CF_BOARD(board) ? 3 : 2);
 #endif
 		} else {
@@ -2703,7 +2703,7 @@ static int __devinit sx_pci_probe(struct pci_dev *pdev,
 
 	return 0;
 err_unmap:
-	pci_iounmap(pdev, board->base);
+	pci_iounmap(pdev, board->base2);
 err_reg:
 	pci_release_region(pdev, reg);
 err_flag:
-- 
1.5.6.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] Char: sx, remove bogus iomap
  2008-08-14 16:25 ` [PATCH 2/3] Char: sx, fix io unmapping Jiri Slaby
@ 2008-08-14 16:25   ` Jiri Slaby
  0 siblings, 0 replies; 5+ messages in thread
From: Jiri Slaby @ 2008-08-14 16:25 UTC (permalink / raw)
  To: Andrew Morton; +Cc: alan, linux-kernel, Jiri Slaby, R.E.Wolff

readl/writel are not expected to accept iomap return value. Replace
bogus mapping by standard ioremap.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Cc: R.E.Wolff@BitWizard.nl
---
 drivers/char/sx.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/char/sx.c b/drivers/char/sx.c
index 5b8d7a1..ba4e862 100644
--- a/drivers/char/sx.c
+++ b/drivers/char/sx.c
@@ -2504,7 +2504,7 @@ static void __devexit sx_remove_card(struct sx_board *board,
 		del_timer(&board->timer);
 		if (pdev) {
 #ifdef CONFIG_PCI
-			pci_iounmap(pdev, board->base2);
+			iounmap(board->base2);
 			pci_release_region(pdev, IS_CF_BOARD(board) ? 3 : 2);
 #endif
 		} else {
@@ -2677,7 +2677,7 @@ static int __devinit sx_pci_probe(struct pci_dev *pdev,
 	}
 	board->hw_base = pci_resource_start(pdev, reg);
 	board->base2 =
-	board->base = pci_iomap(pdev, reg, WINDOW_LEN(board));
+	board->base = ioremap_nocache(board->hw_base, WINDOW_LEN(board));
 	if (!board->base) {
 		dev_err(&pdev->dev, "ioremap failed\n");
 		goto err_reg;
@@ -2703,7 +2703,7 @@ static int __devinit sx_pci_probe(struct pci_dev *pdev,
 
 	return 0;
 err_unmap:
-	pci_iounmap(pdev, board->base2);
+	iounmap(board->base2);
 err_reg:
 	pci_release_region(pdev, reg);
 err_flag:
-- 
1.5.6.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] Char: cyclades, remove bogus iomap
  2008-08-18 21:44 ` [PATCH 1/3] Char: cyclades, " Andrew Morton
@ 2008-08-18 21:38   ` Alan Cox
  0 siblings, 0 replies; 5+ messages in thread
From: Alan Cox @ 2008-08-18 21:38 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Jiri Slaby, linux-kernel

On Mon, 18 Aug 2008 14:44:38 -0700
Andrew Morton <akpm@linux-foundation.org> wrote:

> On Thu, 14 Aug 2008 18:25:52 +0200
> Jiri Slaby <jirislaby@gmail.com> wrote:
> 
> > readl/writel are not expected to accept iomap return value. Replace
> > bogus mapping by standard ioremap.
> 
> Confused.  What's wrong with doing readl(pci_iomap(...))?  There are a
> fair number of drivers doing this..

That was discussed some time ago and we fixed a few then.

There is no guarantee that a platform chooses to implement iomaps such
that an iomap cookie is valid for readl/writel. It happens to work on the
current generic implementation.

Alan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] Char: cyclades, remove bogus iomap
  2008-08-14 16:25 [PATCH 1/3] Char: cyclades, remove bogus iomap Jiri Slaby
  2008-08-14 16:25 ` [PATCH 2/3] Char: sx, fix io unmapping Jiri Slaby
@ 2008-08-18 21:44 ` Andrew Morton
  2008-08-18 21:38   ` Alan Cox
  1 sibling, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2008-08-18 21:44 UTC (permalink / raw)
  To: Jiri Slaby; +Cc: alan, linux-kernel, jirislaby

On Thu, 14 Aug 2008 18:25:52 +0200
Jiri Slaby <jirislaby@gmail.com> wrote:

> readl/writel are not expected to accept iomap return value. Replace
> bogus mapping by standard ioremap.

Confused.  What's wrong with doing readl(pci_iomap(...))?  There are a
fair number of drivers doing this..


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-08-18 21:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-14 16:25 [PATCH 1/3] Char: cyclades, remove bogus iomap Jiri Slaby
2008-08-14 16:25 ` [PATCH 2/3] Char: sx, fix io unmapping Jiri Slaby
2008-08-14 16:25   ` [PATCH 3/3] Char: sx, remove bogus iomap Jiri Slaby
2008-08-18 21:44 ` [PATCH 1/3] Char: cyclades, " Andrew Morton
2008-08-18 21:38   ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®