У меня нет патчей для spi, поэтому ничего подсказать не смогу.
Почитайте, может кое-что прояснится:
http://lwn.net/images/pdf/LDD3/ch15.pdfdma_buff_phys = __pa(dma_buff);
Контроллер dma должен понимать когда ему дают физ.адрес dma_buff_phys и обрабатывать чтение/запись в dma_buff. Если интерфейс spi неправильно реагирует, то может не все регистры сконфигурены или патч конкретно для этого контроллера нужно править. Может ещё при передаче указателя в user space есть ошибка? В ядре этот макрос точно работает.