ar71xx: preliminary Ubiquiti Bullet M support
[openwrt.git] / target / linux / ar71xx / files / arch / mips / include / asm / mach-ar71xx / ar71xx.h
index 14e5fe3..4d2f7f2 100644 (file)
 #define AR71XX_DMA_SIZE                0x10000
 #define AR71XX_STEREO_BASE     (AR71XX_APB_BASE + 0x000B0000)
 #define AR71XX_STEREO_SIZE     0x10000
+
+#define AR724X_PCI_CRP_BASE    (AR71XX_APB_BASE + 0x000C0000)
+#define AR724X_PCI_CRP_SIZE    0x100
+
+#define AR724X_PCI_CTRL_BASE   (AR71XX_APB_BASE + 0x000F0000)
+#define AR724X_PCI_CTRL_SIZE   0x100
+
 #define AR91XX_WMAC_BASE       (AR71XX_APB_BASE + 0x000C0000)
 #define AR91XX_WMAC_SIZE       0x30000
 
@@ -116,19 +123,24 @@ enum ar71xx_mach_type {
        AR71XX_MACH_AP83,       /* Atheros AP83 */
        AR71XX_MACH_AW_NR580,   /* AzureWave AW-NR580 */
        AR71XX_MACH_RB_411,     /* MikroTik RouterBOARD 411/411A/411AH */
+       AR71XX_MACH_RB_411U,    /* MikroTik RouterBOARD 411U */
        AR71XX_MACH_RB_433,     /* MikroTik RouterBOARD 433/433AH */
+       AR71XX_MACH_RB_433U,    /* MikroTik RouterBOARD 433UAH */
        AR71XX_MACH_RB_450,     /* MikroTik RouterBOARD 450 */
+       AR71XX_MACH_RB_450G,    /* MikroTik RouterBOARD 450G */
        AR71XX_MACH_RB_493,     /* Mikrotik RouterBOARD 493/493AH */
        AR71XX_MACH_PB42,       /* Atheros PB42 */
        AR71XX_MACH_PB44,       /* Atheros PB44 */
        AR71XX_MACH_MZK_W04NU,  /* Planex MZK-W04NU */
        AR71XX_MACH_MZK_W300NH, /* Planex MZK-W300NH */
        AR71XX_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
+       AR71XX_MACH_TL_WR741ND, /* TP-LINK TL-WR741ND */
        AR71XX_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */
        AR71XX_MACH_UBNT_LSSR71, /* Ubiquiti LS-SR71 */
        AR71XX_MACH_UBNT_LSX,   /* Ubiquiti LSX */
        AR71XX_MACH_UBNT_RS,    /* Ubiquiti RouterStation */
        AR71XX_MACH_UBNT_RSPRO, /* Ubiquiti RouterStation Pro */
+       AR71XX_MACH_UBNT_BULLET_M, /* Ubiquiti Bullet M */
        AR71XX_MACH_WNR2000,    /* NETGEAR WNR2000 */
        AR71XX_MACH_WP543,      /* Compex WP543 */
        AR71XX_MACH_WRT160NL,   /* Linksys WRT160NL */
@@ -285,6 +297,9 @@ void ar71xx_gpio_function_disable(u32 mask);
 #define AR71XX_DDR_REG_FLUSH_USB       0xa4
 #define AR71XX_DDR_REG_FLUSH_PCI       0xa8
 
+#define AR724X_DDR_REG_FLUSH_GE0       0x7c
+#define AR724X_DDR_REG_FLUSH_GE1       0x80
+
 #define AR91XX_DDR_REG_FLUSH_GE0       0x7c
 #define AR91XX_DDR_REG_FLUSH_GE1       0x80
 #define AR91XX_DDR_REG_FLUSH_USB       0x84
@@ -338,6 +353,34 @@ void ar71xx_ddr_flush(u32 reg);
 
 #define PCI_IDSEL_ADL_START    17
 
+#define AR724X_PCI_CFG_BASE    (AR71XX_PCI_MEM_BASE + 0x4000000)
+#define AR724X_PCI_CFG_SIZE    0x1000
+
+#define AR724X_PCI_REG_INT_STATUS      0x4c
+#define AR724X_PCI_REG_INT_MASK                0x50
+
+#define AR724X_PCI_INT_DEV0            BIT(14)
+
+static inline void ar724x_pci_wr(unsigned reg, u32 val)
+{
+       void __iomem *base;
+
+       base = ioremap_nocache(AR724X_PCI_CTRL_BASE, AR724X_PCI_CTRL_SIZE);
+       __raw_writel(val, base + reg);
+       iounmap(base);
+}
+
+static inline u32 ar724x_pci_rr(unsigned reg)
+{
+       void __iomem *base;
+       u32 ret;
+
+       base = ioremap_nocache(AR724X_PCI_CTRL_BASE, AR724X_PCI_CTRL_SIZE);
+       ret = __raw_readl(base + reg);
+       iounmap(base);
+       return ret;
+}
+
 /*
  * RESET block
  */
@@ -362,6 +405,8 @@ void ar71xx_ddr_flush(u32 reg);
 #define AR91XX_RESET_REG_PERFC0                        0x24
 #define AR91XX_RESET_REG_PERFC1                        0x28
 
+#define AR724X_RESET_REG_RESET_MODULE          0x1c
+
 #define WDOG_CTRL_LAST_RESET           BIT(31)
 #define WDOG_CTRL_ACTION_MASK          3
 #define WDOG_CTRL_ACTION_NONE          0       /* no action */