Changeset 17918


Ignore:
Timestamp:
2009-10-05T20:44:19+02:00 (7 years ago)
Author:
juhosg
Message:

ramips: add register access functions into the rt288x pci code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ramips/files/arch/mips/pci/pci-rt288x.c

    r17916 r17918  
    55 
    66#include <asm/mach-ralink/rt288x.h> 
     7#include <asm/mach-ralink/rt288x_regs.h> 
    78 
    89#define RT2880_PCI_SLOT1_BASE           0x20000000 
    9 #define RALINK_PCI_BASE                 0xA0440000 
    10 #define RT2880_PCI_PCICFG_ADDR          ((unsigned long*)(RALINK_PCI_BASE + 0x0000)) 
    11 #define RT2880_PCI_ARBCTL               ((unsigned long*)(RALINK_PCI_BASE + 0x0080)) 
    12 #define RT2880_PCI_BAR0SETUP_ADDR       ((unsigned long*)(RALINK_PCI_BASE + 0x0010)) 
    13 #define RT2880_PCI_CONFIG_ADDR          ((unsigned long*)(RALINK_PCI_BASE + 0x0020)) 
    14 #define RT2880_PCI_CONFIG_DATA          ((unsigned long*)(RALINK_PCI_BASE + 0x0024)) 
    15 #define RT2880_PCI_MEMBASE              ((unsigned long*)(RALINK_PCI_BASE + 0x0028)) 
    16 #define RT2880_PCI_IOBASE               ((unsigned long*)(RALINK_PCI_BASE + 0x002C)) 
    17 #define RT2880_PCI_IMBASEBAR0_ADDR      ((unsigned long*)(RALINK_PCI_BASE + 0x0018)) 
    18 #define RT2880_PCI_ID                   ((unsigned long*)(RALINK_PCI_BASE + 0x0030)) 
    19 #define RT2880_PCI_CLASS                ((unsigned long*)(RALINK_PCI_BASE + 0x0034)) 
    20 #define RT2880_PCI_SUBID                ((unsigned long*)(RALINK_PCI_BASE + 0x0038)) 
    21 #define RT2880_PCI_PCIMSK_ADDR          ((unsigned long*)(RALINK_PCI_BASE + 0x000C)) 
     10 
     11#define RT2880_PCI_REG_PCICFG_ADDR      0x00 
     12#define RT2880_PCI_REG_PCIMSK_ADDR      0x0c 
     13#define RT2880_PCI_REG_BAR0SETUP_ADDR   0x10 
     14#define RT2880_PCI_REG_IMBASEBAR0_ADDR  0x18 
     15#define RT2880_PCI_REG_CONFIG_ADDR      0x20 
     16#define RT2880_PCI_REG_CONFIG_DATA      0x24 
     17#define RT2880_PCI_REG_MEMBASE          0x28 
     18#define RT2880_PCI_REG_IOBASE           0x2c 
     19#define RT2880_PCI_REG_ID               0x30 
     20#define RT2880_PCI_REG_CLASS            0x34 
     21#define RT2880_PCI_REG_SUBID            0x38 
     22#define RT2880_PCI_REG_ARBCTL           0x80 
    2223 
    2324#define PCI_ACCESS_READ  0 
    2425#define PCI_ACCESS_WRITE 1 
     26 
     27void __iomem *rt2880_pci_base; 
     28 
     29static u32 rt2880_pci_reg_read(u32 reg) 
     30{ 
     31        return readl(rt2880_pci_base + reg); 
     32} 
     33 
     34static void rt2880_pci_reg_write(u32 val, u32 reg) 
     35{ 
     36        writel(val, rt2880_pci_base + reg); 
     37} 
    2538 
    2639static int config_access(unsigned char access_type, struct pci_bus *bus, 
     
    3447                  (where & 0xfc) | 0x80000000; 
    3548 
    36         writel(address, RT2880_PCI_CONFIG_ADDR); 
     49        rt2880_pci_reg_write(address, RT2880_PCI_REG_CONFIG_ADDR); 
    3750        if (access_type == PCI_ACCESS_WRITE) 
    38                 writel(*data, RT2880_PCI_CONFIG_DATA); 
     51                rt2880_pci_reg_write(*data, RT2880_PCI_REG_CONFIG_DATA); 
    3952        else 
    40                 *data = readl(RT2880_PCI_CONFIG_DATA); 
     53                *data = rt2880_pci_reg_read(RT2880_PCI_REG_CONFIG_DATA); 
    4154 
    4255        return 0; 
     
    118131        address = (bus << 16) | (dev << 11) | (func << 8) | (reg & 0xfc) | 
    119132                  0x80000000; 
    120         writel(address, RT2880_PCI_CONFIG_ADDR); 
    121         *val = readl(RT2880_PCI_CONFIG_DATA); 
     133        rt2880_pci_reg_write(address, RT2880_PCI_REG_CONFIG_ADDR); 
     134        *val = rt2880_pci_reg_read(RT2880_PCI_REG_CONFIG_DATA); 
    122135} 
    123136 
     
    130143        address = (bus << 16) | (dev << 11) | (func << 8) | (reg & 0xfc) | 
    131144                  0x80000000; 
    132         writel(address, RT2880_PCI_CONFIG_ADDR); 
    133         writel(val, RT2880_PCI_CONFIG_DATA); 
     145        rt2880_pci_reg_write(address, RT2880_PCI_REG_CONFIG_ADDR); 
     146        rt2880_pci_reg_write(val, RT2880_PCI_REG_CONFIG_DATA); 
    134147} 
    135148 
     
    175188        int i; 
    176189 
    177         writel(0, RT2880_PCI_PCICFG_ADDR); 
     190        rt2880_pci_base = ioremap_nocache(RT2880_PCI_BASE, PAGE_SIZE); 
     191 
     192        rt2880_pci_reg_write(0, RT2880_PCI_REG_PCICFG_ADDR); 
    178193        for(i = 0; i < 0xfffff; i++) {} 
    179194 
    180         writel(0x79, RT2880_PCI_ARBCTL); 
    181         writel(0x07FF0001, RT2880_PCI_BAR0SETUP_ADDR); 
    182         writel(RT2880_PCI_SLOT1_BASE, RT2880_PCI_MEMBASE); 
    183         writel(0x00460000, RT2880_PCI_IOBASE); 
    184         writel(0x08000000, RT2880_PCI_IMBASEBAR0_ADDR); 
    185         writel(0x08021814, RT2880_PCI_ID); 
    186         writel(0x00800001, RT2880_PCI_CLASS); 
    187         writel(0x28801814, RT2880_PCI_SUBID); 
    188         writel(0x000c0000, RT2880_PCI_PCIMSK_ADDR); 
     195        rt2880_pci_reg_write(0x79, RT2880_PCI_REG_ARBCTL); 
     196        rt2880_pci_reg_write(0x07FF0001, RT2880_PCI_REG_BAR0SETUP_ADDR); 
     197        rt2880_pci_reg_write(RT2880_PCI_SLOT1_BASE, RT2880_PCI_REG_MEMBASE); 
     198        rt2880_pci_reg_write(0x00460000, RT2880_PCI_REG_IOBASE); 
     199        rt2880_pci_reg_write(0x08000000, RT2880_PCI_REG_IMBASEBAR0_ADDR); 
     200        rt2880_pci_reg_write(0x08021814, RT2880_PCI_REG_ID); 
     201        rt2880_pci_reg_write(0x00800001, RT2880_PCI_REG_CLASS); 
     202        rt2880_pci_reg_write(0x28801814, RT2880_PCI_REG_SUBID); 
     203        rt2880_pci_reg_write(0x000c0000, RT2880_PCI_REG_PCIMSK_ADDR); 
    189204        write_config(0, 0, 0, PCI_BASE_ADDRESS_0, 0x08000000); 
    190205        read_config(0, 0, 0, PCI_BASE_ADDRESS_0, &val); 
Note: See TracChangeset for help on using the changeset viewer.