Commit 7aae52c4 authored by Jesse Barnes's avatar Jesse Barnes Committed by Greg Kroah-Hartman

[PATCH] PCI: rom.c cleanups

Greg, here's some whitespace and long line cleanup I wanted to do last time I
touched rom.c, but forgot.  Does it look ok to you, Jon?
Signed-off-by: default avatarJesse Barnes <jbarnes@sgi.com>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 83889798
...@@ -5,10 +5,7 @@ ...@@ -5,10 +5,7 @@
* (C) Copyright 2004 Silicon Graphics, Inc. Jesse Barnes <jbarnes@sgi.com> * (C) Copyright 2004 Silicon Graphics, Inc. Jesse Barnes <jbarnes@sgi.com>
* *
* PCI ROM access routines * PCI ROM access routines
*
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/pci.h> #include <linux/pci.h>
...@@ -24,11 +21,10 @@ ...@@ -24,11 +21,10 @@
* between the ROM and other resources, so enabling it may disable access * between the ROM and other resources, so enabling it may disable access
* to MMIO registers or other card memory. * to MMIO registers or other card memory.
*/ */
static void static void pci_enable_rom(struct pci_dev *pdev)
pci_enable_rom(struct pci_dev *pdev)
{ {
u32 rom_addr; u32 rom_addr;
pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_addr); pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_addr);
rom_addr |= PCI_ROM_ADDRESS_ENABLE; rom_addr |= PCI_ROM_ADDRESS_ENABLE;
pci_write_config_dword(pdev, pdev->rom_base_reg, rom_addr); pci_write_config_dword(pdev, pdev->rom_base_reg, rom_addr);
...@@ -41,8 +37,7 @@ pci_enable_rom(struct pci_dev *pdev) ...@@ -41,8 +37,7 @@ pci_enable_rom(struct pci_dev *pdev)
* Disable ROM decoding on a PCI device by turning off the last bit in the * Disable ROM decoding on a PCI device by turning off the last bit in the
* ROM BAR. * ROM BAR.
*/ */
static void static void pci_disable_rom(struct pci_dev *pdev)
pci_disable_rom(struct pci_dev *pdev)
{ {
u32 rom_addr; u32 rom_addr;
pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_addr); pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_addr);
...@@ -57,7 +52,7 @@ pci_disable_rom(struct pci_dev *pdev) ...@@ -57,7 +52,7 @@ pci_disable_rom(struct pci_dev *pdev)
* @return: kernel virtual pointer to image of ROM * @return: kernel virtual pointer to image of ROM
* *
* Map a PCI ROM into kernel space. If ROM is boot video ROM, * Map a PCI ROM into kernel space. If ROM is boot video ROM,
* the shadow BIOS copy will be returned instead of the * the shadow BIOS copy will be returned instead of the
* actual ROM. * actual ROM.
*/ */
void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size) void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
...@@ -67,10 +62,12 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size) ...@@ -67,10 +62,12 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
void __iomem *rom; void __iomem *rom;
void __iomem *image; void __iomem *image;
int last_image; int last_image;
if (res->flags & IORESOURCE_ROM_SHADOW) { /* IORESOURCE_ROM_SHADOW only set on x86 */ /* IORESOURCE_ROM_SHADOW only set on x86 */
start = (loff_t)0xC0000; /* primary video rom always starts here */ if (res->flags & IORESOURCE_ROM_SHADOW) {
*size = 0x20000; /* cover C000:0 through E000:0 */ /* primary video rom always starts here */
start = (loff_t)0xC0000;
*size = 0x20000; /* cover C000:0 through E000:0 */
} else { } else {
if (res->flags & IORESOURCE_ROM_COPY) { if (res->flags & IORESOURCE_ROM_COPY) {
*size = pci_resource_len(pdev, PCI_ROM_RESOURCE); *size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
...@@ -79,28 +76,32 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size) ...@@ -79,28 +76,32 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
/* assign the ROM an address if it doesn't have one */ /* assign the ROM an address if it doesn't have one */
if (res->parent == NULL) if (res->parent == NULL)
pci_assign_resource(pdev, PCI_ROM_RESOURCE); pci_assign_resource(pdev, PCI_ROM_RESOURCE);
start = pci_resource_start(pdev, PCI_ROM_RESOURCE); start = pci_resource_start(pdev, PCI_ROM_RESOURCE);
*size = pci_resource_len(pdev, PCI_ROM_RESOURCE); *size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
if (*size == 0) if (*size == 0)
return NULL; return NULL;
/* Enable ROM space decodes */ /* Enable ROM space decodes */
pci_enable_rom(pdev); pci_enable_rom(pdev);
} }
} }
rom = ioremap(start, *size); rom = ioremap(start, *size);
if (!rom) { if (!rom) {
/* restore enable if ioremap fails */ /* restore enable if ioremap fails */
if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW | IORESOURCE_ROM_COPY))) if (!(res->flags & (IORESOURCE_ROM_ENABLE |
IORESOURCE_ROM_SHADOW |
IORESOURCE_ROM_COPY)))
pci_disable_rom(pdev); pci_disable_rom(pdev);
return NULL; return NULL;
} }
/* Try to find the true size of the ROM since sometimes the PCI window */ /*
/* size is much larger than the actual size of the ROM. */ * Try to find the true size of the ROM since sometimes the PCI window
/* True size is important if the ROM is going to be copied. */ * size is much larger than the actual size of the ROM.
* True size is important if the ROM is going to be copied.
*/
image = rom; image = rom;
do { do {
void __iomem *pds; void __iomem *pds;
...@@ -136,30 +137,30 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size) ...@@ -136,30 +137,30 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
* @return: kernel virtual pointer to image of ROM * @return: kernel virtual pointer to image of ROM
* *
* Map a PCI ROM into kernel space. If ROM is boot video ROM, * Map a PCI ROM into kernel space. If ROM is boot video ROM,
* the shadow BIOS copy will be returned instead of the * the shadow BIOS copy will be returned instead of the
* actual ROM. * actual ROM.
*/ */
void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size) void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size)
{ {
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
void __iomem *rom; void __iomem *rom;
rom = pci_map_rom(pdev, size); rom = pci_map_rom(pdev, size);
if (!rom) if (!rom)
return NULL; return NULL;
if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_SHADOW)) if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_SHADOW))
return rom; return rom;
res->start = (unsigned long)kmalloc(*size, GFP_KERNEL); res->start = (unsigned long)kmalloc(*size, GFP_KERNEL);
if (!res->start) if (!res->start)
return rom; return rom;
res->end = res->start + *size; res->end = res->start + *size;
memcpy_fromio((void*)res->start, rom, *size); memcpy_fromio((void*)res->start, rom, *size);
pci_unmap_rom(pdev, rom); pci_unmap_rom(pdev, rom);
res->flags |= IORESOURCE_ROM_COPY; res->flags |= IORESOURCE_ROM_COPY;
return (void __iomem *)res->start; return (void __iomem *)res->start;
} }
...@@ -170,16 +171,15 @@ void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size) ...@@ -170,16 +171,15 @@ void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size)
* *
* Remove a mapping of a previously mapped ROM * Remove a mapping of a previously mapped ROM
*/ */
void void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)
pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)
{ {
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
if (res->flags & IORESOURCE_ROM_COPY) if (res->flags & IORESOURCE_ROM_COPY)
return; return;
iounmap(rom); iounmap(rom);
/* Disable again before continuing, leave enabled if pci=rom */ /* Disable again before continuing, leave enabled if pci=rom */
if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW))) if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW)))
pci_disable_rom(pdev); pci_disable_rom(pdev);
...@@ -189,26 +189,28 @@ pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom) ...@@ -189,26 +189,28 @@ pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)
* pci_remove_rom - disable the ROM and remove its sysfs attribute * pci_remove_rom - disable the ROM and remove its sysfs attribute
* @dev: pointer to pci device struct * @dev: pointer to pci device struct
* *
* Remove the rom file in sysfs and disable ROM decoding.
*/ */
void void pci_remove_rom(struct pci_dev *pdev)
pci_remove_rom(struct pci_dev *pdev)
{ {
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
if (pci_resource_len(pdev, PCI_ROM_RESOURCE)) if (pci_resource_len(pdev, PCI_ROM_RESOURCE))
sysfs_remove_bin_file(&pdev->dev.kobj, pdev->rom_attr); sysfs_remove_bin_file(&pdev->dev.kobj, pdev->rom_attr);
if (!(res->flags & (IORESOURCE_ROM_ENABLE | IORESOURCE_ROM_SHADOW | IORESOURCE_ROM_COPY))) if (!(res->flags & (IORESOURCE_ROM_ENABLE |
IORESOURCE_ROM_SHADOW |
IORESOURCE_ROM_COPY)))
pci_disable_rom(pdev); pci_disable_rom(pdev);
} }
/** /**
* pci_cleanup_rom - internal routine for freeing the ROM copy created * pci_cleanup_rom - internal routine for freeing the ROM copy created
* by pci_map_rom_copy called from remove.c * by pci_map_rom_copy called from remove.c
* @dev: pointer to pci device struct * @dev: pointer to pci device struct
* *
* Free the copied ROM if we allocated one.
*/ */
void void pci_cleanup_rom(struct pci_dev *pdev)
pci_cleanup_rom(struct pci_dev *pdev)
{ {
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE]; struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
if (res->flags & IORESOURCE_ROM_COPY) { if (res->flags & IORESOURCE_ROM_COPY) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment