The ioctl names are a little backwards, since they are described looking into the DMA rather than out of the DMA. However to do what you want, you can use:
txchan_ioctl(tx, ALT_DMA_RX_STREAM_ON, (void *) dest_addr);
From the 1.1 version of the kit, you can instead use the (hopefully) more intuitive:
txchan_ioctl(tx, ALT_DMA_TX_ONLY_ON, (void *) dest_addr);
to write to a single location, or:
txchan_ioctl(tx, ALT_DMA_RX_ONLY_ON, (void *) dest_addr);
to read from a single location.
The old names (like ALT_DMA_RX_STREAM_ON) will continue to work, but I'd recommend using these new defines instead.
With the HAL there is no need to start your next transfer in the ISR. You can call
alt_dma_txchan_send() before the current transfer has completed. The new transfer will be queued and then started as soon as the device is ready.
You can, if you wish, call alt_dma_txchan_send() from within the "done" callback function of the previous transfer. This will achieve what you are asking for - but will increase the amount of processing performed at ISR level. It will also increase the delay between transfers.