Author: aljen Date: 2010-05-23 17:43:29 +0200 (Sun, 23 May 2010) New Revision: 36910 Changeset: http://dev.haiku-os.org/changeset/36910/haiku Added: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/Jamfile haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/drm_test.c Modified: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/Jamfile haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/Jamfile haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/drm_test.c Log: Test drm drivers (stubbed for now) Modified: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/Jamfile =================================================================== --- haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/Jamfile 2010-05-23 12:41:15 UTC (rev 36909) +++ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/Jamfile 2010-05-23 15:43:29 UTC (rev 36910) @@ -1,3 +1,4 @@ SubDir HAIKU_TOP src add-ons kernel drivers drm ; SubInclude HAIKU_TOP src add-ons kernel drivers drm test ; +SubInclude HAIKU_TOP src add-ons kernel drivers drm test2 ; Modified: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/Jamfile =================================================================== --- haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/Jamfile 2010-05-23 12:41:15 UTC (rev 36909) +++ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/Jamfile 2010-05-23 15:43:29 UTC (rev 36910) @@ -1,7 +1,20 @@ SubDir HAIKU_TOP src add-ons kernel drivers drm test ; -UsePrivateHeaders kernel drm ; +UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drm drm ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drm ] : true ; +UsePrivateKernelHeaders ; +UseHeaders $(HAIKU_PRIVATE_KERNEL_HEADERS) : true ; +UsePrivateHeaders kernel drm net graphics ; +#UseLibraryHeaders drm ; + +local defines ; +defines = _KERNEL=1 COMPAT_WITHOUT_NET DRM_DEBUG ; +defines = [ FDefines $(defines) ] ; +SubDirCcFlags $(defines) ; + KernelAddon drm_test : drm_test.c ; Modified: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/drm_test.c =================================================================== --- haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/drm_test.c 2010-05-23 12:41:15 UTC (rev 36909) +++ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test/drm_test.c 2010-05-23 15:43:29 UTC (rev 36910) @@ -7,8 +7,10 @@ #include <string.h> #include <stdio.h> -#define DEVICE_NAME "drm/0" +//#include <drmP.h> +#define DEVICE_NAME "drm/test" + int32 api_version = B_CUR_DRIVER_API_VERSION; static mutex gLock; drm_module_info* gDrmModule; @@ -102,10 +104,10 @@ NULL, NULL }; - + if (!strcmp(name, DEVICE_NAME)) return &hooks; - + return NULL; } @@ -122,7 +124,9 @@ dprintf("drm_test: \"%s\" module at %p\n", DRM_MODULE_NAME, gDrmModule); - return B_OK; + gDrmModule->initialize(); + + return B_OK; } @@ -130,5 +134,8 @@ uninit_driver(void) { dprintf("drm_test: uninit_driver\n"); + + gDrmModule->cleanup(); + put_module(DRM_MODULE_NAME); } Added: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/Jamfile =================================================================== --- haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/Jamfile (rev 0) +++ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/Jamfile 2010-05-23 15:43:29 UTC (rev 36910) @@ -0,0 +1,20 @@ +SubDir HAIKU_TOP src add-ons kernel drivers drm test2 ; + +UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drm drm ] : true ; +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drm ] : true ; + +UsePrivateKernelHeaders ; +UseHeaders $(HAIKU_PRIVATE_KERNEL_HEADERS) : true ; +UsePrivateHeaders kernel drm net graphics ; +#UseLibraryHeaders drm ; + +local defines ; +defines = _KERNEL=1 COMPAT_WITHOUT_NET DRM_DEBUG ; +defines = [ FDefines $(defines) ] ; +SubDirCcFlags $(defines) ; + +KernelAddon drm_test2 : + drm_test.c + ; Added: haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/drm_test.c =================================================================== --- haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/drm_test.c (rev 0) +++ haiku/branches/components/gallium3d/src/add-ons/kernel/drivers/drm/test2/drm_test.c 2010-05-23 15:43:29 UTC (rev 36910) @@ -0,0 +1,141 @@ +#include <Drivers.h> +#include <KernelExport.h> + +#include <drm_module.h> +#include <lock.h> + +#include <string.h> +#include <stdio.h> + +//#include <drmP.h> + +#define DEVICE_NAME "drm/test2" + +int32 api_version = B_CUR_DRIVER_API_VERSION; +static mutex gLock; +drm_module_info* gDrmModule; + +static status_t +drm_test_open(const char* name, uint32 flags, void** cookie) +{ + dprintf("drm_test: drm_test_open\n"); + *cookie = NULL; + return B_OK; +} + + +static status_t +drm_test_close(void* cookie) +{ + dprintf("drm_test: drm_test_close\n"); + return B_OK; +} + + +static status_t +drm_test_freecookie(void* cookie) +{ + dprintf("drm_test: drm_test_freecookie\n"); + return B_OK; +} + + +static status_t +drm_test_ioctl(void* cookie, uint32 op, void* buffer, size_t length) +{ + dprintf("drm_test: drm_test_ioctl op: %ld buf: %p, len: %ld\n", op, + buffer, length); + return EPERM; +} + + +static status_t +drm_test_read(void* cookie, off_t pos, void* buffer, size_t* length) +{ + dprintf("drm_test: drm_test_read gDrmModule: %p len: %ld\n", + gDrmModule, *length); + *length = 0; + return B_NOT_ALLOWED; +} + + +static status_t +drm_test_write(void* cookie, off_t pos, const void* buffer, size_t *length) +{ + dprintf("drm_test: drm_test_write\n"); + *length = 0; + return B_NOT_ALLOWED; +} + + +status_t +init_hardware() +{ + dprintf("drm_test: init_hardware\n"); + return B_OK; +} + + +const char** +publish_devices(void) +{ + dprintf("drm_test: publish_devices\n"); + static const char* devices[] = { + DEVICE_NAME, + NULL + }; + return devices; +} + + +device_hooks* +find_device(const char* name) +{ + dprintf("drm_test: find_device name: %s\n", name); + static device_hooks hooks = { + &drm_test_open, + &drm_test_close, + &drm_test_freecookie, + &drm_test_ioctl, + &drm_test_read, + &drm_test_write, + NULL, + NULL, + NULL, + NULL + }; + + if (!strcmp(name, DEVICE_NAME)) + return &hooks; + + return NULL; +} + + +status_t +init_driver(void) +{ + dprintf("drm_test: init_driver\n"); + if (get_module(DRM_MODULE_NAME, (module_info**)&gDrmModule) < B_OK) { + dprintf("drm_test: cannot get module \"%s\"\n", DRM_MODULE_NAME); + return B_ERROR; + } + + dprintf("drm_test: \"%s\" module at %p\n", DRM_MODULE_NAME, + gDrmModule); + + gDrmModule->initialize(); + + return B_OK; +} + + +void +uninit_driver(void) +{ + dprintf("drm_test: uninit_driver\n"); + + gDrmModule->cleanup(); + + put_module(DRM_MODULE_NAME); +}