From a93592e3043f5c7e1f39f5778a93d4334881e4b9 Mon Sep 17 00:00:00 2001 From: Haren Myneni Date: Wed, 11 Jul 2012 15:18:44 +1000 Subject: [PATCH] --- yaml --- r: 313689 b: refs/heads/master c: e1612de9e4cdf375c3cf1c72434ab8abdcb3927e h: refs/heads/master i: 313687: 21d381502aed60589794754eb389cc11c20c35f8 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/include/asm/io.h | 8 ++++++++ trunk/drivers/char/mem.c | 11 ++++++++++- trunk/include/linux/io.h | 9 +++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d79f6469d06b..e1a507fa1d89 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 475d0094293b51353e342d1198377967dbc48169 +refs/heads/master: e1612de9e4cdf375c3cf1c72434ab8abdcb3927e diff --git a/trunk/arch/powerpc/include/asm/io.h b/trunk/arch/powerpc/include/asm/io.h index a3855b81eada..f94ef4213e9d 100644 --- a/trunk/arch/powerpc/include/asm/io.h +++ b/trunk/arch/powerpc/include/asm/io.h @@ -20,6 +20,14 @@ extern int check_legacy_ioport(unsigned long base_port); #define _PNPWRP 0xa79 #define PNPBIOS_BASE 0xf000 +#if defined(CONFIG_PPC64) && defined(CONFIG_PCI) +extern struct pci_dev *isa_bridge_pcidev; +/* + * has legacy ISA devices ? + */ +#define arch_has_dev_port() (isa_bridge_pcidev != NULL) +#endif + #include #include diff --git a/trunk/drivers/char/mem.c b/trunk/drivers/char/mem.c index 67c3371723cc..e5eedfa24c91 100644 --- a/trunk/drivers/char/mem.c +++ b/trunk/drivers/char/mem.c @@ -27,14 +27,16 @@ #include #include #include +#include #include -#include #ifdef CONFIG_IA64 # include #endif +#define DEVPORT_MINOR 4 + static inline unsigned long size_inside_page(unsigned long start, unsigned long size) { @@ -894,6 +896,13 @@ static int __init chr_dev_init(void) for (minor = 1; minor < ARRAY_SIZE(devlist); minor++) { if (!devlist[minor].name) continue; + + /* + * Create /dev/port? + */ + if ((minor == DEVPORT_MINOR) && !arch_has_dev_port()) + continue; + device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), NULL, devlist[minor].name); } diff --git a/trunk/include/linux/io.h b/trunk/include/linux/io.h index 7fd2d2138bf3..069e4075f872 100644 --- a/trunk/include/linux/io.h +++ b/trunk/include/linux/io.h @@ -67,4 +67,13 @@ int check_signature(const volatile void __iomem *io_addr, const unsigned char *signature, int length); void devm_ioremap_release(struct device *dev, void *res); +/* + * Some systems do not have legacy ISA devices. + * /dev/port is not a valid interface on these systems. + * So for those archs, should define the following symbol. + */ +#ifndef arch_has_dev_port +#define arch_has_dev_port() (1) +#endif + #endif /* _LINUX_IO_H */