/* * Load firmware files from Analog Devices SigmaStudio * * Copyright 2009-2011 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ #ifndef __SIGMA_FIRMWARE_H__ #define __SIGMA_FIRMWARE_H__ #include #include struct i2c_client; #define SIGMA_MAGIC "ADISIGM" struct sigma_firmware { const struct firmware *fw; size_t pos; }; struct sigma_firmware_header { unsigned char magic[7]; u8 version; __le32 crc; }; enum { SIGMA_ACTION_WRITEXBYTES = 0, SIGMA_ACTION_WRITESINGLE, SIGMA_ACTION_WRITESAFELOAD, SIGMA_ACTION_DELAY, SIGMA_ACTION_PLLWAIT, SIGMA_ACTION_NOOP, SIGMA_ACTION_END, }; struct sigma_action { u8 instr; u8 len_hi; __le16 len; __be16 addr; unsigned char payload[]; }; static inline u32 sigma_action_len(struct sigma_action *sa) { return (sa->len_hi << 16) | le16_to_cpu(sa->len); } extern int process_sigma_firmware(struct i2c_client *client, const char *name); #endif