mirror of https://github.com/torvalds/linux.git
MMC core:
- Move rpmb_frame struct and constants to rpmb common header -----BEGIN PGP SIGNATURE----- iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAmjyBP8XHHVsZi5oYW5z c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjClIPBAAnf5knVISlKIl922oXiuD/WFR BX18mt80V+1IFiKv6zm6AN4K0n8sf1p2IZbJz5ka6gpvWATIEnelRSuSqSCdKJBG YVRu8tlET8h4BIc8oTB9b72vfbccXaFmFmyen1wZ+mXjOg4WnPQ0IbFkRv4ArWV6 Hgurc3bJSwfPuWjq/J8ANHhepmkx/8asNPJB9jwlXf23kcuwlLBeQoZ1A3PUTWfe slHJWoQobKf682XlFCaSmf6ZO0bvT9YAGo/GwVFKlXlcg2rLXuA2ksX8qhtqqMaB oX8X3pBMTLJhbCxwO1eVKqE9AmAiHV/NM52m0Z5Z47qIxaRAla3Mt7U2oG92fZoy r/N5o+heZscRELuG/XlhpRUaP3YrJj7oLoSH4wF6efUDvnZSTQReYuEePbJxszML 7juEU/+xiFnN26OJc+Z0aXGXMUvJaxPoX+h9h5PeIlrn9ruUw2+iDb53bSLc01fr qAtP9127SGA0dWlpCamQtWThTvzSQUy7tSAcFHssqQXPdlVjZzc2MfWJXI1ODfPN UAtLmjcBhAo06oYsJHxn6riuA9wJrh/fi4ijh+deQT4clPN2F07xadfZPjRsTfym 6G4sXnky2sfUPL+91PKr2WTWPMZwMJ/rtQxM6prmXmQkAkJxyrBMS261AghTnkZZ OOYr1wLvQohhAQOMhq4= =HuJc -----END PGP SIGNATURE----- Merge tag 'mmc-v6.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc Pull mmc cleanup from Ulf Hansson: "Move rpmb_frame struct and constants to rpmb common header This helps us to avoid sharing an immutable branch between our git trees. I was planning to send it before rc1, but I didn't make it" * tag 'mmc-v6.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: rpmb: move rpmb_frame struct and constants to common header
This commit is contained in:
commit
cf1ea8854e
|
|
@ -79,48 +79,6 @@ MODULE_ALIAS("mmc:block");
|
|||
#define MMC_EXTRACT_INDEX_FROM_ARG(x) ((x & 0x00FF0000) >> 16)
|
||||
#define MMC_EXTRACT_VALUE_FROM_ARG(x) ((x & 0x0000FF00) >> 8)
|
||||
|
||||
/**
|
||||
* struct rpmb_frame - rpmb frame as defined by eMMC 5.1 (JESD84-B51)
|
||||
*
|
||||
* @stuff : stuff bytes
|
||||
* @key_mac : The authentication key or the message authentication
|
||||
* code (MAC) depending on the request/response type.
|
||||
* The MAC will be delivered in the last (or the only)
|
||||
* block of data.
|
||||
* @data : Data to be written or read by signed access.
|
||||
* @nonce : Random number generated by the host for the requests
|
||||
* and copied to the response by the RPMB engine.
|
||||
* @write_counter: Counter value for the total amount of the successful
|
||||
* authenticated data write requests made by the host.
|
||||
* @addr : Address of the data to be programmed to or read
|
||||
* from the RPMB. Address is the serial number of
|
||||
* the accessed block (half sector 256B).
|
||||
* @block_count : Number of blocks (half sectors, 256B) requested to be
|
||||
* read/programmed.
|
||||
* @result : Includes information about the status of the write counter
|
||||
* (valid, expired) and result of the access made to the RPMB.
|
||||
* @req_resp : Defines the type of request and response to/from the memory.
|
||||
*
|
||||
* The stuff bytes and big-endian properties are modeled to fit to the spec.
|
||||
*/
|
||||
struct rpmb_frame {
|
||||
u8 stuff[196];
|
||||
u8 key_mac[32];
|
||||
u8 data[256];
|
||||
u8 nonce[16];
|
||||
__be32 write_counter;
|
||||
__be16 addr;
|
||||
__be16 block_count;
|
||||
__be16 result;
|
||||
__be16 req_resp;
|
||||
} __packed;
|
||||
|
||||
#define RPMB_PROGRAM_KEY 0x1 /* Program RPMB Authentication Key */
|
||||
#define RPMB_GET_WRITE_COUNTER 0x2 /* Read RPMB write counter */
|
||||
#define RPMB_WRITE_DATA 0x3 /* Write data to RPMB partition */
|
||||
#define RPMB_READ_DATA 0x4 /* Read data from RPMB partition */
|
||||
#define RPMB_RESULT_READ 0x5 /* Read result request (Internal) */
|
||||
|
||||
#define RPMB_FRAME_SIZE sizeof(struct rpmb_frame)
|
||||
#define CHECK_SIZE_NEQ(val) ((val) != sizeof(struct rpmb_frame))
|
||||
#define CHECK_SIZE_ALIGNED(val) IS_ALIGNED((val), sizeof(struct rpmb_frame))
|
||||
|
|
|
|||
|
|
@ -61,6 +61,50 @@ struct rpmb_dev {
|
|||
|
||||
#define to_rpmb_dev(x) container_of((x), struct rpmb_dev, dev)
|
||||
|
||||
/**
|
||||
* struct rpmb_frame - RPMB frame structure for authenticated access
|
||||
*
|
||||
* @stuff : stuff bytes, a padding/reserved area of 196 bytes at the
|
||||
* beginning of the RPMB frame. They don’t carry meaningful
|
||||
* data but are required to make the frame exactly 512 bytes.
|
||||
* @key_mac : The authentication key or the message authentication
|
||||
* code (MAC) depending on the request/response type.
|
||||
* The MAC will be delivered in the last (or the only)
|
||||
* block of data.
|
||||
* @data : Data to be written or read by signed access.
|
||||
* @nonce : Random number generated by the host for the requests
|
||||
* and copied to the response by the RPMB engine.
|
||||
* @write_counter: Counter value for the total amount of the successful
|
||||
* authenticated data write requests made by the host.
|
||||
* @addr : Address of the data to be programmed to or read
|
||||
* from the RPMB. Address is the serial number of
|
||||
* the accessed block (half sector 256B).
|
||||
* @block_count : Number of blocks (half sectors, 256B) requested to be
|
||||
* read/programmed.
|
||||
* @result : Includes information about the status of the write counter
|
||||
* (valid, expired) and result of the access made to the RPMB.
|
||||
* @req_resp : Defines the type of request and response to/from the memory.
|
||||
*
|
||||
* The stuff bytes and big-endian properties are modeled to fit to the spec.
|
||||
*/
|
||||
struct rpmb_frame {
|
||||
u8 stuff[196];
|
||||
u8 key_mac[32];
|
||||
u8 data[256];
|
||||
u8 nonce[16];
|
||||
__be32 write_counter;
|
||||
__be16 addr;
|
||||
__be16 block_count;
|
||||
__be16 result;
|
||||
__be16 req_resp;
|
||||
};
|
||||
|
||||
#define RPMB_PROGRAM_KEY 0x1 /* Program RPMB Authentication Key */
|
||||
#define RPMB_GET_WRITE_COUNTER 0x2 /* Read RPMB write counter */
|
||||
#define RPMB_WRITE_DATA 0x3 /* Write data to RPMB partition */
|
||||
#define RPMB_READ_DATA 0x4 /* Read data from RPMB partition */
|
||||
#define RPMB_RESULT_READ 0x5 /* Read result request (Internal) */
|
||||
|
||||
#if IS_ENABLED(CONFIG_RPMB)
|
||||
struct rpmb_dev *rpmb_dev_get(struct rpmb_dev *rdev);
|
||||
void rpmb_dev_put(struct rpmb_dev *rdev);
|
||||
|
|
|
|||
Loading…
Reference in New Issue