Mercurial > ecos
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 |
| 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 |
