Changeset 18933


Ignore:
Timestamp:
2009-12-26T01:09:00+01:00 (8 years ago)
Author:
hauke
Message:

[amazon] work on pci.

This is from ticket #6374

Michael Richter thanks for your patch.

Location:
trunk/target/linux/amazon
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/amazon/files/arch/mips/amazon/pci.c

    r8137 r18933  
    9696        /* Amazon support slot from 0 to 15 */ 
    9797        /* devfn 0 & 0x20 is itself */ 
    98         if ((bus != 0) || (devfn == 0) || (devfn == 0x20)) 
     98        if ((bus->number != 0) || (devfn == 0) || (devfn == 0x20)) 
    9999                return 1; 
    100100 
     
    125125{ 
    126126        u32 data = 0; 
    127         int ret = PCIBIOS_SUCCESSFUL; 
    128  
    129         if (amazon_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data)) { 
    130                 data = ~0; 
    131                 ret = -1; 
    132         } 
    133  
    134         switch (size) { 
    135                 case 1: 
    136                         *((u8 *) val) = (data >> ((where & 3) << 3)) & 0xff; 
    137                         break; 
    138                 case 2: 
    139                         *((u16 *) val) = (data >> ((where & 3) << 3)) & 0xffff; 
    140                         break; 
    141                 case 4: 
    142                         *val = data; 
    143                         break; 
    144                 default: 
    145                         return -1; 
    146         } 
    147  
    148         return ret; 
     127 
     128        if (amazon_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data)) 
     129                return PCIBIOS_DEVICE_NOT_FOUND; 
     130 
     131        if (size == 1) 
     132                *val = (data >> ((where & 3) << 3)) & 0xff; 
     133        else if (size == 2) 
     134                *val = (data >> ((where & 3) << 3)) & 0xffff; 
     135        else 
     136                *val = data; 
     137 
     138        return PCIBIOS_SUCCESSFUL; 
    149139} 
    150140 
     
    152142static int amazon_pci_write(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val) 
    153143{ 
    154         if (size != 4) { 
    155                 u32 data; 
    156  
     144        u32 data = 0; 
     145 
     146        if (size == 4) 
     147        { 
     148                data = val; 
     149        } else { 
    157150                if (amazon_pci_config_access(PCI_ACCESS_READ, bus, devfn, where, &data)) 
    158                         return -1; 
     151                        return PCIBIOS_DEVICE_NOT_FOUND; 
    159152 
    160153                if (size == 1) 
    161                         val = (data & ~(0xff << ((where & 3) << 3))) | (val << ((where & 3) << 3)); 
     154                        data = (data & ~(0xff << ((where & 3) << 3))) | 
     155                                (val << ((where & 3) << 3)); 
    162156                else if (size == 2) 
    163                         val = (data & ~(0xffff << ((where & 3) << 3))) | (val << ((where & 3) << 3)); 
    164                 else 
    165                         return -1; 
    166         } 
    167  
    168         if (amazon_pci_config_access(PCI_ACCESS_WRITE, bus, devfn, where, &val)) 
    169                return -1; 
     157                        data = (data & ~(0xffff << ((where & 3) << 3))) | 
     158                                (val << ((where & 3) << 3)); 
     159        } 
     160 
     161        if (amazon_pci_config_access(PCI_ACCESS_WRITE, bus, devfn, where, &data)) 
     162                return PCIBIOS_DEVICE_NOT_FOUND; 
    170163 
    171164        return PCIBIOS_SUCCESSFUL; 
     
    183176}; 
    184177 
    185 int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) 
     178int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 
    186179{ 
    187180        switch (slot) { 
     
    241234} 
    242235 
    243 int amazon_pci_init(void) 
     236int __init amazon_pci_init(void) 
    244237{ 
    245238        u32 temp_buffer; 
     
    287280        AMAZON_PCI_REG32(FPI_BURST_LENGTH) = 0x303; 
    288281 
    289         set_io_port_base(ioremap(AMAZON_PCI_IO_BASE, AMAZON_PCI_IO_SIZE)); 
     282        amazon_pci_controller.io_map_base = (unsigned long)ioremap(AMAZON_PCI_IO_BASE, AMAZON_PCI_IO_SIZE); 
    290283        register_pci_controller(&amazon_pci_controller); 
    291284        return 0; 
Note: See TracChangeset for help on using the changeset viewer.