Changeset 1427

Show
Ignore:
Timestamp:
07/07/02 17:45:14 (12 years ago)
Author:
mds
Message:

flush PCI posted writes on algo-bit PCI drivers.

Also check return code on ioremap_nocache().

Location:
lm-sensors/trunk/kernel/busses
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/busses/i2c-hydra.c

    r1201 r1427  
    7979        } 
    8080        pdregw(val); 
     81        pdregr();       /* flush posted write */ 
    8182} 
    8283 
     
    9192        } 
    9293        pdregw(val); 
     94        pdregr();       /* flush posted write */ 
    9395} 
    9496 
  • lm-sensors/trunk/kernel/busses/i2c-i810.c

    r1281 r1427  
    130130        outlong((val ? SCL_VAL_OUT : 0) | SCL_DIR | SCL_DIR_MASK | SCL_VAL_MASK, 
    131131             I810_GPIOB); 
     132        readlong(I810_GPIOB);   /* flush posted write */ 
    132133} 
    133134 
     
    136137        outlong((val ? SDA_VAL_OUT : 0) | SDA_DIR | SDA_DIR_MASK | SDA_VAL_MASK, 
    137138             I810_GPIOB); 
     139        readlong(I810_GPIOB);   /* flush posted write */ 
    138140} 
    139141 
     
    162164        outlong((val ? SCL_VAL_OUT : 0) | SCL_DIR | SCL_DIR_MASK | SCL_VAL_MASK, 
    163165             I810_GPIOA); 
     166        readlong(I810_GPIOA);   /* flush posted write */ 
    164167} 
    165168 
     
    168171        outlong((val ? SDA_VAL_OUT : 0) | SDA_DIR | SDA_DIR_MASK | SDA_VAL_MASK, 
    169172             I810_GPIOA); 
     173        readlong(I810_GPIOA);   /* flush posted write */ 
    170174} 
    171175 
     
    237241        cadr &= PCI_BASE_ADDRESS_MEM_MASK; 
    238242        mem = ioremap_nocache(cadr, 0x1000); 
    239         bit_i810i2c_setscl(NULL, 1); 
    240         bit_i810i2c_setsda(NULL, 1); 
    241         bit_i810ddc_setscl(NULL, 1); 
    242         bit_i810ddc_setsda(NULL, 1); 
     243        if(mem) { 
     244                bit_i810i2c_setscl(NULL, 1); 
     245                bit_i810i2c_setsda(NULL, 1); 
     246                bit_i810ddc_setscl(NULL, 1); 
     247                bit_i810ddc_setsda(NULL, 1); 
     248        } 
    243249} 
    244250 
     
    254260                                           *num++, dev))) { 
    255261                        config_i810(dev); 
     262                        if(!mem) 
     263                                return -ENOMEM; 
    256264                        printk("i2c-i810.o: i810/i815 found.\n"); 
    257265                        return 0; 
  • lm-sensors/trunk/kernel/busses/i2c-savage4.c

    r1354 r1427  
    123123                r &= ~I2C_SCL_OUT; 
    124124        outlong(r); 
     125        readlong();     /* flush posted write */ 
    125126} 
    126127 
     
    134135                r &= ~I2C_SDA_OUT; 
    135136        outlong(r); 
     137        readlong();     /* flush posted write */ 
    136138} 
    137139 
     
    236238        cadr &= PCI_BASE_ADDRESS_MEM_MASK; 
    237239        mem = ioremap_nocache(cadr, 0x0080000); 
    238  
    239 //      *((unsigned int *) (mem + REG2)) = 0x8160; 
    240         *((unsigned int *) (mem + REG)) = 0x00000020; 
    241         printk("i2c-savage4: Using Savage4 at 0x%p\n", mem); 
     240        if(mem) { 
     241//              *((unsigned int *) (mem + REG2)) = 0x8160; 
     242                *((unsigned int *) (mem + REG)) = 0x00000020; 
     243                printk("i2c-savage4: Using Savage4 at 0x%p\n", mem); 
     244        } 
    242245} 
    243246 
     
    273276 
    274277        if (s4_num > 0) { 
     278                if(!mem) 
     279                        return -ENOMEM; 
    275280                printk("i2c-savage4: %d Savage4 found.\n", s4_num); 
    276281                if (s4_num > 1) 
  • lm-sensors/trunk/kernel/busses/i2c-voodoo3.c

    r1201 r1427  
    116116                r &= ~I2C_SCL_OUT; 
    117117        outlong(r); 
     118        readlong();     /* flush posted write */ 
    118119} 
    119120 
     
    127128                r &= ~I2C_SDA_OUT; 
    128129        outlong(r); 
     130        readlong();     /* flush posted write */ 
    129131} 
    130132 
     
    152154                r &= ~DDC_SCL_OUT; 
    153155        outlong(r); 
     156        readlong();     /* flush posted write */ 
    154157} 
    155158 
     
    163166                r &= ~DDC_SDA_OUT; 
    164167        outlong(r); 
     168        readlong();     /* flush posted write */ 
    165169} 
    166170 
     
    229233        cadr &= PCI_BASE_ADDRESS_MEM_MASK; 
    230234        mem = ioremap_nocache(cadr, 0x1000); 
    231  
    232         *((unsigned int *) (mem + REG2)) = 0x8160; 
    233         *((unsigned int *) (mem + REG)) = 0xcffc0020; 
    234         printk("i2c-voodoo3: Using Banshee/Voodoo3 at 0x%p\n", mem); 
     235        if(mem) { 
     236                *((unsigned int *) (mem + REG2)) = 0x8160; 
     237                *((unsigned int *) (mem + REG)) = 0xcffc0020; 
     238                printk("i2c-voodoo3: Using Banshee/Voodoo3 at 0x%p\n", mem); 
     239        } 
    235240} 
    236241 
     
    267272 
    268273        if (v3_num > 0) { 
     274                if(!mem) 
     275                        return -ENOMEM; 
    269276                printk("i2c-voodoo3: %d Banshee/Voodoo3 found.\n", v3_num); 
    270277                if (v3_num > 1)