1
2
3
4
5
6
7
8
9
10 #ifndef __SECO_CEC_H__
11 #define __SECO_CEC_H__
12
13 #define SECOCEC_MAX_ADDRS 1
14 #define SECOCEC_DEV_NAME "secocec"
15 #define SECOCEC_LATEST_FW 0x0f0b
16
17 #define SMBTIMEOUT 0xfff
18 #define SMB_POLL_UDELAY 10
19
20 #define SMBUS_WRITE 0
21 #define SMBUS_READ 1
22
23 #define CMD_BYTE_DATA 0
24 #define CMD_WORD_DATA 1
25
26
27
28
29
30 #define BRA_DONE_STATUS BIT(7)
31 #define BRA_INUSE_STS BIT(6)
32 #define BRA_FAILED_OP BIT(4)
33 #define BRA_BUS_ERR BIT(3)
34 #define BRA_DEV_ERR BIT(2)
35 #define BRA_INTR BIT(1)
36 #define BRA_HOST_BUSY BIT(0)
37 #define BRA_HSTS_ERR_MASK (BRA_FAILED_OP | BRA_BUS_ERR | BRA_DEV_ERR)
38
39 #define BRA_PEC_EN BIT(7)
40 #define BRA_START BIT(6)
41 #define BRA_LAST__BYTE BIT(5)
42 #define BRA_INTREN BIT(0)
43 #define BRA_SMB_CMD (7 << 2)
44 #define BRA_SMB_CMD_QUICK (0 << 2)
45 #define BRA_SMB_CMD_BYTE (1 << 2)
46 #define BRA_SMB_CMD_BYTE_DATA (2 << 2)
47 #define BRA_SMB_CMD_WORD_DATA (3 << 2)
48 #define BRA_SMB_CMD_PROCESS_CALL (4 << 2)
49 #define BRA_SMB_CMD_BLOCK (5 << 2)
50 #define BRA_SMB_CMD_I2CREAD (6 << 2)
51 #define BRA_SMB_CMD_BLOCK_PROCESS (7 << 2)
52
53 #define BRA_SMB_BASE_ADDR 0x2040
54 #define HSTS (BRA_SMB_BASE_ADDR + 0)
55 #define HCNT (BRA_SMB_BASE_ADDR + 2)
56 #define HCMD (BRA_SMB_BASE_ADDR + 3)
57 #define XMIT_SLVA (BRA_SMB_BASE_ADDR + 4)
58 #define HDAT0 (BRA_SMB_BASE_ADDR + 5)
59 #define HDAT1 (BRA_SMB_BASE_ADDR + 6)
60
61
62
63
64
65 #define SECOCEC_MICRO_ADDRESS 0x40
66
67
68
69
70
71 #define SECOCEC_VERSION 0x00
72 #define SECOCEC_ENABLE_REG_1 0x01
73 #define SECOCEC_ENABLE_REG_2 0x02
74 #define SECOCEC_STATUS_REG_1 0x03
75 #define SECOCEC_STATUS_REG_2 0x04
76
77 #define SECOCEC_STATUS 0x28
78 #define SECOCEC_DEVICE_LA 0x29
79 #define SECOCEC_READ_OPERATION_ID 0x2a
80 #define SECOCEC_READ_DATA_LENGTH 0x2b
81 #define SECOCEC_READ_DATA_00 0x2c
82 #define SECOCEC_READ_DATA_02 0x2d
83 #define SECOCEC_READ_DATA_04 0x2e
84 #define SECOCEC_READ_DATA_06 0x2f
85 #define SECOCEC_READ_DATA_08 0x30
86 #define SECOCEC_READ_DATA_10 0x31
87 #define SECOCEC_READ_DATA_12 0x32
88 #define SECOCEC_READ_BYTE0 0x33
89 #define SECOCEC_WRITE_OPERATION_ID 0x34
90 #define SECOCEC_WRITE_DATA_LENGTH 0x35
91 #define SECOCEC_WRITE_DATA_00 0x36
92 #define SECOCEC_WRITE_DATA_02 0x37
93 #define SECOCEC_WRITE_DATA_04 0x38
94 #define SECOCEC_WRITE_DATA_06 0x39
95 #define SECOCEC_WRITE_DATA_08 0x3a
96 #define SECOCEC_WRITE_DATA_10 0x3b
97 #define SECOCEC_WRITE_DATA_12 0x3c
98 #define SECOCEC_WRITE_BYTE0 0x3d
99
100 #define SECOCEC_IR_READ_DATA 0x3e
101
102
103
104
105
106 #define SECOCEC_IR_COMMAND_MASK 0x007F
107 #define SECOCEC_IR_COMMAND_SHL 0
108 #define SECOCEC_IR_ADDRESS_MASK 0x1F00
109 #define SECOCEC_IR_ADDRESS_SHL 8
110 #define SECOCEC_IR_TOGGLE_MASK 0x8000
111 #define SECOCEC_IR_TOGGLE_SHL 15
112
113
114
115
116
117 #define SECOCEC_ENABLE_REG_1_CEC 0x1000
118 #define SECOCEC_ENABLE_REG_1_IR 0x2000
119 #define SECOCEC_ENABLE_REG_1_IR_PASSTHROUGH 0x4000
120
121
122
123
124
125 #define SECOCEC_STATUS_REG_1_CEC SECOCEC_ENABLE_REG_1_CEC
126 #define SECOCEC_STATUS_REG_1_IR SECOCEC_ENABLE_REG_1_IR
127 #define SECOCEC_STATUS_REG_1_IR_PASSTHR SECOCEC_ENABLE_REG_1_IR_PASSTHR
128
129
130
131
132
133 #define SECOCEC_STATUS_MSG_RECEIVED_MASK BIT(0)
134 #define SECOCEC_STATUS_RX_ERROR_MASK BIT(1)
135 #define SECOCEC_STATUS_MSG_SENT_MASK BIT(2)
136 #define SECOCEC_STATUS_TX_ERROR_MASK BIT(3)
137
138 #define SECOCEC_STATUS_TX_NACK_ERROR BIT(4)
139 #define SECOCEC_STATUS_RX_OVERFLOW_MASK BIT(5)
140
141 #endif