summaryrefslogtreecommitdiff
path: root/xxx
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-08-18 16:20:26 +0200
committerMiguel <m.i@gmx.at>2018-08-18 16:20:26 +0200
commit639c3d47b09114628f8e1f8817c27c10bf1fb28c (patch)
treef0381de25cc8f2de96a87b47cc76f7d09548bf7e /xxx
parent7b0d88b2dff9b635d9ff69f6d51b6832c1ca4c40 (diff)
reviving old drivers: mouse, pci, e1000
Diffstat (limited to 'xxx')
-rw-r--r--xxx/inactive/e1000.c4
-rw-r--r--xxx/inactive/e1000.h1
-rw-r--r--xxx/inactive/floppy.c1
-rw-r--r--xxx/inactive/mouse.c175
-rw-r--r--xxx/inactive/pci.c133
-rw-r--r--xxx/video/vesa.c6
6 files changed, 1 insertions, 319 deletions
diff --git a/xxx/inactive/e1000.c b/xxx/inactive/e1000.c
deleted file mode 100644
index 99194be..0000000
--- a/xxx/inactive/e1000.c
+++ /dev/null
@@ -1,4 +0,0 @@
-
-void init_e1000()
-{
-}
diff --git a/xxx/inactive/e1000.h b/xxx/inactive/e1000.h
deleted file mode 100644
index 5413fe1..0000000
--- a/xxx/inactive/e1000.h
+++ /dev/null
@@ -1 +0,0 @@
-void init_e1000();
diff --git a/xxx/inactive/floppy.c b/xxx/inactive/floppy.c
index 1dbe137..ea9e76e 100644
--- a/xxx/inactive/floppy.c
+++ b/xxx/inactive/floppy.c
@@ -1,4 +1,3 @@
-
/*
* Fool OS Simple Floppy Driver.
*
diff --git a/xxx/inactive/mouse.c b/xxx/inactive/mouse.c
deleted file mode 100644
index 910f0cf..0000000
--- a/xxx/inactive/mouse.c
+++ /dev/null
@@ -1,175 +0,0 @@
-//http://forum.osdev.org/viewtopic.php?t=10247
-//based on Mouse.inc by SANiK
-//License: Use as you wish, except to cause damage
-
-#define FOOLOS_MODULE_NAME "mouse"
-
-#include "lib/logger/log.h"
-#include "lib/int/stdint.h"
-
-#include "x86.h"
-
-
-static volatile uint8_t mouse_cycle;
-static volatile uint8_t mouse_byte[3];
-volatile int16_t mouse_x;
-volatile int16_t mouse_y;
-static volatile uint8_t mouse_a;
-
-
-uint8_t mouse_read();
-
-void mouse_wait(uint8_t a_type) //unsigned char
-{
- uint32_t _time_out=100000; //unsigned int
- if(a_type==0)
- {
- while(_time_out--) //Data
- {
- if((x86_inb(0x64) & 1)==1)
- {
- return;
- }
- }
- return;
- }
- else
- {
- while(_time_out--) //Signal
- {
- if((x86_inb(0x64) & 2)==0)
- {
- return;
- }
- }
- return;
- }
-}
-
-void mouse_write(uint8_t a_write)
-{
- //Wait to be able to send a command
- mouse_wait(1);
- //Tell the mouse we are sending a command
- x86_outb(0x64, 0xD4);
- //Wait for the final part
- mouse_wait(1);
- //Finally write
- x86_outb(0x60, a_write);
-}
-
-int8_t mouse_get_x()
-{
- return mouse_x;
-}
-int8_t mouse_get_y()
-{
- return mouse_y;
-}
-
-void mouse_init()
-{
- mouse_x=mouse_y=0;
- mouse_cycle=0;
-
- uint8_t _status; //unsigned char
-
- //Enable the auxiliary mouse device
- mouse_wait(1);
- x86_outb(0x64, 0xA8);
-
- //Enable the interrupts
- mouse_wait(1);
- x86_outb(0x64, 0x20);
- mouse_wait(0);
- _status=(x86_inb(0x60) | 2);
- mouse_wait(1);
- x86_outb(0x64, 0x60);
- mouse_wait(1);
- x86_outb(0x60, _status);
-
- //Tell the mouse to use default settings
- mouse_write(0xF6);
- mouse_read(); //Acknowledge
-
- //Enable the mouse
- mouse_write(0xF4);
- mouse_read(); //Acknowledge
-
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Mouse Initialized");
-
-}
-
-void mouse_log()
-{
- //log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%02x / %02x / %02x ",mouse_byte[0], mouse_byte[1],mouse_byte[2]);
-
- if(mouse_byte[0]&0x80||mouse_byte[0]&0x40)return; //skip packet on overflow
- if(!(mouse_byte[0]&0x8))panic(FOOLOS_MODULE_NAME,"mouse packets out of sync!?"); // this bit is always 1, otherwise panic!
-
-
- //
- if(mouse_byte[1]>127){
- mouse_x-=256;
- mouse_x+=mouse_byte[1];
- }
- else
- {
- mouse_x+=mouse_byte[1];
- }
- if(mouse_byte[2]>127){
- mouse_y-=256;
- mouse_y+=mouse_byte[2];
- }
- else
- {
- mouse_y+=mouse_byte[2];
- }
-
-
-
-
- if(mouse_x<0)mouse_x=0;
- if(mouse_y<0)mouse_y=0;
- if(mouse_x>800)mouse_x=800;
- if(mouse_y>600)mouse_y=600;
-
-
- //log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d / %d / %02x ",mouse_x, mouse_y,mouse_byte[2]);
- //PutFont('X', mouse_x,600-mouse_y, 0xffffff);
-
-}
-//Mouse functions
-void mouse_handler()//struct regs *a_r) //struct regs *a_r (not used but just there)
-{
- X86_IRQ_BEGIN
-
- switch(mouse_cycle)
- {
- case 0:
- mouse_byte[0]=x86_inb(0x60);
- mouse_cycle++;
- break;
- case 1:
- mouse_byte[1]=x86_inb(0x60);
- mouse_cycle++;
- break;
- case 2:
- mouse_byte[2]=x86_inb(0x60);
- mouse_cycle=0;
- mouse_log();
- break;
-
- }
-
-
- X86_IRQ_END
-}
-
-uint8_t mouse_read()
-{
- //Get's response from mouse
- mouse_wait(0);
- return x86_inb(0x60);
-}
-
diff --git a/xxx/inactive/pci.c b/xxx/inactive/pci.c
deleted file mode 100644
index e5d9711..0000000
--- a/xxx/inactive/pci.c
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "kernel.h"
-#include "x86.h"
-#include "e1000.h"
-#include "../lib/logger/log.h" // logger facilities
-#define FOOLOS_MODULE_NAME "pci"
-
-#define PCI_CONFIG_DATA 0xCFC
-#define PCI_CONFIG_ADDRESS 0xCF8
-
- void pciConfigSet (uint8_t bus, uint8_t slot,
- uint8_t func, uint8_t offset, uint32_t data)
- {
- uint32_t address;
- uint32_t lbus = (uint32_t)bus;
- uint32_t lslot = (uint32_t)slot;
- uint32_t lfunc = (uint32_t)func;
- uint16_t tmp = 0;
-
- /* create configuration address as per Figure 1 */
- address = (uint32_t)((lbus << 16) | (lslot << 11) |
- (lfunc << 8) | (offset & 0xfc) | ((uint32_t)0x80000000));
-
- /* write out the address */
- x86_outl (0xCF8, address);
- x86_outl (0xCFC,data);
-
- }
- uint16_t pciConfigReadWord (uint8_t bus, uint8_t slot,
- uint8_t func, uint8_t offset)
- {
- uint32_t address;
- uint32_t lbus = (uint32_t)bus;
- uint32_t lslot = (uint32_t)slot;
- uint32_t lfunc = (uint32_t)func;
- uint16_t tmp = 0;
-
- /* create configuration address as per Figure 1 */
- address = (uint32_t)((lbus << 16) | (lslot << 11) |
- (lfunc << 8) | (offset & 0xfc) | ((uint32_t)0x80000000));
-
- /* write out the address */
- x86_outl (0xCF8, address);
- /* read in the data */
- /* (offset & 2) * 8) = 0 will choose the first word of the 32 bits register */
- tmp = (uint16_t)((x86_inl (0xCFC) >> ((offset & 2) * 8)) & 0xffff);
- return (tmp);
- }
-
-void test_bar(uint8_t bus, uint8_t slot, uint8_t offset)
-{
-
- uint16_t bar_low=pciConfigReadWord(bus,slot,0,offset);
- uint16_t bar_high=pciConfigReadWord(bus,slot,0,offset+2);
-
- // check size
- pciConfigSet(bus,slot,0,offset,0xffffffff);
- uint16_t size_low=pciConfigReadWord(bus,slot,0,offset);
- uint16_t size_high=pciConfigReadWord(bus,slot,0,offset+2);
- uint32_t size=(size_high<<16)+size_low;
- size=~size;
- size++;
- //
-
- // restore original values
- pciConfigSet(bus,slot,0,offset,(bar_high<<16)+bar_low);
-
-
- log("e1000",FOOLOS_LOG_INFO,"%s bar: (0x%x 0x%x) size: 0x%x" ,bar_low&1?"i/o":"mem",bar_high, bar_low, size);
-
-}
-
-uint16_t pciCheck(uint8_t bus, uint8_t slot)
-{
-
- uint16_t vendor, device;
-
- /* try and read the first configuration register. Since there are no */
- /* vendors that == 0xFFFF, it must be a non-existent device. */
- if ((vendor = pciConfigReadWord(bus,slot,0,0)) != 0xFFFF)
- {
- device = pciConfigReadWord(bus,slot,0,2);
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"[%d,%d]: vendor: 0x%x / device: 0x%x",bus,slot,vendor,device);
-
- // check for: E1000 (82540EM). PCI Ethernet Controller
- if(vendor==0x8086&&device==0x100e)
- {
- // uint16_t irq=pciConfigReadWord(bus,slot,0,0x3C);
- // uint16_t irq2=pciConfigReadWord(bus,slot,0,0x3E);
- //
- init_e1000();
-
- test_bar(bus,slot,0x10);
- test_bar(bus,slot,0x14);
- test_bar(bus,slot,0x18);
-
- // scr_put_hex(irq);
- // scr_put_hex(irq2);
- // scr_put_string_nl(";");
-
-
- }
-
-
-
-
- }
-
- return (vendor);
-
-}
-
-void pci_init()
-{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"scanning bus");
- // todo: recurse on pci to pci bridges!
- // todo: support multiple pci host controllers!
- // (check more funcitons of device 0:0)
-
- uint16_t bus;
- uint8_t device;
-
- for(bus = 0; bus < 256; bus++)
- {
- for(device = 0; device < 32; device++)
- {
-
- pciCheck(bus, device);
-
- }
-
- }
-
-}
diff --git a/xxx/video/vesa.c b/xxx/video/vesa.c
index a5ee4e5..b43ca50 100644
--- a/xxx/video/vesa.c
+++ b/xxx/video/vesa.c
@@ -1,4 +1,5 @@
//http://wiki.osdev.org/GUI
+
#include <stdarg.h>
#include "kernel/mem.h"
#include "vesa.h"
@@ -9,7 +10,6 @@
#define FOOLSOS_SHOW_VESAMODES
-
static foolfont *deffont;
static vbemodeinfo *VbeModeInfoBlock;
@@ -226,7 +226,6 @@ void vesa_render()
if(boxx>VbeModeInfoBlock->Xres-100)boxx=100;
// if(boxy>VbeModeInfoBlock->Yres-200)boxy=200;
-
vesa_switch_buffers();
}
@@ -244,6 +243,3 @@ void vesa_init_doublebuff()
VbeModeInfoBlock->physbase=buffer;
}
*/
-
-
-