* [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®