configs: sama5d2_ptc_ek: add onewire and eeprom drivers
[oweals/u-boot.git] / include / fsl-mc / fsl_mc_cmd.h
index 7f87d4e3021c0fadd414bfd620aaeef4531631b4..591cda9685155094d60604fc11c3f3d7c1a5f3d9 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright 2013-2015 Freescale Semiconductor Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* Copyright 2013-2016 Freescale Semiconductor, Inc.
+ * Copyright 2017 NXP
  */
 #ifndef __FSL_MC_CMD_H
 #define __FSL_MC_CMD_H
@@ -24,6 +24,15 @@ struct mc_command {
        uint64_t params[MC_CMD_NUM_OF_PARAMS];
 };
 
+struct mc_rsp_create {
+       __le32 object_id;
+};
+
+struct mc_rsp_api_ver {
+       __le16 major_ver;
+       __le16 minor_ver;
+};
+
 enum mc_cmd_status {
        MC_CMD_STATUS_OK = 0x0, /*!< Completed successfully */
        MC_CMD_STATUS_READY = 0x1, /*!< Ready to be processed */
@@ -51,15 +60,15 @@ enum mc_cmd_status {
 #define MC_CMD_FLAG_INTR_DIS   0x01000000
 
 
-#define MC_CMD_HDR_CMDID_O     52      /* Command ID field offset */
-#define MC_CMD_HDR_CMDID_S     12      /* Command ID field size */
+#define MC_CMD_HDR_CMDID_O     48      /* Command ID field offset */
+#define MC_CMD_HDR_CMDID_S     16      /* Command ID field size */
 #define MC_CMD_HDR_STATUS_O    16      /* Status field offset */
-#define MC_CMD_HDR_TOKEN_O     38      /* Token field offset */
-#define MC_CMD_HDR_TOKEN_S     10      /* Token field size */
+#define MC_CMD_HDR_TOKEN_O     32      /* Token field offset */
+#define MC_CMD_HDR_TOKEN_S     16      /* Token field size */
 #define MC_CMD_HDR_STATUS_S    8       /* Status field size*/
 #define MC_CMD_HDR_FLAGS_O     0       /* Flags field offset */
 #define MC_CMD_HDR_FLAGS_S     32      /* Flags field size*/
-#define MC_CMD_HDR_FLAGS_MASK  0xFF00FF00 /* Command flags mask */
+#define MC_CMD_HDR_FLAGS_MASK  0x0000FFFF /* Command flags mask */
 
 #define MC_CMD_HDR_READ_STATUS(_hdr) \
        ((enum mc_cmd_status)mc_dec((_hdr), \
@@ -68,8 +77,11 @@ enum mc_cmd_status {
 #define MC_CMD_HDR_READ_TOKEN(_hdr) \
        ((uint16_t)mc_dec((_hdr), MC_CMD_HDR_TOKEN_O, MC_CMD_HDR_TOKEN_S))
 
+#define MC_PREP_OP(_ext, _param, _offset, _width, _type, _arg) \
+       ((_ext)[_param] |= cpu_to_le64(mc_enc((_offset), (_width), _arg)))
+
 #define MC_EXT_OP(_ext, _param, _offset, _width, _type, _arg) \
-       ((_ext)[_param] |= mc_enc((_offset), (_width), _arg))
+       (_arg = (_type)mc_dec(cpu_to_le64(_ext[_param]), (_offset), (_width)))
 
 #define MC_CMD_OP(_cmd, _param, _offset, _width, _type, _arg) \
        ((_cmd).params[_param] |= mc_enc((_offset), (_width), _arg))
@@ -77,11 +89,19 @@ enum mc_cmd_status {
 #define MC_RSP_OP(_cmd, _param, _offset, _width, _type, _arg) \
        (_arg = (_type)mc_dec(_cmd.params[_param], (_offset), (_width)))
 
+/*                cmd, param, offset, width, type, arg_name */
+#define MC_CMD_READ_OBJ_ID(cmd, obj_id) \
+       MC_RSP_OP(cmd, 0, 0,  32,  uint32_t,        obj_id)
+
+/* cmd, param, offset, width, type, arg_name */
+#define CMD_DESTROY_SET_OBJ_ID_PARAM0(cmd, object_id) \
+       MC_CMD_OP(cmd, 0, 0,  32,  uint32_t,  object_id)
+
 static inline uint64_t mc_encode_cmd_header(uint16_t cmd_id,
                                            uint32_t cmd_flags,
                                            uint16_t token)
 {
-       uint64_t hdr;
+       uint64_t hdr = 0;
 
        hdr = mc_enc(MC_CMD_HDR_CMDID_O, MC_CMD_HDR_CMDID_S, cmd_id);
        hdr |= mc_enc(MC_CMD_HDR_FLAGS_O, MC_CMD_HDR_FLAGS_S,
@@ -141,4 +161,22 @@ static inline enum mc_cmd_status mc_read_response(
        return status;
 }
 
+/**
+ * mc_read_version - read version of the given cmd
+ *
+ * @cmd: pointer to a filled command
+ * @major_version: major version value for the given cmd
+ * @minor_version: minor version value for the given cmd
+ */
+static inline void mc_cmd_read_api_version(struct mc_command *cmd,
+                                          u16 *major_ver,
+                                          u16 *minor_ver)
+{
+       struct mc_rsp_api_ver *rsp_params;
+
+       rsp_params = (struct mc_rsp_api_ver *)cmd->params;
+       *major_ver = le16_to_cpu(rsp_params->major_ver);
+       *minor_ver = le16_to_cpu(rsp_params->minor_ver);
+}
+
 #endif /* __FSL_MC_CMD_H */