blob: d901f9d3f694a9fb204b235b56d3c3f59e267c85 [file] [log] [blame]
/*
* drivers/amlogic/media/common/firmware/firmware.h
*
* Copyright (C) 2016 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#ifndef __VIDEO_FIRMWARE_PRIV_HEAD_
#define __VIDEO_FIRMWARE_PRIV_HEAD_
#include <linux/types.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/cdev.h>
#include "firmware_type.h"
struct fw_mgr_s {
struct list_head fw_head;
struct list_head files_head;
spinlock_t lock;
int cur_cpu;
};
struct fw_files_s {
struct list_head node;
int fw_type;
int file_type;
char name[32];
char path[64];
};
struct ucode_file_info_s {
int fw_type;
int file_type;
const char *name;
};
struct fw_info_s {
struct list_head node;
char name[32];
char src_from[32];
int file_type;
unsigned int format;
struct firmware_s *data;
};
struct fw_head_s {
int magic;
int checksum;
char name[32];
char cpu[16];
char format[32];
char version[32];
char maker[32];
char date[32];
char commit[16];
int data_size;
unsigned int time;
char change_id[16];
int duplicate;
char dup_from[16];
char reserved[92];
};
struct firmware_s {
union {
struct fw_head_s head;
char buf[512];
};
char data[0];
};
struct package_head_s {
int magic;
int size;
int checksum;
int total;
int version;
int submit_count;
char change_id[16];
char commit[16];
char history_change_id[30];
char reserved[62];
};
struct package_s {
union {
struct package_head_s head;
char buf[256];
};
char data[0];
};
struct info_head_s {
char name[32];
char format[32];
char cpu[32];
int length;
};
struct package_info_s {
union {
struct info_head_s head;
char buf[256];
};
char data[0];
};
struct fw_dev_s {
struct cdev cdev;
struct device *dev;
dev_t dev_no;
};
#endif