[Top] [All Lists]

Re: VR4131 - MQ1132 - UPD63335

To: "Suresh. R" <>
Subject: Re: VR4131 - MQ1132 - UPD63335
From: Ralf Baechle <>
Date: Sat, 17 Jan 2004 13:20:22 +0100
In-reply-to: <>
Original-recipient: rfc822;
References: <>
User-agent: Mutt/1.4.1i
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  */

        /* Success, make it blink ... */
        foo->blinkenlight = 42;
        /* Done, unmap before exiting.

This removes all knowledge about how a particular architecture handles
mappings from the driver and therefore is generally the prefered way in

Linux/MIPS optimize the case where an unmapped area can be used, so no
runtime overhead at all.


<Prev in Thread] Current Thread [Next in Thread>