#include <isa/fdc.h>#include <isa/8259.h>#include <sys/video.h>#include <sys/gdt.h>#include <sys/idt.h>#include <ubixos/types.h>#include <ubixos/spinlock.h>#include <sys/io.h>#include <sys/dma.h>#include <sys/device.h>#include <lib/kprintf.h>#include <lib/kmalloc.h>#include <devfs/devfs.h>Include dependency graph for fdc.c:

Go to the source code of this file.
Functions | |
| asm (".globl floppyIsr \n""floppyIsr: \n"" pusha \n"" push %ss \n"" push %ds \n"" push %es \n"" push %fs \n"" push %gs \n"" call floppyIsrhndlr \n"" pop %gs \n"" pop %fs \n"" pop %es \n"" pop %ds \n"" pop %ss \n"" popa \n"" iret \n") | |
| void | block2Hts (int block, int *head, int *track, int *sector) |
| int | fdc_init () |
| int | fdcInit2 (struct device_node *dev) |
| void | fdcRead (void *info, void *baseAddr, uInt32 startSector, uInt32 sectorCount) |
| bool | fdcRw (int block, Int8 *blockBuffer, bool read, unsigned long numSectors) |
| void | fdcWrite (void *info, void *baseAddr, uInt32 startSector, uInt32 sectorCount) |
| void | floppyIsrhndlr () |
| int | getByte () |
| void | motorOff (void) |
| void | motorOn (void) |
| bool | readBlock (int block, Int8 *blockBuffer, unsigned long numSectors) |
| void | recalibrate (void) |
| void | reset (void) |
| bool | seek (int track) |
| void | sendByte (int Int8) |
| bool | waitFdc (bool sensei) |
| bool | writeBlock (int block, Int8 *blockBuffer, unsigned long numSectors) |
Variables | |
| static bool | diskChange = FALSE |
| static volatile bool | done = FALSE |
| static spinLock_t | fdcSpinLock = SPIN_LOCK_INITIALIZER |
| static volatile Int8 | fdcTrack = 0xff |
| static drvGeom | geometry = { dg144Heads,dg144Tracks,dg144Spt } |
| static bool | motor = FALSE |
| static Int8 | sr0 = 0 |
| static Int8 | statSize = 0 |
| static Int8 | status [7] = { 0 } |
| unsigned long | tbaddr = 0x80000L |
| static volatile int | timeOut = 0 |
| asm | ( | ".globl floppyIsr \n""floppyIsr: \n"" pusha \n"" push %ss \n"" push %ds \n"" push %es \n"" push %fs \n"" push %gs \n"" call floppyIsrhndlr \n"" pop %gs \n"" pop %fs \n"" pop %es \n"" pop %ds \n"" pop %ss \n"" popa \n"" iret \n" | ) |
| void block2Hts | ( | int | block, | |
| int * | head, | |||
| int * | track, | |||
| int * | sector | |||
| ) |
Definition at line 201 of file fdc.c.
References geometry, DrvGeom::heads, and DrvGeom::spt.
Referenced by fdcRw().
| int fdc_init | ( | ) |
Definition at line 63 of file fdc.c.
References devfs_makeNode(), device_add(), dInt, dPresent, fdcInit2(), fdcRead(), fdcWrite(), floppyIsr(), device_interface::init, irqEnable(), kmalloc(), device_interface::major, mVec, device_interface::read, device_interface::reset, reset(), setVector(), and device_interface::write.
Here is the call graph for this function:

| int fdcInit2 | ( | struct device_node * | dev | ) |
Definition at line 58 of file fdc.c.
References device_node::devInfo, and device_interface::size.
Referenced by fdc_init().
Definition at line 303 of file fdc.c.
References fdcSpinLock, readBlock(), spinLock(), and spinUnlock().
Referenced by fdc_init().
Here is the call graph for this function:

Definition at line 129 of file fdc.c.
References block2Hts(), cmdRead, cmdWrite, dg144Gap3rw, dg144Spt, dg168Gap3rw, diskChange, dmaXfer(), FALSE, fdcCcr, fdcDir, fdcRw(), geometry, inportByte(), kprint(), kprintf(), motorOff(), motorOn(), outportByte(), recalibrate(), reset(), seek(), sendByte(), DrvGeom::spt, status, tbaddr, TRUE, and waitFdc().
Referenced by fdcRw(), readBlock(), and writeBlock().
Here is the call graph for this function:

Definition at line 309 of file fdc.c.
References writeBlock().
Referenced by fdc_init().
Here is the call graph for this function:

| void floppyIsrhndlr | ( | ) |
| int getByte | ( | ) |
| void motorOff | ( | void | ) |
| void motorOn | ( | void | ) |
Definition at line 207 of file fdc.c.
References FALSE, fdcDor, motor, outportByte(), and TRUE.
Referenced by fdcRw(), and recalibrate().
Here is the call graph for this function:

| void recalibrate | ( | void | ) |
Definition at line 280 of file fdc.c.
References cmdRecal, motorOff(), motorOn(), sendByte(), TRUE, and waitFdc().
Referenced by fdcRw(), and reset().
Here is the call graph for this function:

| void reset | ( | void | ) |
Definition at line 288 of file fdc.c.
References cmdSpecify, diskChange, done, FALSE, fdcDor, motor, outportByte(), recalibrate(), seek(), sendByte(), TRUE, and waitFdc().
Referenced by fdc_init(), and fdcRw().
Here is the call graph for this function:

| bool seek | ( | int | track | ) |
| void sendByte | ( | int | Int8 | ) |
Definition at line 103 of file fdc.c.
References fdcData, fdcMsr, inportByte(), and outportByte().
Referenced by fdcRw(), recalibrate(), reset(), seek(), and waitFdc().
Here is the call graph for this function:

Definition at line 252 of file fdc.c.
References FALSE, and fdcRw().
Referenced by fdcWrite().
Here is the call graph for this function:

bool diskChange = FALSE [static] |
spinLock_t fdcSpinLock = SPIN_LOCK_INITIALIZER [static] |
Definition at line 54 of file fdc.c.
Referenced by fdcRw(), ne2kHandler(), vmmFindFreePage(), vmmFreeProcessPages(), vmmMemMapInit(), and waitFdc().
1.4.7