Skip to content

Commit

Permalink
MN10300: Handle cacheable PCI regions in pci_iomap()
Browse files Browse the repository at this point in the history
Handle cacheable PCI regions in pci_iomap().  If IORESOURCE_CACHEABLE is set
then we AND away the 0x20000000 "flag".

Signed-off-by: David Howells <dhowells@redhat.com>
  • Loading branch information
dhowells committed Dec 12, 2012
1 parent 0369c36 commit 83c2dc1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
2 changes: 1 addition & 1 deletion arch/mn10300/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ static inline void __iomem *__ioremap(unsigned long offset, unsigned long size,

static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
{
return (void __iomem *) offset;
return (void __iomem *)(offset & ~0x20000000);
}

/*
Expand Down
35 changes: 35 additions & 0 deletions arch/mn10300/unit-asb2305/pci-iomap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* ASB2305 PCI I/O mapping handler
*
* Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
* Written by David Howells (dhowells@redhat.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public Licence
* as published by the Free Software Foundation; either version
* 2 of the Licence, or (at your option) any later version.
*/
#include <linux/pci.h>
#include <linux/module.h>

/*
* Create a virtual mapping cookie for a PCI BAR (memory or IO)
*/
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
{
resource_size_t start = pci_resource_start(dev, bar);
resource_size_t len = pci_resource_len(dev, bar);
unsigned long flags = pci_resource_flags(dev, bar);

if (!len || !start)
return NULL;

if ((flags & IORESOURCE_IO) || (flags & IORESOURCE_MEM)) {
if (flags & IORESOURCE_CACHEABLE && !(flags & IORESOURCE_IO))
return ioremap(start, len);
else
return ioremap_nocache(start, len);
}

return NULL;
}
EXPORT_SYMBOL(pci_iomap);

0 comments on commit 83c2dc1

Please sign in to comment.