Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright 2009 Daniel Ribeiro <drwyrm@gmail.com>
0004  *
0005  * For further information, please see http://wiki.openezx.org/PCAP2
0006  */
0007 
0008 #ifndef EZX_PCAP_H
0009 #define EZX_PCAP_H
0010 
0011 struct pcap_subdev {
0012     int id;
0013     const char *name;
0014     void *platform_data;
0015 };
0016 
0017 struct pcap_platform_data {
0018     unsigned int irq_base;
0019     unsigned int config;
0020     int gpio;
0021     void (*init) (void *);  /* board specific init */
0022     int num_subdevs;
0023     struct pcap_subdev *subdevs;
0024 };
0025 
0026 struct pcap_chip;
0027 
0028 int ezx_pcap_write(struct pcap_chip *, u8, u32);
0029 int ezx_pcap_read(struct pcap_chip *, u8, u32 *);
0030 int ezx_pcap_set_bits(struct pcap_chip *, u8, u32, u32);
0031 int pcap_to_irq(struct pcap_chip *, int);
0032 int irq_to_pcap(struct pcap_chip *, int);
0033 int pcap_adc_async(struct pcap_chip *, u8, u32, u8[], void *, void *);
0034 int pcap_adc_sync(struct pcap_chip *, u8, u32, u8[], u16[]);
0035 void pcap_set_ts_bits(struct pcap_chip *, u32);
0036 
0037 #define PCAP_SECOND_PORT    1
0038 #define PCAP_CS_AH      2
0039 
0040 #define PCAP_REGISTER_WRITE_OP_BIT  0x80000000
0041 #define PCAP_REGISTER_READ_OP_BIT   0x00000000
0042 
0043 #define PCAP_REGISTER_VALUE_MASK    0x01ffffff
0044 #define PCAP_REGISTER_ADDRESS_MASK  0x7c000000
0045 #define PCAP_REGISTER_ADDRESS_SHIFT 26
0046 #define PCAP_REGISTER_NUMBER        32
0047 #define PCAP_CLEAR_INTERRUPT_REGISTER   0x01ffffff
0048 #define PCAP_MASK_ALL_INTERRUPT     0x01ffffff
0049 
0050 /* registers accessible by both pcap ports */
0051 #define PCAP_REG_ISR        0x0 /* Interrupt Status */
0052 #define PCAP_REG_MSR        0x1 /* Interrupt Mask */
0053 #define PCAP_REG_PSTAT      0x2 /* Processor Status */
0054 #define PCAP_REG_VREG2      0x6 /* Regulator Bank 2 Control */
0055 #define PCAP_REG_AUXVREG    0x7 /* Auxiliary Regulator Control */
0056 #define PCAP_REG_BATT       0x8 /* Battery Control */
0057 #define PCAP_REG_ADC        0x9 /* AD Control */
0058 #define PCAP_REG_ADR        0xa /* AD Result */
0059 #define PCAP_REG_CODEC      0xb /* Audio Codec Control */
0060 #define PCAP_REG_RX_AMPS    0xc /* RX Audio Amplifiers Control */
0061 #define PCAP_REG_ST_DAC     0xd /* Stereo DAC Control */
0062 #define PCAP_REG_BUSCTRL    0x14    /* Connectivity Control */
0063 #define PCAP_REG_PERIPH     0x15    /* Peripheral Control */
0064 #define PCAP_REG_LOWPWR     0x18    /* Regulator Low Power Control */
0065 #define PCAP_REG_TX_AMPS    0x1a    /* TX Audio Amplifiers Control */
0066 #define PCAP_REG_GP     0x1b    /* General Purpose */
0067 #define PCAP_REG_TEST1      0x1c
0068 #define PCAP_REG_TEST2      0x1d
0069 #define PCAP_REG_VENDOR_TEST1   0x1e
0070 #define PCAP_REG_VENDOR_TEST2   0x1f
0071 
0072 /* registers accessible by pcap port 1 only (a1200, e2 & e6) */
0073 #define PCAP_REG_INT_SEL    0x3 /* Interrupt Select */
0074 #define PCAP_REG_SWCTRL     0x4 /* Switching Regulator Control */
0075 #define PCAP_REG_VREG1      0x5 /* Regulator Bank 1 Control */
0076 #define PCAP_REG_RTC_TOD    0xe /* RTC Time of Day */
0077 #define PCAP_REG_RTC_TODA   0xf /* RTC Time of Day Alarm */
0078 #define PCAP_REG_RTC_DAY    0x10    /* RTC Day */
0079 #define PCAP_REG_RTC_DAYA   0x11    /* RTC Day Alarm */
0080 #define PCAP_REG_MTRTMR     0x12    /* AD Monitor Timer */
0081 #define PCAP_REG_PWR        0x13    /* Power Control */
0082 #define PCAP_REG_AUXVREG_MASK   0x16    /* Auxiliary Regulator Mask */
0083 #define PCAP_REG_VENDOR_REV 0x17
0084 #define PCAP_REG_PERIPH_MASK    0x19    /* Peripheral Mask */
0085 
0086 /* PCAP2 Interrupts */
0087 #define PCAP_NIRQS      23
0088 #define PCAP_IRQ_ADCDONE    0   /* ADC done port 1 */
0089 #define PCAP_IRQ_TS     1   /* Touch Screen */
0090 #define PCAP_IRQ_1HZ        2   /* 1HZ timer */
0091 #define PCAP_IRQ_WH     3   /* ADC above high limit */
0092 #define PCAP_IRQ_WL     4   /* ADC below low limit */
0093 #define PCAP_IRQ_TODA       5   /* Time of day alarm */
0094 #define PCAP_IRQ_USB4V      6   /* USB above 4V */
0095 #define PCAP_IRQ_ONOFF      7   /* On/Off button */
0096 #define PCAP_IRQ_ONOFF2     8   /* On/Off button 2 */
0097 #define PCAP_IRQ_USB1V      9   /* USB above 1V */
0098 #define PCAP_IRQ_MOBPORT    10
0099 #define PCAP_IRQ_MIC        11  /* Mic attach/HS button */
0100 #define PCAP_IRQ_HS     12  /* Headset attach */
0101 #define PCAP_IRQ_ST     13
0102 #define PCAP_IRQ_PC     14  /* Power Cut */
0103 #define PCAP_IRQ_WARM       15
0104 #define PCAP_IRQ_EOL        16  /* Battery End Of Life */
0105 #define PCAP_IRQ_CLK        17
0106 #define PCAP_IRQ_SYSRST     18  /* System Reset */
0107 #define PCAP_IRQ_DUMMY      19
0108 #define PCAP_IRQ_ADCDONE2   20  /* ADC done port 2 */
0109 #define PCAP_IRQ_SOFTRESET  21
0110 #define PCAP_IRQ_MNEXB      22
0111 
0112 /* voltage regulators */
0113 #define V1      0
0114 #define V2      1
0115 #define V3      2
0116 #define V4      3
0117 #define V5      4
0118 #define V6      5
0119 #define V7      6
0120 #define V8      7
0121 #define V9      8
0122 #define V10     9
0123 #define VAUX1       10
0124 #define VAUX2       11
0125 #define VAUX3       12
0126 #define VAUX4       13
0127 #define VSIM        14
0128 #define VSIM2       15
0129 #define VVIB        16
0130 #define SW1     17
0131 #define SW2     18
0132 #define SW3     19
0133 #define SW1S        20
0134 #define SW2S        21
0135 
0136 #define PCAP_BATT_DAC_MASK      0x000000ff
0137 #define PCAP_BATT_DAC_SHIFT     0
0138 #define PCAP_BATT_B_FDBK        (1 << 8)
0139 #define PCAP_BATT_EXT_ISENSE        (1 << 9)
0140 #define PCAP_BATT_V_COIN_MASK       0x00003c00
0141 #define PCAP_BATT_V_COIN_SHIFT      10
0142 #define PCAP_BATT_I_COIN        (1 << 14)
0143 #define PCAP_BATT_COIN_CH_EN        (1 << 15)
0144 #define PCAP_BATT_EOL_SEL_MASK      0x000e0000
0145 #define PCAP_BATT_EOL_SEL_SHIFT     17
0146 #define PCAP_BATT_EOL_CMP_EN        (1 << 20)
0147 #define PCAP_BATT_BATT_DET_EN       (1 << 21)
0148 #define PCAP_BATT_THERMBIAS_CTRL    (1 << 22)
0149 
0150 #define PCAP_ADC_ADEN           (1 << 0)
0151 #define PCAP_ADC_RAND           (1 << 1)
0152 #define PCAP_ADC_AD_SEL1        (1 << 2)
0153 #define PCAP_ADC_AD_SEL2        (1 << 3)
0154 #define PCAP_ADC_ADA1_MASK      0x00000070
0155 #define PCAP_ADC_ADA1_SHIFT     4
0156 #define PCAP_ADC_ADA2_MASK      0x00000380
0157 #define PCAP_ADC_ADA2_SHIFT     7
0158 #define PCAP_ADC_ATO_MASK       0x00003c00
0159 #define PCAP_ADC_ATO_SHIFT      10
0160 #define PCAP_ADC_ATOX           (1 << 14)
0161 #define PCAP_ADC_MTR1           (1 << 15)
0162 #define PCAP_ADC_MTR2           (1 << 16)
0163 #define PCAP_ADC_TS_M_MASK      0x000e0000
0164 #define PCAP_ADC_TS_M_SHIFT     17
0165 #define PCAP_ADC_TS_REF_LOWPWR      (1 << 20)
0166 #define PCAP_ADC_TS_REFENB      (1 << 21)
0167 #define PCAP_ADC_BATT_I_POLARITY    (1 << 22)
0168 #define PCAP_ADC_BATT_I_ADC     (1 << 23)
0169 
0170 #define PCAP_ADC_BANK_0         0
0171 #define PCAP_ADC_BANK_1         1
0172 /* ADC bank 0 */
0173 #define PCAP_ADC_CH_COIN        0
0174 #define PCAP_ADC_CH_BATT        1
0175 #define PCAP_ADC_CH_BPLUS       2
0176 #define PCAP_ADC_CH_MOBPORTB        3
0177 #define PCAP_ADC_CH_TEMPERATURE     4
0178 #define PCAP_ADC_CH_CHARGER_ID      5
0179 #define PCAP_ADC_CH_AD6         6
0180 /* ADC bank 1 */
0181 #define PCAP_ADC_CH_AD7         0
0182 #define PCAP_ADC_CH_AD8         1
0183 #define PCAP_ADC_CH_AD9         2
0184 #define PCAP_ADC_CH_TS_X1       3
0185 #define PCAP_ADC_CH_TS_X2       4
0186 #define PCAP_ADC_CH_TS_Y1       5
0187 #define PCAP_ADC_CH_TS_Y2       6
0188 
0189 #define PCAP_ADC_T_NOW          0
0190 #define PCAP_ADC_T_IN_BURST     1
0191 #define PCAP_ADC_T_OUT_BURST        2
0192 
0193 #define PCAP_ADC_ATO_IN_BURST       6
0194 #define PCAP_ADC_ATO_OUT_BURST      0
0195 
0196 #define PCAP_ADC_TS_M_XY        1
0197 #define PCAP_ADC_TS_M_PRESSURE      2
0198 #define PCAP_ADC_TS_M_PLATE_X       3
0199 #define PCAP_ADC_TS_M_PLATE_Y       4
0200 #define PCAP_ADC_TS_M_STANDBY       5
0201 #define PCAP_ADC_TS_M_NONTS     6
0202 
0203 #define PCAP_ADR_ADD1_MASK      0x000003ff
0204 #define PCAP_ADR_ADD1_SHIFT     0
0205 #define PCAP_ADR_ADD2_MASK      0x000ffc00
0206 #define PCAP_ADR_ADD2_SHIFT     10
0207 #define PCAP_ADR_ADINC1         (1 << 20)
0208 #define PCAP_ADR_ADINC2         (1 << 21)
0209 #define PCAP_ADR_ASC            (1 << 22)
0210 #define PCAP_ADR_ONESHOT        (1 << 23)
0211 
0212 #define PCAP_BUSCTRL_FSENB      (1 << 0)
0213 #define PCAP_BUSCTRL_USB_SUSPEND    (1 << 1)
0214 #define PCAP_BUSCTRL_USB_PU     (1 << 2)
0215 #define PCAP_BUSCTRL_USB_PD     (1 << 3)
0216 #define PCAP_BUSCTRL_VUSB_EN        (1 << 4)
0217 #define PCAP_BUSCTRL_USB_PS     (1 << 5)
0218 #define PCAP_BUSCTRL_VUSB_MSTR_EN   (1 << 6)
0219 #define PCAP_BUSCTRL_VBUS_PD_ENB    (1 << 7)
0220 #define PCAP_BUSCTRL_CURRLIM        (1 << 8)
0221 #define PCAP_BUSCTRL_RS232ENB       (1 << 9)
0222 #define PCAP_BUSCTRL_RS232_DIR      (1 << 10)
0223 #define PCAP_BUSCTRL_SE0_CONN       (1 << 11)
0224 #define PCAP_BUSCTRL_USB_PDM        (1 << 12)
0225 #define PCAP_BUSCTRL_BUS_PRI_ADJ    (1 << 24)
0226 
0227 /* leds */
0228 #define PCAP_LED0       0
0229 #define PCAP_LED1       1
0230 #define PCAP_BL0        2
0231 #define PCAP_BL1        3
0232 #define PCAP_LED_3MA        0
0233 #define PCAP_LED_4MA        1
0234 #define PCAP_LED_5MA        2
0235 #define PCAP_LED_9MA        3
0236 #define PCAP_LED_T_MASK     0xf
0237 #define PCAP_LED_C_MASK     0x3
0238 #define PCAP_BL_MASK        0x1f
0239 #define PCAP_BL0_SHIFT      0
0240 #define PCAP_LED0_EN        (1 << 5)
0241 #define PCAP_LED1_EN        (1 << 6)
0242 #define PCAP_LED0_T_SHIFT   7
0243 #define PCAP_LED1_T_SHIFT   11
0244 #define PCAP_LED0_C_SHIFT   15
0245 #define PCAP_LED1_C_SHIFT   17
0246 #define PCAP_BL1_SHIFT      20
0247 
0248 /* RTC */
0249 #define PCAP_RTC_DAY_MASK   0x3fff
0250 #define PCAP_RTC_TOD_MASK   0xffff
0251 #define PCAP_RTC_PC_MASK    0x7
0252 #define SEC_PER_DAY     86400
0253 
0254 #endif