1d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/* 2d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 3d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * Copyright (c) International Business Machines Corp., 2001 4d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 5d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * This program is free software; you can redistribute it and/or modify 6d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * it under the terms of the GNU General Public License as published by 7d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * the Free Software Foundation; either version 2 of the License, or 8d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * (at your option) any later version. 9d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 10d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * This program is distributed in the hope that it will be useful, 11d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * but WITHOUT ANY WARRANTY; without even the implied warranty of 12d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * the GNU General Public License for more details. 14d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 15d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * You should have received a copy of the GNU General Public License 16d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * along with this program; if not, write to the Free Software 174548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */ 19d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/* 204bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * This is the main of your user space test program, 214bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * which will open the correct kernel module, find the 224bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * file descriptor value and use that value to make 23d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * ioctl calls to the system 24d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 254bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * Use the ki_generic and other ki_testname functions 26d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * to abstract the calls from the main 27d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 28d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * author: Kai Zhao 29d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * date: 08/25/2003 30d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 31d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */ 32d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 33d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <stdio.h> 34d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <stdlib.h> 35d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <errno.h> 36d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <sys/stat.h> 37d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <sys/ioctl.h> 38d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <fcntl.h> 39d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <linux/kernel.h> 40d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <linux/errno.h> 41d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 42d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include "user_tagp.h" 43d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include "../kernel_space/tagp.h" 44d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 45354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaostatic int tagp_fd = -1; /* file descriptor */ 46354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 47354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint tagpopen() 48354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 49354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 50354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao dev_t devt; 51354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao struct stat st; 52354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao int rc = 0; 53354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 54354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao devt = makedev(TAGP_MAJOR, 0); 55354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 56354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (rc) { 57354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (errno == ENOENT) { 58354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* dev node does not exist. */ 59354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU | 60354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IRGRP | S_IXGRP | 61354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IROTH | S_IXOTH)); 62354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 63354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf 64354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("ERROR: Problem with Base dev directory. Error code from stat() is %d\n\n", 65354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno); 66354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 67354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 68354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 69354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (!(st.st_mode & S_IFDIR)) { 70354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = unlink(DEVICE_NAME); 71354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (!rc) { 72354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = mkdir(DEVICE_NAME, (S_IFDIR | S_IRWXU | 73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IRGRP | S_IXGRP | 74354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IROTH | S_IXOTH)); 75354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 76354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 77354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 78354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 79354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* 80354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao * Check for the /dev/tbase node, and create if it does not 81354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao * exist. 82354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao */ 83354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = stat(DEVICE_NAME, &st); 84354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (rc) { 85354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (errno == ENOENT) { 86354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* dev node does not exist */ 87354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = mknod(DEVICE_NAME, 88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao (S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | 89354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IWGRP), devt); 90354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 91354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf 92354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao ("ERROR:Problem with tbase device node directory. Error code form stat() is %d\n\n", 93354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao errno); 94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 96354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 97354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* 98354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao * /dev/tbase CHR device exists. Check to make sure it is for a 99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao * block device and that it has the right major and minor. 100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao */ 101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if ((!(st.st_mode & S_IFCHR)) || (st.st_rdev != devt)) { 102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* Recreate the dev node. */ 104354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = unlink(DEVICE_NAME); 105354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (!rc) { 106354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao rc = mknod(DEVICE_NAME, 107354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao (S_IFCHR | S_IRUSR | S_IWUSR | 108354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao S_IRGRP | S_IWGRP), devt); 109354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 112354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tagp_fd = open(DEVICE_NAME, O_RDWR); 114354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao 115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (tagp_fd < 0) { 116354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("ERROR: Open of device %s failed %d errno = %d\n", 117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao DEVICE_NAME, tagp_fd, errno); 118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return errno; 119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Device opened successfully \n"); 121354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return 0; 122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 123d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier} 125d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint tagpclose() 127354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 128d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier if (tagp_fd != -1) { 130354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao close(tagp_fd); 131d13d74bbf207c2d01598c6fef092a75b93b07c71vapier tagp_fd = -1; 132d13d74bbf207c2d01598c6fef092a75b93b07c71vapier } 1332c28215423293e443469a07ae7011135d058b671Garrett Cooper 134d13d74bbf207c2d01598c6fef092a75b93b07c71vapier return 0; 135d13d74bbf207c2d01598c6fef092a75b93b07c71vapier} 136d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 137d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint agpgart_io_test() 138d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{ 139d13d74bbf207c2d01598c6fef092a75b93b07c71vapier int tagp_fd = 0; 140d13d74bbf207c2d01598c6fef092a75b93b07c71vapier char read_buf[BUFFER_LEN]; 141bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 142d13d74bbf207c2d01598c6fef092a75b93b07c71vapier if ((tagp_fd = open("/dev/agpgart", O_RDWR)) < 0) { 143354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Open /dev/agpgart failed \n"); 144d13d74bbf207c2d01598c6fef092a75b93b07c71vapier return -1; 145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 146bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 147d13d74bbf207c2d01598c6fef092a75b93b07c71vapier close(tagp_fd); 148bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 149d13d74bbf207c2d01598c6fef092a75b93b07c71vapier return 0; 150d13d74bbf207c2d01598c6fef092a75b93b07c71vapier} 151d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 152354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint main() 153354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 154d13d74bbf207c2d01598c6fef092a75b93b07c71vapier int rc; 155bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 156df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (agpgart_io_test()) 157d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Test agpgart io failed\n"); 158d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 159d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Test agpgart io success\n"); 160bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 161d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* open the module */ 162d13d74bbf207c2d01598c6fef092a75b93b07c71vapier rc = tagpopen(); 163df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (rc) { 164d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Test AGP Driver may not be loaded\n"); 165d13d74bbf207c2d01598c6fef092a75b93b07c71vapier exit(1); 166d13d74bbf207c2d01598c6fef092a75b93b07c71vapier } 167bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* make test calls for pci_find_device */ 169df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_PCI_FIND_DEV)) 170d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success: Expected failure for pci_find_dev test\n"); 171d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 172d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on pci_find_dev test\n"); 173bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 174d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_backend_acquier */ 175df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_BACKEND_ACQUIRE)) 176d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_backend_acquier\n"); 177d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 178d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_backend_acquier\n"); 179bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 180d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_backend_release */ 181df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_BACKEND_RELEASE)) 182d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_backend_release\n"); 183d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 184d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_backend_release\n"); 185bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 186d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_alloc_bridge */ 187df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_ALLOC_BRIDGE)) 188d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_alloc_bridge \n"); 189d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 190d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_alloc_bridge\n"); 1912c28215423293e443469a07ae7011135d058b671Garrett Cooper 192d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for and agp_put_bridge */ 193df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_PUT_BRIDGE)) 194d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_put_bridge\n"); 195d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 196d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_put_bridge\n"); 197d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 198d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_create_memory and agp_free_memory */ 199df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_CREATE_AND_FREE_MEMORY)) 200d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_create_memory \n"); 201d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 202d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_create_memory\n"); 203bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak/* 204df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_FREE_MEMORY)) 205d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_free_memory\n"); 206d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 207354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Success on agp_free_memory\n"); 208354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao*//////////////////////////////////////////////////////////////////////// 209d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_num_entries */ 210df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_NUM_ENTRIES)) 211d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_num_entries\n"); 212d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 213d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_num_entries\n"); 2142c28215423293e443469a07ae7011135d058b671Garrett Cooper 215d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_copy_info */ 216df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_COPY_INFO)) 217d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_copy_info\n"); 218d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 219d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_copy_info\n"); 220bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak 221d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_alloc_memory */ 222354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao// if (ki_generic(tagp_fd, TEST_ALLOC_MEMORY_AND_BAND_UNBAND)) 223354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao// printf("Fail on agp_alloc_memory_and_band_unband\n"); 224354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao// else 225354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao// printf("Success on agp_alloc_memory_and_band_unband\n"); 2262c28215423293e443469a07ae7011135d058b671Garrett Cooper 227d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_get_version */ 228df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GET_VERSION)) 229d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_get_version\n"); 230d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 231d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_get_version\n"); 2322c28215423293e443469a07ae7011135d058b671Garrett Cooper 233d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_enable */ 234df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_ENABLE)) 235d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_enable\n"); 236d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 237d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_enable\n"); 2382c28215423293e443469a07ae7011135d058b671Garrett Cooper 239d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_create_gatt_table */ 240df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_CREATE_GATT_TABLE)) 241d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_create_gatt_table\n"); 242d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 243d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_create_gatt_table\n"); 2442c28215423293e443469a07ae7011135d058b671Garrett Cooper 245d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_free_gatt_table */ 246df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_FREE_GATT_TABLE)) 247d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_free_gatt_table\n"); 248d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 249d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_free_gatt_table\n"); 2502c28215423293e443469a07ae7011135d058b671Garrett Cooper 251d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_insert_memory */ 252df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_INSERT_MEMROY)) 253d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_insert_memory\n"); 254d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 255d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_insert_memory\n"); 2562c28215423293e443469a07ae7011135d058b671Garrett Cooper 257d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_alloc_by_type */ 258df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_ALLOC_BY_TYPE)) 259d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_alloc_by_type\n"); 260d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 261d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_alloc_by_type\n"); 2622c28215423293e443469a07ae7011135d058b671Garrett Cooper 263d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_alloc_page */ 264df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_ALLOC_PAGE)) 265d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_alloc_page\n"); 266d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 267d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_alloc_page\n"); 2682c28215423293e443469a07ae7011135d058b671Garrett Cooper 269d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_destory_page */ 270df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_ALLOC_PAGE)) 271d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_destory_page\n"); 272d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 273d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_destory_page\n"); 2742c28215423293e443469a07ae7011135d058b671Garrett Cooper 275d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_enable */ 276df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_ENABLE)) 277d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_enable\n"); 278d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 279d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_enable\n"); 2802c28215423293e443469a07ae7011135d058b671Garrett Cooper 281d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_global_cache_flush */ 282df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GLOBAL_CACHE_FLUSH)) 283d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_global_cache_flush\n"); 284d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 285d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_gloabl_cache_flush\n"); 2862c28215423293e443469a07ae7011135d058b671Garrett Cooper 287d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* make test calls for agp_generic_mask_memory */ 288df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (ki_generic(tagp_fd, TEST_GENERIC_MASK_MEMORY)) 289d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Fail on agp_generic_mask_memory\n"); 290d13d74bbf207c2d01598c6fef092a75b93b07c71vapier else 291d13d74bbf207c2d01598c6fef092a75b93b07c71vapier printf("Success on agp_generic_mask_memory\n"); 292d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 293d13d74bbf207c2d01598c6fef092a75b93b07c71vapier /* close the module */ 294d13d74bbf207c2d01598c6fef092a75b93b07c71vapier rc = tagpclose(); 295df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper if (rc) { 296354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao printf("Test AGP Driver may not be closed\n"); 297354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao exit(1); 298354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 299d13d74bbf207c2d01598c6fef092a75b93b07c71vapier 300354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao return 0; 301ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 302