| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- * 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 <linux/firmware.h>
- #include <linux/types.h>
- 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;
- u32 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;
- u16 len;
- u16 addr;
- unsigned char payload[];
- };
- static inline u32 sigma_action_len(struct sigma_action *sa)
- {
- return (sa->len_hi << 16) | sa->len;
- }
- static inline size_t sigma_action_size(struct sigma_action *sa, u32 payload_len)
- {
- return sizeof(*sa) + payload_len + (payload_len % 2);
- }
- extern int process_sigma_firmware(struct i2c_client *client, const char *name);
- #endif
|