/* Only support DMA mode */ #define LOADER_XFER_MODE_DMA BIT(0)
/** * union loader_msg_header - ISHTP firmware loader message header * @command: Command type * @is_response: Indicates if the message is a response * @has_next: Indicates if there is a next message * @reserved: Reserved for future use * @status: Status of the message * @val32: entire header as a 32-bit value
*/ union loader_msg_header { struct {
__u32 command:7;
__u32 is_response:1;
__u32 has_next:1;
__u32 reserved:15;
__u32 status:8;
};
__u32 val32;
};
/** * struct loader_xfer_query - ISHTP firmware loader transfer query packet * @header: Header of the message * @image_size: Size of the image
*/ struct loader_xfer_query {
__le32 header;
__le32 image_size;
};
/** * struct loader_version - ISHTP firmware loader version * @value: Value of the version * @major: Major version * @minor: Minor version * @hotfix: Hotfix version * @build: Build version
*/ struct loader_version { union {
__le32 value; struct {
__u8 major;
__u8 minor;
__u8 hotfix;
__u8 build;
};
};
};
/** * struct loader_capability - ISHTP firmware loader capability * @max_fw_image_size: Maximum firmware image size * @support_mode: Support mode * @reserved: Reserved for future use * @platform: Platform * @max_dma_buf_size: Maximum DMA buffer size, multiples of 4096
*/ struct loader_capability {
__le32 max_fw_image_size;
__le16 support_mode;
__u8 reserved;
__u8 platform;
__le32 max_dma_buf_size;
};
/** * struct loader_xfer_query_ack - ISHTP firmware loader transfer query acknowledgment * @header: Header of the message * @version_major: ISH Major version * @version_minor: ISH Minor version * @version_hotfix: ISH Hotfix version * @version_build: ISH Build version * @protocol_version: Protocol version * @loader_version: Loader version * @capability: Loader capability
*/ struct loader_xfer_query_ack {
__le32 header;
__le16 version_major;
__le16 version_minor;
__le16 version_hotfix;
__le16 version_build;
__le32 protocol_version; struct loader_version loader_version; struct loader_capability capability;
};
/** * struct loader_xfer_fragment - ISHTP firmware loader transfer fragment * @header: Header of the message * @xfer_mode: Transfer mode * @offset: Offset * @size: Size * @is_last: Is last
*/ struct loader_xfer_fragment {
__le32 header;
__le32 xfer_mode;
__le32 offset;
__le32 size;
__le32 is_last;
};
/** * struct loader_xfer_fragment_ack - ISHTP firmware loader transfer fragment acknowledgment * @header: Header of the message
*/ struct loader_xfer_fragment_ack {
__le32 header;
};
/** * struct fragment_dscrpt - ISHTP firmware loader fragment descriptor * @ddr_adrs: The address in host DDR * @fw_off: The offset of the fragment in the fw image * @length: The length of the fragment
*/ struct fragment_dscrpt {
__le64 ddr_adrs;
__le32 fw_off;
__le32 length;
};
/** * struct loader_xfer_dma_fragment - ISHTP firmware loader transfer DMA fragment * @fragment: Fragment * @fragment_cnt: How many descriptors in the fragment_tbl * @fragment_tbl: Fragment table
*/ struct loader_xfer_dma_fragment { struct loader_xfer_fragment fragment;
__le32 fragment_cnt; struct fragment_dscrpt fragment_tbl[] __counted_by(fragment_cnt);
};
/** * ishtp_loader_work - The work function to start the firmware loading process * @work: The work structure
*/ void ishtp_loader_work(struct work_struct *work);
/* ISH Manifest alignment in binary is 4KB aligned */ #define ISH_MANIFEST_ALIGNMENT SZ_4K
/* Signature for ISH global manifest */ #define ISH_GLOBAL_SIG 0x47485349 /* FourCC 'I', 'S', 'H', 'G' */
/** * struct ish_global_manifest - global manifest for ISH * @sig_fourcc: Signature FourCC, should be 'I', 'S', 'H', 'G'. * @len: Length of the manifest. * @header_version: Version of the manifest header. * @flags: Flags for additional information. * @base_ver: Base version of Intel's released firmware. * @reserved: Reserved space for future use. * @prj_ver: Vendor-customized project version.
*/ struct ish_global_manifest {
__le32 sig_fourcc;
__le32 len;
__le32 header_version;
__le32 flags; struct version_in_manifest base_ver;
__le32 reserved[13]; struct version_in_manifest prj_ver;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.