at v2.6.39 1.1 kB view raw
1/* 2 * Load firmware files from Analog Devices SigmaStudio 3 * 4 * Copyright 2009-2011 Analog Devices Inc. 5 * 6 * Licensed under the GPL-2 or later. 7 */ 8 9#ifndef __SIGMA_FIRMWARE_H__ 10#define __SIGMA_FIRMWARE_H__ 11 12#include <linux/firmware.h> 13#include <linux/types.h> 14 15struct i2c_client; 16 17#define SIGMA_MAGIC "ADISIGM" 18 19struct sigma_firmware { 20 const struct firmware *fw; 21 size_t pos; 22}; 23 24struct sigma_firmware_header { 25 unsigned char magic[7]; 26 u8 version; 27 u32 crc; 28}; 29 30enum { 31 SIGMA_ACTION_WRITEXBYTES = 0, 32 SIGMA_ACTION_WRITESINGLE, 33 SIGMA_ACTION_WRITESAFELOAD, 34 SIGMA_ACTION_DELAY, 35 SIGMA_ACTION_PLLWAIT, 36 SIGMA_ACTION_NOOP, 37 SIGMA_ACTION_END, 38}; 39 40struct sigma_action { 41 u8 instr; 42 u8 len_hi; 43 u16 len; 44 u16 addr; 45 unsigned char payload[]; 46}; 47 48static inline u32 sigma_action_len(struct sigma_action *sa) 49{ 50 return (sa->len_hi << 16) | sa->len; 51} 52 53static inline size_t sigma_action_size(struct sigma_action *sa, u32 payload_len) 54{ 55 return sizeof(*sa) + payload_len + (payload_len % 2); 56} 57 58extern int process_sigma_firmware(struct i2c_client *client, const char *name); 59 60#endif