From 065e0fc7cd11c8cc2d5a2be35e0e3e68cfae6427 Mon Sep 17 00:00:00 2001 From: Anuj Gangwar Date: Fri, 23 Nov 2018 09:25:19 +0530 Subject: include: uapi: move linux user-interface headers Move the linux tegra_cpc user-interface headers from include/linux/ to include/uapi/linux/ Change the path for above headers in the dependent files. Bug 2062672 Change-Id: I674909f3188a746f3283b2e92296d9c18a2e767c Signed-off-by: Anuj Gangwar Reviewed-on: https://git-master.nvidia.com/r/1956560 (cherry picked from commit 1373b074d8a76869e143337caeba5d42d213e43f) Reviewed-on: https://git-master.nvidia.com/r/2109985 Reviewed-by: Bibek Basu GVS: Gerrit_Virtual_Submit Reviewed-by: mobile promotions Tested-by: mobile promotions --- include/linux/tegra_cpc.h | 173 ---------------------------------------------- 1 file changed, 173 deletions(-) delete mode 100644 include/linux/tegra_cpc.h (limited to 'include/linux') diff --git a/include/linux/tegra_cpc.h b/include/linux/tegra_cpc.h deleted file mode 100644 index 84668c595..000000000 --- a/include/linux/tegra_cpc.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * tegra_cpc.c - Access CPC storage blocks through i2c bus - * - * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * 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 _TEGRA_CPC_H -#define _TEGRA_CPC_H - -#include -#include - -enum req_resp_t { - CPC_READ_M_COUNT = 0x2, - CPC_WRITE_FRAME, - CPC_READ_FRAME, - CPC_GET_RESULT = 0x5, - CPC_GET_VERSION = 0x6, -}; - -enum result_t { - CPC_RESULT_OK = 0x0, - CPC_RESULT_GENERAL_FAILURE, - CPC_RESULT_AUTH_FAILURE, - CPC_RESULT_COUNTER_FAILURE, - CPC_RESULT_ADDR_FAILURE, - CPC_RESULT_WRITE_FAILURE = 0x5, - CPC_RESULT_READ_FAILURE, - CPC_RESULT_UNKNOWN_REQUEST, - CPC_RESULT_KEY_PROG_SEQ_FAILURE, - CPC_RESULT_KEY_PROG_PG_CORRUPT, - CPC_RESULT_KEY_PROG_DONE_PRIOR = 0xA, - CPC_RESULT_DATA_LENGTH_MISMATCH, - CPC_RESULT_UNEXPECTED_CONDITION, - CPC_RESULT_CONTROLLER_BUSY -}; - -#define CPC_MAX_DATA_SIZE 48 -#define CPC_KEY_SIZE 32 -#define CPC_HMAC_SIZE 32 -#define CPC_DERIVATION_SIZE 28 -#define CPC_NONCE_SIZE 4 -#define CPC_COUNTER_SIZE 4 -#define CPC_MAJOR_VER_SIZE 3 -#define CPC_MINOR_VER_SIZE 1 - -/* - * CPC field description - * - * req is a command ID - * result is the status as returned by uC. If the communication to uC was - * not successful, this value will be set by the host - * len is the byte indicating how many bytes in data are valid data - * For read, this tells the kernel what is the expected size of - * data which will be returned by uC - * For write, this tells the kernel how many bytes in the data - * field are valid data. - * The range of this is 0 < n && n <= CPC_MAX_DATA_SIZE - * nonce is the counter which will be used for HMAC calculation. It is - * also used to correlate the response to the request. Host - * uses this value to match the response and the request - * write_counter - * The counter which indicates how many successful commits have - * been made by uC for the life time of uC - * data is the field which the client of uC could use to send / receive - * data which will be stored permanently by uC. - * derivation_value - * This field should be used to pass the unique data during - * read counter, which will be used for encryption later by - * both parties - * HMAC is the field which the client of uC could use to authenticate - * packets sent to and received from uC. If this field does not - * match uC's expectation, the packet will be rejected. - * HMAC is sent last tegra=>uC - * HMAC is sent first uC=>tegra - */ - -/* - * Structs used for serialization and deserialization. The implementation is - * order sensitive. Any change to the struct would require a change to - * oneshot serialization / deserialization - * - * Notation: "Used for *" applies to all fields below until the end of struct - */ - -struct tegra_cpc_read_counter_data { - /* Used for request */ - __u8 nonce[CPC_NONCE_SIZE]; - - /* Used for response */ - __u8 write_counter[CPC_COUNTER_SIZE]; - /* Used for request */ - __u8 derivation_value[CPC_DERIVATION_SIZE]; - /* Used for response */ - __u8 hmac[CPC_HMAC_SIZE]; -} __packed; - -struct tegra_cpc_write_frame_data { - /* Used for request */ - __u8 length; - __u8 nonce[CPC_NONCE_SIZE]; - __u8 write_counter[CPC_COUNTER_SIZE]; - __u8 data[CPC_MAX_DATA_SIZE]; - __u8 hmac[CPC_HMAC_SIZE]; -} __packed; - -struct tegra_cpc_read_frame_data { - /* Used for request */ - __u8 length; - __u8 nonce[CPC_NONCE_SIZE]; - - /* Not used by kernel or uC as of now */ - __u8 write_counter[CPC_COUNTER_SIZE]; - - /* Used for response */ - __u8 data[CPC_MAX_DATA_SIZE]; - __u8 hmac[CPC_HMAC_SIZE]; -} __packed; - -struct tegra_cpc_get_version_data { - /* Used for request */ - __u8 nonce[CPC_NONCE_SIZE]; - - /* Used for response */ - __u8 minor_ver[CPC_MINOR_VER_SIZE]; - __u8 major_ver[CPC_MAJOR_VER_SIZE]; -} __packed; - -union tegra_cpc_cmd_data { - struct tegra_cpc_read_counter_data read_counter; - struct tegra_cpc_read_frame_data read_frame; - struct tegra_cpc_write_frame_data write_frame; - struct tegra_cpc_get_version_data get_version; -}; - -struct tegra_cpc_frame { - /* Used for request */ - __u8 req; - - /* Used for both request and response */ - union tegra_cpc_cmd_data cmd_data; - - /* Used for response of GET_STATUS */ - __u8 hmac[CPC_HMAC_SIZE]; - __u8 result; - __u8 nonce[CPC_NONCE_SIZE]; -} __packed; - -#define CPC_CMD_FIELD_SIZE(target_type, field) \ - sizeof(((struct target_type *) 0)->field) - -#define CPC_FIELD_SIZE(field) \ - CPC_CMD_FIELD_SIZE(struct tegra_cpc_frame, field) - -#define NVCPC_IOC_MAGIC 'C' - -/* - * Returns 0 if a communication with uC was successful, regardless of operation - * pass or fail. - */ -#define NVCPC_IOCTL_DO_IO _IOWR(NVCPC_IOC_MAGIC, 2, \ - struct tegra_cpc_frame) - -#endif -- cgit v1.2.2