On Fri, Jan 16, 2004 at 01:02:33PM +0530, Suresh. R wrote: > This might be a very basic question, but I am very new to this field. > So please help me. > > I am writing a linux device driver for UPD63335 audio codec. Its > controlled through the MQ1132 co-processor. The VR4131 is the processor. > The memory of MQ1132 is mapped to the processor memory in Kseg1 (0xA000 > 0000 onwards) which the manual says is TLB Unmapped region. Now my > question is is it necessary to map this region before using it in Linux. > Actually I have WinCE code for my reference. In that code the programmer > is mapping the region using Virtual Cpoy and Virtual Alloc. Is it > necessary to do that or Can I directly address the memory locatoin. Generally a driver under Linux maps a device in it's initialization routine with a bit of code like #define FOO_BASE 0x12340000UL /* physical address */ #define FOO_SIZE 0x00001000UL ... struct foo_regs *base; base = ioremap(0x1234, FOO_SIZE); if (!base) { /* Failed, game over */ harakiri(); ... } /* Success, make it blink ... */ foo->blinkenlight = 42; ... /* Done, unmap before exiting. unmap(base); ... This removes all knowledge about how a particular architecture handles mappings from the driver and therefore is generally the prefered way in Linux. Linux/MIPS optimize the case where an unmapped area can be used, so no runtime overhead at all. Ralf