drivers update

git-svn-id: svn://kolibrios.org@462 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2007-04-13 08:17:42 +00:00
parent dd4bac7d4f
commit 8101a2af97
9 changed files with 165 additions and 92 deletions

View File

@ -6,8 +6,8 @@ $Revision: 431 $
;; ;; ;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DRV_COMPAT equ 4 ;minimal required drivers version DRV_COMPAT equ 5 ;minimal required drivers version
DRV_CURRENT equ 4 ;current drivers model version DRV_CURRENT equ 5 ;current drivers model version
DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT DRV_VERSION equ (DRV_COMPAT shl 16) or DRV_CURRENT

View File

@ -10,6 +10,8 @@ format MS COFF
include 'proc32.inc' include 'proc32.inc'
include 'imports.inc' include 'imports.inc'
API_VERSION equ 0x01000100
DEBUG equ 1 DEBUG equ 1
VID_ATI equ 0x1002 VID_ATI equ 0x1002
@ -19,7 +21,7 @@ LOAD_FROM_MEM equ 1
LOAD_INDIRECT equ 2 LOAD_INDIRECT equ 2
LOAD_SYSTEM equ 3 LOAD_SYSTEM equ 3
VIDEO_FREE equ 2 SRV_GETVERSION equ 0
struc BITMAPINFOHEADER { struc BITMAPINFOHEADER {
.biSize dd ? ; DWORD .biSize dd ? ; DWORD
@ -229,13 +231,16 @@ out_size equ IOCTL.out_size
align 4 align 4
proc service_proc stdcall, ioctl:dword proc service_proc stdcall, ioctl:dword
mov edi, [ioctl] mov ebx, [ioctl]
mov ebx, [edi+io_code] cmp [ebx+io_code], SRV_GETVERSION
cmp ebx, VIDEO_FREE
jne .fail jne .fail
mov eax, [edi+input] mov eax, [ebx+output]
call video_free cmp [ebx+out_size], 4
jne .fail
mov [eax], dword API_VERSION
xor eax, eax
ret
.fail: .fail:
or eax, -1 or eax, -1
ret ret
@ -986,7 +991,7 @@ devices dd (R8500 shl 16)+VID_ATI
dd (R9800XT shl 16)+VID_ATI dd (R9800XT shl 16)+VID_ATI
dd 0 ;terminator dd 0 ;terminator
version dd 0x00040004 version dd (5 shl 16) or (API_VERSION and 0xFFFF)
sz_ati_srv db 'HWCURSOR',0 sz_ati_srv db 'HWCURSOR',0

View File

@ -10,6 +10,10 @@
format MS COFF format MS COFF
API_VERSION equ 0x01000100
SOUND_VERSION equ API_VERSION
include 'proc32.inc' include 'proc32.inc'
include 'main.inc' include 'main.inc'
include 'imports.inc' include 'imports.inc'
@ -160,6 +164,8 @@ proc service_proc stdcall, ioctl:dword
cmp eax, SRV_GETVERSION cmp eax, SRV_GETVERSION
jne @F jne @F
mov eax, [edi+output] mov eax, [edi+output]
cmp [edi+out_size], 4
jne .fail
mov eax, [eax] mov eax, [eax]
mov [eax], dword SOUND_VERSION mov [eax], dword SOUND_VERSION
xor eax, eax xor eax, eax
@ -1245,7 +1251,7 @@ vol_min dd 0x0000D8F0,0x0000D8F0
pan_max dd 0x00002710,0x00002710 pan_max dd 0x00002710,0x00002710
;stream_map dd 0xFFFF ; 16 ;stream_map dd 0xFFFF ; 16
version dd (4 shl 16) or (SOUND_VERSION and 0xFFFF) version dd (5 shl 16) or (SOUND_VERSION and 0xFFFF)
szInfinity db 'INFINITY',0 szInfinity db 'INFINITY',0
szSound db 'SOUND',0 szSound db 'SOUND',0
@ -1277,3 +1283,8 @@ mix_2_core rd 1
mix_3_core rd 1 mix_3_core rd 1
mix_4_core rd 1 mix_4_core rd 1

View File

@ -8,11 +8,9 @@
; (C) copyright Serge 2006-2007 ; (C) copyright Serge 2006-2007
; email: infinity_sound@mail.ru ; email: infinity_sound@mail.ru
SOUND_VERSION equ 0x01000100
PLAY_SYNC equ 0x80000000 PLAY_SYNC equ 0x80000000
PCM_ALL equ 0 PCM_ALL equ 0
PCM_OUT equ 0x08000000 PCM_OUT equ 0x08000000

View File

@ -9,6 +9,8 @@
format MS COFF format MS COFF
API_VERSION equ 0 ;debug
include 'proc32.inc' include 'proc32.inc'
include 'imports.inc' include 'imports.inc'
@ -39,6 +41,8 @@ DRV_ENTRY equ 1
DRV_EXIT equ -1 DRV_EXIT equ -1
STRIDE equ 4 ;size of row in devices table STRIDE equ 4 ;size of row in devices table
SRV_GETVERSION equ 0
section '.flat' code readable align 16 section '.flat' code readable align 16
proc START stdcall, state:dword proc START stdcall, state:dword
@ -70,11 +74,21 @@ out_size equ IOCTL.out_size
align 4 align 4
proc service_proc stdcall, ioctl:dword proc service_proc stdcall, ioctl:dword
; mov edi, [ioctl] mov ebx, [ioctl]
; mov eax, [edi+io_code] mov eax, [ebx+io_code]
cmp eax, SRV_GETVERSION
jne @F
mov eax, [ebx+output]
cmp [ebx+out_size], 4
jne .fail
mov [eax], dword API_VERSION
xor eax, eax xor eax, eax
ret ret
@@:
.fail:
or eax, -1
ret
endp endp
restore handle restore handle
@ -116,10 +130,11 @@ proc detect
cmp eax, ebx cmp eax, ebx
je .found je .found
add edi, STRIDE add edi, STRIDE
jmp @B jmp @B
.next:
.next: inc [devfn] inc [devfn]
cmp [devfn], 256 cmp [devfn], 256
jb .next_dev jb .next_dev
mov eax, [bus] mov eax, [bus]
@ -138,9 +153,8 @@ proc detect
ret ret
endp endp
DEVICE_ID equ 1234; pci device id
;DEVICE_ID equ ; pci device id VENDOR_ID equ 5678; device vendor id
;VENDOR_ID equ ; device vendor id
;all initialized data place here ;all initialized data place here
@ -149,7 +163,7 @@ align 4
devices dd (DEVICE_ID shl 16)+VENDOR_ID devices dd (DEVICE_ID shl 16)+VENDOR_ID
dd 0 ;terminator dd 0 ;terminator
version dd 0x00030003 version dd (5 shl 16) or (API_VERSION and 0xFFFF)
my_service db 'MY_SERVICE',0 ;max 16 chars include zero my_service db 'MY_SERVICE',0 ;max 16 chars include zero

View File

@ -10,6 +10,8 @@ format MS COFF
include 'proc32.inc' include 'proc32.inc'
include 'imports.inc' include 'imports.inc'
API_VERSION equ 0x01000100
DEBUG equ 1 DEBUG equ 1
CPU_FREQ equ 2000d ;cpu freq in MHz CPU_FREQ equ 2000d ;cpu freq in MHz
@ -90,6 +92,7 @@ CTRL_CNT_GIE equ 0x00000001 ; GPI Interrupt Enable
CODEC_REG_POWERDOWN equ 0x26 CODEC_REG_POWERDOWN equ 0x26
CODEC_REG_ST equ 0x26 CODEC_REG_ST equ 0x26
SRV_GETVERSION equ 0
DEV_PLAY equ 1 DEV_PLAY equ 1
DEV_STOP equ 2 DEV_STOP equ 2
DEV_CALLBACK equ 3 DEV_CALLBACK equ 3
@ -339,6 +342,18 @@ proc service_proc stdcall, ioctl:dword
mov edi, [ioctl] mov edi, [ioctl]
mov eax, [edi+io_code] mov eax, [edi+io_code]
cmp eax, SRV_GETVERSION
jne @F
mov eax, [edi+output]
cmp [edi+out_size], 4
jne .fail
mov [eax], dword API_VERSION
xor eax, eax
ret
@@:
cmp eax, DEV_PLAY cmp eax, DEV_PLAY
jne @F jne @F
if DEBUG if DEBUG
@ -1135,7 +1150,7 @@ align 4
devices dd (CTRL_SIS shl 16)+VID_SIS,msg_AC, set_SIS devices dd (CTRL_SIS shl 16)+VID_SIS,msg_AC, set_SIS
dd 0 dd 0
version dd 0x00040004 version dd (5 shl 16) or (API_VERSION and 0xFFFF)
msg_AC db '7012 AC97 controller',13,10, 0 msg_AC db '7012 AC97 controller',13,10, 0
msg_SIS db 'Silicon Integrated Systems',13,10, 0 msg_SIS db 'Silicon Integrated Systems',13,10, 0

View File

@ -11,6 +11,8 @@ format MS COFF
include 'proc32.inc' include 'proc32.inc'
include 'imports.inc' include 'imports.inc'
API_VERSION equ 0x01000100
DEBUG equ 1 DEBUG equ 1
REMAP_IRQ equ 0 REMAP_IRQ equ 0
@ -57,6 +59,9 @@ BIT29 EQU 0x20000000
BIT30 EQU 0x40000000 BIT30 EQU 0x40000000
BIT31 EQU 0x80000000 BIT31 EQU 0x80000000
PCM_4 equ BIT20
PCM_6 equ BIT21
VID_INTEL equ 0x8086 VID_INTEL equ 0x8086
VID_NVIDIA equ 0x10DE VID_NVIDIA equ 0x10DE
@ -92,12 +97,12 @@ RR equ BIT1 ; reset registers. Nukes all regs
CODEC_MASTER_VOL_REG equ 0x02 CODEC_MASTER_VOL_REG equ 0x02
CODEC_AUX_VOL equ 0x04 ; CODEC_AUX_VOL equ 0x04 ;
CODEC_PCM_OUT_REG equ 18h ; PCM output volume CODEC_PCM_OUT_REG equ 0x18 ; PCM output volume
CODEC_EXT_AUDIO_REG equ 28h ; extended audio CODEC_EXT_AUDIO_REG equ 0x28 ; extended audio
CODEC_EXT_AUDIO_CTRL_REG equ 2ah ; extended audio control CODEC_EXT_AUDIO_CTRL_REG equ 0x2a ; extended audio control
CODEC_PCM_FRONT_DACRATE_REG equ 2ch ; PCM out sample rate CODEC_PCM_FRONT_DACRATE_REG equ 0x2c ; PCM out sample rate
CODEC_PCM_SURND_DACRATE_REG equ 2eh ; surround sound sample rate CODEC_PCM_SURND_DACRATE_REG equ 0x2e ; surround sound sample rate
CODEC_PCM_LFE_DACRATE_REG equ 30h ; LFE sample rate CODEC_PCM_LFE_DACRATE_REG equ 0x30 ; LFE sample rate
GLOB_CTRL equ 0x2C ; Global Control GLOB_CTRL equ 0x2C ; Global Control
CTRL_STAT equ 0x30 ; Global Status CTRL_STAT equ 0x30 ; Global Status
@ -118,6 +123,7 @@ CTRL_CNT_GIE equ 0x00000001 ; GPI Interrupt Enable
CODEC_REG_POWERDOWN equ 0x26 CODEC_REG_POWERDOWN equ 0x26
CODEC_REG_ST equ 0x26 CODEC_REG_ST equ 0x26
SRV_GETVERSION equ 0
DEV_PLAY equ 1 DEV_PLAY equ 1
DEV_STOP equ 2 DEV_STOP equ 2
DEV_CALLBACK equ 3 DEV_CALLBACK equ 3
@ -385,6 +391,18 @@ proc service_proc stdcall, ioctl:dword
mov edi, [ioctl] mov edi, [ioctl]
mov eax, [edi+io_code] mov eax, [edi+io_code]
cmp eax, SRV_GETVERSION
jne @F
mov eax, [edi+output]
cmp [edi+out_size], 4
jne .fail
mov [eax], dword API_VERSION
xor eax, eax
ret
@@:
cmp eax, DEV_PLAY cmp eax, DEV_PLAY
jne @F jne @F
if DEBUG if DEBUG
@ -871,6 +889,12 @@ proc init_codec
xor eax, eax ; timeout error xor eax, eax ; timeout error
ret ret
.ready: .ready:
mov eax, 2 ;force set 16-bit 2-channel PCM
mov edx, GLOB_CTRL
call [ctrl.ctrl_write32]
mov eax, 5000 ; wait 5 ms
call StallExec
call detect_codec call detect_codec
xor eax, eax xor eax, eax
@ -1356,7 +1380,8 @@ devices dd (CTRL_ICH shl 16)+VID_INTEL,msg_ICH, set_ICH
dd 0 ;terminator dd 0 ;terminator
version dd 0x00040004
version dd (5 shl 16) or (API_VERSION and 0xFFFF)
msg_ICH db 'Intel ICH', 13,10, 0 msg_ICH db 'Intel ICH', 13,10, 0
msg_ICH0 db 'Intel ICH0', 13,10, 0 msg_ICH0 db 'Intel ICH0', 13,10, 0

View File

@ -10,6 +10,9 @@ format MS COFF
include 'proc32.inc' include 'proc32.inc'
include 'imports.inc' include 'imports.inc'
API_VERSION equ 0
UART_VERSION equ API_VERSION
PG_SW equ 0x003 PG_SW equ 0x003
page_tabs equ 0xFDC00000 ;hack page_tabs equ 0xFDC00000 ;hack
@ -190,8 +193,6 @@ end virtual
CONNECTION_SIZE equ 7*4 CONNECTION_SIZE equ 7*4
UART_VERSION equ 0x12345678 ;debug
public START public START
public service_proc public service_proc
public version public version
@ -317,6 +318,8 @@ proc service_proc stdcall, ioctl:dword
jne @F jne @F
mov eax, [ebx+output] mov eax, [ebx+output]
cmp [ebx+out_size], 4
jne .fail
mov [eax], dword UART_VERSION mov [eax], dword UART_VERSION
xor eax, eax xor eax, eax
ret ret
@ -324,6 +327,9 @@ proc service_proc stdcall, ioctl:dword
cmp eax, PORT_OPEN cmp eax, PORT_OPEN
jne @F jne @F
cmp [ebx+out_size], 4
jne .fail
mov ebx, [ebx+input] mov ebx, [ebx+input]
mov eax, [ebx] mov eax, [ebx]
call uart_open call uart_open
@ -955,7 +961,7 @@ isr_action dd isr_modem
dd isr_recieve dd isr_recieve
dd isr_line dd isr_line
version dd 0x00040000 version dd (5 shl 16) or (UART_VERSION and 0xFFFF)
sz_uart_srv db 'UART',0 sz_uart_srv db 'UART',0

View File

@ -10,7 +10,6 @@ LOAD_FROM_FILE equ 0
LOAD_FROM_MEM equ 1 LOAD_FROM_MEM equ 1
LOAD_INDIRECT equ 2 LOAD_INDIRECT equ 2
LOAD_SYSTEM equ 3 LOAD_SYSTEM equ 3
VIDEO_FREE equ 2
struc BITMAPINFOHEADER { struc BITMAPINFOHEADER {
.biSize dd ? ; DWORD .biSize dd ? ; DWORD