[OpenBIOS] VESA & DMA
Clive Jenkins
clive.jenkins at clara.net
Fri Apr 7 11:18:29 CEST 2000
After reading your DMA question more carefully, I realise my last
posting did not help. Please ignore it.
Clive Jenkins.
Petazzoni Thomas wrote:
>
> Hi everybody,
>
> This has not much to do with the OpenBIOS project, but with low level
> programming. Everyone here seems to know lot of things in this domain,
> that's why i'm asking to all of u those questions :
>
> 1. Can we setup a VESA 2 (not VESA 3 !) configuration (select video
> mode, and everything) without making a int 0x10 ? We're programming a
> protected mode OS, and switching to VM86 sucks. I know it's possible
> with VESA 3, but with VESA 2 ?
> If yes, do you have any docs about it ?
> Is the int 0x10 VESA code specific to each graphic card ?
>
> 2. I've got a problem with DMA programming, here's my source :
>
> const static DmaChannel dmainfo[] = {
> { 0x87, 0x00, 0x01 },
> { 0x83, 0x02, 0x03 },
> { 0x81, 0x04, 0x05 },
> { 0x82, 0x06, 0x07 }
> };
>
> void dma_transfer(int channel, long physical_address, unsigned int
> length, unsigned sh
> ort read) {
>
> long page, offset;
>
> if(channel >= 4)
> {
> printk("\nThis function does to manage with channel 4, 5, 6, 7");
> return ;
> }
>
> page = physical_address >> 16;
> offset = physical_address & 0xFFFF;
> length -= 1;
>
> // DIsable IRQs
> outb(0xFF, 0x21);
> outb(0xFF, 0xA1);
>
> // Masking channel (disable)
> outb(channel | 4, 0x0A);
>
> // Reset Flip-Flop
> outb(0, 0xC0);
>
> // Mode
> outb( (read ? 0x48 : 0x44) | channel, 0x0B);
>
> // Page
> outb(page, dmainfo[channel].page);
>
> // Offset
> outb(offset & 0xFF, dmainfo[channel].offset);
> outb((offset >> 8) & 0xFF, dmainfo[channel].offset);
>
> // Length
> outb(length & 0xFF, dmainfo[channel].length);
> outb((length >> 8) & 0xFF, dmainfo[channel].length);
>
> // Unmask
> outb(channel, 0x0A);
>
> // Enabling IRQs
> outb(0, 0x21);
> outb(0, 0xA1);
>
> }
>
> I use it to transfer a sector from the floppy disk. Do you see anything
> wrong in this code ?
> The transfer is not made by the floppy, and i don't know why...
> I don't know if it's in the DMA programming, or in the floppy driver
> ..............
>
> Help !
>
> Thanks,
>
> Thomas, from france
>
> (If you speak french, you can join the KOS project :
> http://kos.enix.org)
>
> --
> PETAZZONI Thomas, coordinateur du projet KOS
> thomas.petazzoni at ifrance.com
> ICQ : 34937744
> Home page : http://perso.worldonline.fr/petazzoni/thomas/
> Home Page Projet KOS : http://kos.enix.org
>
> -
> To unsubscribe: send mail to majordomo at freiburg.linux.de
> with 'unsubscribe openbios' in the body of the message
-
To unsubscribe: send mail to majordomo at freiburg.linux.de
with 'unsubscribe openbios' in the body of the message
More information about the openbios
mailing list