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