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 2021 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 "lifecycle.h"
17*0d6140beSAndroid Build Coastguard Worker
18*0d6140beSAndroid Build Coastguard Worker #if CONFIG_DEDIPROG == 1
dediprog_libusb_init(void * state,libusb_context ** ctx)19*0d6140beSAndroid Build Coastguard Worker static int dediprog_libusb_init(void *state, libusb_context **ctx)
20*0d6140beSAndroid Build Coastguard Worker {
21*0d6140beSAndroid Build Coastguard Worker *ctx = not_null();
22*0d6140beSAndroid Build Coastguard Worker return 0;
23*0d6140beSAndroid Build Coastguard Worker }
24*0d6140beSAndroid Build Coastguard Worker
dediprog_libusb_control_transfer(void * state,libusb_device_handle * devh,uint8_t bmRequestType,uint8_t bRequest,uint16_t wValue,uint16_t wIndex,unsigned char * data,uint16_t wLength,unsigned int timeout)25*0d6140beSAndroid Build Coastguard Worker static int dediprog_libusb_control_transfer(void *state,
26*0d6140beSAndroid Build Coastguard Worker libusb_device_handle *devh,
27*0d6140beSAndroid Build Coastguard Worker uint8_t bmRequestType,
28*0d6140beSAndroid Build Coastguard Worker uint8_t bRequest,
29*0d6140beSAndroid Build Coastguard Worker uint16_t wValue,
30*0d6140beSAndroid Build Coastguard Worker uint16_t wIndex,
31*0d6140beSAndroid Build Coastguard Worker unsigned char *data,
32*0d6140beSAndroid Build Coastguard Worker uint16_t wLength,
33*0d6140beSAndroid Build Coastguard Worker unsigned int timeout)
34*0d6140beSAndroid Build Coastguard Worker {
35*0d6140beSAndroid Build Coastguard Worker if (bRequest == 0x08 /* dediprog_cmds CMD_READ_PROG_INFO */) {
36*0d6140beSAndroid Build Coastguard Worker /* Provide dediprog Device String into data buffer */
37*0d6140beSAndroid Build Coastguard Worker memcpy(data, "SF600 V:7.2.2 ", wLength);
38*0d6140beSAndroid Build Coastguard Worker }
39*0d6140beSAndroid Build Coastguard Worker return wLength;
40*0d6140beSAndroid Build Coastguard Worker }
41*0d6140beSAndroid Build Coastguard Worker
dediprog_basic_lifecycle_test_success(void ** state)42*0d6140beSAndroid Build Coastguard Worker void dediprog_basic_lifecycle_test_success(void **state)
43*0d6140beSAndroid Build Coastguard Worker {
44*0d6140beSAndroid Build Coastguard Worker struct io_mock_fallback_open_state dediprog_fallback_open_state = {
45*0d6140beSAndroid Build Coastguard Worker .noc = 0,
46*0d6140beSAndroid Build Coastguard Worker .paths = { LOCK_FILE },
47*0d6140beSAndroid Build Coastguard Worker };
48*0d6140beSAndroid Build Coastguard Worker const struct io_mock dediprog_io = {
49*0d6140beSAndroid Build Coastguard Worker .libusb_init = dediprog_libusb_init,
50*0d6140beSAndroid Build Coastguard Worker .libusb_control_transfer = dediprog_libusb_control_transfer,
51*0d6140beSAndroid Build Coastguard Worker .fallback_open_state = &dediprog_fallback_open_state,
52*0d6140beSAndroid Build Coastguard Worker };
53*0d6140beSAndroid Build Coastguard Worker
54*0d6140beSAndroid Build Coastguard Worker run_basic_lifecycle(state, &dediprog_io, &programmer_dediprog, "voltage=3.5V");
55*0d6140beSAndroid Build Coastguard Worker }
56*0d6140beSAndroid Build Coastguard Worker #else
57*0d6140beSAndroid Build Coastguard Worker SKIP_TEST(dediprog_basic_lifecycle_test_success)
58*0d6140beSAndroid Build Coastguard Worker #endif /* CONFIG_DEDIPROG */
59