1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2008 - 2009 3*4882a593Smuzhiyun * Windriver, <www.windriver.com> 4*4882a593Smuzhiyun * Tom Rix <Tom.Rix@windriver.com> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright 2011 Sebastian Andrzej Siewior <bigeasy@linutronix.de> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Copyright 2014 Linaro, Ltd. 9*4882a593Smuzhiyun * Rob Herring <robh@kernel.org> 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun #ifndef _FASTBOOT_H_ 14*4882a593Smuzhiyun #define _FASTBOOT_H_ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* The 64 defined bytes plus \0 */ 17*4882a593Smuzhiyun #define FASTBOOT_RESPONSE_LEN (64 + 1) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* Fastboot getvar variables */ 20*4882a593Smuzhiyun typedef enum { 21*4882a593Smuzhiyun FB_VERSION, 22*4882a593Smuzhiyun FB_BOOTLOADER_VERSION, 23*4882a593Smuzhiyun FB_BASEBAND_VERSION, 24*4882a593Smuzhiyun FB_PRODUCT, 25*4882a593Smuzhiyun FB_SERIAL_NO, 26*4882a593Smuzhiyun FB_SECURE, 27*4882a593Smuzhiyun FB_DWNLD_SIZE, 28*4882a593Smuzhiyun FB_BLK_SIZE, 29*4882a593Smuzhiyun FB_ERASE_SIZE, 30*4882a593Smuzhiyun FB_PART_TYPE, 31*4882a593Smuzhiyun FB_PART_SIZE, 32*4882a593Smuzhiyun FB_UNLOCKED, 33*4882a593Smuzhiyun FB_VARIANT, 34*4882a593Smuzhiyun FB_OFF_MODE_CHARGE, 35*4882a593Smuzhiyun FB_BATT_VOLTAGE, 36*4882a593Smuzhiyun FB_BATT_SOC_OK, 37*4882a593Smuzhiyun FB_IS_USERSPACE, 38*4882a593Smuzhiyun #ifdef CONFIG_RK_AVB_LIBAVB_USER 39*4882a593Smuzhiyun FB_HAS_COUNT, 40*4882a593Smuzhiyun FB_HAS_SLOT, 41*4882a593Smuzhiyun FB_CURR_SLOT, 42*4882a593Smuzhiyun FB_SLOT_SUFFIXES, 43*4882a593Smuzhiyun FB_SLOT_SUCCESSFUL, 44*4882a593Smuzhiyun FB_SLOT_UNBOOTABLE, 45*4882a593Smuzhiyun FB_SLOT_RETRY_COUNT, 46*4882a593Smuzhiyun FB_AT_VBST, 47*4882a593Smuzhiyun FB_SNAPSHOT_STATUS, 48*4882a593Smuzhiyun #endif 49*4882a593Smuzhiyun #ifdef CONFIG_OPTEE_CLIENT 50*4882a593Smuzhiyun FB_AT_DH, 51*4882a593Smuzhiyun FB_AT_UUID, 52*4882a593Smuzhiyun #endif 53*4882a593Smuzhiyun } fb_getvar_t; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun void fastboot_fail(const char *reason, char *response); 56*4882a593Smuzhiyun void fastboot_okay(const char *reason, char *response); 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /** 59*4882a593Smuzhiyun * Send an INFO packet during long commands based on timer. If 60*4882a593Smuzhiyun * CONFIG_UDP_FUNCTION_FASTBOOT is defined, an INFO packet is sent 61*4882a593Smuzhiyun * if the time is 30 seconds after start. Else, noop. 62*4882a593Smuzhiyun * 63*4882a593Smuzhiyun * TODO: Handle the situation where both UDP and USB fastboot are 64*4882a593Smuzhiyun * enabled. 65*4882a593Smuzhiyun * 66*4882a593Smuzhiyun * @param start: Time since last INFO packet was sent. 67*4882a593Smuzhiyun * @param msg: String describing the reason for waiting 68*4882a593Smuzhiyun */ 69*4882a593Smuzhiyun void timed_send_info(ulong *start, const char *msg); 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #endif /* _FASTBOOT_H_ */ 72