]> Git Repo - linux.git/blobdiff - drivers/fpga/dfl.h
net: bgmac: Fix return value check for fixed_phy_register()
[linux.git] / drivers / fpga / dfl.h
index 06cfcd5e84bba837644393d999edcd805e402a9f..1d724a28f00ad33b49a159d0d74e3f84dce80f24 100644 (file)
 #define DFH_REVISION           GENMASK_ULL(15, 12)     /* Feature revision */
 #define DFH_NEXT_HDR_OFST      GENMASK_ULL(39, 16)     /* Offset to next DFH */
 #define DFH_EOL                        BIT_ULL(40)             /* End of list */
+#define DFH_VERSION            GENMASK_ULL(59, 52)     /* DFH version */
 #define DFH_TYPE               GENMASK_ULL(63, 60)     /* Feature type */
 #define DFH_TYPE_AFU           1
 #define DFH_TYPE_PRIVATE       3
 #define DFH_TYPE_FIU           4
 
+/*
+ * DFHv1 Register Offset definitons
+ * In DHFv1, DFH + GUID + CSR_START + CSR_SIZE_GROUP + PARAM_HDR + PARAM_DATA
+ * as common header registers
+ */
+#define DFHv1_CSR_ADDR         0x18  /* CSR Register start address */
+#define DFHv1_CSR_SIZE_GRP     0x20  /* Size of Reg Block and Group/tag */
+#define DFHv1_PARAM_HDR                0x28  /* Optional First Param header */
+
+/*
+ * CSR Rel Bit, 1'b0 = relative (offset from feature DFH start),
+ * 1'b1 = absolute (ARM or other non-PCIe use)
+ */
+#define DFHv1_CSR_ADDR_REL     BIT_ULL(0)
+
+/* CSR Header Register Bit Definitions */
+#define DFHv1_CSR_ADDR_MASK       GENMASK_ULL(63, 1)  /* 63:1 of CSR address */
+
+/* CSR SIZE Goup Register Bit Definitions */
+#define DFHv1_CSR_SIZE_GRP_INSTANCE_ID GENMASK_ULL(15, 0)      /* Enumeration instantiated IP */
+#define DFHv1_CSR_SIZE_GRP_GROUPING_ID GENMASK_ULL(30, 16)     /* Group Features/interfaces */
+#define DFHv1_CSR_SIZE_GRP_HAS_PARAMS  BIT_ULL(31)             /* Presence of Parameters */
+#define DFHv1_CSR_SIZE_GRP_SIZE                GENMASK_ULL(63, 32)     /* Size of CSR Block in bytes */
+
+/* PARAM Header Register Bit Definitions */
+#define DFHv1_PARAM_HDR_ID             GENMASK_ULL(15, 0) /* Id of this Param  */
+#define DFHv1_PARAM_HDR_VER            GENMASK_ULL(31, 16) /* Version Param */
+#define DFHv1_PARAM_HDR_NEXT_OFFSET    GENMASK_ULL(63, 35) /* Offset of next Param */
+#define DFHv1_PARAM_HDR_NEXT_EOP       BIT_ULL(32)
+#define DFHv1_PARAM_DATA               0x08  /* Offset of Param data from Param header */
+
+#define DFHv1_PARAM_ID_MSI_X           0x1
+#define DFHv1_PARAM_MSI_X_NUMV         GENMASK_ULL(63, 32)
+#define DFHv1_PARAM_MSI_X_STARTV       GENMASK_ULL(31, 0)
+
 /* Next AFU Register Bitfield */
 #define NEXT_AFU_NEXT_DFH_OFST GENMASK_ULL(23, 0)      /* Offset to next AFU */
 
@@ -231,6 +267,7 @@ struct dfl_feature_irq_ctx {
  *
  * @dev: ptr to pdev of the feature device which has the sub feature.
  * @id: sub feature id.
+ * @revision: revision of this sub feature.
  * @resource_index: each sub feature has one mmio resource for its registers.
  *                 this index is used to find its mmio resource from the
  *                 feature dev (platform device)'s resources.
@@ -240,6 +277,9 @@ struct dfl_feature_irq_ctx {
  * @ops: ops of this sub feature.
  * @ddev: ptr to the dfl device of this sub feature.
  * @priv: priv data of this feature.
+ * @dfh_version: version of the DFH
+ * @param_size: size of dfh parameters
+ * @params: point to memory copy of dfh parameters
  */
 struct dfl_feature {
        struct platform_device *dev;
@@ -252,6 +292,9 @@ struct dfl_feature {
        const struct dfl_feature_ops *ops;
        struct dfl_device *ddev;
        void *priv;
+       u8 dfh_version;
+       unsigned int param_size;
+       void *params;
 };
 
 #define FEATURE_DEV_ID_UNUSED  (-1)
This page took 0.031971 seconds and 4 git commands to generate.