0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef _ASM_ARCH_SA1111
0014 #define _ASM_ARCH_SA1111
0015
0016
0017
0018
0019
0020 #define SA1111_SAC_DMA_MIN_XFER (0x800)
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #define SA1111_SKCR 0x0000
0031 #define SA1111_SMCR 0x0004
0032 #define SA1111_SKID 0x0008
0033
0034 #define SKCR_PLL_BYPASS (1<<0)
0035 #define SKCR_RCLKEN (1<<1)
0036 #define SKCR_SLEEP (1<<2)
0037 #define SKCR_DOZE (1<<3)
0038 #define SKCR_VCO_OFF (1<<4)
0039 #define SKCR_SCANTSTEN (1<<5)
0040 #define SKCR_CLKTSTEN (1<<6)
0041 #define SKCR_RDYEN (1<<7)
0042 #define SKCR_SELAC (1<<8)
0043 #define SKCR_OPPC (1<<9)
0044 #define SKCR_PLLTSTEN (1<<10)
0045 #define SKCR_USBIOTSTEN (1<<11)
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 #define SKCR_OE_EN (1<<13)
0059
0060 #define SMCR_DTIM (1<<0)
0061 #define SMCR_MBGE (1<<1)
0062 #define SMCR_DRAC_0 (1<<2)
0063 #define SMCR_DRAC_1 (1<<3)
0064 #define SMCR_DRAC_2 (1<<4)
0065 #define SMCR_DRAC Fld(3, 2)
0066 #define SMCR_CLAT (1<<5)
0067
0068 #define SKID_SIREV_MASK (0x000000f0)
0069 #define SKID_MTREV_MASK (0x0000000f)
0070 #define SKID_ID_MASK (0xffffff00)
0071 #define SKID_SA1111_ID (0x690cc200)
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087 #define SA1111_SKPCR 0x0200
0088 #define SA1111_SKCDR 0x0204
0089 #define SA1111_SKAUD 0x0208
0090 #define SA1111_SKPMC 0x020c
0091 #define SA1111_SKPTC 0x0210
0092 #define SA1111_SKPEN0 0x0214
0093 #define SA1111_SKPWM0 0x0218
0094 #define SA1111_SKPEN1 0x021c
0095 #define SA1111_SKPWM1 0x0220
0096
0097 #define SKPCR_UCLKEN (1<<0)
0098 #define SKPCR_ACCLKEN (1<<1)
0099 #define SKPCR_I2SCLKEN (1<<2)
0100 #define SKPCR_L3CLKEN (1<<3)
0101 #define SKPCR_SCLKEN (1<<4)
0102 #define SKPCR_PMCLKEN (1<<5)
0103 #define SKPCR_PTCLKEN (1<<6)
0104 #define SKPCR_DCLKEN (1<<7)
0105 #define SKPCR_PWMCLKEN (1<<8)
0106
0107
0108 #define SA1111_USB 0x0400
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140 #define SA1111_SERAUDIO 0x0600
0141
0142
0143
0144
0145 #define SA1111_SACR0 0x00
0146 #define SA1111_SACR1 0x04
0147 #define SA1111_SACR2 0x08
0148 #define SA1111_SASR0 0x0c
0149 #define SA1111_SASR1 0x10
0150 #define SA1111_SASCR 0x18
0151 #define SA1111_L3_CAR 0x1c
0152 #define SA1111_L3_CDR 0x20
0153 #define SA1111_ACCAR 0x24
0154 #define SA1111_ACCDR 0x28
0155 #define SA1111_ACSAR 0x2c
0156 #define SA1111_ACSDR 0x30
0157 #define SA1111_SADTCS 0x34
0158 #define SA1111_SADTSA 0x38
0159 #define SA1111_SADTCA 0x3c
0160 #define SA1111_SADTSB 0x40
0161 #define SA1111_SADTCB 0x44
0162 #define SA1111_SADRCS 0x48
0163 #define SA1111_SADRSA 0x4c
0164 #define SA1111_SADRCA 0x50
0165 #define SA1111_SADRSB 0x54
0166 #define SA1111_SADRCB 0x58
0167 #define SA1111_SAITR 0x5c
0168 #define SA1111_SADR 0x80
0169
0170 #ifndef CONFIG_ARCH_PXA
0171
0172 #define SACR0_ENB (1<<0)
0173 #define SACR0_BCKD (1<<2)
0174 #define SACR0_RST (1<<3)
0175
0176 #define SACR1_AMSL (1<<0)
0177 #define SACR1_L3EN (1<<1)
0178 #define SACR1_L3MB (1<<2)
0179 #define SACR1_DREC (1<<3)
0180 #define SACR1_DRPL (1<<4)
0181 #define SACR1_ENLBF (1<<5)
0182
0183 #define SACR2_TS3V (1<<0)
0184 #define SACR2_TS4V (1<<1)
0185 #define SACR2_WKUP (1<<2)
0186 #define SACR2_DREC (1<<3)
0187 #define SACR2_DRPL (1<<4)
0188 #define SACR2_ENLBF (1<<5)
0189 #define SACR2_RESET (1<<6)
0190
0191 #define SASR0_TNF (1<<0)
0192 #define SASR0_RNE (1<<1)
0193 #define SASR0_BSY (1<<2)
0194 #define SASR0_TFS (1<<3)
0195 #define SASR0_RFS (1<<4)
0196 #define SASR0_TUR (1<<5)
0197 #define SASR0_ROR (1<<6)
0198 #define SASR0_L3WD (1<<16)
0199 #define SASR0_L3RD (1<<17)
0200
0201 #define SASR1_TNF (1<<0)
0202 #define SASR1_RNE (1<<1)
0203 #define SASR1_BSY (1<<2)
0204 #define SASR1_TFS (1<<3)
0205 #define SASR1_RFS (1<<4)
0206 #define SASR1_TUR (1<<5)
0207 #define SASR1_ROR (1<<6)
0208 #define SASR1_CADT (1<<16)
0209 #define SASR1_SADR (1<<17)
0210 #define SASR1_RSTO (1<<18)
0211 #define SASR1_CLPM (1<<19)
0212 #define SASR1_CRDY (1<<20)
0213 #define SASR1_RS3V (1<<21)
0214 #define SASR1_RS4V (1<<22)
0215
0216 #define SASCR_TUR (1<<5)
0217 #define SASCR_ROR (1<<6)
0218 #define SASCR_DTS (1<<16)
0219 #define SASCR_RDD (1<<17)
0220 #define SASCR_STO (1<<18)
0221
0222 #define SADTCS_TDEN (1<<0)
0223 #define SADTCS_TDIE (1<<1)
0224 #define SADTCS_TDBDA (1<<3)
0225 #define SADTCS_TDSTA (1<<4)
0226 #define SADTCS_TDBDB (1<<5)
0227 #define SADTCS_TDSTB (1<<6)
0228 #define SADTCS_TBIU (1<<7)
0229
0230 #define SADRCS_RDEN (1<<0)
0231 #define SADRCS_RDIE (1<<1)
0232 #define SADRCS_RDBDA (1<<3)
0233 #define SADRCS_RDSTA (1<<4)
0234 #define SADRCS_RDBDB (1<<5)
0235 #define SADRCS_RDSTB (1<<6)
0236 #define SADRCS_RBIU (1<<7)
0237
0238 #define SAD_CS_DEN (1<<0)
0239 #define SAD_CS_DIE (1<<1)
0240 #define SAD_CS_DBDA (1<<3)
0241 #define SAD_CS_DSTA (1<<4)
0242 #define SAD_CS_DBDB (1<<5)
0243 #define SAD_CS_DSTB (1<<6)
0244 #define SAD_CS_BIU (1<<7)
0245
0246 #define SAITR_TFS (1<<0)
0247 #define SAITR_RFS (1<<1)
0248 #define SAITR_TUR (1<<2)
0249 #define SAITR_ROR (1<<3)
0250 #define SAITR_CADT (1<<4)
0251 #define SAITR_SADR (1<<5)
0252 #define SAITR_RSTO (1<<6)
0253 #define SAITR_TDBDA (1<<8)
0254 #define SAITR_TDBDB (1<<9)
0255 #define SAITR_RDBDA (1<<10)
0256 #define SAITR_RDBDB (1<<11)
0257
0258 #endif
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278 #define SA1111_GPIO 0x1000
0279
0280 #define SA1111_GPIO_PADDR (0x000)
0281 #define SA1111_GPIO_PADRR (0x004)
0282 #define SA1111_GPIO_PADWR (0x004)
0283 #define SA1111_GPIO_PASDR (0x008)
0284 #define SA1111_GPIO_PASSR (0x00c)
0285 #define SA1111_GPIO_PBDDR (0x010)
0286 #define SA1111_GPIO_PBDRR (0x014)
0287 #define SA1111_GPIO_PBDWR (0x014)
0288 #define SA1111_GPIO_PBSDR (0x018)
0289 #define SA1111_GPIO_PBSSR (0x01c)
0290 #define SA1111_GPIO_PCDDR (0x020)
0291 #define SA1111_GPIO_PCDRR (0x024)
0292 #define SA1111_GPIO_PCDWR (0x024)
0293 #define SA1111_GPIO_PCSDR (0x028)
0294 #define SA1111_GPIO_PCSSR (0x02c)
0295
0296 #define GPIO_A0 (1 << 0)
0297 #define GPIO_A1 (1 << 1)
0298 #define GPIO_A2 (1 << 2)
0299 #define GPIO_A3 (1 << 3)
0300
0301 #define GPIO_B0 (1 << 8)
0302 #define GPIO_B1 (1 << 9)
0303 #define GPIO_B2 (1 << 10)
0304 #define GPIO_B3 (1 << 11)
0305 #define GPIO_B4 (1 << 12)
0306 #define GPIO_B5 (1 << 13)
0307 #define GPIO_B6 (1 << 14)
0308 #define GPIO_B7 (1 << 15)
0309
0310 #define GPIO_C0 (1 << 16)
0311 #define GPIO_C1 (1 << 17)
0312 #define GPIO_C2 (1 << 18)
0313 #define GPIO_C3 (1 << 19)
0314 #define GPIO_C4 (1 << 20)
0315 #define GPIO_C5 (1 << 21)
0316 #define GPIO_C6 (1 << 22)
0317 #define GPIO_C7 (1 << 23)
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339 #define SA1111_INTC 0x1600
0340
0341
0342
0343
0344 #define SA1111_INTTEST0 0x0000
0345 #define SA1111_INTTEST1 0x0004
0346 #define SA1111_INTEN0 0x0008
0347 #define SA1111_INTEN1 0x000c
0348 #define SA1111_INTPOL0 0x0010
0349 #define SA1111_INTPOL1 0x0014
0350 #define SA1111_INTTSTSEL 0x0018
0351 #define SA1111_INTSTATCLR0 0x001c
0352 #define SA1111_INTSTATCLR1 0x0020
0353 #define SA1111_INTSET0 0x0024
0354 #define SA1111_INTSET1 0x0028
0355 #define SA1111_WAKEEN0 0x002c
0356 #define SA1111_WAKEEN1 0x0030
0357 #define SA1111_WAKEPOL0 0x0034
0358 #define SA1111_WAKEPOL1 0x0038
0359
0360
0361 #define SA1111_KBD 0x0a00
0362 #define SA1111_MSE 0x0c00
0363
0364
0365 #define SA1111_PCMCIA 0x1600
0366
0367
0368
0369
0370
0371 extern struct bus_type sa1111_bus_type;
0372
0373 #define SA1111_DEVID_SBI (1 << 0)
0374 #define SA1111_DEVID_SK (1 << 1)
0375 #define SA1111_DEVID_USB (1 << 2)
0376 #define SA1111_DEVID_SAC (1 << 3)
0377 #define SA1111_DEVID_SSP (1 << 4)
0378 #define SA1111_DEVID_PS2 (3 << 5)
0379 #define SA1111_DEVID_PS2_KBD (1 << 5)
0380 #define SA1111_DEVID_PS2_MSE (1 << 6)
0381 #define SA1111_DEVID_GPIO (1 << 7)
0382 #define SA1111_DEVID_INT (1 << 8)
0383 #define SA1111_DEVID_PCMCIA (1 << 9)
0384
0385 struct sa1111_dev {
0386 struct device dev;
0387 unsigned int devid;
0388 struct resource res;
0389 void __iomem *mapbase;
0390 unsigned int skpcr_mask;
0391 unsigned int hwirq[6];
0392 u64 dma_mask;
0393 };
0394
0395 #define to_sa1111_device(x) container_of(x, struct sa1111_dev, dev)
0396
0397 #define sa1111_get_drvdata(d) dev_get_drvdata(&(d)->dev)
0398 #define sa1111_set_drvdata(d,p) dev_set_drvdata(&(d)->dev, p)
0399
0400 struct sa1111_driver {
0401 struct device_driver drv;
0402 unsigned int devid;
0403 int (*probe)(struct sa1111_dev *);
0404 void (*remove)(struct sa1111_dev *);
0405 };
0406
0407 #define SA1111_DRV(_d) container_of((_d), struct sa1111_driver, drv)
0408
0409 #define SA1111_DRIVER_NAME(_sadev) ((_sadev)->dev.driver->name)
0410
0411
0412
0413
0414
0415 int sa1111_enable_device(struct sa1111_dev *);
0416 void sa1111_disable_device(struct sa1111_dev *);
0417
0418 int sa1111_get_irq(struct sa1111_dev *, unsigned num);
0419
0420 unsigned int sa1111_pll_clock(struct sa1111_dev *);
0421
0422 #define SA1111_AUDIO_ACLINK 0
0423 #define SA1111_AUDIO_I2S 1
0424
0425 void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode);
0426 int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate);
0427 int sa1111_get_audio_rate(struct sa1111_dev *sadev);
0428
0429 int sa1111_check_dma_bug(dma_addr_t addr);
0430
0431 int sa1111_driver_register(struct sa1111_driver *);
0432 void sa1111_driver_unregister(struct sa1111_driver *);
0433
0434 struct sa1111_platform_data {
0435 int irq_base;
0436 unsigned disable_devs;
0437 void *data;
0438 int (*enable)(void *, unsigned);
0439 void (*disable)(void *, unsigned);
0440 };
0441
0442 #endif