0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef __TWL_H_
0012 #define __TWL_H_
0013
0014 #include <linux/types.h>
0015 #include <linux/input/matrix_keypad.h>
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 enum twl_module_ids {
0030 TWL_MODULE_USB,
0031 TWL_MODULE_PIH,
0032 TWL_MODULE_MAIN_CHARGE,
0033 TWL_MODULE_PM_MASTER,
0034 TWL_MODULE_PM_RECEIVER,
0035
0036 TWL_MODULE_RTC,
0037 TWL_MODULE_PWM,
0038 TWL_MODULE_LED,
0039 TWL_MODULE_SECURED_REG,
0040
0041 TWL_MODULE_LAST,
0042 };
0043
0044
0045 enum twl4030_module_ids {
0046 TWL4030_MODULE_AUDIO_VOICE = TWL_MODULE_LAST,
0047 TWL4030_MODULE_GPIO,
0048 TWL4030_MODULE_INTBR,
0049 TWL4030_MODULE_TEST,
0050 TWL4030_MODULE_KEYPAD,
0051
0052 TWL4030_MODULE_MADC,
0053 TWL4030_MODULE_INTERRUPTS,
0054 TWL4030_MODULE_PRECHARGE,
0055 TWL4030_MODULE_BACKUP,
0056 TWL4030_MODULE_INT,
0057
0058 TWL5031_MODULE_ACCESSORY,
0059 TWL5031_MODULE_INTERRUPTS,
0060
0061 TWL4030_MODULE_LAST,
0062 };
0063
0064
0065 enum twl6030_module_ids {
0066 TWL6030_MODULE_ID0 = TWL_MODULE_LAST,
0067 TWL6030_MODULE_ID1,
0068 TWL6030_MODULE_ID2,
0069 TWL6030_MODULE_GPADC,
0070 TWL6030_MODULE_GASGAUGE,
0071
0072 TWL6030_MODULE_LAST,
0073 };
0074
0075
0076 #define TWL4030_MODULE_LED TWL_MODULE_LED
0077
0078 #define GPIO_INTR_OFFSET 0
0079 #define KEYPAD_INTR_OFFSET 1
0080 #define BCI_INTR_OFFSET 2
0081 #define MADC_INTR_OFFSET 3
0082 #define USB_INTR_OFFSET 4
0083 #define CHARGERFAULT_INTR_OFFSET 5
0084 #define BCI_PRES_INTR_OFFSET 9
0085 #define USB_PRES_INTR_OFFSET 10
0086 #define RTC_INTR_OFFSET 11
0087
0088
0089
0090
0091 #define PWR_INTR_OFFSET 0
0092 #define HOTDIE_INTR_OFFSET 12
0093 #define SMPSLDO_INTR_OFFSET 13
0094 #define BATDETECT_INTR_OFFSET 14
0095 #define SIMDETECT_INTR_OFFSET 15
0096 #define MMCDETECT_INTR_OFFSET 16
0097 #define GASGAUGE_INTR_OFFSET 17
0098 #define USBOTG_INTR_OFFSET 4
0099 #define CHARGER_INTR_OFFSET 2
0100 #define RSV_INTR_OFFSET 0
0101
0102
0103 #define REG_INT_STS_A 0x00
0104 #define REG_INT_STS_B 0x01
0105 #define REG_INT_STS_C 0x02
0106
0107 #define REG_INT_MSK_LINE_A 0x03
0108 #define REG_INT_MSK_LINE_B 0x04
0109 #define REG_INT_MSK_LINE_C 0x05
0110
0111 #define REG_INT_MSK_STS_A 0x06
0112 #define REG_INT_MSK_STS_B 0x07
0113 #define REG_INT_MSK_STS_C 0x08
0114
0115
0116 #define TWL6030_PWR_INT_MASK 0x07
0117 #define TWL6030_RTC_INT_MASK 0x18
0118 #define TWL6030_HOTDIE_INT_MASK 0x20
0119 #define TWL6030_SMPSLDOA_INT_MASK 0xC0
0120
0121
0122 #define TWL6030_SMPSLDOB_INT_MASK 0x01
0123 #define TWL6030_BATDETECT_INT_MASK 0x02
0124 #define TWL6030_SIMDETECT_INT_MASK 0x04
0125 #define TWL6030_MMCDETECT_INT_MASK 0x08
0126 #define TWL6030_GPADC_INT_MASK 0x60
0127 #define TWL6030_GASGAUGE_INT_MASK 0x80
0128
0129
0130 #define TWL6030_USBOTG_INT_MASK 0x0F
0131 #define TWL6030_CHARGER_CTRL_INT_MASK 0x10
0132 #define TWL6030_CHARGER_FAULT_INT_MASK 0x60
0133
0134 #define TWL6030_MMCCTRL 0xEE
0135 #define VMMC_AUTO_OFF (0x1 << 3)
0136 #define SW_FC (0x1 << 2)
0137 #define STS_MMC 0x1
0138
0139 #define TWL6030_CFG_INPUT_PUPD3 0xF2
0140 #define MMC_PU (0x1 << 3)
0141 #define MMC_PD (0x1 << 2)
0142
0143 #define TWL_SIL_TYPE(rev) ((rev) & 0x00FFFFFF)
0144 #define TWL_SIL_REV(rev) ((rev) >> 24)
0145 #define TWL_SIL_5030 0x09002F
0146 #define TWL5030_REV_1_0 0x00
0147 #define TWL5030_REV_1_1 0x10
0148 #define TWL5030_REV_1_2 0x30
0149
0150 #define TWL4030_CLASS_ID 0x4030
0151 #define TWL6030_CLASS_ID 0x6030
0152 unsigned int twl_rev(void);
0153 #define GET_TWL_REV (twl_rev())
0154 #define TWL_CLASS_IS(class, id) \
0155 static inline int twl_class_is_ ##class(void) \
0156 { \
0157 return ((id) == (GET_TWL_REV)) ? 1 : 0; \
0158 }
0159
0160 TWL_CLASS_IS(4030, TWL4030_CLASS_ID)
0161 TWL_CLASS_IS(6030, TWL6030_CLASS_ID)
0162
0163
0164 int twl_set_regcache_bypass(u8 mod_no, bool enable);
0165
0166
0167
0168
0169 int twl_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes);
0170 int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes);
0171
0172
0173
0174
0175 static inline int twl_i2c_write_u8(u8 mod_no, u8 val, u8 reg) {
0176 return twl_i2c_write(mod_no, &val, reg, 1);
0177 }
0178
0179 static inline int twl_i2c_read_u8(u8 mod_no, u8 *val, u8 reg) {
0180 return twl_i2c_read(mod_no, val, reg, 1);
0181 }
0182
0183 static inline int twl_i2c_write_u16(u8 mod_no, u16 val, u8 reg) {
0184 __le16 value;
0185
0186 value = cpu_to_le16(val);
0187 return twl_i2c_write(mod_no, (u8 *) &value, reg, 2);
0188 }
0189
0190 static inline int twl_i2c_read_u16(u8 mod_no, u16 *val, u8 reg) {
0191 int ret;
0192 __le16 value;
0193
0194 ret = twl_i2c_read(mod_no, (u8 *) &value, reg, 2);
0195 *val = le16_to_cpu(value);
0196 return ret;
0197 }
0198
0199 int twl_get_type(void);
0200 int twl_get_version(void);
0201 int twl_get_hfclk_rate(void);
0202
0203 int twl6030_interrupt_unmask(u8 bit_mask, u8 offset);
0204 int twl6030_interrupt_mask(u8 bit_mask, u8 offset);
0205
0206
0207 #ifdef CONFIG_TWL4030_CORE
0208 int twl6030_mmc_card_detect_config(void);
0209 #else
0210 static inline int twl6030_mmc_card_detect_config(void)
0211 {
0212 pr_debug("twl6030_mmc_card_detect_config not supported\n");
0213 return 0;
0214 }
0215 #endif
0216
0217
0218 #ifdef CONFIG_TWL4030_CORE
0219 int twl6030_mmc_card_detect(struct device *dev, int slot);
0220 #else
0221 static inline int twl6030_mmc_card_detect(struct device *dev, int slot)
0222 {
0223 pr_debug("Call back twl6030_mmc_card_detect not supported\n");
0224 return -EIO;
0225 }
0226 #endif
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238 #define TWL4030_SIH_CTRL_EXCLEN_MASK BIT(0)
0239 #define TWL4030_SIH_CTRL_PENDDIS_MASK BIT(1)
0240 #define TWL4030_SIH_CTRL_COR_MASK BIT(2)
0241
0242
0243
0244
0245
0246
0247
0248 #define REG_GPIODATAIN1 0x0
0249 #define REG_GPIODATAIN2 0x1
0250 #define REG_GPIODATAIN3 0x2
0251 #define REG_GPIODATADIR1 0x3
0252 #define REG_GPIODATADIR2 0x4
0253 #define REG_GPIODATADIR3 0x5
0254 #define REG_GPIODATAOUT1 0x6
0255 #define REG_GPIODATAOUT2 0x7
0256 #define REG_GPIODATAOUT3 0x8
0257 #define REG_CLEARGPIODATAOUT1 0x9
0258 #define REG_CLEARGPIODATAOUT2 0xA
0259 #define REG_CLEARGPIODATAOUT3 0xB
0260 #define REG_SETGPIODATAOUT1 0xC
0261 #define REG_SETGPIODATAOUT2 0xD
0262 #define REG_SETGPIODATAOUT3 0xE
0263 #define REG_GPIO_DEBEN1 0xF
0264 #define REG_GPIO_DEBEN2 0x10
0265 #define REG_GPIO_DEBEN3 0x11
0266 #define REG_GPIO_CTRL 0x12
0267 #define REG_GPIOPUPDCTR1 0x13
0268 #define REG_GPIOPUPDCTR2 0x14
0269 #define REG_GPIOPUPDCTR3 0x15
0270 #define REG_GPIOPUPDCTR4 0x16
0271 #define REG_GPIOPUPDCTR5 0x17
0272 #define REG_GPIO_ISR1A 0x19
0273 #define REG_GPIO_ISR2A 0x1A
0274 #define REG_GPIO_ISR3A 0x1B
0275 #define REG_GPIO_IMR1A 0x1C
0276 #define REG_GPIO_IMR2A 0x1D
0277 #define REG_GPIO_IMR3A 0x1E
0278 #define REG_GPIO_ISR1B 0x1F
0279 #define REG_GPIO_ISR2B 0x20
0280 #define REG_GPIO_ISR3B 0x21
0281 #define REG_GPIO_IMR1B 0x22
0282 #define REG_GPIO_IMR2B 0x23
0283 #define REG_GPIO_IMR3B 0x24
0284 #define REG_GPIO_EDR1 0x28
0285 #define REG_GPIO_EDR2 0x29
0286 #define REG_GPIO_EDR3 0x2A
0287 #define REG_GPIO_EDR4 0x2B
0288 #define REG_GPIO_EDR5 0x2C
0289 #define REG_GPIO_SIH_CTRL 0x2D
0290
0291
0292
0293
0294 #define TWL4030_GPIO_MAX 18
0295
0296
0297
0298
0299
0300
0301
0302 #define REG_IDCODE_7_0 0x00
0303 #define REG_IDCODE_15_8 0x01
0304 #define REG_IDCODE_16_23 0x02
0305 #define REG_IDCODE_31_24 0x03
0306 #define REG_GPPUPDCTR1 0x0F
0307 #define REG_UNLOCK_TEST_REG 0x12
0308
0309
0310
0311 #define I2C_SCL_CTRL_PU BIT(0)
0312 #define I2C_SDA_CTRL_PU BIT(2)
0313 #define SR_I2C_SCL_CTRL_PU BIT(4)
0314 #define SR_I2C_SDA_CTRL_PU BIT(6)
0315
0316 #define TWL_EEPROM_R_UNLOCK 0x49
0317
0318
0319
0320
0321
0322
0323
0324
0325 #define TWL4030_KEYPAD_KEYP_ISR1 0x11
0326 #define TWL4030_KEYPAD_KEYP_IMR1 0x12
0327 #define TWL4030_KEYPAD_KEYP_ISR2 0x13
0328 #define TWL4030_KEYPAD_KEYP_IMR2 0x14
0329 #define TWL4030_KEYPAD_KEYP_SIR 0x15
0330 #define TWL4030_KEYPAD_KEYP_EDR 0x16
0331 #define TWL4030_KEYPAD_KEYP_SIH_CTRL 0x17
0332
0333
0334
0335
0336
0337
0338
0339
0340 #define TWL4030_MADC_ISR1 0x61
0341 #define TWL4030_MADC_IMR1 0x62
0342 #define TWL4030_MADC_ISR2 0x63
0343 #define TWL4030_MADC_IMR2 0x64
0344 #define TWL4030_MADC_SIR 0x65
0345 #define TWL4030_MADC_EDR 0x66
0346 #define TWL4030_MADC_SIH_CTRL 0x67
0347
0348
0349
0350
0351
0352
0353
0354 #define TWL4030_INTERRUPTS_BCIISR1A 0x0
0355 #define TWL4030_INTERRUPTS_BCIISR2A 0x1
0356 #define TWL4030_INTERRUPTS_BCIIMR1A 0x2
0357 #define TWL4030_INTERRUPTS_BCIIMR2A 0x3
0358 #define TWL4030_INTERRUPTS_BCIISR1B 0x4
0359 #define TWL4030_INTERRUPTS_BCIISR2B 0x5
0360 #define TWL4030_INTERRUPTS_BCIIMR1B 0x6
0361 #define TWL4030_INTERRUPTS_BCIIMR2B 0x7
0362 #define TWL4030_INTERRUPTS_BCISIR1 0x8
0363 #define TWL4030_INTERRUPTS_BCISIR2 0x9
0364 #define TWL4030_INTERRUPTS_BCIEDR1 0xa
0365 #define TWL4030_INTERRUPTS_BCIEDR2 0xb
0366 #define TWL4030_INTERRUPTS_BCIEDR3 0xc
0367 #define TWL4030_INTERRUPTS_BCISIHCTRL 0xd
0368
0369
0370
0371
0372
0373
0374
0375 #define TWL4030_INT_PWR_ISR1 0x0
0376 #define TWL4030_INT_PWR_IMR1 0x1
0377 #define TWL4030_INT_PWR_ISR2 0x2
0378 #define TWL4030_INT_PWR_IMR2 0x3
0379 #define TWL4030_INT_PWR_SIR 0x4
0380 #define TWL4030_INT_PWR_EDR1 0x5
0381 #define TWL4030_INT_PWR_EDR2 0x6
0382 #define TWL4030_INT_PWR_SIH_CTRL 0x7
0383
0384
0385
0386
0387
0388
0389 #define TWL5031_ACIIMR_LSB 0x05
0390 #define TWL5031_ACIIMR_MSB 0x06
0391 #define TWL5031_ACIIDR_LSB 0x07
0392 #define TWL5031_ACIIDR_MSB 0x08
0393 #define TWL5031_ACCISR1 0x0F
0394 #define TWL5031_ACCIMR1 0x10
0395 #define TWL5031_ACCISR2 0x11
0396 #define TWL5031_ACCIMR2 0x12
0397 #define TWL5031_ACCSIR 0x13
0398 #define TWL5031_ACCEDR1 0x14
0399 #define TWL5031_ACCSIHCTRL 0x15
0400
0401
0402
0403
0404
0405
0406
0407 #define TWL5031_INTERRUPTS_BCIISR1 0x0
0408 #define TWL5031_INTERRUPTS_BCIIMR1 0x1
0409 #define TWL5031_INTERRUPTS_BCIISR2 0x2
0410 #define TWL5031_INTERRUPTS_BCIIMR2 0x3
0411 #define TWL5031_INTERRUPTS_BCISIR 0x4
0412 #define TWL5031_INTERRUPTS_BCIEDR1 0x5
0413 #define TWL5031_INTERRUPTS_BCIEDR2 0x6
0414 #define TWL5031_INTERRUPTS_BCISIHCTRL 0x7
0415
0416
0417
0418
0419
0420
0421
0422 #define TWL4030_PM_MASTER_CFG_P1_TRANSITION 0x00
0423 #define TWL4030_PM_MASTER_CFG_P2_TRANSITION 0x01
0424 #define TWL4030_PM_MASTER_CFG_P3_TRANSITION 0x02
0425 #define TWL4030_PM_MASTER_CFG_P123_TRANSITION 0x03
0426 #define TWL4030_PM_MASTER_STS_BOOT 0x04
0427 #define TWL4030_PM_MASTER_CFG_BOOT 0x05
0428 #define TWL4030_PM_MASTER_SHUNDAN 0x06
0429 #define TWL4030_PM_MASTER_BOOT_BCI 0x07
0430 #define TWL4030_PM_MASTER_CFG_PWRANA1 0x08
0431 #define TWL4030_PM_MASTER_CFG_PWRANA2 0x09
0432 #define TWL4030_PM_MASTER_BACKUP_MISC_STS 0x0b
0433 #define TWL4030_PM_MASTER_BACKUP_MISC_CFG 0x0c
0434 #define TWL4030_PM_MASTER_BACKUP_MISC_TST 0x0d
0435 #define TWL4030_PM_MASTER_PROTECT_KEY 0x0e
0436 #define TWL4030_PM_MASTER_STS_HW_CONDITIONS 0x0f
0437 #define TWL4030_PM_MASTER_P1_SW_EVENTS 0x10
0438 #define TWL4030_PM_MASTER_P2_SW_EVENTS 0x11
0439 #define TWL4030_PM_MASTER_P3_SW_EVENTS 0x12
0440 #define TWL4030_PM_MASTER_STS_P123_STATE 0x13
0441 #define TWL4030_PM_MASTER_PB_CFG 0x14
0442 #define TWL4030_PM_MASTER_PB_WORD_MSB 0x15
0443 #define TWL4030_PM_MASTER_PB_WORD_LSB 0x16
0444 #define TWL4030_PM_MASTER_SEQ_ADD_W2P 0x1c
0445 #define TWL4030_PM_MASTER_SEQ_ADD_P2A 0x1d
0446 #define TWL4030_PM_MASTER_SEQ_ADD_A2W 0x1e
0447 #define TWL4030_PM_MASTER_SEQ_ADD_A2S 0x1f
0448 #define TWL4030_PM_MASTER_SEQ_ADD_S2A12 0x20
0449 #define TWL4030_PM_MASTER_SEQ_ADD_S2A3 0x21
0450 #define TWL4030_PM_MASTER_SEQ_ADD_WARM 0x22
0451 #define TWL4030_PM_MASTER_MEMORY_ADDRESS 0x23
0452 #define TWL4030_PM_MASTER_MEMORY_DATA 0x24
0453
0454 #define TWL4030_PM_MASTER_KEY_CFG1 0xc0
0455 #define TWL4030_PM_MASTER_KEY_CFG2 0x0c
0456
0457 #define TWL4030_PM_MASTER_KEY_TST1 0xe0
0458 #define TWL4030_PM_MASTER_KEY_TST2 0x0e
0459
0460 #define TWL4030_PM_MASTER_GLOBAL_TST 0xb6
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474 #define DEV_GRP_NULL 0x0
0475 #define DEV_GRP_P1 0x1
0476 #define DEV_GRP_P2 0x2
0477 #define DEV_GRP_P3 0x4
0478
0479
0480 #define RES_GRP_RES 0x0
0481 #define RES_GRP_PP 0x1
0482 #define RES_GRP_RC 0x2
0483 #define RES_GRP_PP_RC 0x3
0484 #define RES_GRP_PR 0x4
0485 #define RES_GRP_PP_PR 0x5
0486 #define RES_GRP_RC_PR 0x6
0487 #define RES_GRP_ALL 0x7
0488
0489 #define RES_TYPE2_R0 0x0
0490 #define RES_TYPE2_R1 0x1
0491 #define RES_TYPE2_R2 0x2
0492
0493 #define RES_TYPE_R0 0x0
0494 #define RES_TYPE_ALL 0x7
0495
0496
0497 #define RES_STATE_WRST 0xF
0498 #define RES_STATE_ACTIVE 0xE
0499 #define RES_STATE_SLEEP 0x8
0500 #define RES_STATE_OFF 0x0
0501
0502
0503
0504
0505 #define RES_VAUX1 1
0506 #define RES_VAUX2 2
0507 #define RES_VAUX3 3
0508 #define RES_VAUX4 4
0509 #define RES_VMMC1 5
0510 #define RES_VMMC2 6
0511 #define RES_VPLL1 7
0512 #define RES_VPLL2 8
0513 #define RES_VSIM 9
0514 #define RES_VDAC 10
0515 #define RES_VINTANA1 11
0516 #define RES_VINTANA2 12
0517 #define RES_VINTDIG 13
0518 #define RES_VIO 14
0519 #define RES_VDD1 15
0520 #define RES_VDD2 16
0521 #define RES_VUSB_1V5 17
0522 #define RES_VUSB_1V8 18
0523 #define RES_VUSB_3V1 19
0524 #define RES_VUSBCP 20
0525 #define RES_REGEN 21
0526
0527 #define RES_NRES_PWRON 22
0528 #define RES_CLKEN 23
0529 #define RES_SYSEN 24
0530 #define RES_HFCLKOUT 25
0531 #define RES_32KCLKOUT 26
0532 #define RES_RESET 27
0533
0534 #define RES_MAIN_REF 28
0535
0536 #define TOTAL_RESOURCES 28
0537
0538
0539
0540
0541
0542
0543
0544
0545
0546
0547
0548
0549
0550 #define MSG_BROADCAST(devgrp, grp, type, type2, state) \
0551 ( (devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
0552 | (type) << 4 | (state))
0553
0554 #define MSG_SINGULAR(devgrp, id, state) \
0555 ((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
0556
0557 #define MSG_BROADCAST_ALL(devgrp, state) \
0558 ((devgrp) << 5 | (state))
0559
0560 #define MSG_BROADCAST_REF MSG_BROADCAST_ALL
0561 #define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
0562 #define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
0563
0564
0565 struct twl4030_clock_init_data {
0566 bool ck32k_lowpwr_enable;
0567 };
0568
0569 struct twl4030_bci_platform_data {
0570 int *battery_tmp_tbl;
0571 unsigned int tblsize;
0572 int bb_uvolt;
0573 int bb_uamp;
0574 };
0575
0576
0577 struct twl4030_gpio_platform_data {
0578
0579 bool use_leds;
0580
0581
0582 u8 mmc_cd;
0583
0584
0585 u32 debounce;
0586
0587
0588
0589
0590
0591
0592 u32 pullups;
0593 u32 pulldowns;
0594
0595 int (*setup)(struct device *dev,
0596 unsigned gpio, unsigned ngpio);
0597 };
0598
0599 struct twl4030_madc_platform_data {
0600 int irq_line;
0601 };
0602
0603
0604
0605
0606
0607 #define PERSISTENT_KEY(r, c) KEY((r), (c), KEY_RESERVED)
0608
0609 struct twl4030_keypad_data {
0610 const struct matrix_keymap_data *keymap_data;
0611 unsigned rows;
0612 unsigned cols;
0613 bool rep;
0614 };
0615
0616 enum twl4030_usb_mode {
0617 T2_USB_MODE_ULPI = 1,
0618 T2_USB_MODE_CEA2011_3PIN = 2,
0619 };
0620
0621 struct twl4030_usb_data {
0622 enum twl4030_usb_mode usb_mode;
0623 unsigned long features;
0624
0625 int (*phy_init)(struct device *dev);
0626 int (*phy_exit)(struct device *dev);
0627
0628 int (*phy_power)(struct device *dev, int iD, int on);
0629
0630 int (*phy_set_clock)(struct device *dev, int on);
0631
0632 int (*phy_suspend)(struct device *dev, int suspend);
0633 };
0634
0635 struct twl4030_ins {
0636 u16 pmb_message;
0637 u8 delay;
0638 };
0639
0640 struct twl4030_script {
0641 struct twl4030_ins *script;
0642 unsigned size;
0643 u8 flags;
0644 #define TWL4030_WRST_SCRIPT (1<<0)
0645 #define TWL4030_WAKEUP12_SCRIPT (1<<1)
0646 #define TWL4030_WAKEUP3_SCRIPT (1<<2)
0647 #define TWL4030_SLEEP_SCRIPT (1<<3)
0648 };
0649
0650 struct twl4030_resconfig {
0651 u8 resource;
0652 u8 devgroup;
0653 u8 type;
0654 u8 type2;
0655 u8 remap_off;
0656 u8 remap_sleep;
0657 };
0658
0659 struct twl4030_power_data {
0660 struct twl4030_script **scripts;
0661 unsigned num;
0662 struct twl4030_resconfig *resource_config;
0663 struct twl4030_resconfig *board_config;
0664 #define TWL4030_RESCONFIG_UNDEF ((u8)-1)
0665 bool use_poweroff;
0666 bool ac_charger_quirk;
0667 };
0668
0669 extern int twl4030_remove_script(u8 flags);
0670 extern void twl4030_power_off(void);
0671
0672 struct twl4030_codec_data {
0673 unsigned int digimic_delay;
0674 unsigned int ramp_delay_value;
0675 unsigned int offset_cncl_path;
0676 unsigned int hs_extmute:1;
0677 int hs_extmute_gpio;
0678 };
0679
0680 struct twl4030_vibra_data {
0681 unsigned int coexist;
0682 };
0683
0684 struct twl4030_audio_data {
0685 unsigned int audio_mclk;
0686 struct twl4030_codec_data *codec;
0687 struct twl4030_vibra_data *vibra;
0688
0689
0690 int audpwron_gpio;
0691 int naudint_irq;
0692 unsigned int irq_base;
0693 };
0694
0695 struct twl_regulator_driver_data {
0696 int (*set_voltage)(void *data, int target_uV);
0697 int (*get_voltage)(void *data);
0698 void *data;
0699 unsigned long features;
0700 };
0701
0702 #define TWL4030_VAUX2 BIT(0)
0703 #define TPS_SUBSET BIT(1)
0704 #define TWL5031 BIT(2)
0705 #define TWL6030_CLASS BIT(3)
0706 #define TWL6032_SUBCLASS BIT(4)
0707 #define TWL4030_ALLOW_UNSUPPORTED BIT(5)
0708
0709
0710
0711
0712
0713
0714
0715 int twl4030_sih_setup(struct device *dev, int module, int irq_base);
0716
0717
0718 #define TWL4030_VDAC_DEV_GRP 0x3B
0719 #define TWL4030_VDAC_DEDICATED 0x3E
0720 #define TWL4030_VAUX1_DEV_GRP 0x17
0721 #define TWL4030_VAUX1_DEDICATED 0x1A
0722 #define TWL4030_VAUX2_DEV_GRP 0x1B
0723 #define TWL4030_VAUX2_DEDICATED 0x1E
0724 #define TWL4030_VAUX3_DEV_GRP 0x1F
0725 #define TWL4030_VAUX3_DEDICATED 0x22
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737 #define TWL4030_REG_VDD1 0
0738 #define TWL4030_REG_VDD2 1
0739 #define TWL4030_REG_VIO 2
0740
0741
0742 #define TWL4030_REG_VDAC 3
0743 #define TWL4030_REG_VPLL1 4
0744 #define TWL4030_REG_VPLL2 5
0745 #define TWL4030_REG_VMMC1 6
0746 #define TWL4030_REG_VMMC2 7
0747 #define TWL4030_REG_VSIM 8
0748 #define TWL4030_REG_VAUX1 9
0749 #define TWL4030_REG_VAUX2_4030 10
0750 #define TWL4030_REG_VAUX2 11
0751 #define TWL4030_REG_VAUX3 12
0752 #define TWL4030_REG_VAUX4 13
0753
0754
0755 #define TWL4030_REG_VINTANA1 14
0756 #define TWL4030_REG_VINTANA2 15
0757 #define TWL4030_REG_VINTDIG 16
0758 #define TWL4030_REG_VUSB1V5 17
0759 #define TWL4030_REG_VUSB1V8 18
0760 #define TWL4030_REG_VUSB3V1 19
0761
0762
0763
0764 #define TWL6030_REG_VDD1 30
0765 #define TWL6030_REG_VDD2 31
0766 #define TWL6030_REG_VDD3 32
0767
0768
0769 #define TWL6030_REG_VMEM 33
0770 #define TWL6030_REG_V2V1 34
0771 #define TWL6030_REG_V1V29 35
0772 #define TWL6030_REG_V1V8 36
0773
0774
0775 #define TWL6030_REG_VAUX1_6030 37
0776 #define TWL6030_REG_VAUX2_6030 38
0777 #define TWL6030_REG_VAUX3_6030 39
0778 #define TWL6030_REG_VMMC 40
0779 #define TWL6030_REG_VPP 41
0780 #define TWL6030_REG_VUSIM 42
0781 #define TWL6030_REG_VANA 43
0782 #define TWL6030_REG_VCXIO 44
0783 #define TWL6030_REG_VDAC 45
0784 #define TWL6030_REG_VUSB 46
0785
0786
0787 #define TWL6030_REG_VRTC 47
0788 #define TWL6030_REG_CLK32KG 48
0789
0790
0791 #define TWL6032_REG_LDO2 49
0792 #define TWL6032_REG_LDO4 50
0793 #define TWL6032_REG_LDO3 51
0794 #define TWL6032_REG_LDO5 52
0795 #define TWL6032_REG_LDO1 53
0796 #define TWL6032_REG_LDO7 54
0797 #define TWL6032_REG_LDO6 55
0798 #define TWL6032_REG_LDOLN 56
0799 #define TWL6032_REG_LDOUSB 57
0800
0801
0802 #define TWL6032_REG_SMPS3 58
0803 #define TWL6032_REG_SMPS4 59
0804 #define TWL6032_REG_VIO 60
0805
0806
0807 #endif