1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Greybus Firmware Management Header
4  *
5  * Copyright 2016 Google Inc.
6  * Copyright 2016 Linaro Ltd.
7  */
8 
9 #ifndef __FIRMWARE_H
10 #define __FIRMWARE_H
11 
12 #include <linux/greybus.h>
13 
14 #define FW_NAME_PREFIX	"gmp_"
15 
16 /*
17  * Length of the string in format: "FW_NAME_PREFIX""%08x_%08x_%08x_%08x_%s.tftf"
18  *                                  (3 + 1 + 4 * (8 + 1) + 10 + 1 + 4 + 1)
19  */
20 #define FW_NAME_SIZE		56
21 
22 /* Firmware Management Protocol specific functions */
23 int fw_mgmt_init(void);
24 void fw_mgmt_exit(void);
25 struct gb_connection *to_fw_mgmt_connection(struct device *dev);
26 int gb_fw_mgmt_request_handler(struct gb_operation *op);
27 int gb_fw_mgmt_connection_init(struct gb_connection *connection);
28 void gb_fw_mgmt_connection_exit(struct gb_connection *connection);
29 
30 /* Firmware Download Protocol specific functions */
31 int gb_fw_download_request_handler(struct gb_operation *op);
32 int gb_fw_download_connection_init(struct gb_connection *connection);
33 void gb_fw_download_connection_exit(struct gb_connection *connection);
34 
35 /* CAP Protocol specific functions */
36 int cap_init(void);
37 void cap_exit(void);
38 int gb_cap_connection_init(struct gb_connection *connection);
39 void gb_cap_connection_exit(struct gb_connection *connection);
40 
41 #endif /* __FIRMWARE_H */
42