forked from KolibriOS/kolibrios
geode: DEV_GET_POS call
git-svn-id: svn://kolibrios.org@1692 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
20515d609d
commit
f189914288
56
drivers/audio/a5536/driver.lds
Normal file
56
drivers/audio/a5536/driver.lds
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
|
||||||
|
OUTPUT_FORMAT(pei-i386)
|
||||||
|
|
||||||
|
ENTRY("_drvEntry")
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
|
. = ALIGN(__section_alignment__);
|
||||||
|
|
||||||
|
.text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
|
||||||
|
|
||||||
|
{
|
||||||
|
*(.text) *(.rdata)
|
||||||
|
}
|
||||||
|
|
||||||
|
.data ALIGN(__section_alignment__) :
|
||||||
|
{
|
||||||
|
*(.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss ALIGN(__section_alignment__):
|
||||||
|
{
|
||||||
|
*(.bss)
|
||||||
|
*(COMMON)
|
||||||
|
}
|
||||||
|
|
||||||
|
/DISCARD/ :
|
||||||
|
{
|
||||||
|
*(.debug$S)
|
||||||
|
*(.debug$T)
|
||||||
|
*(.debug$F)
|
||||||
|
*(.drectve)
|
||||||
|
*(.edata)
|
||||||
|
}
|
||||||
|
|
||||||
|
.idata ALIGN(__section_alignment__):
|
||||||
|
{
|
||||||
|
SORT(*)(.idata$2)
|
||||||
|
SORT(*)(.idata$3)
|
||||||
|
/* These zeroes mark the end of the import list. */
|
||||||
|
LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
|
||||||
|
SORT(*)(.idata$4)
|
||||||
|
SORT(*)(.idata$5)
|
||||||
|
SORT(*)(.idata$6)
|
||||||
|
SORT(*)(.idata$7)
|
||||||
|
}
|
||||||
|
|
||||||
|
.reloc ALIGN(__section_alignment__) :
|
||||||
|
{
|
||||||
|
*(.reloc)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,20 +2,13 @@
|
|||||||
|
|
||||||
#define FORCED_PIO
|
#define FORCED_PIO
|
||||||
|
|
||||||
#include "types.h"
|
#include <ddk.h>
|
||||||
|
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
#include "syscall.h"
|
#include <syscall.h>
|
||||||
|
|
||||||
#include "geode.h"
|
#include "geode.h"
|
||||||
|
|
||||||
#define DEBUG
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
#define DBG(format,...) dbgprintf(format,##__VA_ARGS__)
|
#define DBG(format,...) dbgprintf(format,##__VA_ARGS__)
|
||||||
#else
|
|
||||||
#define DBG(format,...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BM0_IRQ 0x04
|
#define BM0_IRQ 0x04
|
||||||
#define BM1_IRQ 0x08
|
#define BM1_IRQ 0x08
|
||||||
@ -470,7 +463,7 @@ Bool FindPciDevice()
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
u32_t __stdcall drvEntry(int action)
|
u32_t drvEntry(int action, char *cmdline)
|
||||||
{
|
{
|
||||||
u32_t retval;
|
u32_t retval;
|
||||||
|
|
||||||
@ -479,17 +472,15 @@ u32_t __stdcall drvEntry(int action)
|
|||||||
if(action != 1)
|
if(action != 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
if(!dbg_open("/rd/1/drivers/geode.log"))
|
if(!dbg_open("/rd/1/drivers/geode.log"))
|
||||||
{
|
{
|
||||||
printf("Can't open /rd/1/drivers/geode.log\nExit\n");
|
printf("Can't open /rd/1/drivers/geode.log\nExit\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if( FindPciDevice() == FALSE)
|
if( FindPciDevice() == FALSE)
|
||||||
{
|
{
|
||||||
DBG("Device not found\n");
|
dbgprintf("Device not found\n");
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -516,7 +507,7 @@ u32_t __stdcall drvEntry(int action)
|
|||||||
#define DEV_SET_MASTERVOL 6
|
#define DEV_SET_MASTERVOL 6
|
||||||
#define DEV_GET_MASTERVOL 7
|
#define DEV_GET_MASTERVOL 7
|
||||||
#define DEV_GET_INFO 8
|
#define DEV_GET_INFO 8
|
||||||
|
#define DEV_GET_POS 9
|
||||||
|
|
||||||
int __stdcall srv_sound(ioctl_t *io)
|
int __stdcall srv_sound(ioctl_t *io)
|
||||||
{
|
{
|
||||||
@ -551,6 +542,14 @@ int __stdcall srv_sound(ioctl_t *io)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DEV_GET_POS:
|
||||||
|
if(io->out_size==4)
|
||||||
|
{
|
||||||
|
*outp = ctrl_read_32(0x60)>>2;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return ERR_PARAM;
|
return ERR_PARAM;
|
||||||
};
|
};
|
||||||
|
@ -2,14 +2,23 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
FASM = e:/fasm/fasm.exe
|
FASM = e:/fasm/fasm.exe
|
||||||
CFLAGS = -c -O2 -fomit-frame-pointer -fno-builtin-printf
|
CFLAGS = -c -O2 -fomit-frame-pointer -fno-builtin-printf
|
||||||
LDRHD = -shared -T ld.x -s --file-alignment 32
|
LDFLAGS = -nostdlib -shared -s -Map usb.map --image-base 0\
|
||||||
|
--file-alignment 512 --section-alignment 4096
|
||||||
|
|
||||||
INCLUDES = -I ../../include
|
DEFINES = -D__KERNEL__ -DCONFIG_X86_32
|
||||||
|
|
||||||
HFILES:= ../../include/types.h \
|
DRV_TOPDIR = $(CURDIR)/../..
|
||||||
../../include/syscall.h \
|
|
||||||
../../include/pci.h \
|
DRV_INCLUDES = $(DRV_TOPDIR)/include
|
||||||
geode.h
|
|
||||||
|
INCLUDES = -I$(DRV_INCLUDES) \
|
||||||
|
-I$(DRV_INCLUDES)/linux
|
||||||
|
|
||||||
|
LIBPATH = $(DRV_TOPDIR)/ddk
|
||||||
|
|
||||||
|
LIBS:= -lddk -lcore
|
||||||
|
|
||||||
|
HFILES:= geode.h
|
||||||
|
|
||||||
SRC_DEP:=
|
SRC_DEP:=
|
||||||
GEODE_SRC:= amd_geode.h
|
GEODE_SRC:= amd_geode.h
|
||||||
@ -20,11 +29,11 @@ GEODE:= geode.dll
|
|||||||
all: $(GEODE)
|
all: $(GEODE)
|
||||||
|
|
||||||
$(GEODE): geode.obj $(SRC_DEP) $(HFILES) Makefile
|
$(GEODE): geode.obj $(SRC_DEP) $(HFILES) Makefile
|
||||||
wlink name $(GEODE) SYS nt_dll lib libdrv op offset=0 op nod op maxe=25 op el op STUB=stub.exe op START=_drvEntry @$(NAME).lk
|
ld $(LDFLAGS) -L$(LIBPATH) -T driver.lds -o $@ geode.obj $(LIBS)
|
||||||
kpack.exe geode.dll geode.drv
|
kpack.exe geode.dll geode.drv
|
||||||
|
|
||||||
geode.obj : geode.c $(SRC_DEP) $(HFILES) Makefile
|
geode.obj : geode.c $(SRC_DEP) $(HFILES) Makefile
|
||||||
$(CC) $(INCLUDES) $(CFLAGS) -o geode.obj geode.c
|
$(CC) $(DEFINES) $(INCLUDES) $(CFLAGS) -o geode.obj geode.c
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
|
|
||||||
|
typedef int Bool;
|
||||||
|
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
|
||||||
#pragma pack(push, 1)
|
#pragma pack(push, 1)
|
||||||
typedef struct
|
typedef struct
|
||||||
|
Loading…
Reference in New Issue
Block a user