mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
07a3857d46
PD#SWPL-176790 Problem: S6: support read cali data Solution: S6: support read cali data Verify: S6 BL208 Change-Id: I3c3d7ba9f6b9ad619141ef0496b74c6648007d4a Signed-off-by: Zhongfu Luo <zhongfu.luo@amlogic.com>
137 lines
3.0 KiB
C
137 lines
3.0 KiB
C
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
|
|
/*
|
|
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __EFUSE_H
|
|
#define __EFUSE_H
|
|
|
|
/* #define EFUSE_READ_ONLY */
|
|
|
|
#ifndef EFUSE_READ_ONLY
|
|
#define EFUSE_CLASS_ATTR CLASS_ATTR_RW
|
|
#else
|
|
#define EFUSE_CLASS_ATTR CLASS_ATTR_RO
|
|
#endif
|
|
|
|
#define EFUSE_CHECK_NAME_LEN 32
|
|
|
|
struct aml_efuse_dev {
|
|
struct platform_device *pdev;
|
|
struct class cls;
|
|
struct cdev cdev;
|
|
dev_t devno;
|
|
void __iomem *reg_base;
|
|
unsigned int secureboot_mask;
|
|
char name[EFUSE_CHECK_NAME_LEN];
|
|
};
|
|
|
|
struct aml_efuse_key {
|
|
int num;
|
|
struct efusekey_info *infos;
|
|
};
|
|
|
|
#define EFUSE_INFO_GET _IO('f', 0x40)
|
|
|
|
#define EFUSE_HAL_API_READ 0
|
|
#define EFUSE_HAL_API_WRITE 1
|
|
#define EFUSE_HAL_API_USER_MAX 3
|
|
|
|
#define AML_DATA_PROCESS (0x820000FF)
|
|
#define AML_D_P_W_EFUSE_AMLOGIC (0x20)
|
|
#define EFUSE_PATTERN_SIZE (0x400)
|
|
#define EFUSE_OBJ_READ (0x8200003B)
|
|
#define EFUSE_OBJ_WRITE (0x8200003C)
|
|
|
|
enum efuse_obj_status_e {
|
|
EFUSE_OBJ_SUCCESS = 0,
|
|
|
|
EFUSE_OBJ_ERR_OTHER_INTERNAL = 1,
|
|
|
|
EFUSE_OBJ_ERR_INVALID_DATA = 100,
|
|
EFUSE_OBJ_ERR_NOT_FOUND,
|
|
EFUSE_OBJ_ERR_DEPENDENCY,
|
|
EFUSE_OBJ_ERR_SIZE,
|
|
EFUSE_OBJ_ERR_NOT_SUPPORT,
|
|
|
|
EFUSE_OBJ_ERR_ACCESS = 200,
|
|
EFUSE_OBJ_ERR_WRITE_PROTECTED = 201,
|
|
|
|
EFUSE_OBJ_ERR_UNKNOWN = 300,
|
|
EFUSE_OBJ_ERR_INTERNAL,
|
|
};
|
|
|
|
enum efuse_obj_info_e {
|
|
EFUSE_OBJ_EFUSE_DATA = 0,
|
|
EFUSE_OBJ_LOCK_STATUS,
|
|
};
|
|
|
|
struct efuse_obj_field_t {
|
|
char name[48];
|
|
unsigned char data[32];
|
|
unsigned int size;
|
|
};
|
|
|
|
/* efuse HAL_API arg */
|
|
struct efuse_hal_api_arg {
|
|
unsigned int cmd;
|
|
unsigned int offset;
|
|
unsigned int size;
|
|
unsigned long buffer;
|
|
unsigned long retcnt;
|
|
};
|
|
|
|
struct aml_efuse_cmd {
|
|
unsigned int read_cmd;
|
|
unsigned int write_cmd;
|
|
unsigned int get_max_cmd;
|
|
unsigned int mem_in_base_cmd;
|
|
unsigned int mem_out_base_cmd;
|
|
};
|
|
|
|
struct lockable_info {
|
|
char itemname[EFUSE_CHECK_NAME_LEN];
|
|
unsigned int subcmd;
|
|
};
|
|
|
|
struct aml_efuse_lockable_check {
|
|
unsigned int main_cmd;
|
|
unsigned int item_num;
|
|
struct lockable_info *infos;
|
|
};
|
|
|
|
extern struct aml_efuse_cmd efuse_cmd;
|
|
extern void __iomem *sharemem_input_base;
|
|
extern void __iomem *sharemem_output_base;
|
|
extern unsigned int efuse_obj_cmd_status;
|
|
extern unsigned int efuse_cali_item_read;
|
|
|
|
ssize_t efuse_get_max(void);
|
|
ssize_t efuse_read_usr(char *buf, size_t count, loff_t *ppos);
|
|
ssize_t efuse_write_usr(char *buf, size_t count, loff_t *ppos);
|
|
unsigned long efuse_amlogic_set(char *buf, size_t count);
|
|
u32 efuse_obj_write(u32 obj_id, char *name, u8 *buff, u32 size);
|
|
u32 efuse_obj_read(u32 obj_id, char *name, u8 *buff, u32 *size);
|
|
|
|
/*return: 0:is configurated, -1: don't cfg*/
|
|
int efuse_burn_lockable_is_cfg(char *itemname);
|
|
/*
|
|
* return: 1:burned(wrote), 0: not write, -1: fail
|
|
*/
|
|
int efuse_burn_check_burned(char *itemname);
|
|
|
|
#ifdef CONFIG_AMLOGIC_EFUSE
|
|
int __init aml_efuse_init(void);
|
|
void aml_efuse_exit(void);
|
|
#else
|
|
static int __init aml_efuse_init(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static void aml_efuse_exit(void)
|
|
{
|
|
}
|
|
#endif
|
|
#endif
|