resource: type and size patches
Subsystems (15)
cover resource: type and size patches
Hi everyone,
Here comes a few struct resource changes. I propose the following:
1. add a resource_size() function to avoid one-off calculation errors.
2. make space for more resource types and add resource_type().
3. add IORESOURCE_CLK so we can pass clocks to platform drivers.
[PATCH 01/04] resource: add resource_size()
[PATCH 02/04] resource: add resource_type() and IORESOURCE_TYPE_BITS [PATCH 03/04] resource: use new resource type changes [PATCH 04/04] resource: add new IORESOURCE_CLK type
This is not tested, so I'm surprised if this even builds. I have time to fix this up if people agree with this change.
---
Applies on current linux-2.6, so this will need up-porting. [PATCH 03/04] needs to be extended and split up as well.
arch/alpha/kernel/pci.c | 21 ++++++------ arch/arm/kernel/bios32.c | 16 ++++----- arch/arm/mach-iop13xx/pci.c | 6 +-- arch/arm/mm/iomap.c | 5 +- arch/arm/plat-s3c24xx/pm.c | 2 - arch/cris/arch-v32/drivers/pci/bios.c | 6 +-- arch/frv/mb93090-mb00/pci-frv.c | 10 ++--- arch/frv/mb93090-mb00/pci-iomap.c | 3 + arch/ia64/pci/pci.c | 7 ++-- arch/ia64/sn/kernel/io_init.c | 2 - arch/m68k/kernel/bios32.c | 6 +-- arch/mips/basler/excite/excite_device.c | 12 +------ arch/mips/lib/iomap-pci.c | 5 +- arch/mips/pci/pci.c | 24 +++++++------- arch/mips/pmc-sierra/yosemite/ht.c | 6 +-- arch/mn10300/unit-asb2305/pci-asb2305.c | 8 ++-- arch/mn10300/unit-asb2305/pci-iomap.c | 3 + arch/parisc/kernel/pci.c | 15 ++++---- arch/parisc/lib/iomap.c | 5 +- arch/powerpc/kernel/iomap.c | 5 +- arch/powerpc/kernel/legacy_serial.c | 2 - arch/powerpc/kernel/pci-common.c | 31 ++++++++---------- arch/powerpc/kernel/pci_64.c | 2 - arch/powerpc/kernel/prom_parse.c | 4 +- arch/powerpc/platforms/fsl_uli1575.c | 2 - arch/powerpc/platforms/maple/setup.c | 2 - arch/powerpc/platforms/maple/time.c | 2 - arch/powerpc/platforms/pseries/eeh_cache.c | 5 +- arch/powerpc/platforms/pseries/pci.c | 4 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/ppc4xx_pci.c | 8 ++-- arch/ppc/kernel/pci.c | 48 +++++++++++++--------------- arch/ppc/syslib/ppc405_pci.c | 2 - arch/ppc/syslib/ppc_sys.c | 2 - arch/sh/drivers/pci/pci.c | 11 +++--- arch/sh/kernel/io_trapped.c | 10 ++++- arch/sparc/kernel/of_device.c | 1 arch/sparc/kernel/pcic.c | 12 +++---- arch/sparc/lib/iomap.c | 5 +- arch/sparc64/kernel/of_device.c | 5 +- arch/sparc64/kernel/pci.c | 21 ++++++------ arch/sparc64/lib/iomap.c | 5 +- arch/v850/kernel/rte_mb_a_pci.c | 8 ++-- arch/x86/kernel/pci-calgary_64.c | 2 - arch/x86/pci/i386.c | 4 +- arch/x86/pci/k8-bus_64.c | 5 +- arch/xtensa/kernel/pci.c | 12 +++---- drivers/base/platform.c | 31 +++++++++--------- drivers/pnp/manager.c | 5 -- include/linux/ioport.h | 16 +++++++-- kernel/resource.c | 2 - 51 files changed, 232 insertions(+), 208 deletions(-)
PATCH 1/4 resource: add resource_size()
Avoid one-off errors by introducing a resource_size() function.
---
include/linux/ioport.h | 4 ++++ kernel/resource.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-)
include/linux/ioport.h +4 -0
@@ -113,6 +113,10 @@ extern int allocate_resource(struct resoint adjust_resource (struct resource *res,resource_size_t start,resource_size_t size);resource_size_t resource_alignment (struct resource *res); +static inline resource_size_t resource_size (struct resource *res) +{ +return res->end - res->start +1 ; +}/* Convenience shorthand with allocation */ #define request_region (start,n,name) __request_region(&ioport_resource, (start), (n), (name))
kernel/resource.c +1 -1
@@ -490,7 +490,7 @@ resource_size_t resource_alignment(struc {switch (res->flags & (IORESOURCE_SIZEALIGN |IORESOURCE_STARTALIGN )) {case IORESOURCE_SIZEALIGN : -return res->end - res->start +1 ; +return resource_size (res);case IORESOURCE_STARTALIGN :return res->start;default :
PATCH 2/4 resource: add resource_type() and IORESOURCE_TYPE_BITS
In reply to Magnus DammIntroduce resource_type() and IORESOURCE_TYPE_BITS, this is the ground work that allows us to squeeze in more resource types.
---
drivers/base/platform.c | 31 +++++++++++++++++-------------- include/linux/ioport.h | 7 ++++++- 2 files changed, 23 insertions(+), 15 deletions(-)
drivers/base/platform.c +17 -14
@@ -42,10 +42,8 @@ struct resource *platform_get_resource(sfor (i =0 ; i < dev->num_resources; i++) {struct resource *r = &dev->resource[i]; -if ((r->flags & (IORESOURCE_IO |IORESOURCE_MEM | -IORESOURCE_IRQ |IORESOURCE_DMA )) == type) -if (num-- ==0 ) -return r; +if (type ==resource_type (r) && num-- ==0 ) +return r; }return NULL ; }
@@ -78,10 +76,8 @@ struct resource *platform_get_resource_bfor (i =0 ; i < dev->num_resources; i++) {struct resource *r = &dev->resource[i]; -if ((r->flags & (IORESOURCE_IO |IORESOURCE_MEM | -IORESOURCE_IRQ |IORESOURCE_DMA )) == type) -if (!strcmp (r->name, name)) -return r; +if (type ==resource_type (r) && !strcmp (r->name, name)) +return r; }return NULL ; }
@@ -259,9 +255,9 @@ int platform_device_add(struct platform_ p = r->parent;if (!p) { -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) p = &iomem_resource; -else if (r->flags &IORESOURCE_IO ) +else if (resource_type (r) ==IORESOURCE_IO ) p = &ioport_resource; }
@@ -282,9 +278,14 @@ int platform_device_add(struct platform_return ret; failed: -while (--i >=0 ) -if (pdev->resource[i].flags & (IORESOURCE_MEM |IORESOURCE_IO )) -release_resource (&pdev->resource[i]); +while (--i >=0 ) { +struct resource *r = &pdev->resource[i]; +unsigned long type =resource_type (r); + +if (type ==IORESOURCE_MEM || type ==IORESOURCE_IO ) +release_resource (r); + } +return ret; }EXPORT_SYMBOL_GPL (platform_device_add);
@@ -306,7 +307,9 @@ void platform_device_del(struct platformfor (i =0 ; i < pdev->num_resources; i++) {struct resource *r = &pdev->resource[i]; -if (r->flags & (IORESOURCE_MEM |IORESOURCE_IO )) +unsigned long type =resource_type (r); + +if (type ==IORESOURCE_MEM || type ==IORESOURCE_IO )release_resource (r); } }
include/linux/ioport.h +6 -1
@@ -34,7 +34,8 @@ struct resource_list {*/ #define IORESOURCE_BITS 0x000000ff/* Bus-specific bits */ -#define IORESOURCE_IO 0x00000100/* Resource type */ +#define IORESOURCE_TYPE_BITS 0x00000f00/* Resource type */ +#define IORESOURCE_IO 0x00000100#define IORESOURCE_MEM 0x00000200#define IORESOURCE_IRQ 0x00000400#define IORESOURCE_DMA 0x00000800
@@ -117,6 +118,10 @@ static inline resource_size_t resource_s {return res->end - res->start +1 ; } +static inline unsigned long resource_type (struct resource *res) +{ +return res->flags &IORESOURCE_TYPE_BITS ; +}/* Convenience shorthand with allocation */ #define request_region (start,n,name) __request_region(&ioport_resource, (start), (n), (name))
PATCH 3/4 resource: use new resource type changes
In reply to Magnus DammMake sure resource_type() or IORESOURCE_TYPE_BITS are used instead of bit operations. This needs more work, I ignored drivers/ for now.
---
arch/alpha/kernel/pci.c | 21 ++++++------ arch/arm/kernel/bios32.c | 16 ++++----- arch/arm/mach-iop13xx/pci.c | 6 +-- arch/arm/mm/iomap.c | 5 +- arch/arm/plat-s3c24xx/pm.c | 2 - arch/cris/arch-v32/drivers/pci/bios.c | 6 +-- arch/frv/mb93090-mb00/pci-frv.c | 10 ++--- arch/frv/mb93090-mb00/pci-iomap.c | 3 + arch/ia64/pci/pci.c | 7 ++-- arch/ia64/sn/kernel/io_init.c | 2 - arch/m68k/kernel/bios32.c | 6 +-- arch/mips/basler/excite/excite_device.c | 12 +------ arch/mips/lib/iomap-pci.c | 5 +- arch/mips/pci/pci.c | 24 +++++++------- arch/mips/pmc-sierra/yosemite/ht.c | 6 +-- arch/mn10300/unit-asb2305/pci-asb2305.c | 8 ++-- arch/mn10300/unit-asb2305/pci-iomap.c | 3 + arch/parisc/kernel/pci.c | 15 ++++---- arch/parisc/lib/iomap.c | 5 +- arch/powerpc/kernel/iomap.c | 5 +- arch/powerpc/kernel/legacy_serial.c | 2 - arch/powerpc/kernel/pci-common.c | 31 ++++++++---------- arch/powerpc/kernel/pci_64.c | 2 - arch/powerpc/kernel/prom_parse.c | 4 +- arch/powerpc/platforms/fsl_uli1575.c | 2 - arch/powerpc/platforms/maple/setup.c | 2 - arch/powerpc/platforms/maple/time.c | 2 - arch/powerpc/platforms/pseries/eeh_cache.c | 5 +- arch/powerpc/platforms/pseries/pci.c | 4 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/ppc4xx_pci.c | 8 ++-- arch/ppc/kernel/pci.c | 48 +++++++++++++--------------- arch/ppc/syslib/ppc405_pci.c | 2 - arch/ppc/syslib/ppc_sys.c | 2 - arch/sh/drivers/pci/pci.c | 11 +++--- arch/sh/kernel/io_trapped.c | 10 ++++- arch/sparc/kernel/of_device.c | 1 arch/sparc/kernel/pcic.c | 12 +++---- arch/sparc/lib/iomap.c | 5 +- arch/sparc64/kernel/of_device.c | 5 +- arch/sparc64/kernel/pci.c | 21 ++++++------ arch/sparc64/lib/iomap.c | 5 +- arch/v850/kernel/rte_mb_a_pci.c | 8 ++-- arch/x86/kernel/pci-calgary_64.c | 2 - arch/x86/pci/i386.c | 4 +- arch/x86/pci/k8-bus_64.c | 5 +- arch/xtensa/kernel/pci.c | 12 +++---- drivers/pnp/manager.c | 5 -- 48 files changed, 201 insertions(+), 190 deletions(-)
arch/alpha/kernel/pci.c +11 -10
@@ -135,7 +135,7 @@ pcibios_align_resource(void *data, strucunsigned long alignto;resource_size_t start = res->start; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {/* Make sure we start at our min on all hoses */ if (start - hose->io_space->start <PCIBIOS_MIN_IO ) start =PCIBIOS_MIN_IO + hose->io_space->start;
@@ -146,7 +146,7 @@ pcibios_align_resource(void *data, strucif (start &0x300 ) start = (start +0x3ff ) & ~0x3ff ; } -else if (res->flags &IORESOURCE_MEM ) { +else if (resource_type (res) ==IORESOURCE_MEM ) {/* Make sure we start at our min on all hoses */ if (start - hose->mem_space->start <PCIBIOS_MIN_MEM ) start =PCIBIOS_MIN_MEM + hose->mem_space->start;
@@ -269,10 +269,10 @@ pcibios_fixup_device_resources(struct pcfor (i =0 ; i <PCI_NUM_RESOURCES ; i++) {if (!dev->resource[i].start)continue ; -if (dev->resource[i].flags &IORESOURCE_IO ) +if (resource_type (&dev->resource[i]) ==IORESOURCE_IO )pcibios_fixup_resource (&dev->resource[i], hose->io_space); -else if (dev->resource[i].flags &IORESOURCE_MEM ) +else if (resource_type (&dev->resource[i]) ==IORESOURCE_MEM )pcibios_fixup_resource (&dev->resource[i], hose->mem_space); }
@@ -345,9 +345,9 @@ pcibios_resource_to_bus(struct pci_dev *struct pci_controller *hose = (struct pci_controller *)dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = hose->io_space->start; -else if (res->flags &IORESOURCE_MEM ) +else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->mem_space->start; region->start = res->start - offset;
@@ -360,9 +360,9 @@ void pcibios_bus_to_resource(struct pci_struct pci_controller *hose = (struct pci_controller *)dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = hose->io_space->start; -else if (res->flags &IORESOURCE_MEM ) +else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->mem_space->start; res->start = region->start + offset;
@@ -534,14 +534,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {/* Not checking IORESOURCE_CACHEABLE because alpha does not distinguish between ioremap and ioremap_nocache. */ return ioremap (start, len);
arch/arm/kernel/bios32.c +8 -8
@@ -331,7 +331,7 @@ pdev_fixup_device_resources(struct pci_sfor (i =0 ; i <PCI_NUM_RESOURCES ; i++) {if (dev->resource[i].start ==0 )continue ; -if (dev->resource[i].flags &IORESOURCE_MEM ) +if (resource_type (&dev->resource[i]) ==IORESOURCE_MEM ) offset = root->mem_offset;else offset = root->io_offset;
@@ -448,9 +448,9 @@ pcibios_resource_to_bus(struct pci_dev *struct pci_sys_data *root = dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = root->io_offset; -if (res->flags &IORESOURCE_MEM ) +if (resource_type (res) ==IORESOURCE_MEM ) offset = root->mem_offset; region->start = res->start - offset;
@@ -464,9 +464,9 @@ pcibios_bus_to_resource(struct pci_dev *struct pci_sys_data *root = dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = root->io_offset; -if (res->flags &IORESOURCE_MEM ) +if (resource_type (res) ==IORESOURCE_MEM ) offset = root->mem_offset; res->start = region->start + offset;
@@ -648,7 +648,7 @@ void pcibios_align_resource(void *data, {resource_size_t start = res->start; -if (res->flags &IORESOURCE_IO && start &0x300 ) +if (resource_type (res) ==IORESOURCE_IO && start &0x300 ) start = (start +0x3ff ) & ~0x3ff ; res->start = (start + align -1 ) & ~(align -1 );
@@ -677,9 +677,9 @@ int pcibios_enable_device(struct pci_dev " of resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }
arch/arm/mach-iop13xx/pci.c +3 -3
@@ -70,9 +70,9 @@ void iop13xx_map_pci_memory(void) max =DEVICE_COUNT_RESOURCE ;for (i =0 ; i < max; i++) { -struct resource *res = &dev->resource[i]; -if (res->flags &IORESOURCE_MEM ) - end =max (res->end, end); +struct resource *r = &dev->resource[i]; +if (resource_type (r) ==IORESOURCE_MEM ) + end =max (r->end, end); } }
arch/arm/mm/iomap.c +3 -2
@@ -29,14 +29,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {if (flags &IORESOURCE_CACHEABLE )return ioremap (start, len);return ioremap_nocache (start, len);
arch/arm/plat-s3c24xx/pm.c +1 -1
@@ -208,7 +208,7 @@ static void s3c2410_pm_run_res(struct reif (ptr->child !=NULL )s3c2410_pm_run_res (ptr->child, fn, arg); -if ((ptr->flags &IORESOURCE_MEM ) && +if ((resource_type (ptr) ==IORESOURCE_MEM ) &&strcmp (ptr->name,"System RAM" ) ==0 ) {DBG ("Found system RAM at %08lx..%08lx\n" , ptr->start, ptr->end);
arch/cris/arch-v32/drivers/pci/bios.c +3 -3
@@ -45,7 +45,7 @@ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (start &0x300 ) {
@@ -73,9 +73,9 @@ int pcibios_enable_resources(struct pci_printk (KERN_ERR "PCI: Device %s not available because of resource collisions\n" ,pci_name (dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (dev->resource[PCI_ROM_RESOURCE ].start)
arch/frv/mb93090-mb00/pci-frv.c +5 -5
@@ -66,7 +66,7 @@ void pcibios_align_resource(void *data, struct resource *res, resource_size_t size, resource_size_t align) { -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (start &0x300 ) {
@@ -150,7 +150,7 @@ static void __init pcibios_allocate_resocontinue ;if (!r->start)/* Address not assigned at all */ continue ; -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) disabled = !(command &PCI_COMMAND_IO );else disabled = !(command &PCI_COMMAND_MEMORY );
@@ -200,7 +200,7 @@ static void __init pcibios_assign_resour* Don't touch IDE controllers and I/O ports of video cards! */ if ((class ==PCI_CLASS_STORAGE_IDE && idx <4 ) || - (class ==PCI_CLASS_DISPLAY_VGA && (r->flags &IORESOURCE_IO ))) + (class ==PCI_CLASS_DISPLAY_VGA && (resource_type (r) ==IORESOURCE_IO )))continue ;/*
@@ -249,9 +249,9 @@ int pcibios_enable_resources(struct pci_printk (KERN_ERR "PCI: Device %s not available because of resource collisions\n" ,pci_name (dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (dev->resource[PCI_ROM_RESOURCE ].start)
arch/frv/mb93090-mb00/pci-iomap.c +2 -1
@@ -16,11 +16,12 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ; -if ((flags &IORESOURCE_IO ) || (flags &IORESOURCE_MEM )) +if (type ==IORESOURCE_IO || type ==IORESOURCE_MEM )return (void __iomem *) start;return NULL ;
arch/ia64/pci/pci.c +4 -3
@@ -309,7 +309,7 @@ pcibios_setup_root_windows(struct pci_bustruct resource *res = &ctrl->window[i].resource;/* HP's firmware has a hack to work around a Windows bug. * Ignore these tiny memory ranges */ -if ((res->flags &IORESOURCE_MEM ) && +if (resource_type (res) ==IORESOURCE_MEM && (res->end - res->start <16 ))continue ;if (j >=PCI_BUS_NUM_RESOURCES ) {
@@ -432,15 +432,16 @@ EXPORT_SYMBOL(pcibios_bus_to_resource);static int __devinit is_valid_resource (struct pci_dev *dev,int idx) { -unsigned int i, type_mask =IORESOURCE_IO |IORESOURCE_MEM ; +unsigned int i;struct resource *devr = &dev->resource[idx]; +unsigned long type =resource_type (devr);if (!dev->bus)return 0 ;for (i=0 ; i<PCI_BUS_NUM_RESOURCES ; i++) {struct resource *busr = dev->bus->resource[i]; -if (!busr || ((busr->flags ^ devr->flags) & type_mask)) +if (!busr || (resource_type (busr) != type))continue ;if ((devr->start) && (devr->start >= busr->start) && (devr->end <= busr->end))
arch/ia64/sn/kernel/io_init.c +1 -1
@@ -255,7 +255,7 @@ sn_io_slot_fixup(struct pci_dev *dev)if (dev->resource[idx].parent && dev->resource[idx].parent->child)release_resource (&dev->resource[idx]); -if (dev->resource[idx].flags &IORESOURCE_IO ) +if (resource_type (&dev->resource[idx]) ==IORESOURCE_IO )insert_resource (&ioport_resource, &dev->resource[idx]);else insert_resource (&iomem_resource, &dev->resource[idx]);
arch/m68k/kernel/bios32.c +3 -3
@@ -392,12 +392,12 @@ static void __init pcibios_claim_resourcif ((r->start ==0 ) || (r->parent !=NULL ))continue ;#if 1 -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) pr = &bus_info->io_space;else pr = &bus_info->mem_space;#else -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) pr = &ioport_resource;else pr = &iomem_resource;
@@ -438,7 +438,7 @@ int __init pcibios_assign_resource(strucif (!pr)return -EINVAL ; -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) {if (size >0x100 )return -EFBIG ;
arch/mips/basler/excite/excite_device.c +3 -9
@@ -146,15 +146,13 @@ static struct resourcestatic void adjust_resources (struct resource *res,unsigned int n) {struct resource *p; -const unsigned long mask =IORESOURCE_IO |IORESOURCE_MEM - |IORESOURCE_IRQ |IORESOURCE_DMA ;for (p = res; p < res + n; p++) {const struct resource *const parent = p->parent;if (parent) { p->start += parent->start; p->end += parent->start; - p->flags = parent->flags & mask; + p->flags =resource_type (parent); } } }
@@ -389,12 +387,8 @@ static int __init excite_setup_devs(void res =request_resource (&iomem_resource, &excite_nand_resource);if (res)return res; - excite_fpga_resource.flags = excite_fpga_resource.parent->flags & - (IORESOURCE_IO |IORESOURCE_MEM - |IORESOURCE_IRQ |IORESOURCE_DMA ); - excite_nand_resource.flags = excite_nand_resource.parent->flags & - (IORESOURCE_IO |IORESOURCE_MEM - |IORESOURCE_IRQ |IORESOURCE_DMA ); + excite_fpga_resource.flags =resource_type (excite_fpga_resource.parent); + excite_nand_resource.flags =resource_type (excite_nand_resource.parent);return 0 ; }
arch/mips/lib/iomap-pci.c +3 -2
@@ -48,14 +48,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map_pci (dev, start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {if (flags &IORESOURCE_CACHEABLE )return ioremap (start, len);return ioremap_nocache (start, len);
arch/mips/pci/pci.c +13 -11
@@ -56,7 +56,7 @@ pcibios_align_resource(void *data, strucstruct pci_controller *hose = dev->sysdata;resource_size_t start = res->start; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {/* Make sure we start at our min on all hoses */ if (start <PCIBIOS_MIN_IO + hose->io_resource->start) start =PCIBIOS_MIN_IO + hose->io_resource->start;
@@ -66,7 +66,7 @@ pcibios_align_resource(void *data, struc*/ if (start &0x300 ) start = (start +0x3ff ) & ~0x3ff ; - }else if (res->flags &IORESOURCE_MEM ) { + }else if (resource_type (res) ==IORESOURCE_MEM ) {/* Make sure we start at our min on all hoses */ if (start <PCIBIOS_MIN_MEM + hose->mem_resource->start) start =PCIBIOS_MIN_MEM + hose->mem_resource->start;
@@ -168,6 +168,7 @@ static int pcibios_enable_resources(struu16 cmd, old_cmd;int idx;struct resource *r; +unsigned long type;pci_read_config_word (dev,PCI_COMMAND , &cmd); old_cmd = cmd;
@@ -177,7 +178,8 @@ static int pcibios_enable_resources(strucontinue ; r = &dev->resource[idx]; -if (!(r->flags & (IORESOURCE_IO |IORESOURCE_MEM ))) + type =resource_type (r); + if (type != IORESOURCE_IO && type != IORESOURCE_MEM)))continue ;if ((idx ==PCI_ROM_RESOURCE ) && (!(r->flags &IORESOURCE_ROM_ENABLE )))
@@ -188,9 +190,9 @@ static int pcibios_enable_resources(stru pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (type ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (cmd != old_cmd) {
@@ -250,9 +252,9 @@ static void pcibios_fixup_device_resourccontinue ;if (dev->resource[i].flags &IORESOURCE_PCI_FIXED )continue ; -if (dev->resource[i].flags &IORESOURCE_IO ) +if (resource_type (&dev->resource[i]) ==IORESOURCE_IO ) offset = hose->io_offset; -else if (dev->resource[i].flags &IORESOURCE_MEM ) +else if (resource_type (&dev->resource[i]) ==IORESOURCE_MEM ) offset = hose->mem_offset; dev->resource[i].start += offset;
@@ -297,9 +299,9 @@ void pcibios_resource_to_bus(struct pci_struct pci_controller *hose = (struct pci_controller *)dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = hose->io_offset; -else if (res->flags &IORESOURCE_MEM ) +else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->mem_offset; region->start = res->start - offset;
@@ -313,9 +315,9 @@ pcibios_bus_to_resource(struct pci_dev *struct pci_controller *hose = (struct pci_controller *)dev->sysdata;unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) offset = hose->io_offset; -else if (res->flags &IORESOURCE_MEM ) +else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->mem_offset; res->start = region->start + offset;
arch/mips/pmc-sierra/yosemite/ht.c +3 -3
@@ -304,9 +304,9 @@ int pcibios_enable_resources(struct pci_ "resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (cmd != old_cmd) {
@@ -386,7 +386,7 @@ void pcibios_align_resource(void *data, {struct pci_dev *dev = data; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;/* We need to avoid collisions with `mirrored' VGA ports
arch/mn10300/unit-asb2305/pci-asb2305.c +4 -4
@@ -47,7 +47,7 @@ void pcibios_align_resource(void *data, );#endif -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {unsigned long start = res->start;if (start &0x300 ) {
@@ -142,7 +142,7 @@ static void __init pcibios_allocate_resocontinue ;if (!r->start)/* Address not assigned */ continue ; -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) disabled = !(command &PCI_COMMAND_IO );else disabled = !(command &PCI_COMMAND_MEMORY );
@@ -242,9 +242,9 @@ int pcibios_enable_resources(struct pci_return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }
arch/mn10300/unit-asb2305/pci-iomap.c +2 -1
@@ -19,11 +19,12 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ; -if ((flags &IORESOURCE_IO ) || (flags &IORESOURCE_MEM )) +if (type ==IORESOURCE_IO || type ==IORESOURCE_MEM )return (void __iomem *) start;return NULL ;
arch/parisc/kernel/pci.c +8 -7
@@ -202,7 +202,7 @@ void __devinit pcibios_resource_to_bus(sstruct pci_hba_data *hba =HBA_DATA (dev->bus->bridge->platform_data);#endif -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {/* ** I/O space may see busnumbers here. Something ** in the form of 0xbbxxxx where bb is the bus num
@@ -212,15 +212,15 @@ void __devinit pcibios_resource_to_bus(s*/ region->start =PCI_PORT_ADDR (res->start); region->end =PCI_PORT_ADDR (res->end); - }else if (res->flags &IORESOURCE_MEM ) { + }else if (resource_type (res) ==IORESOURCE_MEM ) {/* Convert MMIO addr to PCI addr (undo global virtualization) */ region->start =PCI_BUS_ADDR (hba, res->start); region->end =PCI_BUS_ADDR (hba, res->end); }DBG_RES ("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n" , - dev->bus->number, res->flags &IORESOURCE_IO ?"IO" :"MEM" , - region->start, region->end); + dev->bus->number,resource_type (res) ==IORESOURCE_IO ?"IO" + :"MEM" , region->start, region->end); } void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
@@ -230,12 +230,12 @@ void pcibios_bus_to_resource(struct pci_struct pci_hba_data *hba =HBA_DATA (dev->bus->bridge->platform_data);#endif -if (res->flags &IORESOURCE_MEM ) { +if (resource_type (res) ==IORESOURCE_MEM ) { res->start =PCI_HOST_ADDR (hba, region->start); res->end =PCI_HOST_ADDR (hba, region->end); } -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) { res->start = region->start; res->end = region->end; }
@@ -266,7 +266,8 @@ void pcibios_align_resource(void *data, (int) res->flags, size, alignment);/* If it's not IO, then it's gotta be MEM */ - align = (res->flags &IORESOURCE_IO ) ?PCIBIOS_MIN_IO :PCIBIOS_MIN_MEM ; + align = (resource_type (res) ==IORESOURCE_IO ) ?PCIBIOS_MIN_IO + :PCIBIOS_MIN_MEM ;/* Align to largest of MIN or input size */ mask =max (alignment, align) -1 ;
arch/parisc/lib/iomap.c +3 -2
@@ -441,14 +441,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {if (flags &IORESOURCE_CACHEABLE )return ioremap (start, len);return ioremap_nocache (start, len);
arch/powerpc/kernel/iomap.c +3 -2
@@ -122,14 +122,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len)return NULL ;if (max && len > max) len = max; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) +if (type ==IORESOURCE_MEM )return ioremap (start, len);/* What? */ return NULL ;
arch/powerpc/kernel/legacy_serial.c +1 -1
@@ -233,7 +233,7 @@ static int __init add_legacy_pci_port(streturn -1 ;/* We only support BAR 0 for now */ - iotype = (flags &IORESOURCE_MEM ) ?UPIO_MEM :UPIO_PORT ; + iotype = ((flags &IORESOURCE_TYPE_BITS ) ==IORESOURCE_MEM ) ?UPIO_MEM :UPIO_PORT ; addr =of_translate_address (pci_dev, addrp);if (addr ==OF_BAD_ADDR )return -1 ;
arch/powerpc/kernel/pci-common.c +15 -16
@@ -305,10 +305,10 @@ static struct resource *__pci_mmap_make_/* treat ROM as memory (should be already) */ if (i ==PCI_ROM_RESOURCE ) - flags |=IORESOURCE_MEM ; + flags =IORESOURCE_MEM ;/* Active and same type? */ -if ((flags & res_bit) ==0 ) +if ((flags &IORESOURCE_TYPE_BITS ) != res_bit)continue ;/* In the range of this resource? */
@@ -382,10 +382,9 @@ pgprot_t pci_phys_mem_access_prot(structfor_each_pci_dev (pdev) {for (i =0 ; i <=PCI_ROM_RESOURCE ; i++) {struct resource *rp = &pdev->resource[i]; -int flags = rp->flags;/* Active and same type? */ -if ((flags &IORESOURCE_MEM ) ==0 ) +if (resource_type (rp) !=IORESOURCE_MEM )continue ;/* In the range of this resource? */ if (offset < (rp->start & PAGE_MASK) ||
@@ -451,7 +450,7 @@ void pci_resource_to_user(const struct pif (hose ==NULL )return ; -if (rsrc->flags &IORESOURCE_IO ) +if (resource_type (rsrc) ==IORESOURCE_IO ) offset = (unsigned long )hose->io_base_virt - _IO_BASE;/* We pass a fully fixed up address to userland for MMIO instead of
@@ -472,7 +471,7 @@ void pci_resource_to_user(const struct p* BenH. */ #if 0 - else if (rsrc->flags & IORESOURCE_MEM) + else if (resource_type(rsrc) == IORESOURCE_MEM) offset = hose->pci_mem_offset;#endif
@@ -680,10 +679,10 @@ void pcibios_resource_to_bus(struct pci_if (!hose)return ; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) { offset = (unsigned long )hose->io_base_virt - _IO_BASE; mask =0xffffffffu ; - }else if (res->flags &IORESOURCE_MEM ) + }else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->pci_mem_offset; region->start = (res->start - offset) & mask;
@@ -699,10 +698,10 @@ void pcibios_bus_to_resource(struct pci_if (!hose)return ; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) { offset = (unsigned long )hose->io_base_virt - _IO_BASE; mask =0xffffffffu ; - }else if (res->flags &IORESOURCE_MEM ) + }else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->pci_mem_offset; res->start = (region->start + offset) & mask; res->end = (region->end + offset) & mask;
@@ -715,10 +714,10 @@ static void __devinit fixup_resource(strstruct pci_controller *hose =pci_bus_to_host (dev->bus);resource_size_t offset =0 , mask = (resource_size_t)-1 ; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) { offset = (unsigned long )hose->io_base_virt - _IO_BASE; mask =0xffffffffu ; - }else if (res->flags &IORESOURCE_MEM ) + }else if (resource_type (res) ==IORESOURCE_MEM ) offset = hose->pci_mem_offset; res->start = (res->start + offset) & mask;
@@ -813,7 +812,7 @@ static void __devinit __pcibios_fixup_bu* equal to the pci_mem_offset of the host bridge and * their size is smaller than 1M. */ -if (res->flags &IORESOURCE_MEM && +if (resource_type (res) ==IORESOURCE_MEM && res->start == hose->pci_mem_offset && res->end <0x100000 ) { printk(KERN_INFO
@@ -895,7 +894,7 @@ void pcibios_align_resource(void *data, {struct pci_dev *dev = data; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (skip_isa_ioresource_align (dev))
@@ -991,7 +990,7 @@ static void __init pcibios_allocate_bus_ || res->start > res->end)continue ;if (bus->parent ==NULL ) - pr = (res->flags &IORESOURCE_IO ) ? + pr = (resource_type (res) ==IORESOURCE_IO ) ? &ioport_resource : &iomem_resource;else {/* Don't bother with non-root busses when
@@ -1085,7 +1084,7 @@ static void __init pcibios_allocate_resocontinue ;if (!r->flags || (r->flags &IORESOURCE_UNSET ))continue ;/* Not assigned at all */ -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) disabled = !(command &PCI_COMMAND_IO );else disabled = !(command &PCI_COMMAND_MEMORY );
arch/powerpc/kernel/pci_64.c +1 -1
@@ -316,7 +316,7 @@ void __devinit of_scan_pci_bridge(struct size =of_read_number (&ranges[6 ],2 );if (flags ==0 || size ==0 )continue ; -if (flags &IORESOURCE_IO ) { +if ((flags &IORESOUCE_TYPE_BITS ) ==IORESOURCE_IO ) { res = bus->resource[0 ];if (res->flags) { printk(KERN_ERR "PCI: ignoring extra I/O range"
arch/powerpc/kernel/prom_parse.c +2 -2
@@ -614,13 +614,13 @@ static int __of_address_to_resource(stru {u64 taddr; -if ((flags & (IORESOURCE_IO |IORESOURCE_MEM )) ==0 ) +if (flags !=IORESOURCE_IO && flags !=IORESOURCE_MEM )return -EINVAL ; taddr =of_translate_address (dev, addrp);if (taddr ==OF_BAD_ADDR )return -EINVAL ;memset (r,0 ,sizeof (struct resource )); -if (flags &IORESOURCE_IO ) { +if (flags ==IORESOURCE_IO ) {unsigned long port; port =pci_address_to_pio (taddr);if (port == (unsigned long )-1 )
arch/powerpc/platforms/fsl_uli1575.c +1 -1
@@ -220,7 +220,7 @@ static void __devinit quirk_final_uli524for (i =0 ; i <PCI_BUS_NUM_RESOURCES ; i++) {if ((bus->resource[i]) && - (bus->resource[i]->flags &IORESOURCE_MEM )) { + (resource_type (bus->resource[i]) ==IORESOURCE_MEM )) { dummy =ioremap (bus->resource[i]->start,0x4 );if (dummy) {in_8 (dummy);
arch/powerpc/platforms/maple/setup.c +1 -1
@@ -85,7 +85,7 @@ static unsigned long maple_find_nvram_ba " address\n"); goto bail; } -if (!(r.flags &IORESOURCE_IO )) { +if (resource_type (&r) !=IORESOURCE_IO ) {printk (KERN_EMERG "Maple: NVRAM address isn't PIO!\n" ); goto bail; }
arch/powerpc/platforms/maple/time.c +1 -1
@@ -153,7 +153,7 @@ unsigned long __init maple_get_boot_time " address\n"); goto bail; } -if (!(r.flags &IORESOURCE_IO )) { +if (resource_type (&r) !=IORESOURCE_IO ) {printk (KERN_EMERG "Maple: RTC address isn't PIO!\n" ); goto bail; }
arch/powerpc/platforms/pseries/eeh_cache.c +3 -2
@@ -120,7 +120,7 @@ static void pci_addr_cache_print(structstruct pci_io_addr_range *piar; piar = rb_entry(n, struct pci_io_addr_range, rb_node);printk (KERN_DEBUG "PCI: %s addr range %d [%lx-%lx]: %s\n" , - (piar->flags &IORESOURCE_IO ) ?"i/o" :"mem" , cnt, + ((piar->flags &IORESOURCE_TYPE_BITS ) ==IORESOURCE_IO ) ?"i/o" :"mem" , cnt, piar->addr_lo, piar->addr_hi,pci_name (piar->pcidev)); cnt++; n =rb_next (n);
@@ -202,9 +202,10 @@ static void __pci_addr_cache_insert_deviunsigned long start =pci_resource_start (dev,i);unsigned long end =pci_resource_end (dev,i);unsigned int flags =pci_resource_flags (dev,i); +unsigned int type = flags &IORESOURCE_TYPE_BITS ;/* We are interested only bus addresses, not dma or other stuff */ -if (0 == (flags & (IORESOURCE_IO |IORESOURCE_MEM ))) +if (type !=IORESOURCE_IO | type !=IORESOURCE_MEM )continue ;if (start ==0 || ~start ==0 || end ==0 || ~end ==0 )continue ;
arch/powerpc/platforms/pseries/pci.c +2 -2
@@ -96,9 +96,9 @@ static void fixup_winbond_82c105(structfor (i =0 ; i <DEVICE_COUNT_RESOURCE ; ++i) {/* zap the 2nd function of the winbond chip */ -if (dev->resource[i].flags &IORESOURCE_IO +if (resource_type (&dev->resource[i]) ==IORESOURCE_IO && dev->bus->number ==0 && dev->devfn ==0x81 ) - dev->resource[i].flags &= ~IORESOURCE_IO ; + dev->resource[i].flags &= ~IORESOURCE_TYPE_BITS ;if (dev->resource[i].start ==0 && dev->resource[i].end) { dev->resource[i].flags =0 ; dev->resource[i].end =0 ;
arch/powerpc/sysdev/fsl_pci.c +2 -2
@@ -45,7 +45,7 @@ void __init setup_pci_atmu(struct pci_co/* Setup outbound MEM window */ for (i =0 ; i <3 ; i++) -if (hose->mem_resources[i].flags &IORESOURCE_MEM ){ +if (resource_type (&hose->mem_resources[i]) ==IORESOURCE_MEM ){resource_size_t pci_addr_start = hose->mem_resources[i].start - hose->pci_mem_offset;
@@ -64,7 +64,7 @@ void __init setup_pci_atmu(struct pci_co }/* Setup outbound IO window */ -if (hose->io_resource.flags &IORESOURCE_IO ){ +if (resource_type (&hose->io_resource) ==IORESOURCE_IO ){ pr_debug("PCI IO resource start 0x%016llx, size 0x%016llx, " "phy base 0x%016llx.\n", (u64)hose->io_resource.start,
arch/powerpc/sysdev/ppc4xx_pci.c +4 -4
@@ -205,7 +205,7 @@ static void __init ppc4xx_configure_pci_struct resource *res = &hose->mem_resources[i];/* we only care about memory windows */ -if (!(res->flags &IORESOURCE_MEM )) +if (resource_type (res) !=IORESOURCE_MEM )continue ;if (j >2 ) { printk(KERN_WARNING "%s: Too many ranges\n",
@@ -356,7 +356,7 @@ static void __init ppc4xx_configure_pcixstruct resource *res = &hose->mem_resources[i];/* we only care about memory windows */ -if (!(res->flags &IORESOURCE_MEM )) +if (resource_type (res) !=IORESOURCE_MEM )continue ;if (j >1 ) { printk(KERN_WARNING "%s: Too many ranges\n",
@@ -1322,7 +1322,7 @@ static void __init ppc4xx_configure_pciestruct resource *res = &hose->mem_resources[i];/* we only care about memory windows */ -if (!(res->flags &IORESOURCE_MEM )) +if (resource_type (res) !=IORESOURCE_MEM )continue ;if (j >1 ) { printk(KERN_WARNING "%s: Too many ranges\n",
@@ -1367,7 +1367,7 @@ static void __init ppc4xx_configure_pcie }/* Configure IO, always 64K starting at 0 */ -if (hose->io_resource.flags &IORESOURCE_IO ) { +if (resource_type (&hose->io_resource) ==IORESOURCE_IO ) { lah =RES_TO_U32_HIGH (hose->io_base_phys); lal =RES_TO_U32_LOW (hose->io_base_phys);out_le32 (mbase +PECFG_POM2LAH ,0 );
arch/ppc/kernel/pci.c +23 -25
160 lines not on this page · raw message
arch/ppc/syslib/ppc405_pci.c +1 -1
@@ -47,7 +47,7 @@ ppc405_pcibios_fixup_resources(struct pc res = dev->resource + i;if (!res->start)continue ; - if ((res->flags & IORESOURCE_MEM) && + if (resource_type(res) == IORESOURCE_MEM && (((res->start >= min_host_addr) && (res->start <= max_host_addr)) || ((res->end >= min_host_addr)
arch/ppc/syslib/ppc_sys.c +1 -1
@@ -109,7 +109,7 @@ ppc_sys_fixup_mem_resource(struct platfoint i;for (i =0 ; i < pdev->num_resources; i++) {struct resource *r = &pdev->resource[i]; -if (((r->flags &IORESOURCE_MEM ) ==IORESOURCE_MEM ) && +if ((resource_type (r) ==IORESOURCE_MEM ) && ((r->flags &PPC_SYS_IORESOURCE_FIXUPPED ) !=PPC_SYS_IORESOURCE_FIXUPPED )) { r->start += paddr; r->end += paddr;
arch/sh/drivers/pci/pci.c +6 -5
@@ -121,7 +121,7 @@ void pcibios_align_resource(void *data,void pcibios_align_resource (void *data,struct resource *res,resource_size_t size,resource_size_t align) { -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (start &0x300 ) {
@@ -148,9 +148,9 @@ int pcibios_enable_device(struct pci_dev "of resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (dev->resource[PCI_ROM_RESOURCE ].start)
@@ -194,6 +194,7 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (unlikely (!len || !start))return NULL ;
@@ -210,9 +211,9 @@ void __iomem *pci_iomap(struct pci_dev ** punted off to __ioremap(). * -- PFM. */ -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) +if (type ==IORESOURCE_MEM )return ioremap (start, len);return NULL ;
arch/sh/kernel/io_trapped.c +7 -3
@@ -70,7 +70,7 @@ int register_trapped_io(struct trapped_i res = tiop->resource + k;pr_info ("trapped io 0x%08lx overrides %s 0x%08lx\n" , (unsigned long )(tiop->virt_base + len), - res->flags &IORESOURCE_IO ?"io" :"mmio" , +resource_type (res) ==IORESOURCE_IO ?"io" :"mmio" , (unsigned long )res->start); len +=roundup ((res->end - res->start) +1 ,PAGE_SIZE ); }
@@ -78,10 +78,14 @@ int register_trapped_io(struct trapped_i tiop->magic =IO_TRAPPED_MAGIC ;INIT_LIST_HEAD (&tiop->list);spin_lock_irq (&trapped_lock); -if (flags &IORESOURCE_IO ) +switch (flags &IORESOURCE_TYPE_BITS ) { +case IORESOURCE_IO :list_add (&tiop->list, &trapped_io); -if (flags &IORESOURCE_MEM ) +break ; +case IORESOURCE_MEM :list_add (&tiop->list, &trapped_mem); +break ; + }spin_unlock_irq (&trapped_lock);return 0 ;
arch/sparc/kernel/of_device.c +1 -0
@@ -202,6 +202,7 @@ static unsigned int of_bus_pci_get_flagsswitch ((w >>24 ) &0x03 ) {case 0x01 : flags |=IORESOURCE_IO ; +break ;case 0x02 :/* 32 bits */ case 0x03 :/* 64 bits */ flags |=IORESOURCE_MEM ;
arch/sparc/kernel/pcic.c +6 -6
@@ -482,7 +482,7 @@ static void pcic_map_pci_device(struct l address = dev->resource[j].start;if (address ==0 )break ;/* are sequential */ flags = dev->resource[j].flags; -if ((flags &IORESOURCE_IO ) !=0 ) { +if (resource_type (&dev->resource[j]) ==IORESOURCE_IO ) {if (address <0x10000 ) {/* * A device responds to I/O cycles on PCI.
@@ -508,8 +508,8 @@ static void pcic_map_pci_device(struct l dev->resource[j].start = pcic->pcic_io + address; dev->resource[j].end =1 ;/* XXX */ - dev->resource[j].flags = - (flags & ~IORESOURCE_IO ) |IORESOURCE_MEM ; + dev->resource[j].flags =IORESOURCE_MEM | + (flags & ~IORESOURCE_TYPE_BITS ); }else {/* * OOPS... PCI Spec allows this. Sun does
@@ -636,10 +636,10 @@ void __devinit pcibios_fixup_bus(struct*/ has_io = has_mem =0 ;for (i=0 ; i<6 ; i++) { -unsigned long f = dev->resource[i].flags; -if (f &IORESOURCE_IO ) { +unsigned long type =resource_type (&dev->resource[i]); +if (type ==IORESOURCE_IO ) { has_io =1 ; - }else if (f &IORESOURCE_MEM ) + }else if (type ==IORESOURCE_MEM ) has_mem =1 ; }pcic_read_config (dev->bus, dev->devfn,PCI_COMMAND ,2 , &cmd);
arch/sparc/lib/iomap.c +3 -2
@@ -24,14 +24,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {if (flags &IORESOURCE_CACHEABLE )return ioremap (start, len);return ioremap_nocache (start, len);
arch/sparc64/kernel/of_device.c +3 -2
@@ -15,7 +15,7 @@ void __iomem *of_ioremap(struct resourceunsigned long ret = res->start + offset;struct resource *r; -if (res->flags &IORESOURCE_MEM ) +if (resource_type (res) ==IORESOURCE_MEM ) r =request_mem_region (ret, size, name);else r =request_region (ret, size, name);
@@ -28,7 +28,7 @@ EXPORT_SYMBOL(of_ioremap);void of_iounmap (struct resource *res,void __iomem *base,unsigned long size) { -if (res->flags &IORESOURCE_MEM ) +if (resource_type (res) ==IORESOURCE_MEM )release_mem_region ((unsigned long ) base, size);else release_region ((unsigned long ) base, size);
@@ -260,6 +260,7 @@ static unsigned int of_bus_pci_get_flagsswitch ((w >>24 ) &0x03 ) {case 0x01 : flags |=IORESOURCE_IO ; +break ;case 0x02 :/* 32 bits */ case 0x03 :/* 64 bits */ flags |=IORESOURCE_MEM ;
arch/sparc64/kernel/pci.c +11 -10
@@ -656,7 +656,7 @@ static void __devinit of_scan_pci_bridge size =GET_64BIT (ranges,6 );if (flags ==0 || size ==0 )continue ; -if (flags &IORESOURCE_IO ) { +if ((flags &IORESOUCE_TYPE_BITS ) ==IORESOURCE_IO ) { res = bus->resource[0 ];if (res->flags) { printk(KERN_ERR "PCI: ignoring extra I/O range"
@@ -844,9 +844,9 @@ struct resource *pcibios_select_root(strstruct pci_pbm_info *pbm = pdev->bus->sysdata;struct resource *root =NULL ; -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) root = &pbm->io_space; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) root = &pbm->mem_space;return root;
@@ -876,9 +876,9 @@ int pcibios_enable_device(struct pci_devif (!(mask & (1 <<i)))continue ; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (res->flags &IORESOURCE_MEM ) +if (resource_type (res) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }
@@ -901,7 +901,7 @@ void pcibios_resource_to_bus(struct pci_ zero_res.end =0 ; zero_res.flags = res->flags; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) root = &pbm->io_space;else root = &pbm->mem_space;
@@ -922,7 +922,7 @@ void pcibios_bus_to_resource(struct pci_ res->start = region->start; res->end = region->end; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) root = &pbm->io_space;else root = &pbm->mem_space;
@@ -1017,6 +1017,7 @@ static int __pci_mmap_make_offset(structfor (i =0 ; i <=PCI_ROM_RESOURCE ; i++) {struct resource *rp = &pdev->resource[i]; +unsigned long type =resource_type (rp);/* Active? */ if (!rp->flags)
@@ -1028,9 +1029,9 @@ static int __pci_mmap_make_offset(structcontinue ; }else {if ((mmap_state == pci_mmap_io && - (rp->flags &IORESOURCE_IO ) ==0 ) || + type !=IORESOURCE_IO ) || (mmap_state == pci_mmap_mem && - (rp->flags &IORESOURCE_MEM ) ==0 )) + type !=IORESOURCE_MEM ))continue ; }
@@ -1207,7 +1208,7 @@ void pci_resource_to_user(const struct pstruct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;unsigned long offset; -if (rp->flags &IORESOURCE_IO ) +if (resource_type (rp) ==IORESOURCE_IO ) offset = pbm->io_space.start;else offset = pbm->mem_space.start;
arch/sparc64/lib/iomap.c +3 -2
@@ -24,14 +24,15 @@ void __iomem *pci_iomap(struct pci_dev *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); +unsigned long type = flags &IORESOURCE_TYPE_BITS ;if (!len || !start)return NULL ;if (maxlen && len > maxlen) len = maxlen; -if (flags &IORESOURCE_IO ) +if (type ==IORESOURCE_IO )return ioport_map (start, len); -if (flags &IORESOURCE_MEM ) { +if (type ==IORESOURCE_MEM ) {if (flags &IORESOURCE_CACHEABLE )return ioremap (start, len);return ioremap_nocache (start, len);
arch/v850/kernel/rte_mb_a_pci.c +4 -4
@@ -232,9 +232,9 @@ int __nomods_init pcibios_enable_device "of resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (cmd != old_cmd) {
@@ -307,9 +307,9 @@ pcibios_resource_to_bus(struct pci_dev * {unsigned long offset =0 ; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) { offset =MB_A_PCI_IO_ADDR ; - }else if (res->flags &IORESOURCE_MEM ) { + }else if (resource_type (res) ==IORESOURCE_MEM ) { offset =MB_A_PCI_MEM_ADDR ; }
arch/x86/kernel/pci-calgary_64.c +1 -1
@@ -1540,7 +1540,7 @@ static void __init calgary_fixup_one_tcestruct resource *r = &dev->resource[PCI_BRIDGE_RESOURCES + i];/* Don't give out TCEs that map MEM resources */ -if (!(r->flags &IORESOURCE_MEM )) +if (resource_type (r) !=IORESOURCE_MEM )continue ;/* 0-based? we reserve the whole 1st MB anyway */
arch/x86/pci/i386.c +2 -2
@@ -64,7 +64,7 @@ pcibios_align_resource(void *data, struc {struct pci_dev *dev = data; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (skip_isa_ioresource_align (dev))
@@ -161,7 +161,7 @@ static void __init pcibios_allocate_resocontinue ;if (!r->start)/* Address not assigned at all */ continue ; -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) disabled = !(command &PCI_COMMAND_IO );else disabled = !(command &PCI_COMMAND_MEMORY );
arch/x86/pci/k8-bus_64.c +3 -2
@@ -88,7 +88,7 @@ void set_pci_bus_resources_arch_default( res = &info->res[j]; b->resource[j] = res; -if (res->flags &IORESOURCE_IO ) +if (resource_type (res) ==IORESOURCE_IO ) root = &ioport_resource;else root = &iomem_resource;
@@ -517,7 +517,8 @@ static int __init early_fill_mp_bus_info res = &info->res[j];printk (KERN_DEBUG "bus: %02x index %x %s: [%llx, %llx]\n" , busnum, j, - (res->flags &IORESOURCE_IO )?"io port" :"mmio" , +resource_type (res) ==IORESOURCE_IO ? +"io port" :"mmio" , res->start, res->end); } }
arch/xtensa/kernel/pci.c +6 -6
@@ -75,7 +75,7 @@ pcibios_align_resource(void *data, struc {struct pci_dev *dev = data; -if (res->flags &IORESOURCE_IO ) { +if (resource_type (res) ==IORESOURCE_IO ) {resource_size_t start = res->start;if (size >0x100 ) {
@@ -107,9 +107,9 @@ pcibios_enable_resources(struct pci_dev "of resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (dev->resource[PCI_ROM_RESOURCE ].start)
@@ -215,7 +215,7 @@ void __init pcibios_fixup_bus(struct pcifor (i =0 ; i <4 ; i++) {if ((res = bus->resource[i]) ==NULL || !res->flags)continue ; -if (io_offset && (res->flags &IORESOURCE_IO )) { + if (io_offset && resource_type(res) == IORESOURCE_IO)) { res->start += io_offset; res->end += io_offset; }
@@ -251,9 +251,9 @@ int pcibios_enable_device(struct pci_dev "of resource collisions\n", pci_name(dev));return -EINVAL ; } -if (r->flags &IORESOURCE_IO ) +if (resource_type (r) ==IORESOURCE_IO ) cmd |=PCI_COMMAND_IO ; -if (r->flags &IORESOURCE_MEM ) +if (resource_type (r) ==IORESOURCE_MEM ) cmd |=PCI_COMMAND_MEMORY ; }if (cmd != old_cmd) {
drivers/pnp/manager.c +1 -4
@@ -237,10 +237,7 @@ static void pnp_assign_dma(struct pnp_devoid pnp_init_resource (struct resource *res) { -unsigned long type; - - type = res->flags & (IORESOURCE_IO |IORESOURCE_MEM | -IORESOURCE_IRQ |IORESOURCE_DMA ); +unsigned long type =resource_type (res); res->name =NULL ; res->flags = type |IORESOURCE_AUTO |IORESOURCE_UNSET ;
Re: [PATCH 03/04] resource: use new resource type changes
Quoted 5 lines · Magnus Damm
Make sure
resource_type()orIORESOURCE_TYPE_BITSare used instead of bit operations. This needs more work, I ignoreddrivers/for now.Signed-off-by Magnus Damm <[email protected]>---
<snip>
Quoted 3 lines
arch/ppc/kernel/pci.c | 48 +++++++++++++--------------- arch/ppc/syslib/ppc405_pci.c | 2 - arch/ppc/syslib/ppc_sys.c | 2 -
You can drop the arch/ppc bits entirely. arch/ppc won't exist in 2.6.27
josh
Re: [PATCH 03/04] resource: use new resource type changes
Quoted 5 lines · On Wed, 09 Jul 2008 08:11:13 -0400 Josh Boyer <[email protected]> wrote:
Quoted 3 lines
arch/ppc/kernel/pci.c | 48 +++++++++++++--------------- arch/ppc/syslib/ppc405_pci.c | 2 - arch/ppc/syslib/ppc_sys.c | 2 -You can drop the
arch/ppcbits entirely.arch/ppcwon't exist in 2.6.27
yeah, I just applied the patch and ignored all the splatter. Hopefully it still works.
(linux-next -> thatta way, guys)
PATCH 4/4 resource: add new IORESOURCE_CLK type
In reply to Magnus DammThis patch rearranges the values of the IORESOURCE_TYPE_BITS from one bit per type to a 4-bit counter. Also, IORESOURCE_CLK is added. Not sure if it is better to start counting from 0 instead of 1.
---
include/linux/ioport.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
include/linux/ioport.h +3 -2
@@ -37,8 +37,9 @@ struct resource_list {#define IORESOURCE_TYPE_BITS 0x00000f00/* Resource type */ #define IORESOURCE_IO 0x00000100#define IORESOURCE_MEM 0x00000200 -#define IORESOURCE_IRQ 0x00000400 -#define IORESOURCE_DMA 0x00000800 +#define IORESOURCE_IRQ 0x00000300 +#define IORESOURCE_DMA 0x00000400 +#define IORESOURCE_CLK 0x00000500#define IORESOURCE_PREFETCH 0x00001000/* No side effects */ #define IORESOURCE_READONLY 0x00002000
Re: [PATCH 04/04] resource: add new IORESOURCE_CLK type
Quoted 4 lines · On Wed, 09 Jul 2008 20:55:02 +0900 Magnus Damm <[email protected]> wrote:
This patch rearranges the values of the
IORESOURCE_TYPE_BITSfrom one bit per type to a 4-bit counter. Also,IORESOURCE_CLKis added. Not sure if it is better to start counting from 0 instead of 1.
I don't believe this is an adequate changelog. It contains the "what" but not the "why".
Why did we switch from one-bit to four-bits?
Why did we add IORESOURCE_CLK?
The latter was convered in [0/n] a bit, but not at all clearly/fully.
Quoted 19 lines
---
include/linux/ioport.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)include/linux/ioport.h +3
-2@@ -37,8 +37,9 @@ struct resource_list {#define IORESOURCE_TYPE_BITS 0x00000f00/* Resource type */ #define IORESOURCE_IO 0x00000100#define IORESOURCE_MEM 0x00000200 -#define IORESOURCE_IRQ 0x00000400 -#define IORESOURCE_DMA 0x00000800 +#define IORESOURCE_IRQ 0x00000300 +#define IORESOURCE_DMA 0x00000400 +#define IORESOURCE_CLK 0x00000500#define IORESOURCE_PREFETCH 0x00001000/* No side effects */ #define IORESOURCE_READONLY 0x00002000
Re: [PATCH 04/04] resource: add new IORESOURCE_CLK type
Hi Andrew,
Thanks for picking up my patches.
Quoted 9 lines · Andrew Morton
Quoted 4 lines · On Wed, 09 Jul 2008 20:55:02 +0900 Magnus Damm <[email protected]> wrote:
This patch rearranges the values of the
IORESOURCE_TYPE_BITSfrom one bit per type to a 4-bit counter. Also,IORESOURCE_CLKis added. Not sure if it is better to start counting from 0 instead of 1.I don't believe this is an adequate changelog. It contains the "what" but not the "why".
Yeah, sorry about that. I should have been more clear.
Quoted 1 line
Why did we switch from one-bit to four-bits?
The 4-bit encoding is there because I thought it was a waste of bits to use one bit per type. =)
I wanted to add IORESOURCE_CLK and while at it I was playing around with changing the code to use a 4-bit value for resource type. We may already have spare bits available that are more suitable for new types though.
Quoted 1 line
Why did we add
IORESOURCE_CLK?
Currently we use struct resource with the types IORESOURCE_MEM/IORESOURCE_IO and IORESOUCE_IRQ to pass I/O and interrupt parameters to platform drivers. That works fine, but I'd like to extend this so we also pass clock information. Basically a string that tells the platform driver which clock that should be used with clk_get() for a certain driver instance.
I'm sure there are other ways to do this, but I'd like to have a generic way to pass a clock string to platform devices. Using a hard coded string in the device driver won't do since we may have multiple instances of drivers that need to use different clocks. Extending struct resource seems to be the easiest way to do this IMO.
If people are happy with this idea then i'd be more than happy to fix up and resend this patch.
/ magnus
Re: [PATCH 04/04] resource: add new IORESOURCE_CLK type
Quoted 37 lines · On Tue, 15 Jul 2008 17:19:24 +0900 "Magnus Damm" <[email protected]> wrote:
Hi Andrew,
Thanks for picking up my patches.
Quoted 9 lines · Andrew Morton
Quoted 4 lines · On Wed, 09 Jul 2008 20:55:02 +0900 Magnus Damm <[email protected]> wrote:
This patch rearranges the values of the
IORESOURCE_TYPE_BITSfrom one bit per type to a 4-bit counter. Also,IORESOURCE_CLKis added. Not sure if it is better to start counting from 0 instead of 1.I don't believe this is an adequate changelog. It contains the "what" but not the "why".
Yeah, sorry about that. I should have been more clear.
Quoted 1 line
Why did we switch from one-bit to four-bits?
The 4-bit encoding is there because I thought it was a waste of bits to use one bit per type. =)
I wanted to add
IORESOURCE_CLKand while at it I was playing around with changing the code to use a 4-bit value for resource type. We may already have spare bits available that are more suitable for new types though.Quoted 1 line
Why did we add
IORESOURCE_CLK?Currently we use struct resource with the types IORESOURCE_MEM/IORESOURCE_IO and
IORESOUCE_IRQto pass I/O and interrupt parameters to platform drivers. That works fine, but I'd like to extend this so we also pass clock information. Basically a string that tells the platform driver which clock that should be used withclk_get()for a certain driver instance.
Quoted 5 lines
I'm sure there are other ways to do this, but I'd like to have a generic way to pass a clock string to platform devices. Using a hard coded string in the device driver won't do since we may have multiple instances of drivers that need to use different clocks. Extending struct resource seems to be the easiest way to do this IMO.
umm, has there been any comment on all of this yet?
Perhaps you should just send everything again with clearer/completer descriptions.
Quoted 2 lines
If people are happy with this idea then i'd be more than happy to fix up and resend this patch.
We're all asleep. Please do whatever you think is best and we'll merge it - that'll wake 'em up.