Re: VR4131 - MQ1132 - UPD63335

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux