Blame cs46xx/cs46xx-fw.c

Packit Service f0277f
/*
Packit Service f0277f
 * 32bit LE only
Packit Service f0277f
 */
Packit Service f0277f
Packit Service f0277f
#include <stdio.h>
Packit Service f0277f
Packit Service f0277f
#define DSP_MAX_SYMBOL_NAME 100
Packit Service f0277f
typedef unsigned int u32;
Packit Service f0277f
Packit Service f0277f
struct dsp_symbol_entry {
Packit Service f0277f
	unsigned int address;
Packit Service f0277f
	char symbol_name[DSP_MAX_SYMBOL_NAME];
Packit Service f0277f
	int symbol_type;
Packit Service f0277f
};
Packit Service f0277f
Packit Service f0277f
struct dsp_segment_desc {
Packit Service f0277f
	int segment_type;
Packit Service f0277f
	unsigned int offset;
Packit Service f0277f
	unsigned int size;
Packit Service f0277f
	u32 *data;
Packit Service f0277f
};
Packit Service f0277f
Packit Service f0277f
struct dsp_symbol_desc {
Packit Service f0277f
	int nsymbols;
Packit Service f0277f
	struct dsp_symbol_entry *symbols;
Packit Service f0277f
};
Packit Service f0277f
Packit Service f0277f
struct dsp_module_desc {
Packit Service f0277f
	char * module_name;
Packit Service f0277f
	struct dsp_symbol_desc symbol_table;
Packit Service f0277f
	int nsegments;
Packit Service f0277f
	struct dsp_segment_desc * segments;
Packit Service f0277f
};
Packit Service f0277f
Packit Service f0277f
#define SEGTYPE_SP_PROGRAM              0x00000001
Packit Service f0277f
#define SEGTYPE_SP_PARAMETER            0x00000002
Packit Service f0277f
#define SEGTYPE_SP_SAMPLE               0x00000003
Packit Service f0277f
#define SEGTYPE_SP_COEFFICIENT          0x00000004
Packit Service f0277f
Packit Service f0277f
Packit Service f0277f
#include "cwc4630.h"
Packit Service f0277f
#include "cwcasync.h"
Packit Service f0277f
#include "cwcbinhack.h"
Packit Service f0277f
#include "cwcdma.h"
Packit Service f0277f
#include "cwcsnoop.h"
Packit Service f0277f
Packit Service f0277f
/* 3*1024 parameter, 3.5*1024 sample, 2*3.5*1024 code */
Packit Service f0277f
#define BA1_DWORD_SIZE		(13 * 1024 + 512)
Packit Service f0277f
#define BA1_MEMORY_COUNT	3
Packit Service f0277f
Packit Service f0277f
#include "cs46xx_image.h"
Packit Service f0277f
Packit Service f0277f
int main(int argc, char **argv)
Packit Service f0277f
{
Packit Service f0277f
	struct dsp_module_desc *desc;
Packit Service f0277f
	static struct dsp_module_desc *list[] = {
Packit Service f0277f
		&cwc4630_module,
Packit Service f0277f
		&cwcasync_module,
Packit Service f0277f
		&cwcbinhack_module,
Packit Service f0277f
		&cwcdma_module,
Packit Service f0277f
		&cwcsnoop_module,
Packit Service f0277f
	};
Packit Service f0277f
	static const char *names[] = {
Packit Service f0277f
		"cwc4630", "cwcasync", "cwcbinhack", "cwcdma", "cwcsnoop"
Packit Service f0277f
	};
Packit Service f0277f
	FILE *fp;
Packit Service f0277f
	int i, n;
Packit Service f0277f
Packit Service f0277f
	for (n = 0; n < 5; n++) {
Packit Service f0277f
		fp = fopen(names[n], "w");
Packit Service f0277f
		if (!fp)
Packit Service f0277f
			return 1;
Packit Service f0277f
		desc = list[n];
Packit Service f0277f
		fwrite(&desc->symbol_table.nsymbols, 4, 1, fp);
Packit Service f0277f
		fwrite(desc->symbol_table.symbols, sizeof(struct dsp_symbol_entry), desc->symbol_table.nsymbols, fp);
Packit Service f0277f
		fwrite(&desc->nsegments, 4, 1, fp);
Packit Service f0277f
		for (i = 0; i < desc->nsegments; i++) {
Packit Service f0277f
			fwrite(&desc->segments[i], 4, 3, fp);
Packit Service f0277f
			fwrite(desc->segments[i].data, 4, desc->segments[i].size, fp);
Packit Service f0277f
		}
Packit Service f0277f
		fclose(fp);
Packit Service f0277f
	}
Packit Service f0277f
Packit Service f0277f
	fp = fopen("ba1", "w");
Packit Service f0277f
	if (!fp)
Packit Service f0277f
		return 1;
Packit Service f0277f
	fwrite(&BA1Struct, sizeof(BA1Struct), 1, fp);
Packit Service f0277f
	fclose(fp);
Packit Service f0277f
Packit Service f0277f
	return 0;
Packit Service f0277f
}