common/sfc_efx/base: support NIC DMA memory regions API
[dpdk.git] / drivers / common / sfc_efx / base / efx_mcdi.h
index 96f237b..c91ea41 100644 (file)
@@ -289,6 +289,26 @@ efx_mcdi_phy_module_get_info(
        __in                    size_t len,
        __out_bcount(len)       uint8_t *data);
 
+LIBEFX_INTERNAL
+extern __checkReturn   efx_rc_t
+efx_mcdi_get_nic_addr_info(
+       __in            efx_nic_t *enp,
+       __out           uint32_t *mapping_typep);
+
+struct efx_nic_dma_region_info_s;
+
+LIBEFX_INTERNAL
+extern __checkReturn   efx_rc_t
+efx_mcdi_get_nic_addr_regions(
+       __in            efx_nic_t *enp,
+       __out           struct efx_nic_dma_region_info_s *endrip);
+
+LIBEFX_INTERNAL
+extern __checkReturn   efx_rc_t
+efx_mcdi_set_nic_addr_regions(
+       __in            efx_nic_t *enp,
+       __in            const struct efx_nic_dma_region_info_s *endrip);
+
 #define        MCDI_IN(_emr, _type, _ofst)                                     \
        ((_type *)((_emr).emr_in_buf + (_ofst)))
 
@@ -315,6 +335,17 @@ efx_mcdi_phy_module_get_info(
        EFX_POPULATE_DWORD_1(*(MCDI_IN2(_emr, efx_dword_t, _ofst) +     \
                             (_idx)), EFX_DWORD_0, _value)              \
 
+#define        MCDI_IN_SET_QWORD(_emr, _ofst, _value)                          \
+       EFX_POPULATE_QWORD_2(*MCDI_IN2(_emr, efx_qword_t, _ofst),       \
+               EFX_DWORD_0, ((_value) & 0xffffffff),                   \
+               EFX_DWORD_1, ((_value) >> 32))
+
+#define        MCDI_IN_SET_INDEXED_QWORD(_emr, _ofst, _idx, _value)            \
+       EFX_POPULATE_QWORD_2(*(MCDI_IN2(_emr, efx_qword_t, _ofst) +     \
+                       (_idx)),                                        \
+               EFX_DWORD_0, ((_value) & 0xffffffff),   \
+               EFX_DWORD_1, ((_value) >> 32))
+
 #define        MCDI_IN_POPULATE_DWORD_1(_emr, _ofst, _field1, _value1)         \
        EFX_POPULATE_DWORD_1(*MCDI_IN2(_emr, efx_dword_t, _ofst),       \
                MC_CMD_ ## _field1, _value1)