unsigned int emr_cmd;
uint8_t *emr_in_buf;
size_t emr_in_length;
- /* Outputs: retcode, buffer, length, and length used */
+ /* Outputs: retcode, buffer, length and length used */
efx_rc_t emr_rc;
uint8_t *emr_out_buf;
size_t emr_out_length;
(((mask) & (MC_CMD_PRIVILEGE_MASK_IN_GRP_ ## priv)) == \
(MC_CMD_PRIVILEGE_MASK_IN_GRP_ ## priv))
+#define EFX_MCDI_BUF_SIZE(_in_len, _out_len) \
+ EFX_P2ROUNDUP(size_t, \
+ MAX(MAX(_in_len, _out_len), (2 * sizeof (efx_dword_t))),\
+ sizeof (efx_dword_t))
+
/*
* The buffer size must be a multiple of dword to ensure that MCDI works
* properly with Siena based boards (which use on-chip buffer). Also, it
* error responses if the request/response buffer sizes are smaller.
*/
#define EFX_MCDI_DECLARE_BUF(_name, _in_len, _out_len) \
- uint8_t _name[P2ROUNDUP(MAX(MAX(_in_len, _out_len), \
- (2 * sizeof (efx_dword_t))), \
- sizeof (efx_dword_t))] = {0}
+ uint8_t _name[EFX_MCDI_BUF_SIZE(_in_len, _out_len)] = {0}
typedef enum efx_mcdi_feature_id_e {
EFX_MCDI_FEATURE_FW_UPDATE = 0,