Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/nfc/s3fwrn5/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  firmware.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * NCI based driver for Samsung S3FWRN5 NFC chip
 *
 * Copyright (C) 2015 Samsung Electronics
 * Robert Baldyga <r.baldyga@samsung.com>
 */


#ifndef __LOCAL_S3FWRN5_FIRMWARE_H_
#define __LOCAL_S3FWRN5_FIRMWARE_H_

/* FW Message Types */
#define S3FWRN5_FW_MSG_CMD   0x00
#define S3FWRN5_FW_MSG_RSP   0x01
#define S3FWRN5_FW_MSG_DATA   0x02

/* FW Return Codes */
#define S3FWRN5_FW_RET_SUCCESS   0x00
#define S3FWRN5_FW_RET_MESSAGE_TYPE_INVALID 0x01
#define S3FWRN5_FW_RET_COMMAND_INVALID  0x02
#define S3FWRN5_FW_RET_PAGE_DATA_OVERFLOW 0x03
#define S3FWRN5_FW_RET_SECT_DATA_OVERFLOW 0x04
#define S3FWRN5_FW_RET_AUTHENTICATION_FAIL 0x05
#define S3FWRN5_FW_RET_FLASH_OPERATION_FAIL 0x06
#define S3FWRN5_FW_RET_ADDRESS_OUT_OF_RANGE 0x07
#define S3FWRN5_FW_RET_PARAMETER_INVALID 0x08

/* ---- FW Packet structures ---- */
#define S3FWRN5_FW_HDR_SIZE 4

struct s3fwrn5_fw_header {
 __u8 type;
 __u8 code;
 __u16 len;
};

#define S3FWRN5_FW_CMD_RESET   0x00

#define S3FWRN5_FW_CMD_GET_BOOTINFO  0x01

struct s3fwrn5_fw_cmd_get_bootinfo_rsp {
 __u8 hw_version[4];
 __u16 sector_size;
 __u16 page_size;
 __u16 frame_max_size;
 __u16 hw_buffer_size;
};

#define S3FWRN5_FW_CMD_ENTER_UPDATE_MODE 0x02

struct s3fwrn5_fw_cmd_enter_updatemode {
 __u16 hashcode_size;
 __u16 signature_size;
};

#define S3FWRN5_FW_CMD_UPDATE_SECTOR  0x04

struct s3fwrn5_fw_cmd_update_sector {
 __u32 base_address;
};

#define S3FWRN5_FW_CMD_COMPLETE_UPDATE_MODE 0x05

struct s3fwrn5_fw_image {
 const struct firmware *fw;

 char date[13];
 u32 version;
 const void *sig;
 u32 sig_size;
 const void *image;
 u32 image_sectors;
 const void *custom_sig;
 u32 custom_sig_size;
};

struct s3fwrn5_fw_info {
 struct nci_dev *ndev;
 struct s3fwrn5_fw_image fw;
 char fw_name[NFC_FIRMWARE_NAME_MAXSIZE + 1];

 const void *sig;
 u32 sig_size;
 u32 sector_size;
 u32 base_addr;

 struct completion completion;
 struct sk_buff *rsp;
 char parity;
};

int s3fwrn5_fw_request_firmware(struct s3fwrn5_fw_info *fw_info);
void s3fwrn5_fw_init(struct s3fwrn5_fw_info *fw_info, const char *fw_name);
int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info);
bool s3fwrn5_fw_check_version(const struct s3fwrn5_fw_info *fw_info, u32 version);
int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info);
void s3fwrn5_fw_cleanup(struct s3fwrn5_fw_info *fw_info);

int s3fwrn5_fw_recv_frame(struct nci_dev *ndev, struct sk_buff *skb);

#endif /* __LOCAL_S3FWRN5_FIRMWARE_H_ */

Messung V0.5
C=97 H=97 G=96

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.