8dd79199f8
The bes2600 driver is a fork of the upstream cw1200 driver
(drivers/net/wireless/st/cw1200/, ST-Ericsson, Dmitry Tarnyagin
2010-2011). The fork's file headers have three GPL-compliance issues:
1. NO SPDX-License-Identifier on any of 48 source files (cw1200
mainline has them on all 25). kernel.org-mandated since 2017.
2. Original "Copyright (c) 2010, ST-Ericsson" lines stripped from
all files inherited from cw1200, replaced with
"Copyright (c) 2010, Bestechnic" — factually impossible
(Bestechnic did not author the 2010 work) and a GPL-2.0 §1
attribution-preservation violation.
3. The "GPL version 2 as published by the Free Software Foundation"
boilerplate paragraph is redundant alongside SPDX and is the
legacy form modern kernel sources have replaced.
This patch corrects all three for the 48 .c/.h files in bes2600/:
- Adds `// SPDX-License-Identifier: GPL-2.0-only` (or `/* ... */`
for headers) as line 1 of every file.
- Restores `Copyright (c) 2010, ST-Ericsson` + `Author: Dmitry
Tarnyagin <dmitry.tarnyagin@lockless.no>` as the FIRST copyright
chain entry on all 22 files derived from cw1200 (bh.{c,h},
debug.{c,h}, fwio.{c,h}, hwio.{c,h}, main.c, pm.{c,h},
queue.{c,h}, scan.{c,h}, sta.{c,h}, txrx.{c,h}, wsm.{c,h}).
- Keeps `Copyright (c) 2022, Bestechnic (Beijing) Co., Ltd.` as
the SECOND chain entry where Bestechnic genuinely contributed.
- Notes "Derived from cw1200_sdio.c" + ST-Ericsson copyright on
bes2600_sdio.c (heavy derivation, not a literal rename).
- Notes "Replaces hwbus.h from cw1200/" + ST-Ericsson copyright
on sbus.h.
- Preserves the prism54/islsm authorship chain on main.c and
bes2600.h (Michael Wu 2006 + Jean-Baptiste Note 2004-2006).
- Drops the GPL-2.0 boilerplate paragraph in favour of SPDX.
No code changes — only file-header comment blocks. Module build is
unaffected (verified by header-only diff scope).
This is a prerequisite for any kernel.org submission attempt. The
existing MODULE_LICENSE("GPL") + MODULE_AUTHOR(Tarnyagin@stericsson.com)
declarations were already present and are unchanged here; the
mismatch between MODULE_AUTHOR and the (since-corrected) per-file
copyrights is now resolved.
99 lines
1.9 KiB
C
99 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Firmware download common interface
|
|
*
|
|
* Copyright (c) 2022, Bestechnic (Beijing) Co., Ltd.
|
|
*
|
|
*/
|
|
#ifndef __BES_FW_COMMON_H__
|
|
#define __BES_FW_COMMON_H__
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/printk.h>
|
|
#include <linux/string.h>
|
|
#include <linux/crc32.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/mm.h>
|
|
#include <linux/wait.h>
|
|
#include <linux/completion.h>
|
|
#include <linux/firmware.h>
|
|
#include <linux/fs.h>
|
|
#include <linux/version.h>
|
|
#include "bes2600.h"
|
|
|
|
/***** firmware macro *****/
|
|
#define BUF_SIZE 49152
|
|
#define RETRY_CNT_MAX 3
|
|
#define TIMEOUT_TIME 20
|
|
#define FRAME_HEADER_SIZE 0x04
|
|
#define CODE_DATA_USELESS_SIZE 0x04
|
|
/****frame header code****/
|
|
#define FRAME_HEADER_REPLY 0xB0
|
|
#define FRAME_HEADER_DOWNLOAD_INFO 0xB1
|
|
#define FRAME_HEADER_DOWNLOAD_DATA 0xB2
|
|
#define FRAME_HEADER_DOWNLOAD_END 0xB3
|
|
#define FRAME_HEADER_RUN_CODE 0xB4
|
|
|
|
/****frame length get****/
|
|
#define BES_FW_MSG_TOTAL_LEN(msg) (sizeof(struct fw_msg_hdr_t) + ((struct fw_msg_hdr_t )(msg)).len)
|
|
|
|
/****frame length get****/
|
|
#define BES2600_DPD_ADDR 0x2008C000
|
|
#define BES2600_FACTORY_ADDR 0x2008B000
|
|
|
|
/***** bes fw error code *****/
|
|
enum ERR_CODE {
|
|
ERR_NONE = 0x00,
|
|
ERR_LEN = 0x01,
|
|
};
|
|
|
|
/***** data struct *****/
|
|
struct frame_struct_t {
|
|
u8 type;
|
|
u8 frame_num;
|
|
u16 len;
|
|
u32 payload;
|
|
};
|
|
|
|
struct fw_msg_hdr_t {
|
|
u8 type;
|
|
u8 seq;
|
|
u16 len;
|
|
};
|
|
|
|
struct fw_msg_replay_t {
|
|
u32 replay;
|
|
};
|
|
|
|
struct fw_info_t {
|
|
u32 len;
|
|
u32 addr;
|
|
};
|
|
|
|
struct download_fw_t {
|
|
u32 addr;
|
|
u8 data[0];
|
|
};
|
|
|
|
struct fw_crc_t {
|
|
u32 crc32;
|
|
};
|
|
|
|
struct run_fw_t {
|
|
u32 addr;
|
|
};
|
|
|
|
struct exec_struct_t {
|
|
u32 entry;
|
|
u32 param;
|
|
u32 sp;
|
|
u32 exec_addr;
|
|
};
|
|
|
|
void bes_parse_fw_info(const u8 *data, u32 data_len, u32 *load_addr, u32 *crc32);
|
|
int bes_frame_rsp_check(void *rsp, u8 frame_num);
|
|
const u8* bes2600_get_firmware_version_info(const u8 *data, u32 count);
|
|
|
|
#endif
|