diff -drupN a/drivers/char/sunxi-scr/sunxi-scr-user.h b/drivers/char/sunxi-scr/sunxi-scr-user.h --- a/drivers/char/sunxi-scr/sunxi-scr-user.h 1970-01-01 03:00:00.000000000 +0300 +++ b/drivers/char/sunxi-scr/sunxi-scr-user.h 2022-06-12 05:28:14.000000000 +0300 @@ -0,0 +1,87 @@ +/* + * drivers/char/sunxi-scr/sunxi-scr-user.h + * + * Copyright (C) 2016 Allwinner. + * fuzhaoke + * + * common data structure or macro used both kernel & application + * + * 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. + */ + +#ifndef __SUNXI_SCR_USER_H__ +#define __SUNXI_SCR_USER_H__ + +#define MAX_ATR_LEN 33 + +/* ioctrol command */ +#define SCR_IOC_MAGIC 'c' +#define SCR_IOCGSTATUS _IOR(SCR_IOC_MAGIC, 0, uint32_t) +#define SCR_IOCRESET _IO(SCR_IOC_MAGIC, 1) +#define SCR_IOCGATR _IOR(SCR_IOC_MAGIC, 2, struct scr_atr) +#define SCR_IOCGPARA _IOR(SCR_IOC_MAGIC, 3, struct scr_card_para) +#define SCR_IOCSPARA _IOW(SCR_IOC_MAGIC, 4, struct scr_card_para) +#define SCR_IOCGATRPARA _IOW(SCR_IOC_MAGIC, 5, struct smc_atr_para) +#define SCR_IOCGPPSPARA _IOW(SCR_IOC_MAGIC, 6, struct smc_pps_para) +#define SCR_IOCWRDATA _IOWR(SCR_IOC_MAGIC, 7, struct scr_wr_data) + +enum scr_card_sta { + SCR_CARD_OUT = 0, + SCR_CARD_IN, +}; + +/* ATR data */ +struct scr_atr { + unsigned char atr_len; + unsigned char atr_data[MAX_ATR_LEN]; +}; + +/* current card parameters & status */ +struct scr_card_para { + uint16_t f; + uint16_t d; + uint16_t freq; + uint8_t recv_no_parity; + uint8_t protocol_type; +}; + +/* parse ATR data */ +struct smc_atr_para { + uint8_t TS; + + uint8_t TK[15]; + uint8_t TK_NUM; + + uint8_t T; /* Protocol */ + uint8_t FMAX; /* unit: MHz */ + uint32_t F; + uint32_t D; + uint32_t I; /* Max Cunrrent for Program, in mA */ + uint32_t P; /* Pogram Voltage */ + uint32_t N; /* Extra Guard Time, in ETUs */ +}; + +/* parse ATR data for PPS */ +struct smc_pps_para { + uint8_t ppss; + uint8_t pps0; + uint8_t pps1; + uint8_t pps2; + uint8_t pps3; + uint8_t pck; +}; + +/* write cmd and read data immediately */ +struct scr_wr_data { + uint8_t *cmd_buf; + uint32_t cmd_len; + uint8_t *rtn_data; + uint32_t *rtn_len; + uint8_t *psw1; + uint8_t *psw2; +}; + +#endif