10int mmce_cmd_ping(
void)
18 wrbuf[0x1] = MMCE_CMD_PING;
19 wrbuf[0x2] = MMCE_RESERVED;
26 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_200ms);
29 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
36 if (rdbuf[0x1] == MMCE_REPLY_CONST) {
37 res = rdbuf[0x3] << 16 | rdbuf[0x4] << 8 | rdbuf[0x5];
39 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
47int mmce_cmd_get_status(
void)
55 wrbuf[0x1] = MMCE_CMD_GET_STATUS;
56 wrbuf[0x2] = MMCE_RESERVED;
59 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
62 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
66 if (rdbuf[0x1] == MMCE_REPLY_CONST) {
67 res = rdbuf[0x3] << 8 | rdbuf[0x4];
69 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
76int mmce_cmd_get_card(
void)
84 wrbuf[0x1] = MMCE_CMD_GET_CARD;
85 wrbuf[0x2] = MMCE_RESERVED;
88 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
91 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
95 if (rdbuf[0x1] == MMCE_REPLY_CONST) {
96 res = rdbuf[0x3] << 8 | rdbuf[0x4];
98 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
105int mmce_cmd_set_card(u8 type, u8 mode, u16 num)
112 wrbuf[0x0] = MMCE_ID;
113 wrbuf[0x1] = MMCE_CMD_SET_CARD;
114 wrbuf[0x2] = MMCE_RESERVED;
117 wrbuf[0x5] = num >> 8;
118 wrbuf[0x6] = num & 0xFF;
121 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
124 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
128 if (rdbuf[0x1] != MMCE_REPLY_CONST) {
129 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
136int mmce_cmd_get_channel(
void)
143 wrbuf[0x0] = MMCE_ID;
144 wrbuf[0x1] = MMCE_CMD_GET_CHANNEL;
145 wrbuf[0x2] = MMCE_RESERVED;
148 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
151 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
155 if (rdbuf[0x1] == MMCE_REPLY_CONST) {
156 res = rdbuf[0x3] << 8 | rdbuf[0x4];
158 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
165int mmce_cmd_set_channel(u8 mode, u16 num)
172 wrbuf[0x0] = MMCE_ID;
173 wrbuf[0x1] = MMCE_CMD_SET_CHANNEL;
174 wrbuf[0x2] = MMCE_RESERVED;
176 wrbuf[0x4] = num >> 8;
177 wrbuf[0x5] = num & 0xFF;
180 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
183 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
187 if (rdbuf[0x1] != MMCE_REPLY_CONST) {
188 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
195int mmce_cmd_get_gameid(
void *ptr)
202 wrbuf[0x0] = MMCE_ID;
203 wrbuf[0x1] = MMCE_CMD_GET_GAMEID;
204 wrbuf[0x2] = MMCE_RESERVED;
207 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
210 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
214 if (rdbuf[0x1] == MMCE_REPLY_CONST) {
215 char* str = &rdbuf[0x4];
219 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
226int mmce_cmd_set_gameid(
void *ptr)
230 u8 len = strlen(ptr) + 1;
235 wrbuf[0x0] = MMCE_ID;
236 wrbuf[0x1] = MMCE_CMD_SET_GAMEID;
237 wrbuf[0x2] = MMCE_RESERVED;
240 char *str = &wrbuf[0x4];
244 res = mmce_sio2_tx_rx_pio(len + 5,
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
247 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
251 if (rdbuf[0x1] != MMCE_REPLY_CONST) {
252 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);
259int mmce_cmd_reset(
void)
266 wrbuf[0x0] = MMCE_ID;
267 wrbuf[0x1] = MMCE_CMD_RESET;
268 wrbuf[0x2] = MMCE_RESERVED;
271 res = mmce_sio2_tx_rx_pio(
sizeof(wrbuf),
sizeof(rdbuf), wrbuf, rdbuf, &timeout_1s);
274 DPRINTF(
"%s ERROR: Timedout waiting for /ACK\n", __func__);
278 if (rdbuf[0x1] != MMCE_REPLY_CONST) {
279 DPRINTF(
"%s ERROR: Invalid response from card. Got 0x%x, Expected 0x%x\n", __func__, rdbuf[0x1], MMCE_REPLY_CONST);