Changeset 44723


Ignore:
Timestamp:
2015-03-13T04:01:04+01:00 (3 years ago)
Author:
nbd
Message:

atheros: v3.18: remap main SoC MMR memory

Honestly remap main SoC MMR mem and use accessor functions to
interact with registers. Now registers defined relatively to base
address (e.g. SDRAM controller base address).

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@…>

Location:
trunk/target/linux/atheros/patches-3.18
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/atheros/patches-3.18/100-board.patch

    r44722 r44723  
    630630--- /dev/null 
    631631+++ b/arch/mips/include/asm/mach-ath25/ar2315_regs.h 
    632 @@ -0,0 +1,470 @@ 
     632@@ -0,0 +1,480 @@ 
    633633+/* 
    634634+ * Register definitions for AR2315+ 
     
    677677+#define AR2315_PCI              0x10100000      /* PCI MMR */ 
    678678+#define AR2315_PCI_SIZE                0x00001000 
    679 +#define AR2315_SDRAMCTL         0x10300000      /* SDRAM MMR */ 
    680 +#define AR2315_LOCAL            0x10400000      /* LOCAL BUS MMR */ 
     679+#define AR2315_SDRAMCTL_BASE   0x10300000      /* SDRAM MMR */ 
     680+#define AR2315_SDRAMCTL_SIZE   0x00000020 
     681+#define AR2315_LOCAL_BASE      0x10400000      /* Local bus MMR */ 
    681682+#define AR2315_ENET0            0x10500000      /* ETHERNET MMR */ 
    682 +#define AR2315_DSLBASE          0x11000000      /* RESET CONTROL MMR */ 
     683+#define AR2315_RST_BASE                0x11000000      /* Reset control MMR */ 
     684+#define AR2315_RST_SIZE                0x00000100 
    683685+#define AR2315_UART0            0x11100000      /* UART MMR */ 
    684686+#define AR2315_SPI_MMR          0x11300000      /* SPI FLASH MMR */ 
     
    692694+ * Cold reset register 
    693695+ */ 
    694 +#define AR2315_COLD_RESET       (AR2315_DSLBASE + 0x0000) 
     696+#define AR2315_COLD_RESET              0x0000 
    695697+ 
    696698+#define AR2315_RESET_COLD_AHB              0x00000001 
     
    707709+ * Reset register 
    708710+ */ 
    709 +#define AR2315_RESET            (AR2315_DSLBASE + 0x0004) 
     711+#define AR2315_RESET                   0x0004 
    710712+ 
    711713+/* warm reset WLAN0 MAC */ 
     
    737739+ * AHB master arbitration control 
    738740+ */ 
    739 +#define AR2315_AHB_ARB_CTL      (AR2315_DSLBASE + 0x0008) 
     741+#define AR2315_AHB_ARB_CTL             0x0008 
    740742+ 
    741743+/* CPU, default */ 
     
    757759+ * Config Register 
    758760+ */ 
    759 +#define AR2315_ENDIAN_CTL       (AR2315_DSLBASE + 0x000c) 
     761+#define AR2315_ENDIAN_CTL              0x000c 
    760762+ 
    761763+/* EC - AHB bridge endianess */ 
     
    790792+ * NMI control 
    791793+ */ 
    792 +#define AR2315_NMI_CTL          (AR2315_DSLBASE + 0x0010) 
     794+#define AR2315_NMI_CTL                 0x0010 
    793795+ 
    794796+#define AR2315_NMI_EN  1 
     
    797799+ * Revision Register - Initial value is 0x3010 (WMAC 3.0, AR231X 1.0). 
    798800+ */ 
    799 +#define AR2315_SREV             (AR2315_DSLBASE + 0x0014) 
     801+#define AR2315_SREV                    0x0014 
    800802+ 
    801803+#define AR2315_REV_MAJ                     0x00f0 
     
    808810+ * Interface Enable 
    809811+ */ 
    810 +#define AR2315_IF_CTL           (AR2315_DSLBASE + 0x0018) 
     812+#define AR2315_IF_CTL                  0x0018 
    811813+ 
    812814+#define AR2315_IF_MASK                     0x00000007 
     
    830832+ */ 
    831833+ 
    832 +#define AR2315_ISR              (AR2315_DSLBASE + 0x0020) 
    833 +#define AR2315_IMR              (AR2315_DSLBASE + 0x0024) 
    834 +#define AR2315_GISR             (AR2315_DSLBASE + 0x0028) 
     834+#define AR2315_ISR                     0x0020 
     835+#define AR2315_IMR                     0x0024 
     836+#define AR2315_GISR                    0x0028 
    835837+ 
    836838+#define AR2315_ISR_UART0       0x0001           /* high speed UART */ 
     
    855857+ * Timers 
    856858+ */ 
    857 +#define AR2315_TIMER            (AR2315_DSLBASE + 0x0030) 
    858 +#define AR2315_RELOAD           (AR2315_DSLBASE + 0x0034) 
    859 +#define AR2315_WD               (AR2315_DSLBASE + 0x0038) 
    860 +#define AR2315_WDC              (AR2315_DSLBASE + 0x003c) 
     859+#define AR2315_TIMER                   0x0030 
     860+#define AR2315_RELOAD                  0x0034 
     861+ 
     862+#define AR2315_WD                      0x0038 
     863+#define AR2315_WDC                     0x003c 
    861864+ 
    862865+#define AR2315_WDC_IGNORE_EXPIRATION   0x00000000 
     
    867870+ * CPU Performance Counters 
    868871+ */ 
    869 +#define AR2315_PERFCNT0         (AR2315_DSLBASE + 0x0048) 
    870 +#define AR2315_PERFCNT1         (AR2315_DSLBASE + 0x004c) 
     872+#define AR2315_PERFCNT0                        0x0048 
     873+#define AR2315_PERFCNT1                        0x004c 
    871874+ 
    872875+#define AR2315_PERF0_DATAHIT   0x0001  /* Count Data Cache Hits */ 
     
    889892+ * AHB Error Reporting. 
    890893+ */ 
    891 +#define AR2315_AHB_ERR0         (AR2315_DSLBASE + 0x0050)  /* error  */ 
    892 +#define AR2315_AHB_ERR1         (AR2315_DSLBASE + 0x0054)  /* haddr  */ 
    893 +#define AR2315_AHB_ERR2         (AR2315_DSLBASE + 0x0058)  /* hwdata */ 
    894 +#define AR2315_AHB_ERR3         (AR2315_DSLBASE + 0x005c)  /* hrdata */ 
    895 +#define AR2315_AHB_ERR4         (AR2315_DSLBASE + 0x0060)  /* status */ 
     894+#define AR2315_AHB_ERR0                        0x0050  /* error  */ 
     895+#define AR2315_AHB_ERR1                        0x0054  /* haddr  */ 
     896+#define AR2315_AHB_ERR2                        0x0058  /* hwdata */ 
     897+#define AR2315_AHB_ERR3                        0x005c  /* hrdata */ 
     898+#define AR2315_AHB_ERR4                        0x0060  /* status */ 
    896899+ 
    897900+#define AHB_ERROR_DET  1 /* AHB Error has been detected,          */ 
     
    921924+ * Clock Control 
    922925+ */ 
    923 +#define AR2315_PLLC_CTL         (AR2315_DSLBASE + 0x0064) 
    924 +#define AR2315_PLLV_CTL         (AR2315_DSLBASE + 0x0068) 
    925 +#define AR2315_CPUCLK           (AR2315_DSLBASE + 0x006c) 
    926 +#define AR2315_AMBACLK          (AR2315_DSLBASE + 0x0070) 
    927 +#define AR2315_SYNCCLK          (AR2315_DSLBASE + 0x0074) 
    928 +#define AR2315_DSL_SLEEP_CTL    (AR2315_DSLBASE + 0x0080) 
    929 +#define AR2315_DSL_SLEEP_DUR    (AR2315_DSLBASE + 0x0084) 
     926+#define AR2315_PLLC_CTL                        0x0064 
     927+#define AR2315_PLLV_CTL                        0x0068 
     928+#define AR2315_CPUCLK                  0x006c 
     929+#define AR2315_AMBACLK                 0x0070 
     930+#define AR2315_SYNCCLK                 0x0074 
     931+#define AR2315_DSL_SLEEP_CTL           0x0080 
     932+#define AR2315_DSL_SLEEP_DUR           0x0084 
    930933+ 
    931934+/* PLLc Control fields */ 
     
    954957+ 
    955958+/* GPIO MMR base address */ 
    956 +#define AR2315_GPIO                    (AR2315_DSLBASE + 0x0088) 
     959+#define AR2315_GPIO                    0x0088 
    957960+ 
    958961+#define AR2315_RESET_GPIO       5 
     
    961964+ *  PCI Clock Control 
    962965+ */ 
    963 +#define AR2315_PCICLK           (AR2315_DSLBASE + 0x00a4) 
     966+#define AR2315_PCICLK                  0x00a4 
    964967+ 
    965968+#define AR2315_PCICLK_INPUT_M              0x3 
     
    982985+ * Observation Control Register 
    983986+ */ 
    984 +#define AR2315_OCR              (AR2315_DSLBASE + 0x00b0) 
     987+#define AR2315_OCR                     0x00b0 
     988+ 
    985989+#define OCR_GPIO0_IRIN              0x0040 
    986990+#define OCR_GPIO1_IROUT             0x0080 
     
    990994+ *  General Clock Control 
    991995+ */ 
    992 + 
    993 +#define AR2315_MISCCLK          (AR2315_DSLBASE + 0x00b4) 
     996+#define AR2315_MISCCLK                 0x00b4 
     997+ 
    994998+#define MISCCLK_PLLBYPASS_EN        0x00000001 
    995999+#define MISCCLK_PROCREFCLK          0x00000002 
     
    9991003+ *   - No read or write buffers are included. 
    10001004+ */ 
    1001 +#define AR2315_MEM_CFG          (AR2315_SDRAMCTL + 0x00) 
    1002 +#define AR2315_MEM_CTRL         (AR2315_SDRAMCTL + 0x0c) 
    1003 +#define AR2315_MEM_REF          (AR2315_SDRAMCTL + 0x10) 
     1005+#define AR2315_MEM_CFG                 0x0000 
     1006+#define AR2315_MEM_CTRL                        0x000c 
     1007+#define AR2315_MEM_REF                 0x0010 
    10041008+ 
    10051009+#define SDRAM_DATA_WIDTH_M          0x00006000 
     
    10181022+ * Local Bus Interface Registers 
    10191023+ */ 
    1020 +#define AR2315_LB_CONFIG        (AR2315_LOCAL + 0x0000) 
     1024+#define AR2315_LB_CONFIG               0x0000 
     1025+ 
    10211026+#define AR2315_LBCONF_OE        0x00000001    /* =1 OE is low-true */ 
    10221027+#define AR2315_LBCONF_CS0       0x00000002    /* =1 first CS is low-true */ 
     
    10451050+#define AR2315_LBCONF_ENABLE    0x00400000    /* =1 Falcon respond to LB */ 
    10461051+ 
    1047 +#define AR2315_LB_CLKSEL        (AR2315_LOCAL + 0x0004) 
     1052+#define AR2315_LB_CLKSEL               0x0004 
     1053+ 
    10481054+#define AR2315_LBCLK_EXT        0x0001        /* use external clk for lb */ 
    10491055+ 
    1050 +#define AR2315_LB_1MS           (AR2315_LOCAL + 0x0008) 
     1056+#define AR2315_LB_1MS                  0x0008 
     1057+ 
    10511058+#define AR2315_LB1MS_MASK       0x3FFFF       /* # of AHB clk cycles in 1ms */ 
    10521059+ 
    1053 +#define AR2315_LB_MISCCFG       (AR2315_LOCAL + 0x000C) 
     1060+#define AR2315_LB_MISCCFG              0x000c 
    10541061+#define AR2315_LBM_TXD_EN       0x00000001    /* Enable TXD for fragments */ 
    10551062+#define AR2315_LBM_RX_INTEN     0x00000002    /* Enable LB ints on RX ready */ 
     
    10611068+#define AR2315_LBM_PORTMUX      0x07000000 
    10621069+ 
    1063 +#define AR2315_LB_RXTSOFF       (AR2315_LOCAL + 0x0010) 
    1064 + 
    1065 +#define AR2315_LB_TX_CHAIN_EN   (AR2315_LOCAL + 0x0100) 
     1070+#define AR2315_LB_RXTSOFF              0x0010 
     1071+ 
     1072+#define AR2315_LB_TX_CHAIN_EN          0x0100 
     1073+ 
    10661074+#define AR2315_LB_TXEN_0        0x01 
    10671075+#define AR2315_LB_TXEN_1        0x02 
     
    10691077+#define AR2315_LB_TXEN_3        0x08 
    10701078+ 
    1071 +#define AR2315_LB_TX_CHAIN_DIS  (AR2315_LOCAL + 0x0104) 
    1072 +#define AR2315_LB_TX_DESC_PTR   (AR2315_LOCAL + 0x0200) 
    1073 + 
    1074 +#define AR2315_LB_RX_CHAIN_EN   (AR2315_LOCAL + 0x0400) 
     1079+#define AR2315_LB_TX_CHAIN_DIS         0x0104 
     1080+#define AR2315_LB_TX_DESC_PTR          0x0200 
     1081+ 
     1082+#define AR2315_LB_RX_CHAIN_EN          0x0400 
     1083+ 
    10751084+#define AR2315_LB_RXEN          0x01 
    10761085+ 
    1077 +#define AR2315_LB_RX_CHAIN_DIS  (AR2315_LOCAL + 0x0404) 
    1078 +#define AR2315_LB_RX_DESC_PTR   (AR2315_LOCAL + 0x0408) 
    1079 + 
    1080 +#define AR2315_LB_INT_STATUS    (AR2315_LOCAL + 0x0500) 
     1086+#define AR2315_LB_RX_CHAIN_DIS         0x0404 
     1087+#define AR2315_LB_RX_DESC_PTR          0x0408 
     1088+ 
     1089+#define AR2315_LB_INT_STATUS           0x0500 
     1090+ 
    10811091+#define AR2315_INT_TX_DESC      0x0001 
    10821092+#define AR2315_INT_TX_OK        0x0002 
     
    10951105+ 
    10961106+/* Bit definitions for INT MASK are the same as INT_STATUS */ 
    1097 +#define AR2315_LB_INT_MASK      (AR2315_LOCAL + 0x0504) 
    1098 + 
    1099 +#define AR2315_LB_INT_EN        (AR2315_LOCAL + 0x0508) 
    1100 +#define AR2315_LB_MBOX          (AR2315_LOCAL + 0x0600) 
     1107+#define AR2315_LB_INT_MASK             0x0504 
     1108+ 
     1109+#define AR2315_LB_INT_EN               0x0508 
     1110+#define AR2315_LB_MBOX                 0x0600 
    11011111+ 
    11021112+#endif /* __ASM_MACH_ATH25_AR2315_REGS_H */ 
    11031113--- /dev/null 
    11041114+++ b/arch/mips/include/asm/mach-ath25/ar5312_regs.h 
    1105 @@ -0,0 +1,224 @@ 
     1115@@ -0,0 +1,227 @@ 
    11061116+/* 
    11071117+ * This file is subject to the terms and conditions of the GNU General Public 
     
    11531163+#define AR5312_ENET0            0x18100000 
    11541164+#define AR5312_ENET1            0x18200000 
    1155 +#define AR5312_SDRAMCTL         0x18300000 
    1156 +#define AR5312_FLASHCTL         0x18400000 
    1157 +#define AR5312_APBBASE          0x1c000000 
     1165+#define AR5312_SDRAMCTL_BASE           0x18300000 
     1166+#define AR5312_SDRAMCTL_SIZE           0x00000010 
     1167+#define AR5312_FLASHCTL_BASE           0x18400000 
     1168+#define AR5312_FLASHCTL_SIZE           0x00000010 
    11581169+#define AR5312_UART0            0x1c000000      /* UART MMR */ 
     1170+#define AR5312_GPIO_BASE               0x1c002000 
     1171+#define AR5312_RST_BASE                        0x1c003000 
     1172+#define AR5312_RST_SIZE                        0x00000100 
    11591173+#define AR5312_FLASH            0x1e000000 
    11601174+ 
     
    11711185+ 
    11721186+/* Reset/Timer Block Address Map */ 
    1173 +#define AR5312_RESETTMR                (AR5312_APBBASE  + 0x3000) 
    1174 +#define AR5312_TIMER           (AR5312_RESETTMR + 0x0000) /* countdown timer */ 
    1175 +#define AR5312_WD_CTRL         (AR5312_RESETTMR + 0x0008) /* watchdog cntrl */ 
    1176 +#define AR5312_WD_TIMER                (AR5312_RESETTMR + 0x000c) /* watchdog timer */ 
    1177 +#define AR5312_ISR             (AR5312_RESETTMR + 0x0010) /* Intr Status Reg */ 
    1178 +#define AR5312_IMR             (AR5312_RESETTMR + 0x0014) /* Intr Mask Reg */ 
    1179 +#define AR5312_RESET           (AR5312_RESETTMR + 0x0020) 
    1180 +#define AR5312_CLOCKCTL1       (AR5312_RESETTMR + 0x0064) 
    1181 +#define AR5312_SCRATCH         (AR5312_RESETTMR + 0x006c) 
    1182 +#define AR5312_PROCADDR                (AR5312_RESETTMR + 0x0070) 
    1183 +#define AR5312_PROC1           (AR5312_RESETTMR + 0x0074) 
    1184 +#define AR5312_DMAADDR         (AR5312_RESETTMR + 0x0078) 
    1185 +#define AR5312_DMA1            (AR5312_RESETTMR + 0x007c) 
    1186 +#define AR5312_ENABLE          (AR5312_RESETTMR + 0x0080) /* interface enb */ 
    1187 +#define AR5312_REV             (AR5312_RESETTMR + 0x0090) /* revision */ 
     1187+#define AR5312_TIMER           0x0000 /* countdown timer */ 
     1188+#define AR5312_RELOAD          0x0004 /* timer reload value */ 
     1189+#define AR5312_WD_CTRL         0x0008 /* watchdog cntrl */ 
     1190+#define AR5312_WD_TIMER                0x000c /* watchdog timer */ 
     1191+#define AR5312_ISR             0x0010 /* Intr Status Reg */ 
     1192+#define AR5312_IMR             0x0014 /* Intr Mask Reg */ 
     1193+#define AR5312_RESET           0x0020 
     1194+#define AR5312_CLOCKCTL1       0x0064 
     1195+#define AR5312_SCRATCH         0x006c 
     1196+#define AR5312_PROCADDR                0x0070 
     1197+#define AR5312_PROC1           0x0074 
     1198+#define AR5312_DMAADDR         0x0078 
     1199+#define AR5312_DMA1            0x007c 
     1200+#define AR5312_ENABLE          0x0080 /* interface enb */ 
     1201+#define AR5312_REV             0x0090 /* revision */ 
    11881202+ 
    11891203+/* AR5312_WD_CTRL register bit field definitions */ 
     
    12811295+#define AR5312_REV_MIN_DUAL     0x0     /* Dual WLAN version */ 
    12821296+#define AR5312_REV_MIN_SINGLE   0x1     /* Single WLAN version */ 
     1297+ 
     1298+/* ARM Flash Controller -- 3 flash banks with either x8 or x16 devices.  */ 
     1299+#define AR5312_FLASHCTL0       0x0000 
     1300+#define AR5312_FLASHCTL1       0x0004 
     1301+#define AR5312_FLASHCTL2       0x0008 
    12831302+ 
    12841303+/* AR5312_FLASHCTL register bit field definitions */ 
     
    13131332+#define FLASHCTL_ATR4   0xc0000000      /* Access type == retry every 4 */ 
    13141333+ 
    1315 +/* ARM Flash Controller -- 3 flash banks with either x8 or x16 devices.  */ 
    1316 +#define AR5312_FLASHCTL0        (AR5312_FLASHCTL + 0x00) 
    1317 +#define AR5312_FLASHCTL1        (AR5312_FLASHCTL + 0x04) 
    1318 +#define AR5312_FLASHCTL2        (AR5312_FLASHCTL + 0x08) 
    1319 + 
    13201334+/* ARM SDRAM Controller -- just enough to determine memory size */ 
    1321 +#define AR5312_MEM_CFG1 (AR5312_SDRAMCTL + 0x04) 
     1335+#define AR5312_MEM_CFG1                0x0004 
     1336+ 
    13221337+#define MEM_CFG1_AC0    0x00000700      /* bank 0: SDRAM addr check (added) */ 
    13231338+#define MEM_CFG1_AC0_S  8 
     
    13251340+#define MEM_CFG1_AC1_S  12 
    13261341+ 
    1327 +#define AR5312_GPIO         (AR5312_APBBASE  + 0x2000) 
    1328 + 
    13291342+#endif /* __ASM_MACH_ATH25_AR5312_REGS_H */ 
    13301343--- /dev/null 
    13311344+++ b/arch/mips/ath25/ar5312.c 
    1332 @@ -0,0 +1,449 @@ 
     1345@@ -0,0 +1,483 @@ 
    13331346+/* 
    13341347+ * This file is subject to the terms and conditions of the GNU General Public 
     
    13701383+#include "ar5312.h" 
    13711384+ 
     1385+static void __iomem *ar5312_rst_base; 
     1386+ 
     1387+static inline u32 ar5312_rst_reg_read(u32 reg) 
     1388+{ 
     1389+       return __raw_readl(ar5312_rst_base + reg); 
     1390+} 
     1391+ 
     1392+static inline void ar5312_rst_reg_write(u32 reg, u32 val) 
     1393+{ 
     1394+       __raw_writel(val, ar5312_rst_base + reg); 
     1395+} 
     1396+ 
     1397+static inline void ar5312_rst_reg_mask(u32 reg, u32 mask, u32 val) 
     1398+{ 
     1399+       u32 ret = ar5312_rst_reg_read(reg); 
     1400+ 
     1401+       ret &= ~mask; 
     1402+       ret |= val; 
     1403+       ar5312_rst_reg_write(reg, ret); 
     1404+} 
     1405+ 
    13721406+static irqreturn_t ar5312_ahb_err_handler(int cpl, void *dev_id) 
    13731407+{ 
    1374 +       u32 proc1 = ar231x_read_reg(AR5312_PROC1); 
    1375 +       u32 proc_addr = ar231x_read_reg(AR5312_PROCADDR); /* clears error */ 
    1376 +       u32 dma1 = ar231x_read_reg(AR5312_DMA1); 
    1377 +       u32 dma_addr = ar231x_read_reg(AR5312_DMAADDR);   /* clears error */ 
     1408+       u32 proc1 = ar5312_rst_reg_read(AR5312_PROC1); 
     1409+       u32 proc_addr = ar5312_rst_reg_read(AR5312_PROCADDR); /* clears error */ 
     1410+       u32 dma1 = ar5312_rst_reg_read(AR5312_DMA1); 
     1411+       u32 dma_addr = ar5312_rst_reg_read(AR5312_DMAADDR);   /* clears error */ 
    13781412+ 
    13791413+       pr_emerg("AHB interrupt: PROCADDR=0x%8.8x PROC1=0x%8.8x DMAADDR=0x%8.8x DMA1=0x%8.8x\n", 
     
    13911425+static void ar5312_misc_irq_handler(unsigned irq, struct irq_desc *desc) 
    13921426+{ 
    1393 +       unsigned int ar231x_misc_intrs = ar231x_read_reg(AR5312_ISR) & 
    1394 +                                        ar231x_read_reg(AR5312_IMR); 
     1427+       unsigned int ar231x_misc_intrs = ar5312_rst_reg_read(AR5312_ISR) & 
     1428+                                        ar5312_rst_reg_read(AR5312_IMR); 
    13951429+ 
    13961430+       if (ar231x_misc_intrs & AR5312_ISR_TIMER) { 
    13971431+               generic_handle_irq(AR5312_MISC_IRQ_TIMER); 
    1398 +               (void)ar231x_read_reg(AR5312_TIMER); 
     1432+               (void)ar5312_rst_reg_read(AR5312_TIMER); 
    13991433+       } else if (ar231x_misc_intrs & AR5312_ISR_AHBPROC) 
    14001434+               generic_handle_irq(AR5312_MISC_IRQ_AHB_PROC); 
     
    14121446+       unsigned int imr; 
    14131447+ 
    1414 +       imr = ar231x_read_reg(AR5312_IMR); 
     1448+       imr = ar5312_rst_reg_read(AR5312_IMR); 
    14151449+       imr |= 1 << (d->irq - AR231X_MISC_IRQ_BASE); 
    1416 +       ar231x_write_reg(AR5312_IMR, imr); 
     1450+       ar5312_rst_reg_write(AR5312_IMR, imr); 
    14171451+} 
    14181452+ 
     
    14221456+       unsigned int imr; 
    14231457+ 
    1424 +       imr = ar231x_read_reg(AR5312_IMR); 
     1458+       imr = ar5312_rst_reg_read(AR5312_IMR); 
    14251459+       imr &= ~(1 << (d->irq - AR231X_MISC_IRQ_BASE)); 
    1426 +       ar231x_write_reg(AR5312_IMR, imr); 
    1427 +       ar231x_read_reg(AR5312_IMR); /* flush write buffer */ 
     1460+       ar5312_rst_reg_write(AR5312_IMR, imr); 
     1461+       ar5312_rst_reg_read(AR5312_IMR); /* flush write buffer */ 
    14281462+} 
    14291463+ 
     
    14731507+       u32 val; 
    14741508+ 
    1475 +       val = ar231x_read_reg(AR5312_RESET); 
    1476 +       ar231x_write_reg(AR5312_RESET, val | mask); 
     1509+       val = ar5312_rst_reg_read(AR5312_RESET); 
     1510+       ar5312_rst_reg_write(AR5312_RESET, val | mask); 
    14771511+} 
    14781512+ 
     
    14811515+       u32 val; 
    14821516+ 
    1483 +       val = ar231x_read_reg(AR5312_RESET); 
    1484 +       ar231x_write_reg(AR5312_RESET, val & ~mask); 
     1517+       val = ar5312_rst_reg_read(AR5312_RESET); 
     1518+       ar5312_rst_reg_write(AR5312_RESET, val & ~mask); 
    14851519+} 
    14861520+ 
     
    15411575+static char __init *ar5312_flash_limit(void) 
    15421576+{ 
     1577+       void __iomem *flashctl_base; 
    15431578+       u32 ctl; 
     1579+ 
     1580+       flashctl_base = ioremap_nocache(AR5312_FLASHCTL_BASE, 
     1581+                                       AR5312_FLASHCTL_SIZE); 
     1582+ 
     1583+       ctl = __raw_readl(flashctl_base + AR5312_FLASHCTL0); 
     1584+       ctl &= FLASHCTL_MW; 
     1585+ 
     1586+       /* fixup flash width */ 
     1587+       switch (ctl) { 
     1588+       case FLASHCTL_MW16: 
     1589+               ar5312_flash_data.width = 2; 
     1590+               break; 
     1591+       case FLASHCTL_MW8: 
     1592+       default: 
     1593+               ar5312_flash_data.width = 1; 
     1594+               break; 
     1595+       } 
     1596+ 
    15441597+       /* 
    15451598+        * Configure flash bank 0. 
     
    15521605+               (0x07 << FLASHCTL_WST1_S) | 
    15531606+               (0x07 << FLASHCTL_WST2_S) | 
    1554 +               (ar231x_read_reg(AR5312_FLASHCTL0) & FLASHCTL_MW); 
    1555 + 
    1556 +       ar231x_write_reg(AR5312_FLASHCTL0, ctl); 
     1607+               ctl; 
     1608+ 
     1609+       __raw_writel(ctl, flashctl_base + AR5312_FLASHCTL0); 
    15571610+ 
    15581611+       /* Disable other flash banks */ 
    1559 +       ar231x_write_reg(AR5312_FLASHCTL1, 
    1560 +                        ar231x_read_reg(AR5312_FLASHCTL1) & 
    1561 +                        ~(FLASHCTL_E | FLASHCTL_AC)); 
    1562 + 
    1563 +       ar231x_write_reg(AR5312_FLASHCTL2, 
    1564 +                        ar231x_read_reg(AR5312_FLASHCTL2) & 
    1565 +                        ~(FLASHCTL_E | FLASHCTL_AC)); 
     1612+       ctl = __raw_readl(flashctl_base + AR5312_FLASHCTL1); 
     1613+       ctl &= ~(FLASHCTL_E | FLASHCTL_AC); 
     1614+       __raw_writel(ctl, flashctl_base + AR5312_FLASHCTL1); 
     1615+       ctl = __raw_readl(flashctl_base + AR5312_FLASHCTL2); 
     1616+       ctl &= ~(FLASHCTL_E | FLASHCTL_AC); 
     1617+       __raw_writel(ctl, flashctl_base + AR5312_FLASHCTL2); 
     1618+ 
     1619+       iounmap(flashctl_base); 
    15661620+ 
    15671621+       return (char *)KSEG1ADDR(AR5312_FLASH + 0x800000); 
     
    15711625+{ 
    15721626+       struct ath25_boarddata *config; 
    1573 +       u32 fctl = 0; 
    15741627+       u8 *c; 
    15751628+ 
     
    15891642+       else 
    15901643+               ath25_soc = ATH25_SOC_AR5312; 
    1591 + 
    1592 +       /* fixup flash width */ 
    1593 +       fctl = ar231x_read_reg(AR5312_FLASHCTL) & FLASHCTL_MW; 
    1594 +       switch (fctl) { 
    1595 +       case FLASHCTL_MW16: 
    1596 +               ar5312_flash_data.width = 2; 
    1597 +               break; 
    1598 +       case FLASHCTL_MW8: 
    1599 +       default: 
    1600 +               ar5312_flash_data.width = 1; 
    1601 +               break; 
    1602 +       } 
    16031644+ 
    16041645+       platform_device_register(&ar5312_physmap_flash); 
     
    16691710+       local_irq_disable(); 
    16701711+       while (1) 
    1671 +               ar231x_write_reg(AR5312_RESET, AR5312_RESET_SYSTEM); 
     1712+               ar5312_rst_reg_write(AR5312_RESET, AR5312_RESET_SYSTEM); 
    16721713+} 
    16731714+ 
     
    16881729+ 
    16891730+       /* Trust the bootrom's idea of cpu frequency. */ 
    1690 +       scratch = ar231x_read_reg(AR5312_SCRATCH); 
     1731+       scratch = ar5312_rst_reg_read(AR5312_SCRATCH); 
    16911732+       if (scratch) 
    16921733+               return scratch; 
    16931734+ 
    1694 +       devid = ar231x_read_reg(AR5312_REV); 
     1735+       devid = ar5312_rst_reg_read(AR5312_REV); 
    16951736+       devid &= AR5312_REV_MAJ; 
    16961737+       devid >>= AR5312_REV_MAJ_S; 
     
    17271768+        */ 
    17281769+ 
    1729 +       clock_ctl1 = ar231x_read_reg(AR5312_CLOCKCTL1); 
     1770+       clock_ctl1 = ar5312_rst_reg_read(AR5312_CLOCKCTL1); 
    17301771+       predivide_select = (clock_ctl1 & predivide_mask) >> predivide_shift; 
    17311772+       predivisor = clockctl1_predivide_table[predivide_select]; 
     
    17501791+void __init ar5312_plat_mem_setup(void) 
    17511792+{ 
     1793+       void __iomem *sdram_base; 
    17521794+       u32 memsize, memcfg, bank0AC, bank1AC; 
    17531795+       u32 devid; 
    17541796+ 
    17551797+       /* Detect memory size */ 
    1756 +       memcfg = ar231x_read_reg(AR5312_MEM_CFG1); 
     1798+       sdram_base = ioremap_nocache(AR5312_SDRAMCTL_BASE, 
     1799+                                    AR5312_SDRAMCTL_SIZE); 
     1800+       memcfg = __raw_readl(sdram_base + AR5312_MEM_CFG1); 
    17571801+       bank0AC = (memcfg & MEM_CFG1_AC0) >> MEM_CFG1_AC0_S; 
    17581802+       bank1AC = (memcfg & MEM_CFG1_AC1) >> MEM_CFG1_AC1_S; 
     
    17611805+       memsize <<= 20; 
    17621806+       add_memory_region(0, memsize, BOOT_MEM_RAM); 
    1763 + 
    1764 +       devid = ar231x_read_reg(AR5312_REV); 
     1807+       iounmap(sdram_base); 
     1808+ 
     1809+       ar5312_rst_base = ioremap_nocache(AR5312_RST_BASE, AR5312_RST_SIZE); 
     1810+ 
     1811+       devid = ar5312_rst_reg_read(AR5312_REV); 
    17651812+       devid >>= AR5312_REV_WMAC_MIN_S; 
    17661813+       devid &= AR5312_REV_CHIP; 
     
    17681815+ 
    17691816+       /* Clear any lingering AHB errors */ 
    1770 +       ar231x_read_reg(AR5312_PROCADDR); 
    1771 +       ar231x_read_reg(AR5312_DMAADDR); 
    1772 +       ar231x_write_reg(AR5312_WD_CTRL, AR5312_WD_CTRL_IGNORE_EXPIRATION); 
     1817+       ar5312_rst_reg_read(AR5312_PROCADDR); 
     1818+       ar5312_rst_reg_read(AR5312_DMAADDR); 
     1819+       ar5312_rst_reg_write(AR5312_WD_CTRL, AR5312_WD_CTRL_IGNORE_EXPIRATION); 
    17731820+ 
    17741821+       _machine_restart = ar5312_restart; 
     
    17821829--- /dev/null 
    17831830+++ b/arch/mips/ath25/ar2315.c 
    1784 @@ -0,0 +1,401 @@ 
     1831@@ -0,0 +1,428 @@ 
    17851832+/* 
    17861833+ * This file is subject to the terms and conditions of the GNU General Public 
     
    18221869+#include "ar2315.h" 
    18231870+ 
     1871+static void __iomem *ar2315_rst_base; 
     1872+ 
     1873+static inline u32 ar2315_rst_reg_read(u32 reg) 
     1874+{ 
     1875+       return __raw_readl(ar2315_rst_base + reg); 
     1876+} 
     1877+ 
     1878+static inline void ar2315_rst_reg_write(u32 reg, u32 val) 
     1879+{ 
     1880+       __raw_writel(val, ar2315_rst_base + reg); 
     1881+} 
     1882+ 
     1883+static inline void ar2315_rst_reg_mask(u32 reg, u32 mask, u32 val) 
     1884+{ 
     1885+       u32 ret = ar2315_rst_reg_read(reg); 
     1886+ 
     1887+       ret &= ~mask; 
     1888+       ret |= val; 
     1889+       ar2315_rst_reg_write(reg, ret); 
     1890+} 
     1891+ 
    18241892+static irqreturn_t ar2315_ahb_err_handler(int cpl, void *dev_id) 
    18251893+{ 
    1826 +       ar231x_write_reg(AR2315_AHB_ERR0, AHB_ERROR_DET); 
    1827 +       ar231x_read_reg(AR2315_AHB_ERR1); 
     1894+       ar2315_rst_reg_write(AR2315_AHB_ERR0, AHB_ERROR_DET); 
     1895+       ar2315_rst_reg_read(AR2315_AHB_ERR1); 
    18281896+ 
    18291897+       pr_emerg("AHB fatal error\n"); 
     
    18401908+static void ar2315_misc_irq_handler(unsigned irq, struct irq_desc *desc) 
    18411909+{ 
    1842 +       unsigned int misc_intr = ar231x_read_reg(AR2315_ISR) & 
    1843 +                                ar231x_read_reg(AR2315_IMR); 
     1910+       unsigned int misc_intr = ar2315_rst_reg_read(AR2315_ISR) & 
     1911+                                ar2315_rst_reg_read(AR2315_IMR); 
    18441912+ 
    18451913+       if (misc_intr & AR2315_ISR_SPI) 
     
    18501918+               generic_handle_irq(AR2315_MISC_IRQ_AHB); 
    18511919+       else if (misc_intr & AR2315_ISR_GPIO) { 
    1852 +               ar231x_write_reg(AR2315_ISR, AR2315_ISR_GPIO); 
     1920+               ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_GPIO); 
    18531921+               generic_handle_irq(AR2315_MISC_IRQ_GPIO); 
    18541922+       } else if (misc_intr & AR2315_ISR_UART0) 
    18551923+               generic_handle_irq(AR2315_MISC_IRQ_UART0); 
    18561924+       else if (misc_intr & AR2315_ISR_WD) { 
    1857 +               ar231x_write_reg(AR2315_ISR, AR2315_ISR_WD); 
     1925+               ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_WD); 
    18581926+               generic_handle_irq(AR2315_MISC_IRQ_WATCHDOG); 
    18591927+       } else 
     
    18651933+       unsigned int imr; 
    18661934+ 
    1867 +       imr = ar231x_read_reg(AR2315_IMR); 
     1935+       imr = ar2315_rst_reg_read(AR2315_IMR); 
    18681936+       imr |= 1 << (d->irq - AR231X_MISC_IRQ_BASE); 
    1869 +       ar231x_write_reg(AR2315_IMR, imr); 
     1937+       ar2315_rst_reg_write(AR2315_IMR, imr); 
    18701938+} 
    18711939+ 
     
    18741942+       unsigned int imr; 
    18751943+ 
    1876 +       imr = ar231x_read_reg(AR2315_IMR); 
     1944+       imr = ar2315_rst_reg_read(AR2315_IMR); 
    18771945+       imr &= ~(1 << (d->irq - AR231X_MISC_IRQ_BASE)); 
    1878 +       ar231x_write_reg(AR2315_IMR, imr); 
     1946+       ar2315_rst_reg_write(AR2315_IMR, imr); 
    18791947+} 
    18801948+ 
     
    19281996+       u32 val; 
    19291997+ 
    1930 +       val = ar231x_read_reg(AR2315_RESET); 
    1931 +       ar231x_write_reg(AR2315_RESET, val | mask); 
     1998+       val = ar2315_rst_reg_read(AR2315_RESET); 
     1999+       ar2315_rst_reg_write(AR2315_RESET, val | mask); 
    19322000+} 
    19332001+ 
     
    19362004+       u32 val; 
    19372005+ 
    1938 +       val = ar231x_read_reg(AR2315_RESET); 
    1939 +       ar231x_write_reg(AR2315_RESET, val & ~mask); 
     2006+       val = ar2315_rst_reg_read(AR2315_RESET); 
     2007+       ar2315_rst_reg_write(AR2315_RESET, val & ~mask); 
    19402008+} 
    19412009+ 
     
    19722040+       { 
    19732041+               .flags = IORESOURCE_MEM, 
    1974 +               .start = AR2315_WD, 
    1975 +               .end = AR2315_WD + 8 - 1, 
     2042+               .start = AR2315_RST_BASE + AR2315_WD, 
     2043+               .end = AR2315_RST_BASE + AR2315_WD + 8 - 1, 
    19762044+       }, 
    19772045+       { 
     
    20642132+ 
    20652133+       /* try reset the system via reset control */ 
    2066 +       ar231x_write_reg(AR2315_COLD_RESET, AR2317_RESET_SYSTEM); 
     2134+       ar2315_rst_reg_write(AR2315_COLD_RESET, AR2317_RESET_SYSTEM); 
    20672135+ 
    20682136+       /* Cold reset does not work on the AR2315/6, use the GPIO reset bits 
     
    20912159+       unsigned int clk_div; 
    20922160+ 
    2093 +       pllc_ctrl = ar231x_read_reg(AR2315_PLLC_CTL); 
     2161+       pllc_ctrl = ar2315_rst_reg_read(AR2315_PLLC_CTL); 
    20942162+       refdiv = (pllc_ctrl & PLLC_REF_DIV_M) >> PLLC_REF_DIV_S; 
    20952163+       refdiv = clockctl1_predivide_table[refdiv]; 
     
    21242192+static inline unsigned ar2315_cpu_frequency(void) 
    21252193+{ 
    2126 +       return ar2315_sys_clk(ar231x_read_reg(AR2315_CPUCLK)); 
     2194+       return ar2315_sys_clk(ar2315_rst_reg_read(AR2315_CPUCLK)); 
    21272195+} 
    21282196+ 
    21292197+static inline unsigned ar2315_apb_frequency(void) 
    21302198+{ 
    2131 +       return ar2315_sys_clk(ar231x_read_reg(AR2315_AMBACLK)); 
     2199+       return ar2315_sys_clk(ar2315_rst_reg_read(AR2315_AMBACLK)); 
    21322200+} 
    21332201+ 
     
    21392207+void __init ar2315_plat_mem_setup(void) 
    21402208+{ 
     2209+       void __iomem *sdram_base; 
    21412210+       u32 memsize, memcfg; 
    21422211+       u32 devid; 
    21432212+       u32 config; 
    21442213+ 
    2145 +       memcfg = ar231x_read_reg(AR2315_MEM_CFG); 
     2214+       sdram_base = ioremap_nocache(AR2315_SDRAMCTL_BASE, 
     2215+                                    AR2315_SDRAMCTL_SIZE); 
     2216+       memcfg = __raw_readl(sdram_base + AR2315_MEM_CFG); 
    21462217+       memsize   = 1 + ((memcfg & SDRAM_DATA_WIDTH_M) >> SDRAM_DATA_WIDTH_S); 
    21472218+       memsize <<= 1 + ((memcfg & SDRAM_COL_WIDTH_M) >> SDRAM_COL_WIDTH_S); 
     
    21492220+       memsize <<= 3; 
    21502221+       add_memory_region(0, memsize, BOOT_MEM_RAM); 
     2222+       iounmap(sdram_base); 
     2223+ 
     2224+       ar2315_rst_base = ioremap_nocache(AR2315_RST_BASE, AR2315_RST_SIZE); 
    21512225+ 
    21522226+       /* Detect the hardware based on the device ID */ 
    2153 +       devid = ar231x_read_reg(AR2315_SREV) & AR2315_REV_CHIP; 
     2227+       devid = ar2315_rst_reg_read(AR2315_SREV) & AR2315_REV_CHIP; 
    21542228+       switch (devid) { 
    21552229+       case 0x91:      /* Need to check */ 
     
    21722246+       config = read_c0_config(); 
    21732247+       write_c0_config(config & ~0x3); 
    2174 +       ar231x_write_reg(AR2315_AHB_ERR0, AHB_ERROR_DET); 
    2175 +       ar231x_read_reg(AR2315_AHB_ERR1); 
    2176 +       ar231x_write_reg(AR2315_WDC, AR2315_WDC_IGNORE_EXPIRATION); 
     2248+       ar2315_rst_reg_write(AR2315_AHB_ERR0, AHB_ERROR_DET); 
     2249+       ar2315_rst_reg_read(AR2315_AHB_ERR1); 
     2250+       ar2315_rst_reg_write(AR2315_WDC, AR2315_WDC_IGNORE_EXPIRATION); 
    21772251+ 
    21782252+       _machine_restart = ar2315_restart; 
     
    22642338--- /dev/null 
    22652339+++ b/arch/mips/include/asm/mach-ath25/ar231x.h 
    2266 @@ -0,0 +1,38 @@ 
     2340@@ -0,0 +1,13 @@ 
    22672341+#ifndef __ASM_MACH_ATH25_AR231X_H 
    22682342+#define __ASM_MACH_ATH25_AR231X_H 
     
    22762350+/* Software's idea of interrupts handled by "CPU Interrupt Controller" */ 
    22772351+#define AR231X_IRQ_CPU_CLOCK   (MIPS_CPU_IRQ_BASE+7) /* C0_CAUSE: 0x8000 */ 
    2278 + 
    2279 +static inline u32 
    2280 +ar231x_read_reg(u32 reg) 
    2281 +{ 
    2282 +       return __raw_readl((void __iomem *)KSEG1ADDR(reg)); 
    2283 +} 
    2284 + 
    2285 +static inline void 
    2286 +ar231x_write_reg(u32 reg, u32 val) 
    2287 +{ 
    2288 +       __raw_writel(val, (void __iomem *)KSEG1ADDR(reg)); 
    2289 +} 
    2290 + 
    2291 +static inline u32 
    2292 +ar231x_mask_reg(u32 reg, u32 mask, u32 val) 
    2293 +{ 
    2294 +       u32 ret; 
    2295 + 
    2296 +       ret = ar231x_read_reg(reg); 
    2297 +       ret &= ~mask; 
    2298 +       ret |= val; 
    2299 +       ar231x_write_reg(reg, ret); 
    2300 + 
    2301 +       return ret; 
    2302 +} 
    23032352+ 
    23042353+#endif /* __ASM_MACH_ATH25_AR231X_H */ 
  • trunk/target/linux/atheros/patches-3.18/102-ar5312_gpio.patch

    r44713 r44723  
    1111--- a/arch/mips/ath25/ar5312.c 
    1212+++ b/arch/mips/ath25/ar5312.c 
    13 @@ -184,6 +184,22 @@ static struct platform_device ar5312_phy 
     13@@ -205,6 +205,22 @@ static struct platform_device ar5312_phy 
    1414        .num_resources = 1, 
    1515 }; 
     
    1919+               .name = "ar5312-gpio", 
    2020+               .flags = IORESOURCE_MEM, 
    21 +               .start = AR5312_GPIO, 
    22 +               .end = AR5312_GPIO + 0x0c - 1, 
     21+               .start = AR5312_GPIO_BASE, 
     22+               .end = AR5312_GPIO_BASE + 0x0c - 1, 
    2323+       }, 
    2424+}; 
     
    3434 static struct gpio_led ar5312_leds[] = { 
    3535        { .name = "wlan", .gpio = 0, .active_low = 1, }, 
    36 @@ -271,6 +287,8 @@ void __init ar5312_init_devices(void) 
     36@@ -299,6 +315,8 @@ void __init ar5312_init_devices(void) 
    3737  
    3838        platform_device_register(&ar5312_physmap_flash); 
  • trunk/target/linux/atheros/patches-3.18/103-ar2315_gpio.patch

    r44713 r44723  
    99--- a/arch/mips/ath25/ar2315.c 
    1010+++ b/arch/mips/ath25/ar2315.c 
    11 @@ -204,6 +204,34 @@ static struct platform_device ar2315_wdt 
     11@@ -225,6 +225,34 @@ static struct platform_device ar2315_wdt 
    1212        .num_resources = ARRAY_SIZE(ar2315_wdt_res) 
    1313 }; 
     
    1717+               .name = "ar2315-gpio", 
    1818+               .flags = IORESOURCE_MEM, 
    19 +               .start = AR2315_GPIO, 
    20 +               .end = AR2315_GPIO + 0x10 - 1, 
     19+               .start = AR2315_RST_BASE + AR2315_GPIO, 
     20+               .end = AR2315_RST_BASE + AR2315_GPIO + 0x10 - 1, 
    2121+       }, 
    2222+       { 
     
    4444  * NB: We use mapping size that is larger than the actual flash size, 
    4545  * but this shouldn't be a problem here, because the flash will simply 
    46 @@ -264,6 +292,7 @@ void __init ar2315_init_devices(void) 
     46@@ -285,6 +313,7 @@ void __init ar2315_init_devices(void) 
    4747        ath25_find_config(ar2315_flash_limit()); 
    4848        ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
  • trunk/target/linux/atheros/patches-3.18/105-ar2315_pci.patch

    r44721 r44723  
    521521--- a/arch/mips/ath25/ar2315.c 
    522522+++ b/arch/mips/ath25/ar2315.c 
    523 @@ -116,6 +116,10 @@ static void ar2315_irq_dispatch(void) 
     523@@ -137,6 +137,10 @@ static void ar2315_irq_dispatch(void) 
    524524                do_IRQ(AR2315_IRQ_WLAN0_INTRS); 
    525525        else if (pending & CAUSEF_IP4) 
     
    532532                do_IRQ(AR2315_IRQ_MISC_INTRS); 
    533533        else if (pending & CAUSEF_IP7) 
    534 @@ -423,8 +427,60 @@ void __init ar2315_plat_mem_setup(void) 
     534@@ -450,8 +454,60 @@ void __init ar2315_plat_mem_setup(void) 
    535535        _machine_restart = ar2315_restart; 
    536536 } 
     
    567567+       if (ath25_soc == ATH25_SOC_AR2315) { 
    568568+               /* Reset PCI DMA logic */ 
    569 +               ar231x_mask_reg(AR2315_RESET, 0, AR2315_RESET_PCIDMA); 
     569+               ar2315_rst_reg_mask(AR2315_RESET, 0, AR2315_RESET_PCIDMA); 
    570570+               msleep(20); 
    571 +               ar231x_mask_reg(AR2315_RESET, AR2315_RESET_PCIDMA, 0); 
     571+               ar2315_rst_reg_mask(AR2315_RESET, AR2315_RESET_PCIDMA, 0); 
    572572+               msleep(20); 
    573573+ 
    574574+               /* Configure endians */ 
    575 +               ar231x_mask_reg(AR2315_ENDIAN_CTL, 0, AR2315_CONFIG_PCIAHB | 
    576 +                               AR2315_CONFIG_PCIAHB_BRIDGE); 
     575+               ar2315_rst_reg_mask(AR2315_ENDIAN_CTL, 0, AR2315_CONFIG_PCIAHB | 
     576+                                   AR2315_CONFIG_PCIAHB_BRIDGE); 
    577577+ 
    578578+               /* Configure as PCI host with DMA */ 
    579 +               ar231x_write_reg(AR2315_PCICLK, AR2315_PCICLK_PLLC_CLKM | 
    580 +                                (AR2315_PCICLK_IN_FREQ_DIV_6 << 
    581 +                                 AR2315_PCICLK_DIV_S)); 
    582 +               ar231x_mask_reg(AR2315_AHB_ARB_CTL, 0, AR2315_ARB_PCI); 
    583 +               ar231x_mask_reg(AR2315_IF_CTL, AR2315_IF_PCI_CLK_MASK | 
    584 +                               AR2315_IF_MASK, AR2315_IF_PCI | 
    585 +                               AR2315_IF_PCI_HOST | AR2315_IF_PCI_INTR | 
    586 +                               (AR2315_IF_PCI_CLK_OUTPUT_CLK << 
    587 +                                AR2315_IF_PCI_CLK_SHIFT)); 
     579+               ar2315_rst_reg_write(AR2315_PCICLK, AR2315_PCICLK_PLLC_CLKM | 
     580+                                 (AR2315_PCICLK_IN_FREQ_DIV_6 << 
     581+                                  AR2315_PCICLK_DIV_S)); 
     582+               ar2315_rst_reg_mask(AR2315_AHB_ARB_CTL, 0, AR2315_ARB_PCI); 
     583+               ar2315_rst_reg_mask(AR2315_IF_CTL, AR2315_IF_PCI_CLK_MASK | 
     584+                                   AR2315_IF_MASK, AR2315_IF_PCI | 
     585+                                   AR2315_IF_PCI_HOST | AR2315_IF_PCI_INTR | 
     586+                                   (AR2315_IF_PCI_CLK_OUTPUT_CLK << 
     587+                                    AR2315_IF_PCI_CLK_SHIFT)); 
    588588+ 
    589589+               platform_device_register_simple("ar2315-pci", -1, 
Note: See TracChangeset for help on using the changeset viewer.