At Tue, 7 Aug 2007 18:54:02 +0100, Ralf Baechle wrote:
On Tue, Aug 07, 2007 at 11:01:57PM +0900, Atsushi Nemoto wrote:
On Tue, 7 Aug 2007 10:18:04 +0400, "Dajie Tan" jiankemeng@gmail.com wrote:
static inline unsigned long virt_to_phys(volatile const void *address) {
return (unsigned long)address - PAGE_OFFSET + PHYS_OFFSET;
return ((unsigned long)address & 0x1fffffff) + PHYS_OFFSET;
}
This makes virt_to_phys() a bit slower, and more importantly, breaks 64-bit kernel.
It's ALSA that is doing funny things here so there is no point in fixing the arch code to work for ALSA.
Yep, but OTOH, the arch code doesn't provide a proper standard way to mmap the pages allocated via dma_alloc_coherent(). That's the missing piece, especially on mips and sparc. ARM has already one.
My wish is implementing dma_mmap_coherent() on all architectures, so that the driver can use it safely without messy ifdefs.
Takashi