Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 5073 → Rev 5074

/drivers/netdrv_pe.inc
File deleted
\ No newline at end of file
/drivers/pci_pe.inc
File deleted
\ No newline at end of file
/drivers/ethernet/3c59x.asm
105,7 → 105,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
; Registers
REG_POWER_MGMT_CTRL = 0x7c
/drivers/ethernet/R6040.asm
52,7 → 52,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
; Operational parameters that usually are not changed.
 
/drivers/ethernet/RTL8029.asm
35,7 → 35,7
include '../macros.inc'
include '../proc32.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
struct device ETH_DEVICE
 
/drivers/ethernet/RTL8139.asm
41,7 → 41,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
REG_IDR0 = 0x00
REG_MAR0 = 0x08 ; multicast filter register 0
/drivers/ethernet/RTL8169.asm
39,7 → 39,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
REG_MAC0 = 0x0 ; Ethernet hardware address
REG_MAR0 = 0x8 ; Multicast filter
/drivers/ethernet/dec21x4x.asm
40,7 → 40,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
;-------------------------------------------
; configuration registers
/drivers/ethernet/forcedeth.asm
50,7 → 50,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
;**************************************************************************
; forcedeth Register Definitions
/drivers/ethernet/i8254x.asm
37,7 → 37,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
; Register list
REG_CTRL = 0x0000 ; Control Register
/drivers/ethernet/i8255x.asm
40,7 → 40,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
; Serial EEPROM
 
/drivers/ethernet/mtd80x.asm
35,7 → 35,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
; for different PHY
 
/drivers/ethernet/pcnet32.asm
35,7 → 35,7
include '../macros.inc'
include '../proc32.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
 
PORT_AUI = 0x00
/drivers/ethernet/rhine.asm
58,7 → 58,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
 
;**************************************************************************
/drivers/ethernet/sis900.asm
202,7 → 202,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
 
struct device ETH_DEVICE
/drivers/ethernet
Property changes:
Added: svn:ignore
+*.obj
+*.sys
/drivers/netdrv.inc
26,48 → 26,57
 
PAGESIZE = 4096
 
; network driver types
; Network driver types
 
NET_TYPE_ETH = 1
NET_TYPE_SLIP = 2
 
; link state
; Link state
 
ETH_LINK_DOWN = 0 ; Link is down
ETH_LINK_UNKOWN = 1b ; There could be an active link
ETH_LINK_UNKNOWN= 1b ; There could be an active link
ETH_LINK_FD = 10b ; full duplex flag
ETH_LINK_10M = 100b ; 10 mbit
ETH_LINK_100M = 1000b ; 100 mbit
ETH_LINK_1G = 10000b ; gigabit
ETH_LINK_1G = 1100b ; gigabit
 
; Macro to easily set i/o addresses to access device.
; In the beginning of a procedure (or ofter edx may have been destroyed),
; always use set_io with offset 0 to reset the variables.
 
LAST_IO = 0
macro set_io addr {
 
if addr = 0
mov edx, [device.io_addr]
else if addr = LAST_IO
macro set_io baseaddr, offset {
 
if offset = 0
mov edx, baseaddr
else if offset = LAST_IO
else
add edx, addr - LAST_IO
add edx, offset - LAST_IO
end if
 
LAST_IO = addr
LAST_IO = offset
}
 
; Macro to allocate a contiguous buffer in memory
; And initialise it to all zeros
 
; This macro will destroy eax, ecx and edi !
 
macro allocate_and_clear dest, size, err {
 
; We need to allocate at least 8 pages, if we want a continuous memory in ram
; We need to allocate at least 8 pages, if we want a contiguous area in ram
push edx
if (size < 8*4096) & (size > 4096)
stdcall KernelAlloc, 8*4096
invoke KernelAlloc, 8*4096
else
stdcall KernelAlloc, size
invoke KernelAlloc, size
end if
pop edx
 
test eax, eax
jz err
mov dest, eax ; Save the address to it into the device struct
mov dest, eax
mov edi, eax ; look at last part of code!
 
; Release the unused pages (if any)
75,7 → 84,7
add eax, (size/4096+1)*4096
mov ecx, 8-(size/4096+1)
push edx
call ReleasePages
invoke ReleasePages
pop edx
end if
 
92,59 → 101,30
}
 
 
if used null_op
align 4
null_op:
or eax, -1
ret
struct NET_DEVICE
 
end if
type dd ? ; Type field
mtu dd ? ; Maximal Transmission Unit
name dd ? ; Ptr to 0 terminated string
 
unload dd ? ; Ptrs to driver functions
reset dd ? ;
transmit dd ? ;
 
macro GetRealAddr { ; input and output is eax
bytes_tx dq ? ; Statistics, updated by the driver
bytes_rx dq ? ;
packets_tx dd ? ;
packets_rx dd ? ;
 
push ax
call GetPgAddr
and word[esp], PAGESIZE - 1
or ax, word[esp]
inc esp
inc esp
state dd ? ; link state (0 = no link)
hwacc dd ? ; bitmask stating enabled HW accelerations
 
}
ends
 
macro NET_DEVICE {
 
.type dd ? ; Type field
.mtu dd ? ; Maximal Transmission Unit
.name dd ? ; Ptr to 0 terminated string
struct ETH_DEVICE NET_DEVICE
 
.unload dd ? ; Ptrs to driver functions
.reset dd ? ;
.transmit dd ? ;
 
.bytes_tx dq ? ; Statistics, updated by the driver
.bytes_rx dq ? ;
.packets_tx dd ? ;
.packets_rx dd ? ;
 
.state dd ? ; link state (0 = no link)
.hwacc dd ? ; bitmask stating enabled HW accelerations
 
.end:
}
 
 
macro ETH_DEVICE {
NET_DEVICE
 
.mac dp ?
mac dp ?
dw ? ; qword alignment
 
}
 
 
 
macro SLIP_DEVICE {
NET_DEVICE
 
}
ends
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/drivers/pci.inc
1,6 → 1,6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2004-2012. All rights reserved. ;;
;; Copyright (C) KolibriOS team 2004-2014. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;;
;; ;;
;; GNU GENERAL PUBLIC LICENSE ;;
8,125 → 8,163
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
struct PCI_header
 
; PCI Bus defines
vendor_id dw ? ; 0x00
device_id dw ? ; 0x02
command dw ? ; 0x04
status dw ? ; 0x06
revision_id db ? ; 0x08
prog_if db ? ; 0x09
subclass db ? ; 0x0A
class_code db ? ; 0x0B
cache_line_size db ? ; 0x0C
latency_timer db ? ; 0x0D
header_type db ? ; 0x0E
bist db ? ; 0x0F
 
PCI_HEADER_TYPE = 0x0e ; 8 bit
PCI_BASE_ADDRESS_0 = 0x10 ; 32 bit
PCI_BASE_ADDRESS_1 = 0x14 ; 32 bits
PCI_BASE_ADDRESS_2 = 0x18 ; 32 bits
PCI_BASE_ADDRESS_3 = 0x1c ; 32 bits
PCI_BASE_ADDRESS_4 = 0x20 ; 32 bits
PCI_BASE_ADDRESS_5 = 0x24 ; 32 bits
ends
 
struct PCI_header00 PCI_header
 
base_addr_0 dd ? ; 0x10
base_addr_1 dd ? ; 0x14
base_addr_2 dd ? ; 0x18
base_addr_3 dd ? ; 0x1C
base_addr_4 dd ? ; 0x20
base_addr_5 dd ? ; 0x24
cardbus_cis_ptr dd ? ; 0x28
subsys_vendor dw ? ; 0x2C
subsys_id dw ? ; 0x2E
exp_rom_addr dd ? ; 0x30
cap_ptr db ? ; 0x34
rb 7 ; reserved
interrupt_line db ? ; 0x3C
interrupt_pin db ? ; 0x3D
min_grant db ? ; 0x3E
max_latency db ? ; 0x3F
 
ends
 
struct PCI_header01 PCI_header
 
base_addr_0 dd ? ; 0x10
base_addr_1 dd ? ; 0x14
prim_bus_nr db ? ; 0x18
sec_bus_nr db ? ; 0x19
sub_bus_nr db ? ; 0x1A
sec_lat_tmr db ? ; 0x1B
io_base db ? ; 0x1C
io_limit db ? ; 0x1D
sec_status dw ? ; 0x1E
mem_base dw ? ; 0x20
mem_limit dw ? ; 0x22
pref_mem_base dw ? ; 0x24
pref_mem_limit dw ? ; 0x26
pref_base_up dd ? ; 0x28
pref_limit_up dd ? ; 0x2C
io_base_up dw ? ; 0x30
io_limit_up dw ? ; 0x32
cap_ptr db ? ; 0x34
rb 3 ; reserved
exp_rom_addr dd ? ; 0x38
interrupt_line db ? ; 0x3C
interrupt_pin db ? ; 0x3E
bridge_ctrl dw ? ; 0x3F
 
ends
 
struct PCI_header02 PCI_header
 
base_addr dd ? ; 0x10
cap_list_offs db ? ; 0x14
rb 1 ; reserved
sec_stat dw ? ; 0x16
pci_bus_nr db ? ; 0x18
cardbus_bus_nr db ? ; 0x19
sub_bus_nr db ? ; 0x1A
cardbus_lat_tmr db ? ; 0x1B
mbar_0 dd ? ; 0x1C
mlimit_0 dd ? ; 0x20
mbar_1 dd ? ; 0x24
mlimit_1 dd ? ; 0x28
iobar_0 dd ? ; 0x2C
iolimit_0 dd ? ; 0x30
iobar_1 dd ? ; 0x34
iolimit_1 dd ? ; 0x38
interrupt_line db ? ; 0x3C
interrupt_pin db ? ; 0x3D
bridge_ctrl dw ? ; 0x3E
subs_did dw ? ; 0x40
subs_vid dw ? ; 0x42
legacy_bar dd ? ; 0x44
 
ends
 
; Base address bits
PCI_BASE_ADDRESS_SPACE_IO = 0x01
PCI_BASE_ADDRESS_IO_MASK = 0xFFFFFFFC
PCI_BASE_ADDRESS_MEM_MASK = 0xFFFFFFF0
 
; PCI programming
; command bits
PCI_CMD_PIO = 0x01 ; bit0: io space control
PCI_CMD_MMIO = 0x02 ; bit1: memory space control
PCI_CMD_MASTER = 0x04 ; bit2: device acts as a PCI master
 
PCI_VENDOR_ID = 0x00 ; 16 bit
PCI_DEVICE_ID = 0x02 ; 16 bits
PCI_REG_COMMAND = 0x4 ; command register
PCI_REG_STATUS = 0x6 ; status register
PCI_REVISION_ID = 0x08 ; 8 bits
PCI_REG_LATENCY = 0xd ; latency timer register
PCI_REG_CAP_PTR = 0x34 ; capabilities pointer
PCI_REG_IRQ = 0x3c
PCI_REG_CAPABILITY_ID = 0x0 ; capapility ID in pm register block
PCI_REG_PM_STATUS = 0x4 ; power management status register
PCI_REG_PM_CTRL = 0x4 ; power management control register
PCI_BIT_PIO = 1 ; bit0: io space control
PCI_BIT_MMIO = 2 ; bit1: memory space control
PCI_BIT_MASTER = 4 ; bit2: device acts as a PCI master
; status bits
PCI_STATUS_CAPA = 0x10 ; bit4: new capabilities available
 
 
macro PCI_find_io {
if used PCI_find_io
proc PCI_find_io stdcall bus, dev
 
local .check, .inc, .got
 
push esi
xor eax, eax
mov esi, PCI_BASE_ADDRESS_0
mov esi, PCI_header00.base_addr_0
.check:
stdcall PciRead32, [device.pci_bus], [device.pci_dev], esi
 
invoke PciRead32, [bus], [dev], esi
test eax, PCI_BASE_ADDRESS_IO_MASK
jz .inc
 
test eax, PCI_BASE_ADDRESS_SPACE_IO
jz .inc
 
and eax, PCI_BASE_ADDRESS_IO_MASK
jmp .got
pop esi
ret
 
.inc:
add esi, 4
cmp esi, PCI_BASE_ADDRESS_5
cmp esi, PCI_header00.base_addr_5
jbe .check
pop esi
xor eax, eax
ret
 
.got:
mov [device.io_addr], eax
endp
end if
 
}
 
if used PCI_find_mmio32
proc PCI_find_mmio32 stdcall bus, dev
 
macro PCI_find_mmio32 {
 
local .check, .inc, .got
 
mov esi, PCI_BASE_ADDRESS_0
push esi
mov esi, PCI_header00.base_addr_0
.check:
stdcall PciRead32, [device.pci_bus], [device.pci_dev], esi
 
invoke PciRead32, [bus], [dev], esi
test eax, PCI_BASE_ADDRESS_SPACE_IO ; mmio address?
jnz .inc
 
test eax, 100b ; 64 bit?
jnz .inc
and eax, not 1111b
jmp .got
pop esi
ret
 
.inc:
add esi, 4
cmp esi, PCI_BASE_ADDRESS_5
cmp esi, PCI_header00.base_addr_5
jbe .check
xor eax, eax
pop esi
ret
 
.got:
mov [device.mmio_addr], eax
}
 
macro PCI_find_irq {
 
stdcall PciRead8, [device.pci_bus], [device.pci_dev], PCI_REG_IRQ
mov [device.irq_line], al
 
}
 
macro PCI_find_rev {
 
stdcall PciRead8, [device.pci_bus], [device.pci_dev], PCI_REVISION_ID
mov [device.revision], al
 
}
 
macro PCI_make_bus_master bus, dev {
 
stdcall PciRead32, [device.pci_bus], [device.pci_dev], PCI_REG_COMMAND
or al, PCI_BIT_MASTER
stdcall PciWrite32, [device.pci_bus], [device.pci_dev], PCI_REG_COMMAND, eax
 
}
 
macro PCI_adjust_latency min {
 
local .not
 
stdcall PciRead8, [device.pci_bus], [device.pci_dev], PCI_REG_LATENCY
cmp al, min
ja .not
mov al, min
stdcall PciWrite8, [device.pci_bus], [device.pci_dev], PCI_REG_LATENCY, eax
.not:
 
}
endp
end if
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/drivers/unfinished/agp.asm
27,7 → 27,7
include '../proc32.inc'
include '../struct.inc'
include '../macros.inc'
include '../pci_pe.inc'
include '../pci.inc'
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
/drivers/unfinished/bcm57xx.asm
32,7 → 32,7
include '../struct.inc'
include '../macros.inc'
include '../fdo.inc'
include '../netdrv_pe.inc'
include '../netdrv.inc'
 
struct device ETH_DEVICE
 
/drivers/unfinished/cardbus.asm
34,7 → 34,7
include '../proc32.inc'
include '../struct.inc'
include '../macros.inc'
include '../pci_pe.inc'
include '../pci.inc'
include '../fdo.inc'
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;