aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-04-26 11:36:38 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-04-26 11:36:38 -0400
commit54c05395273678fe23e9169a435fdc15ee17535e (patch)
treef9b0aba2db2532dc6fedbae8d19171932d1785e8 /drivers
parentcb7500db0e94c61b79712bc081dd90da68a4a40c (diff)
ide-mpc8xx: fix resources reservation
* Tell IDE layer to not manage resources by setting hwif->mmio flag and request resources in m8xx_ide_init_ports(). * Use request_mem_region() for resources reservation. * Use driver name for resources reservation. Cc: Vitaly Bordug <vitb@kernel.crashing.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/ppc/mpc8xx.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c
index 3f8539f1ccd3..467656f06ccc 100644
--- a/drivers/ide/ppc/mpc8xx.c
+++ b/drivers/ide/ppc/mpc8xx.c
@@ -36,6 +36,8 @@
36#include <asm/machdep.h> 36#include <asm/machdep.h>
37#include <asm/irq.h> 37#include <asm/irq.h>
38 38
39#define DRV_NAME "ide-mpc8xx"
40
39static int identify (volatile u8 *p); 41static int identify (volatile u8 *p);
40static void print_fixed (volatile u8 *p); 42static void print_fixed (volatile u8 *p);
41static void print_funcid (int func); 43static void print_funcid (int func);
@@ -182,6 +184,13 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
182 pcmcia_phy_base, pcmcia_phy_end, 184 pcmcia_phy_base, pcmcia_phy_end,
183 pcmcia_phy_end - pcmcia_phy_base); 185 pcmcia_phy_end - pcmcia_phy_base);
184 186
187 if (!request_mem_region(pcmcia_phy_base,
188 pcmcia_phy_end - pcmcia_phy_base,
189 DRV_NAME)) {
190 printk(KERN_ERR "%s: resources busy\n", DRV_NAME);
191 return -EBUSY;
192 }
193
185 pcmcia_base=(unsigned long)ioremap(pcmcia_phy_base, 194 pcmcia_base=(unsigned long)ioremap(pcmcia_phy_base,
186 pcmcia_phy_end-pcmcia_phy_base); 195 pcmcia_phy_end-pcmcia_phy_base);
187 196
@@ -326,7 +335,12 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
326 printk ("IDE phys mem : %08x...%08x (size %08x)\n", 335 printk ("IDE phys mem : %08x...%08x (size %08x)\n",
327 ide_phy_base, ide_phy_end, 336 ide_phy_base, ide_phy_end,
328 ide_phy_end - ide_phy_base); 337 ide_phy_end - ide_phy_base);
329 338
339 if (!request_mem_region(ide_phy_base, 0x200, DRV_NAME)) {
340 printk(KERN_ERR "%s: resources busy\n", DRV_NAME);
341 return -EBUSY;
342 }
343
330 ide_base=(unsigned long)ioremap(ide_phy_base, 344 ide_base=(unsigned long)ioremap(ide_phy_base,
331 ide_phy_end-ide_phy_base); 345 ide_phy_end-ide_phy_base);
332 346
@@ -796,6 +810,7 @@ static int __init mpc8xx_ide_probe(void)
796 ide_hwif_t *hwif = &ide_hwifs[0]; 810 ide_hwif_t *hwif = &ide_hwifs[0];
797 811
798 ide_init_port_hw(hwif, &hw); 812 ide_init_port_hw(hwif, &hw);
813 hwif->mmio = 1;
799 hwif->pio_mask = ATA_PIO4; 814 hwif->pio_mask = ATA_PIO4;
800 hwif->set_pio_mode = m8xx_ide_set_pio_mode; 815 hwif->set_pio_mode = m8xx_ide_set_pio_mode;
801 816
@@ -807,6 +822,7 @@ static int __init mpc8xx_ide_probe(void)
807 ide_hwif_t *mate = &ide_hwifs[1]; 822 ide_hwif_t *mate = &ide_hwifs[1];
808 823
809 ide_init_port_hw(mate, &hw); 824 ide_init_port_hw(mate, &hw);
825 mate->mmio = 1;
810 mate->pio_mask = ATA_PIO4; 826 mate->pio_mask = ATA_PIO4;
811 mate->set_pio_mode = m8xx_ide_set_pio_mode; 827 mate->set_pio_mode = m8xx_ide_set_pio_mode;
812 828