#ifndef _SPARC_DEV_TS102REG_H
#define _SPARC_DEV_TS102REG_H
#define TS102_OFFSET_REGISTERS 0x02000000
#define TS102_OFFSET_CARD_A_ATTR_SPACE 0x04000000
#define TS102_OFFSET_CARD_B_ATTR_SPACE 0x05000000
#define TS102_SIZE_ATTR_SPACE 0x01000000
#define TS102_OFFSET_CARD_A_IO_SPACE 0x06000000
#define TS102_OFFSET_CARD_B_IO_SPACE 0x07000000
#define TS102_SIZE_IO_SPACE 0x01000000
#define TS102_OFFSET_CARD_A_MEM_SPACE 0x08000000
#define TS102_OFFSET_CARD_B_MEM_SPACE 0x0c000000
#define TS102_SIZE_MEM_SPACE 0x04000000
#define TS102_REG_CARD_A_INT 0x0000
#define TS102_REG_CARD_A_STS 0x0004
#define TS102_REG_CARD_A_CTL 0x0008
#define TS102_REG_CARD_B_INT 0x0010
#define TS102_REG_CARD_B_STS 0x0014
#define TS102_REG_CARD_B_CTL 0x0018
#define TS102_REG_UCTRL_INT 0x0020
#define TS102_REG_UCTRL_DATA 0x0024
#define TS102_REG_UCTRL_STS 0x0028
struct uctrl_regs {
volatile uint8_t intr;
volatile uint8_t filler0[3];
volatile uint8_t data;
volatile uint8_t filler1[3];
volatile uint8_t stat;
volatile uint8_t filler2[3];
};
#define TS102_CARD_INT_RQST_IRQ 0x0001
#define TS102_CARD_INT_RQST_WP_STATUS_CHANGED 0x0002
#define TS102_CARD_INT_RQST_BATTERY_STATUS_CHANGED 0x0004
#define TS102_CARD_INT_RQST_CARDDETECT_STATUS_CHANGED 0x0008
#define TS102_CARD_INT_STATUS_IRQ 0x0010
#define TS102_CARD_INT_STATUS_WP_STATUS_CHANGED 0x0020
#define TS102_CARD_INT_STATUS_BATTERY_STATUS_CHANGED 0x0040
#define TS102_CARD_INT_STATUS_CARDDETECT_STATUS_CHANGED 0x0080
#define TS102_CARD_INT_MASK_IRQ 0x0100
#define TS102_CARD_INT_MASK_WP_STATUS 0x0200
#define TS102_CARD_INT_MASK_BATTERY_STATUS 0x0400
#define TS102_CARD_INT_MASK_CARDDETECT_STATUS 0x0800
#define TS102_CARD_INT_SOFT_RESET 0x1000
#define TS102_CARD_STS_PRES 0x0001
#define TS102_CARD_STS_IO 0x0002
#define TS102_CARD_STS_TYPE3 0x0004
#define TS102_CARD_STS_VCC 0x0008
#define TS102_CARD_STS_VPP1_MASK 0x0030
#define TS102_CARD_STS_VPP1_NC 0x0030
#define TS102_CARD_STS_VPP1_VCC 0x0020
#define TS102_CARD_STS_VPP1_VPP 0x0010
#define TS102_CARD_STS_VPP1_0V 0x0000
#define TS102_CARD_STS_VPP2_MASK 0x00c0
#define TS102_CARD_STS_VPP2_NC 0x00c0
#define TS102_CARD_STS_VPP2_VCC 0x0080
#define TS102_CARD_STS_VPP2_VPP 0x0040
#define TS102_CARD_STS_VPP2_0V 0x0000
#define TS102_CARD_STS_WP 0x0100
#define TS102_CARD_STS_BVD_MASK 0x0600
#define TS102_CARD_STS_BVD_GOOD 0x0600
#define TS102_CARD_STS_BVD_LOW_OK 0x0400
#define TS102_CARD_STS_BVD_LOW_SUSPECT1 0x0200
#define TS102_CARD_STS_BVD_LOW_SUSPECT0 0x0000
#define TS102_CARD_STS_LVL 0x0800
#define TS102_CARD_STS_RDY 0x1000
#define TS102_CARD_STS_VCCEN 0x2000
#define TS102_CARD_STS_RIEN 0x4000
#define TS102_CARD_STS_ACEN 0x8000
#define TS102_CARD_CTL_AA_MASK 0x0003
#define TS102_CARD_CTL_IA_MASK 0x000c
#define TS102_CARD_CTL_IA_BITPOS 2
#define TS102_CARD_CTL_CES_MASK 0x0070
#define TS102_CARD_CTL_CES_BITPOS 4
#define TS102_CARD_CTL_OWE_MASK 0x0380
#define TS102_CARD_CTL_OWE_BITPOS 7
#define TS102_CARD_CTL_CEH 0x0400
#define TS102_CARD_CTL_SBLE 0x0800
#define TS102_CARD_CTL_PCMBE 0x1000
#define TS102_CARD_CTL_RAHD 0x2000
#define TS102_CARD_CTL_INCDIS 0x4000
#define TS102_CARD_CTL_PWRD 0x8000
#define TS102_UCTRL_INT_TXE_REQ 0x01
#define TS102_UCTRL_INT_TXNF_REQ 0x02
#define TS102_UCTRL_INT_RXNE_REQ 0x04
#define TS102_UCTRL_INT_RXO_REQ 0x08
#define TS102_UCTRL_INT_TXE_MSK 0x10
#define TS102_UCTRL_INT_TXNF_MSK 0x20
#define TS102_UCTRL_INT_RXNE_MSK 0x40
#define TS102_UCTRL_INT_RXO_MSK 0x80
#define TS102_UCTRL_DATA_MASK 0xff
#define TS102_UCTRL_STS_TXE_STA 0x01
#define TS102_UCTRL_STS_TXNF_STA 0x02
#define TS102_UCTRL_STS_RXNE_STA 0x04
#define TS102_UCTRL_STS_RXO_STA 0x08
#define TS102_UCTRL_STS_MASK 0x0F
enum ts102_opcode {
TS102_OP_RD_SERIAL_NUM=0x01,
TS102_OP_RD_ETHER_ADDR=0x02,
TS102_OP_RD_HW_VERSION=0x03,
TS102_OP_RD_UCTLR_VERSION=0x04,
TS102_OP_RD_MAX_TEMP=0x05,
TS102_OP_RD_MIN_TEMP=0x06,
TS102_OP_RD_CURRENT_TEMP=0x07,
TS102_OP_RD_SYSTEM_VARIANT=0x08,
TS102_OP_RD_POWERON_CYCLES=0x09,
TS102_OP_RD_POWERON_SECONDS=0x0a,
TS102_OP_RD_RESET_STATUS=0x0b,
#define TS102_RESET_STATUS_RESERVED0 0x00
#define TS102_RESET_STATUS_POWERON 0x01
#define TS102_RESET_STATUS_KEYBOARD 0x02
#define TS102_RESET_STATUS_WATCHDOG 0x03
#define TS102_RESET_STATUS_TIMEOUT 0x04
#define TS102_RESET_STATUS_SOFTWARE 0x05
#define TS102_RESET_STATUS_BROWNOUT 0x06
#define TS102_RESET_STATUS_RESERVED1 0x07
TS102_OP_RD_EVENT_STATUS=0x0c,
#define TS102_EVENT_STATUS_SHUTDOWN_REQUEST 0x0001
#define TS102_EVENT_STATUS_LOW_POWER_WARNING 0x0002
#define TS102_EVENT_STATUS_VERY_LOW_POWER_WARNING 0x0004
#define TS102_EVENT_STATUS_BATT_CHANGED 0x0008
#define TS102_EVENT_STATUS_EXT_KEYBOARD_STATUS_CHANGE 0x0010
#define TS102_EVENT_STATUS_EXT_MOUSE_STATUS_CHANGE 0x0020
#define TS102_EVENT_STATUS_EXTERNAL_VGA_STATUS_CHANGE 0x0040
#define TS102_EVENT_STATUS_LID_STATUS_CHANGE 0x0080
#define TS102_EVENT_STATUS_MICROCONTROLLER_ERROR 0x0100
#define TS102_EVENT_STATUS_RESERVED 0x0200
#define TS102_EVENT_STATUS_EXT_BATT_STATUS_CHANGE 0x0400
#define TS102_EVENT_STATUS_EXT_BATT_CHARGING_STATUS_CHANGE 0x0800
#define TS102_EVENT_STATUS_EXT_BATT_LOW_POWER 0x1000
#define TS102_EVENT_STATUS_DC_STATUS_CHANGE 0x2000
#define TS102_EVENT_STATUS_CHARGING_STATUS_CHANGE 0x4000
#define TS102_EVENT_STATUS_POWERON_BTN_PRESSED 0x8000
TS102_OP_RD_REAL_TIME_CLK=0x0d,
TS102_OP_RD_EXT_VGA_PORT=0x0e,
TS102_OP_RD_UCTRL_ROM_CKSUM=0x0f,
TS102_OP_RD_ERROR_STATUS=0x10,
#define TS102_ERROR_STATUS_NO_ERROR 0x00
#define TS102_ERROR_STATUS_COMMAND_ERROR 0x01
#define TS102_ERROR_STATUS_EXECUTION_ERROR 0x02
#define TS102_ERROR_STATUS_PHYSICAL_ERROR 0x04
TS102_OP_RD_EXT_STATUS=0x11,
#define TS102_EXT_STATUS_MAIN_POWER_AVAILABLE 0x0001
#define TS102_EXT_STATUS_INTERNAL_BATTERY_ATTACHED 0x0002
#define TS102_EXT_STATUS_EXTERNAL_BATTERY_ATTACHED 0x0004
#define TS102_EXT_STATUS_EXTERNAL_VGA_ATTACHED 0x0008
#define TS102_EXT_STATUS_EXTERNAL_KEYBOARD_ATTACHED 0x0010
#define TS102_EXT_STATUS_EXTERNAL_MOUSE_ATTACHED 0x0020
#define TS102_EXT_STATUS_LID_DOWN 0x0040
#define TS102_EXT_STATUS_INTERNAL_BATTERY_CHARGING 0x0080
#define TS102_EXT_STATUS_EXTERNAL_BATTERY_CHARGING 0x0100
#define TS102_EXT_STATUS_INTERNAL_BATTERY_DISCHARGING 0x0200
#define TS102_EXT_STATUS_EXTERNAL_BATTERY_DISCHARGING 0x0400
TS102_OP_RD_USER_CONFIG=0x12,
TS102_OP_RD_UCTRL_VLT=0x13,
TS102_OP_RD_INT_BATT_VLT=0x14,
TS102_OP_RD_DC_IN_VLT=0x15,
TS102_OP_RD_HORZ_PRT_VLT=0x16,
TS102_OP_RD_VERT_PTR_VLT=0x17,
TS102_OP_RD_INT_CHARGE_RATE=0x18,
TS102_OP_RD_EXT_CHARGE_RATE=0x19,
TS102_OP_RD_RTC_ALARM=0x1a,
TS102_OP_RD_EVENT_STATUS_NO_RESET=0x1b,
TS102_OP_RD_INT_KBD_LAYOUT=0x1c,
TS102_OP_RD_EXT_KBD_LAYOUT=0x1d,
TS102_OP_RD_EEPROM_STATUS=0x1e,
#define TS102_EEPROM_STATUS_FACTORY_AREA_CHECKSUM_FAIL 0x01
#define TS102_EEPROM_STATUS_CONSUMER_AREA_CHECKSUM_FAIL 0x02
#define TS102_EEPROM_STATUS_USER_AREA_CHECKSUM_FAIL 0x04
#define TS102_EEPROM_STATUS_VPD_AREA_CHECKSUM_FAIL 0x08
TS102_OP_CTL_LCD=0x20,
#define TS102_LCD_CAPS_LOCK 0x0001
#define TS102_LCD_SCROLL_LOCK 0x0002
#define TS102_LCD_NUMLOCK 0x0004
#define TS102_LCD_DISK_ACTIVE 0x0008
#define TS102_LCD_LAN_ACTIVE 0x0010
#define TS102_LCD_WAN_ACTIVE 0x0020
#define TS102_LCD_PCMCIA_ACTIVE 0x0040
#define TS102_LCD_DC_OK 0x0080
#define TS102_LCD_COMPOSE 0x0100
TS102_OP_CTL_BITPORT=0x21,
#define TS102_BITPORT_TFTPWR 0x01
#define TS102_BITPORT_SYNCINVA 0x02
#define TS102_BITPORT_SYNCINVB 0x04
#define TS102_BITPORT_BP_DIS 0x08
#define TS102_BITPORT_ENCSYNC 0x10
#define TS102_BITPORT_DISKPOWER 0x20
TS102_OP_CTL_DEV=0x22,
#define TS102_DEVCTL_CHARGE_DISABLE 0x01
#define TS102_DEVCTL_POINTER_DISABLE 0x02
#define TS102_DEVCTL_KEYCLICK 0x04
#define TS102_DEVCTL_INT_BTNCLICK 0x10
#define TS102_DEVCTL_EXT_BTNCLICK 0x20
TS102_OP_CTL_SPEAKER_VOLUME=0x23,
TS102_OP_CTL_TFT_BRIGHTNESS=0x24,
TS102_OP_CTL_WATCHDOG=0x25,
TS102_OP_CTL_FCTRY_EEPROM=0x26,
TS102_OP_CTL_SECURITY_KEY=0x27,
TS102_OP_CTL_KDB_TIME_UNTL_RTP=0x28,
TS102_OP_CTL_KBD_TIME_BTWN_RPTS=0x29,
TS102_OP_CTL_TIMEZONE=0x2a,
TS102_OP_CTL_MARK_SPACE_RATIO=0x2b,
TS102_OP_CTL_MOUSE_SENS=0x2c,
TS102_OP_CTL_MOUSE_SCAN=0x2d,
TS102_OP_CTL_DIAGNOSTIC_MODE=0x2e,
#define TS102_DIAGNOSTIC_MODE_CMD_DIAG_ON_LCD 0x01
#define TS102_DIAGNOSTIC_MODE_KDB_MS_9600 0x02
TS102_OP_CTL_SCREEN_CONTRAST=0x2f,
TS102_OP_CMD_RING_BELL=0x30,
TS102_OP_RD_INPUT_SOURCE=0x31,
TS102_OP_CMD_DIAGNOSTIC_STATUS=0x32,
TS102_OP_CMD_CLR_KEY_COMBO_TBL=0x33,
TS102_OP_CMD_SOFTWARE_RESET=0x34,
TS102_OP_CMD_SET_RTC=0x35,
TS102_OP_CMD_RECAL_PTR=0x36,
TS102_OP_CMD_SET_BELL_FREQ=0x37,
TS102_OP_CMD_SET_INT_BATT_RATE=0x39,
TS102_OP_CMD_SET_EXT_BATT_RATE=0x3a,
TS102_OP_CMD_SET_RTC_ALARM=0x3b,
TS102_OP_BLK_RD_EEPROM=0x40,
TS102_OP_BLK_WR_EEPROM=0x41,
TS102_OP_BLK_WR_STATUS=0x42,
TS102_OP_BLK_DEF_SPCL_CHAR=0x43,
#define TS102_BLK_OFF_DEF_WAN1 0
#define TS102_BLK_OFF_DEF_WAN2 1
#define TS102_BLK_OFF_DEF_LAN1 2
#define TS102_BLK_OFF_DEF_LAN2 3
#define TS102_BLK_OFF_DEF_PCMCIA 4
#define TS102_BLK_OFF_DEF_DC_GOOD 5
#define TS102_BLK_OFF_DEF_BACKSLASH 6
TS102_OP_GEN_DEF_KEY_COMBO_ENT=0x50,
TS102_OP_GEN_DEF_STRING_TBL_ENT=0x51,
TS102_OP_GEN_DEF_STS_CTRN_DISP=0x52,
TS102_OP_GEN_STS_EMU_COMMAND=0x64,
TS102_OP_GEN_STS_RD_EMU_REGISTER=0x65,
TS102_OP_GEN_STS_WR_EMU_REGISTER=0x66,
TS102_OP_GEN_STS_RD_EMU_RAM=0x67,
TS102_OP_GEN_STS_WR_EMU_RAM=0x68,
TS102_OP_GEN_STS_RD_BQ_REGISTER=0x69,
TS102_OP_GEN_STS_WR_BQ_REGISTER=0x6a,
TS102_OP_ADMIN_SET_USER_PASS=0x70,
TS102_OP_ADMIN_VRFY_USER_PASS=0x71,
TS102_OP_ADMIN_GET_SYSTEM_PASS=0x72,
TS102_OP_ADMIN_VRFY_SYSTEM_PASS=0x73,
TS102_OP_RD_INT_CHARGE_LEVEL=0x7a,
TS102_OP_RD_EXT_CHARGE_LEVEL=0x7b,
TS102_OP_SLEEP=0x80,
TS102_OP_ADMIN_POWER_OFF=0x82,
TS102_OP_ADMIN_POWER_RESTART=0x83,
};
#endif