forked from Minki/linux
40216ce7aa
It has been pointed out previously, that the firmware subsystem is not the right place for the SigmaDSP firmware loader. Furthermore the SigmaDSP is currently only used in audio products and we are aiming for better integration into the ASoC framework in the future, with support for ALSA controls for firmware parameters and support dynamic power management as well. So the natural choice for the SigmaDSP firmware loader is the ASoC subsystem. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
56 lines
956 B
C
56 lines
956 B
C
/*
|
|
* 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;
|
|
__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
|