__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)))
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)