1*0d6140beSAndroid Build Coastguard Worker /*
2*0d6140beSAndroid Build Coastguard Worker * This file is part of the flashrom project.
3*0d6140beSAndroid Build Coastguard Worker *
4*0d6140beSAndroid Build Coastguard Worker * Copyright 2020 Google LLC
5*0d6140beSAndroid Build Coastguard Worker *
6*0d6140beSAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify
7*0d6140beSAndroid Build Coastguard Worker * it under the terms of the GNU General Public License as published by
8*0d6140beSAndroid Build Coastguard Worker * the Free Software Foundation; version 2 of the License.
9*0d6140beSAndroid Build Coastguard Worker *
10*0d6140beSAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful,
11*0d6140beSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of
12*0d6140beSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13*0d6140beSAndroid Build Coastguard Worker * GNU General Public License for more details.
14*0d6140beSAndroid Build Coastguard Worker */
15*0d6140beSAndroid Build Coastguard Worker
16*0d6140beSAndroid Build Coastguard Worker #include <include/test.h>
17*0d6140beSAndroid Build Coastguard Worker
18*0d6140beSAndroid Build Coastguard Worker #include "wraps.h"
19*0d6140beSAndroid Build Coastguard Worker #include "tests.h"
20*0d6140beSAndroid Build Coastguard Worker #include "programmer.h"
21*0d6140beSAndroid Build Coastguard Worker #include "flashchips.h"
22*0d6140beSAndroid Build Coastguard Worker #include "chipdrivers.h"
23*0d6140beSAndroid Build Coastguard Worker #include "spi.h"
24*0d6140beSAndroid Build Coastguard Worker
25*0d6140beSAndroid Build Coastguard Worker struct flashchip mock_chip = {
26*0d6140beSAndroid Build Coastguard Worker .vendor = "Generic",
27*0d6140beSAndroid Build Coastguard Worker .name = "unknown SPI chip (RDID)",
28*0d6140beSAndroid Build Coastguard Worker .bustype = BUS_SPI,
29*0d6140beSAndroid Build Coastguard Worker .manufacture_id = GENERIC_MANUF_ID,
30*0d6140beSAndroid Build Coastguard Worker .model_id = GENERIC_DEVICE_ID,
31*0d6140beSAndroid Build Coastguard Worker .total_size = 0,
32*0d6140beSAndroid Build Coastguard Worker .page_size = 256,
33*0d6140beSAndroid Build Coastguard Worker .tested = TEST_BAD_PREW,
34*0d6140beSAndroid Build Coastguard Worker .probe = PROBE_SPI_RDID,
35*0d6140beSAndroid Build Coastguard Worker .write = NO_WRITE_FUNC,
36*0d6140beSAndroid Build Coastguard Worker };
37*0d6140beSAndroid Build Coastguard Worker
38*0d6140beSAndroid Build Coastguard Worker /*
39*0d6140beSAndroid Build Coastguard Worker * This declaration is needed for visibility, so that wrap below could
40*0d6140beSAndroid Build Coastguard Worker * redirect to real function.
41*0d6140beSAndroid Build Coastguard Worker */
42*0d6140beSAndroid Build Coastguard Worker int __real_spi_send_command(const struct flashctx *flash,
43*0d6140beSAndroid Build Coastguard Worker unsigned int writecnt, unsigned int readcnt,
44*0d6140beSAndroid Build Coastguard Worker const unsigned char *writearr, unsigned char *readarr);
45*0d6140beSAndroid Build Coastguard Worker
__wrap_spi_send_command(const struct flashctx * flash,unsigned int writecnt,unsigned int readcnt,const unsigned char * writearr,unsigned char * readarr)46*0d6140beSAndroid Build Coastguard Worker int __wrap_spi_send_command(const struct flashctx *flash,
47*0d6140beSAndroid Build Coastguard Worker unsigned int writecnt, unsigned int readcnt,
48*0d6140beSAndroid Build Coastguard Worker const unsigned char *writearr, unsigned char *readarr)
49*0d6140beSAndroid Build Coastguard Worker {
50*0d6140beSAndroid Build Coastguard Worker if (flash->chip != &mock_chip)
51*0d6140beSAndroid Build Coastguard Worker /*
52*0d6140beSAndroid Build Coastguard Worker * Caller is some other test, redirecting to real function.
53*0d6140beSAndroid Build Coastguard Worker * This test is the only one which uses wrap of spi_send_command,
54*0d6140beSAndroid Build Coastguard Worker * all other tests use real function.
55*0d6140beSAndroid Build Coastguard Worker */
56*0d6140beSAndroid Build Coastguard Worker return __real_spi_send_command(flash, writecnt, readcnt, writearr, readarr);
57*0d6140beSAndroid Build Coastguard Worker
58*0d6140beSAndroid Build Coastguard Worker check_expected_ptr(flash);
59*0d6140beSAndroid Build Coastguard Worker assert_int_equal(writecnt, mock_type(int));
60*0d6140beSAndroid Build Coastguard Worker assert_int_equal(writearr[0], mock_type(int));
61*0d6140beSAndroid Build Coastguard Worker
62*0d6140beSAndroid Build Coastguard Worker int rcnt = mock_type(int);
63*0d6140beSAndroid Build Coastguard Worker assert_int_equal(readcnt, rcnt);
64*0d6140beSAndroid Build Coastguard Worker for (int i = 0; i < rcnt; i++)
65*0d6140beSAndroid Build Coastguard Worker readarr[i] = i;
66*0d6140beSAndroid Build Coastguard Worker
67*0d6140beSAndroid Build Coastguard Worker return 0;
68*0d6140beSAndroid Build Coastguard Worker }
69*0d6140beSAndroid Build Coastguard Worker
spi_read_progress_cb(struct flashrom_flashctx * flashctx)70*0d6140beSAndroid Build Coastguard Worker static void spi_read_progress_cb(struct flashrom_flashctx *flashctx)
71*0d6140beSAndroid Build Coastguard Worker {
72*0d6140beSAndroid Build Coastguard Worker struct flashrom_progress *progress_state = flashctx->progress_state;
73*0d6140beSAndroid Build Coastguard Worker uint32_t *cnt = (uint32_t *) progress_state->user_data;
74*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x300, progress_state->total);
75*0d6140beSAndroid Build Coastguard Worker switch (*cnt) {
76*0d6140beSAndroid Build Coastguard Worker case 0:
77*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x100, progress_state->current);
78*0d6140beSAndroid Build Coastguard Worker break;
79*0d6140beSAndroid Build Coastguard Worker case 1:
80*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x200, progress_state->current);
81*0d6140beSAndroid Build Coastguard Worker break;
82*0d6140beSAndroid Build Coastguard Worker case 2:
83*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x300, progress_state->current);
84*0d6140beSAndroid Build Coastguard Worker break;
85*0d6140beSAndroid Build Coastguard Worker case 3:
86*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x300, progress_state->current);
87*0d6140beSAndroid Build Coastguard Worker break;
88*0d6140beSAndroid Build Coastguard Worker case 4:
89*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0x300, progress_state->current);
90*0d6140beSAndroid Build Coastguard Worker break;
91*0d6140beSAndroid Build Coastguard Worker default:
92*0d6140beSAndroid Build Coastguard Worker fail();
93*0d6140beSAndroid Build Coastguard Worker }
94*0d6140beSAndroid Build Coastguard Worker (*cnt)++;
95*0d6140beSAndroid Build Coastguard Worker }
96*0d6140beSAndroid Build Coastguard Worker
spi_read_chunked_test_success(void ** state)97*0d6140beSAndroid Build Coastguard Worker void spi_read_chunked_test_success(void **state)
98*0d6140beSAndroid Build Coastguard Worker {
99*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
100*0d6140beSAndroid Build Coastguard Worker uint8_t buf[0x400] = { 0x0 };
101*0d6140beSAndroid Build Coastguard Worker uint32_t cnt = 0;
102*0d6140beSAndroid Build Coastguard Worker const unsigned int max_data_read = 0x100;
103*0d6140beSAndroid Build Coastguard Worker const unsigned int offset = 0x100;
104*0d6140beSAndroid Build Coastguard Worker struct registered_master mst = {
105*0d6140beSAndroid Build Coastguard Worker .spi.read = default_spi_read,
106*0d6140beSAndroid Build Coastguard Worker .spi.max_data_read = max_data_read
107*0d6140beSAndroid Build Coastguard Worker };
108*0d6140beSAndroid Build Coastguard Worker
109*0d6140beSAndroid Build Coastguard Worker /* setup initial test state */
110*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = {
111*0d6140beSAndroid Build Coastguard Worker .chip = &mock_chip,
112*0d6140beSAndroid Build Coastguard Worker .mst = &mst
113*0d6140beSAndroid Build Coastguard Worker };
114*0d6140beSAndroid Build Coastguard Worker struct flashrom_progress progress_state = {
115*0d6140beSAndroid Build Coastguard Worker .user_data = (void *) &cnt,
116*0d6140beSAndroid Build Coastguard Worker };
117*0d6140beSAndroid Build Coastguard Worker flashrom_set_progress_callback(&flashctx, spi_read_progress_cb, &progress_state);
118*0d6140beSAndroid Build Coastguard Worker for (int i = 0; i < 4; i++) {
119*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
120*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
121*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WRDI);
122*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_READ);
123*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, max_data_read);
124*0d6140beSAndroid Build Coastguard Worker }
125*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, spi_chip_read(&flashctx, buf, offset, sizeof(buf)));
126*0d6140beSAndroid Build Coastguard Worker assert_int_equal(5, cnt);
127*0d6140beSAndroid Build Coastguard Worker }
128*0d6140beSAndroid Build Coastguard Worker
spi_write_enable_test_success(void ** state)129*0d6140beSAndroid Build Coastguard Worker void spi_write_enable_test_success(void **state)
130*0d6140beSAndroid Build Coastguard Worker {
131*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
132*0d6140beSAndroid Build Coastguard Worker
133*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
134*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
135*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
136*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
137*0d6140beSAndroid Build Coastguard Worker
138*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WREN_OUTSIZE);
139*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WREN);
140*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WREN_INSIZE);
141*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, spi_write_enable(&flashctx));
142*0d6140beSAndroid Build Coastguard Worker }
143*0d6140beSAndroid Build Coastguard Worker
spi_write_disable_test_success(void ** state)144*0d6140beSAndroid Build Coastguard Worker void spi_write_disable_test_success(void **state)
145*0d6140beSAndroid Build Coastguard Worker {
146*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
147*0d6140beSAndroid Build Coastguard Worker
148*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
149*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
150*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
151*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
152*0d6140beSAndroid Build Coastguard Worker
153*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WRDI_OUTSIZE);
154*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WRDI);
155*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_WRDI_INSIZE);
156*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, spi_write_disable(&flashctx));
157*0d6140beSAndroid Build Coastguard Worker }
158*0d6140beSAndroid Build Coastguard Worker
probe_spi_rdid_test_success(void ** state)159*0d6140beSAndroid Build Coastguard Worker void probe_spi_rdid_test_success(void **state)
160*0d6140beSAndroid Build Coastguard Worker {
161*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
162*0d6140beSAndroid Build Coastguard Worker
163*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
164*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
165*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
166*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
167*0d6140beSAndroid Build Coastguard Worker
168*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID_OUTSIZE);
169*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID);
170*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID_INSIZE);
171*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_rdid(&flashctx));
172*0d6140beSAndroid Build Coastguard Worker }
173*0d6140beSAndroid Build Coastguard Worker
probe_spi_rdid4_test_success(void ** state)174*0d6140beSAndroid Build Coastguard Worker void probe_spi_rdid4_test_success(void **state)
175*0d6140beSAndroid Build Coastguard Worker {
176*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
177*0d6140beSAndroid Build Coastguard Worker
178*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
179*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
180*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
181*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
182*0d6140beSAndroid Build Coastguard Worker
183*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID_OUTSIZE);
184*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID);
185*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RDID_INSIZE + 1);
186*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_rdid4(&flashctx));
187*0d6140beSAndroid Build Coastguard Worker }
188*0d6140beSAndroid Build Coastguard Worker
probe_spi_rems_test_success(void ** state)189*0d6140beSAndroid Build Coastguard Worker void probe_spi_rems_test_success(void **state)
190*0d6140beSAndroid Build Coastguard Worker {
191*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
192*0d6140beSAndroid Build Coastguard Worker
193*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
194*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
195*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
196*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
197*0d6140beSAndroid Build Coastguard Worker
198*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_REMS_OUTSIZE);
199*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_REMS);
200*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_REMS_INSIZE);
201*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_rems(&flashctx));
202*0d6140beSAndroid Build Coastguard Worker }
203*0d6140beSAndroid Build Coastguard Worker
probe_spi_res1_test_success(void ** state)204*0d6140beSAndroid Build Coastguard Worker void probe_spi_res1_test_success(void **state)
205*0d6140beSAndroid Build Coastguard Worker {
206*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
207*0d6140beSAndroid Build Coastguard Worker
208*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
209*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
210*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
211*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
212*0d6140beSAndroid Build Coastguard Worker
213*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_OUTSIZE);
214*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES);
215*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_INSIZE + 1);
216*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_res2(&flashctx));
217*0d6140beSAndroid Build Coastguard Worker }
218*0d6140beSAndroid Build Coastguard Worker
probe_spi_res2_test_success(void ** state)219*0d6140beSAndroid Build Coastguard Worker void probe_spi_res2_test_success(void **state)
220*0d6140beSAndroid Build Coastguard Worker {
221*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
222*0d6140beSAndroid Build Coastguard Worker
223*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
224*0d6140beSAndroid Build Coastguard Worker clear_spi_id_cache();
225*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
226*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
227*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
228*0d6140beSAndroid Build Coastguard Worker
229*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_OUTSIZE);
230*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES);
231*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_INSIZE + 1);
232*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_res2(&flashctx));
233*0d6140beSAndroid Build Coastguard Worker }
234*0d6140beSAndroid Build Coastguard Worker
probe_spi_res3_test_success(void ** state)235*0d6140beSAndroid Build Coastguard Worker void probe_spi_res3_test_success(void **state)
236*0d6140beSAndroid Build Coastguard Worker {
237*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
238*0d6140beSAndroid Build Coastguard Worker
239*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
240*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
241*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
242*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
243*0d6140beSAndroid Build Coastguard Worker
244*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_OUTSIZE);
245*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES);
246*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, JEDEC_RES_INSIZE + 2);
247*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_res3(&flashctx));
248*0d6140beSAndroid Build Coastguard Worker }
249*0d6140beSAndroid Build Coastguard Worker
probe_spi_at25f_test_success(void ** state)250*0d6140beSAndroid Build Coastguard Worker void probe_spi_at25f_test_success(void **state)
251*0d6140beSAndroid Build Coastguard Worker {
252*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
253*0d6140beSAndroid Build Coastguard Worker
254*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
255*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
256*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
257*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
258*0d6140beSAndroid Build Coastguard Worker
259*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, AT25F_RDID_OUTSIZE);
260*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, AT25F_RDID);
261*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, AT25F_RDID_INSIZE);
262*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_at25f(&flashctx));
263*0d6140beSAndroid Build Coastguard Worker }
264*0d6140beSAndroid Build Coastguard Worker
265*0d6140beSAndroid Build Coastguard Worker /* spi95.c */
probe_spi_st95_test_success(void ** state)266*0d6140beSAndroid Build Coastguard Worker void probe_spi_st95_test_success(void **state)
267*0d6140beSAndroid Build Coastguard Worker {
268*0d6140beSAndroid Build Coastguard Worker (void) state; /* unused */
269*0d6140beSAndroid Build Coastguard Worker
270*0d6140beSAndroid Build Coastguard Worker /* setup initial test state. */
271*0d6140beSAndroid Build Coastguard Worker struct flashctx flashctx = { .chip = &mock_chip };
272*0d6140beSAndroid Build Coastguard Worker expect_memory(__wrap_spi_send_command, flash,
273*0d6140beSAndroid Build Coastguard Worker &flashctx, sizeof(flashctx));
274*0d6140beSAndroid Build Coastguard Worker
275*0d6140beSAndroid Build Coastguard Worker /* chip total size < 64K. */
276*0d6140beSAndroid Build Coastguard Worker uint32_t rdid_outsize = ST_M95_RDID_2BA_OUTSIZE; // 16 bit address
277*0d6140beSAndroid Build Coastguard Worker
278*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, rdid_outsize);
279*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, ST_M95_RDID);
280*0d6140beSAndroid Build Coastguard Worker will_return(__wrap_spi_send_command, ST_M95_RDID_INSIZE);
281*0d6140beSAndroid Build Coastguard Worker assert_int_equal(0, probe_spi_st95(&flashctx));
282*0d6140beSAndroid Build Coastguard Worker }
283