0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _BRCM_AIUTILS_H_
0018 #define _BRCM_AIUTILS_H_
0019
0020 #include <linux/bcma/bcma.h>
0021
0022 #include "types.h"
0023
0024
0025
0026
0027
0028
0029 #define SI_CORE_SIZE 0x1000
0030
0031
0032
0033
0034
0035 #define SI_MAXCORES 16
0036
0037
0038 #define SI_PCI_DMA_SZ 0x40000000
0039
0040
0041 #define SI_PCIE_DMA_H32 0x80000000
0042
0043
0044 #define SI_CC_IDX 0
0045
0046
0047 #define SOCI_AI 1
0048
0049
0050
0051
0052 #define SI_CLK_CTL_ST 0x1e0
0053
0054
0055 #define CCS_FORCEALP 0x00000001
0056 #define CCS_FORCEHT 0x00000002
0057 #define CCS_FORCEILP 0x00000004
0058 #define CCS_ALPAREQ 0x00000008
0059 #define CCS_HTAREQ 0x00000010
0060 #define CCS_FORCEHWREQOFF 0x00000020
0061 #define CCS_ERSRC_REQ_MASK 0x00000700
0062 #define CCS_ERSRC_REQ_SHIFT 8
0063 #define CCS_ALPAVAIL 0x00010000
0064 #define CCS_HTAVAIL 0x00020000
0065 #define CCS_BP_ON_APL 0x00040000
0066 #define CCS_BP_ON_HT 0x00080000
0067 #define CCS_ERSRC_STS_MASK 0x07000000
0068 #define CCS_ERSRC_STS_SHIFT 24
0069
0070
0071 #define CCS0_HTAVAIL 0x00010000
0072
0073 #define CCS0_ALPAVAIL 0x00020000
0074
0075
0076
0077
0078
0079
0080 #define FLASH_MIN 0x00020000
0081
0082 #define CC_SROM_OTP 0x800
0083
0084
0085 #define GPIO_ONTIME_SHIFT 16
0086
0087
0088 #define CLKD_OTP 0x000f0000
0089 #define CLKD_OTP_SHIFT 16
0090
0091
0092 #define LPOMINFREQ 25000
0093 #define LPOMAXFREQ 43000
0094 #define XTALMINFREQ 19800000
0095 #define XTALMAXFREQ 20200000
0096 #define PCIMINFREQ 25000000
0097 #define PCIMAXFREQ 34000000
0098
0099 #define ILP_DIV_5MHZ 0
0100 #define ILP_DIV_1MHZ 4
0101
0102
0103 #define XTAL 0x1
0104 #define PLL 0x2
0105
0106
0107 #define GPIO_DRV_PRIORITY 0
0108 #define GPIO_APP_PRIORITY 1
0109 #define GPIO_HI_PRIORITY 2
0110
0111
0112
0113
0114 #define GPIO_PULLUP 0
0115 #define GPIO_PULLDN 1
0116
0117
0118 #define GPIO_REGEVT 0
0119 #define GPIO_REGEVT_INTMSK 1
0120 #define GPIO_REGEVT_INTPOL 2
0121
0122
0123 #define SI_DEVPATH_BUFSZ 16
0124
0125
0126 #define SI_DOATTACH 1
0127 #define SI_PCIDOWN 2
0128 #define SI_PCIUP 3
0129
0130
0131
0132
0133
0134 struct si_pub {
0135 int ccrev;
0136 u32 cccaps;
0137 int pmurev;
0138 u32 pmucaps;
0139 uint boardtype;
0140 uint boardvendor;
0141 uint chip;
0142 uint chiprev;
0143 uint chippkg;
0144 };
0145
0146 struct pci_dev;
0147
0148 struct gpioh_item {
0149 void *arg;
0150 bool level;
0151 void (*handler) (u32 stat, void *arg);
0152 u32 event;
0153 struct gpioh_item *next;
0154 };
0155
0156
0157 struct si_info {
0158 struct si_pub pub;
0159 struct bcma_bus *icbus;
0160 struct pci_dev *pcibus;
0161
0162 u32 chipst;
0163 };
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175 u32 ai_core_cflags(struct bcma_device *core, u32 mask, u32 val);
0176
0177
0178 struct si_pub *ai_attach(struct bcma_bus *pbus);
0179 void ai_detach(struct si_pub *sih);
0180 uint ai_cc_reg(struct si_pub *sih, uint regoff, u32 mask, u32 val);
0181 void ai_clkctl_init(struct si_pub *sih);
0182 u16 ai_clkctl_fast_pwrup_delay(struct si_pub *sih);
0183 bool ai_clkctl_cc(struct si_pub *sih, enum bcma_clkmode mode);
0184 bool ai_deviceremoved(struct si_pub *sih);
0185
0186
0187 void ai_epa_4313war(struct si_pub *sih);
0188
0189 static inline u32 ai_get_cccaps(struct si_pub *sih)
0190 {
0191 return sih->cccaps;
0192 }
0193
0194 static inline int ai_get_pmurev(struct si_pub *sih)
0195 {
0196 return sih->pmurev;
0197 }
0198
0199 static inline u32 ai_get_pmucaps(struct si_pub *sih)
0200 {
0201 return sih->pmucaps;
0202 }
0203
0204 static inline uint ai_get_boardtype(struct si_pub *sih)
0205 {
0206 return sih->boardtype;
0207 }
0208
0209 static inline uint ai_get_boardvendor(struct si_pub *sih)
0210 {
0211 return sih->boardvendor;
0212 }
0213
0214 static inline uint ai_get_chip_id(struct si_pub *sih)
0215 {
0216 return sih->chip;
0217 }
0218
0219 static inline uint ai_get_chiprev(struct si_pub *sih)
0220 {
0221 return sih->chiprev;
0222 }
0223
0224 static inline uint ai_get_chippkg(struct si_pub *sih)
0225 {
0226 return sih->chippkg;
0227 }
0228
0229 #endif