annotate packages/io/pci/current/tests/pci1.c @ 66:bf00f99aec69 ecos-sw-2000-02-02

Merge from eCos master repository on 2000-02-02-19:16:44-GMT
author jlarmour
date Wed, 02 Feb 2000 19:57:02 +0000
parents c38311975d4f
children b939e9cada46
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
52
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
1 //==========================================================================
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
2 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
3 // pci1.c
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
4 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
5 // Test PCI library API
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
6 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
7 //==========================================================================
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
18 // License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
25 // Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 52
diff changeset
29 //
52
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
31 //==========================================================================
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
33 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
34 // Author(s): jskov
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
35 // Contributors: jskov
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
36 // Date: 1999-03-17
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
37 // Description: Simple test that:
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
38 // Checks API (compile time)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
39 // Prints out information about found PCI devices.
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
40 // Allocates resources to devices (but does not enable
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
41 // them).
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
42 //####DESCRIPTIONEND####
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
43
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
44 #include <pkgconf/system.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
45
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
46 #include <cyg/infra/diag.h> // diag_printf
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
47 #include <cyg/infra/testcase.h> // test macros
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
48 #include <cyg/infra/cyg_ass.h> // assertion macros
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
49
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
50 // Package requirements
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
51 #if defined(CYGPKG_IO_PCI) && defined(CYGPKG_KERNEL)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
52
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
53 #include <pkgconf/kernel.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
54 #include <pkgconf/io_pci.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
55 #include <cyg/io/pci.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
56 #include <cyg/hal/hal_arch.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
57
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
58 // Package option requirements
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
59 #if defined(CYGFUN_KERNEL_API_C) && defined(CYG_PCI_PRESENT)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
60
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
61 #include <cyg/kernel/kapi.h>
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
62
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
63 // If the target has limited memory resources, undef the below to
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
64 // avoid inclusion of the big PCI code tables.
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
65 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
66 // The header file is created from http://www.yourvote.com/pci
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
67 // maintained by Jim Boemler (jboemler@halcyon.com).
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
68 //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
69 // If you have PCI devices not listed in this list, please consider
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
70 // registering the codes in the database.
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
71 #define USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
72
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
73 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
74 #include "pcihdr.h"
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
75 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
76
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
77 // You may want to use this code to do some simple testing of the
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
78 // devices on the PCI bus. By enabling the below definition, the
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
79 // devices will get PCI IO and MEM access activated after configuration
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
80 // so you can play with IO registers and display/set contents of MEM.
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
81 #undef ENABLE_PCI_DEVICES
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
82
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
83 unsigned char stack[CYGNUM_HAL_STACK_SIZE_TYPICAL];
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
84 cyg_thread thread_data;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
85 cyg_handle_t thread_handle;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
86
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
87 cyg_bool
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
88 pci_api_test(int dummy)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
89 {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
90 cyg_pci_device dev_info;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
91 cyg_pci_device_id devid = CYG_PCI_NULL_DEVID;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
92 cyg_bool ret;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
93 CYG_PCI_ADDRESS64 mem_base = 0;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
94 CYG_PCI_ADDRESS32 io_base = 0;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
95 CYG_ADDRWORD vec;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
96 cyg_uint8 var_uint8;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
97 cyg_uint16 var_uint16;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
98 cyg_uint32 var_uint32;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
99
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
100
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
101 // Always return...
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
102 if (dummy)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
103 return true;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
104
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
105 CYG_TEST_FAIL_FINISH("Not reached");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
106
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
107 // PCI library API
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
108 cyg_pci_init();
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
109
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
110 cyg_pci_get_device_info (devid, &dev_info);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
111 cyg_pci_set_device_info (devid, &dev_info);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
112
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
113 ret = cyg_pci_find_device(0, 0, &devid);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
114 ret |= cyg_pci_find_class(0, &devid);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
115 ret |= cyg_pci_find_next(devid, &devid);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
116
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
117 ret |= cyg_pci_configure_device(&dev_info);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
118
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
119 cyg_pci_set_memory_base(mem_base);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
120 cyg_pci_set_io_base(io_base);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
121
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
122 ret |= cyg_pci_allocate_memory(&dev_info, 0, &mem_base);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
123 ret |= cyg_pci_allocate_io(&dev_info, 0, &io_base);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
124
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
125 ret |= cyg_pci_translate_interrupt(&dev_info, &vec);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
126
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
127 cyg_pci_read_config_uint8(devid, 0, &var_uint8);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
128 cyg_pci_read_config_uint16(devid, 0, &var_uint16);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
129 cyg_pci_read_config_uint32(devid, 0, &var_uint32);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
130
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
131 cyg_pci_write_config_uint8(devid, 0, var_uint8);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
132 cyg_pci_write_config_uint16(devid, 0, var_uint16);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
133 cyg_pci_write_config_uint32(devid, 0, var_uint32);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
134
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
135 return ret;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
136 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
137
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
138 void
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
139 pci_test( void )
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
140 {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
141 cyg_pci_device dev_info;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
142 cyg_pci_device_id devid;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
143 CYG_ADDRWORD irq;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
144 int i;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
145 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
146 cyg_bool no_match = false;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
147 cyg_uint16 vendor, device;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
148 cyg_uint8 bc, sc, pi;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
149 PCI_VENTABLE* vtbl;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
150 PCI_DEVTABLE* dtbl;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
151 PCI_CLASSCODETABLE* ctbl;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
152 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
153
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
154 pci_api_test(1);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
155
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
156 cyg_pci_init();
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
157
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
158 if (cyg_pci_find_next(CYG_PCI_NULL_DEVID, &devid)) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
159 do {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
160 // Get device info
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
161 cyg_pci_get_device_info(devid, &dev_info);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
162
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
163
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
164 // Print stuff
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
165 diag_printf("Found device on bus %d, devfn 0x%02x:\n",
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
166 CYG_PCI_DEV_GET_BUS(devid),
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
167 CYG_PCI_DEV_GET_DEVFN(devid));
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
168
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
169 if (dev_info.command & CYG_PCI_CFG_COMMAND_ACTIVE) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
170 diag_printf(" Note that board is active. Probed"
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
171 " sizes and CPU addresses invalid!\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
172 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
173
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
174 // Configure the device
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
175 if (cyg_pci_configure_device(&dev_info)) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
176 diag_printf(" Device configuration succeeded\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
177 #ifdef ENABLE_PCI_DEVICES
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
178 {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
179 cyg_uint16 cmd;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
180
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
181 // Don't use cyg_pci_set_device_info since it clears
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
182 // some of the fields we want to print out below.
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
183 cyg_pci_read_config_uint16(dev_info.devid,
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
184 CYG_PCI_CFG_COMMAND, &cmd);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
185 cmd |= CYG_PCI_CFG_COMMAND_IO|CYG_PCI_CFG_COMMAND_MEMORY;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
186 cyg_pci_write_config_uint16(dev_info.devid,
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
187 CYG_PCI_CFG_COMMAND, cmd);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
188 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
189 diag_printf(" **** Device IO and MEM access enabled\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
190 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
191 } else {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
192 diag_printf(" Device configuration failed");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
193 if (dev_info.command & CYG_PCI_CFG_COMMAND_ACTIVE)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
194 diag_printf(" - device already enabled\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
195 else
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
196 diag_printf(" - resource problem\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
197 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
198
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
199 diag_printf(" Vendor 0x%04x", dev_info.vendor);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
200 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
201 vendor = dev_info.vendor;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
202 vtbl = PciVenTable;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
203 for (i = 0; i < PCI_VENTABLE_LEN; i++, vtbl++)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
204 if (vendor == vtbl->VenId)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
205 break;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
206
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
207 if (i < PCI_VENTABLE_LEN) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
208 diag_printf(" [%s][%s]", vtbl->VenShort, vtbl->VenFull);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
209 } else {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
210 diag_printf(" [UNKNOWN]");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
211 no_match = true;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
212 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
213 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
214 diag_printf("\n Device 0x%04x", dev_info.device);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
215 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
216 device = dev_info.device;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
217 dtbl = PciDevTable;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
218 for (i = 0; i < PCI_DEVTABLE_LEN; i++, dtbl++)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
219 if (vendor == dtbl->VenId && device == dtbl->DevId)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
220 break;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
221
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
222 if (i < PCI_DEVTABLE_LEN) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
223 diag_printf(" [%s][%s]", dtbl->Chip, dtbl->ChipDesc);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
224 } else {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
225 diag_printf(" [UNKNOWN]");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
226 no_match = true;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
227 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
228 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
229
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
230 diag_printf("\n Command 0x%04x, Status 0x%04x\n",
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
231 dev_info.command, dev_info.status);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
232
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
233 diag_printf(" Class/Rev 0x%08x", dev_info.class_rev);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
234 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
235 bc = (dev_info.class_rev >> 24) & 0xff;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
236 sc = (dev_info.class_rev >> 16) & 0xff;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
237 pi = (dev_info.class_rev >> 8) & 0xff;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
238 ctbl = PciClassCodeTable;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
239 for (i = 0; i < PCI_CLASSCODETABLE_LEN; i++, ctbl++)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
240 if (bc == ctbl->BaseClass
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
241 && sc == ctbl->SubClass
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
242 && pi == ctbl->ProgIf)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
243 break;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
244
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
245 if (i < PCI_CLASSCODETABLE_LEN) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
246 diag_printf(" [%s][%s][%s]", ctbl->BaseDesc,
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
247 ctbl->SubDesc, ctbl->ProgDesc);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
248 } else {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
249 diag_printf(" [UNKNOWN]");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
250 no_match = true;
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
251 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
252 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
253 diag_printf("\n Header 0x%02x\n", dev_info.header_type);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
254
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
255 diag_printf(" SubVendor 0x%04x, Sub ID 0x%04x\n",
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
256 dev_info.header.normal.sub_vendor,
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
257 dev_info.header.normal.sub_id);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
258
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
259
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
260 for(i = 0; i < CYG_PCI_MAX_BAR; i++) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
261 diag_printf(" BAR[%d] 0x%08x /", i, dev_info.base_address[i]);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
262 diag_printf(" probed size 0x%08x / CPU addr 0x%08x\n",
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
263 dev_info.base_size[i], dev_info.base_map[i]);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
264 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
265
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
266 if (cyg_pci_translate_interrupt(&dev_info, &irq))
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
267 diag_printf(" Wired to HAL vector %d\n", irq);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
268 else
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
269 diag_printf(" Does not generate interrupts.\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
270
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
271 } while (cyg_pci_find_next(devid, &devid));
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
272
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
273
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
274 #ifdef USE_PCI_CODE_LIST
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
275 diag_printf("\nStrings in [] are from the PCI Code List at http://www.yourvote.com/pci\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
276 if (no_match) {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
277 diag_printf("It seems that some of the device information has not been registered in\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
278 diag_printf("the PCI Code List. Please consider improving the database by registering\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
279 diag_printf("the [UNKNOWN] information for your devices. Thanks.\n");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
280 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
281 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
282 } else {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
283 diag_printf("No PCI devices found.");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
284 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
285
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
286 CYG_TEST_PASS_FINISH("pci1 test OK");
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
287 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
288
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
289 void
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
290 cyg_start(void)
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
291 {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
292 CYG_TEST_INIT();
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
293 cyg_thread_create(10, // Priority - just a number
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
294 (cyg_thread_entry_t*)pci_test, // entry
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
295 0, //
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
296 "pci_thread", // Name
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
297 &stack[0], // Stack
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
298 CYGNUM_HAL_STACK_SIZE_TYPICAL, // Size
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
299 &thread_handle, // Handle
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
300 &thread_data // Thread data structure
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
301 );
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
302 cyg_thread_resume(thread_handle);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
303 cyg_scheduler_start();
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
304 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
305
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
306 #else // CYGFUN_KERNEL_API_C && CYG_PCI_PRESENT
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
307 #define N_A_MSG "Needs kernel C API & PCI platform support"
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
308 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
309
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
310 #else // CYGPKG_IO_PCI && CYGPKG_KERNEL
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
311 #define N_A_MSG "Needs IO/PCI and Kernel"
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
312 #endif
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
313
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
314 #ifdef N_A_MSG
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
315 void
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
316 cyg_start( void )
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
317 {
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
318 CYG_TEST_INIT();
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
319 CYG_TEST_NA( N_A_MSG);
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
320 }
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
321 #endif // N_A_MSG
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
322
7b011d1ab50f Merge from eCos master repository on 1999-11-05-17:34:28-GMT
jlarmour
parents:
diff changeset
323 // EOF pci1.c