The current version of dwmmc uses chained structure where second pointer (des3) of each descriptor is a pointer to the next descriptor in the ring.
dwmmc works rather in request-completion mode and structure of descriptors is reset anyway during the setup of the next request. This makes double-buffer structure more natural and much easier to implement.
Migration from chained mode to double-buffer mode also increases capacity of single request up to 2MB (256 descriptors * 2 buffers per descriptor * 4096 bytes per buffer), which
was never hit in my own tests – the largest requests were up to 1MB in size. This means we have still a lot of space when upper layers of the stack decide to send larger requests.