xref: /openbmc/linux/drivers/net/ethernet/cavium/liquidio/liquidio_image.h (revision 664b0bae0b87f69bc9deb098f5e0158b9cf18e04)
1  /**********************************************************************
2   * Author: Cavium, Inc.
3   *
4   * Contact: support@cavium.com
5   *          Please include "LiquidIO" in the subject.
6   *
7   * Copyright (c) 2003-2016 Cavium, Inc.
8   *
9   * This file is free software; you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License, Version 2, as
11   * published by the Free Software Foundation.
12   *
13   * This file is distributed in the hope that it will be useful, but
14   * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15   * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16   * NONINFRINGEMENT.  See the GNU General Public License for more details.
17   ***********************************************************************/
18  #ifndef _LIQUIDIO_IMAGE_H_
19  #define _LIQUIDIO_IMAGE_H_
20  
21  #define LIO_MAX_FW_TYPE_LEN     (8)
22  #define LIO_MAX_FW_FILENAME_LEN (256)
23  #define LIO_FW_DIR              "liquidio/"
24  #define LIO_FW_BASE_NAME        "lio_"
25  #define LIO_FW_NAME_SUFFIX      ".bin"
26  #define LIO_FW_NAME_TYPE_NIC    "nic"
27  #define LIO_FW_NAME_TYPE_AUTO   "auto"
28  #define LIO_FW_NAME_TYPE_NONE   "none"
29  #define LIO_MAX_FIRMWARE_VERSION_LEN 16
30  
31  #define LIO_MAX_BOOTCMD_LEN 1024
32  #define LIO_MAX_IMAGES 16
33  #define LIO_NIC_MAGIC 0x434E4943     /* "CNIC" */
34  struct octeon_firmware_desc {
35  	__be64 addr;
36  	__be32 len;
37  	__be32 crc32;         /* crc32 of image */
38  };
39  
40  /* Following the header is a list of 64-bit aligned binary images,
41   * as described by the desc field.
42   * Numeric fields are in network byte order.
43   */
44  struct octeon_firmware_file_header {
45  	__be32 magic;
46  	char version[LIO_MAX_FIRMWARE_VERSION_LEN];
47  	char bootcmd[LIO_MAX_BOOTCMD_LEN];
48  	__be32 num_images;
49  	struct octeon_firmware_desc desc[LIO_MAX_IMAGES];
50  	__be32 pad;
51  	__be32 crc32;         /* header checksum */
52  };
53  
54  #endif /* _LIQUIDIO_IMAGE_H_ */
55