hive_dma_snd
hive_dma_snd(dma_id, read ? (unsigned int)(addr_a) : (unsigned int)(addr_b)); \
hive_dma_snd(dma_id, to_is_var); \
hive_dma_snd(dma_id, from_is_var); \
hive_dma_snd(dma_id, DMA_PACK(_DMA_V2_SET_CRUN_COMMAND, CMD)); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(_DMA_V2_INIT_A_COMMAND, channel)); \
hive_dma_snd(dma_id, value); \
hive_dma_snd(dma_id, address); \
hive_dma_snd(dma_id, is_var); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(_DMA_V2_CONFIG_CHANNEL_COMMAND, channel)); \
hive_dma_snd(dma_id, DMA_PACK_SETUP(connection, extension)); \
hive_dma_snd(dma_id, stride_A); \
hive_dma_snd(dma_id, DMA_PACK_CROP_ELEMS(elems_A, cropping_A)); \
hive_dma_snd(dma_id, width_A); \
hive_dma_snd(dma_id, stride_B); \
hive_dma_snd(dma_id, DMA_PACK_CROP_ELEMS(elems_B, cropping_B)); \
hive_dma_snd(dma_id, width_B); \
hive_dma_snd(dma_id, height); \
hive_dma_snd(dma_id, DMA_PACK(_DMA_V2_SET_CRUN_COMMAND, CMD)); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(cmd, channel)); \
hive_dma_snd(dma_id, to_addr); \
hive_dma_snd(dma_id, from_addr_value); \
hive_dma_snd(dma_id, to_is_var); \
hive_dma_snd(dma_id, from_is_var); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(_DMA_V2_CONFIG_CHANNEL_COMMAND, channel)); \
hive_dma_snd(dma_id, DMA_PACK_SETUP(connection, extension)); \
hive_dma_snd(dma_id, 0); \
hive_dma_snd(dma_id, DMA_PACK_CROP_ELEMS(elems_A, 0)); \
hive_dma_snd(dma_id, 0); \
hive_dma_snd(dma_id, 0); \
hive_dma_snd(dma_id, DMA_PACK_CROP_ELEMS(elems_B, 0)); \
hive_dma_snd(dma_id, 0); \
hive_dma_snd(dma_id, 1); \
hive_dma_snd(dma_id, _DMA_V2_SET_CHANNEL_PARAM_COMMAND | DMA_PACK_CHANNEL(channel) | DMA_PACK_PARAM(param)); \
hive_dma_snd(dma_id, value); \
hive_dma_snd(dma_id, DMA_PACK(_DMA_V2_SET_CRUN_COMMAND, CMD)); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(read ? _DMA_V2_MOVE_B2A_COMMAND : _DMA_V2_MOVE_A2B_COMMAND, channel)); \
hive_dma_snd(dma_id, read ? (unsigned int)(addr_b) : (unsigned int)(addr_a)); \
hive_dma_snd(dma_id, read ? (unsigned int)(addr_a) : (unsigned int)(addr_b)); \
hive_dma_snd(dma_id, to_is_var); \
hive_dma_snd(dma_id, from_is_var); \
hive_dma_snd(dma_id, DMA_PACK(_DMA_V2_SET_CRUN_COMMAND, CMD)); \
hive_dma_snd(dma_id, DMA_PACK_CMD_CHANNEL(read ? _DMA_V2_NO_ACK_MOVE_B2A_NO_SYNC_CHK_COMMAND : _DMA_V2_NO_ACK_MOVE_A2B_NO_SYNC_CHK_COMMAND, channel)); \
hive_dma_snd(dma_id, read ? (unsigned int)(addr_b) : (unsigned int)(addr_a)); \