1433d6423SLionel Sambuc /*
2433d6423SLionel Sambuc pci_first_dev.c
3433d6423SLionel Sambuc */
4433d6423SLionel Sambuc
5433d6423SLionel Sambuc #include "pci.h"
6433d6423SLionel Sambuc #include "syslib.h"
7433d6423SLionel Sambuc #include <minix/sysutil.h>
8433d6423SLionel Sambuc
9433d6423SLionel Sambuc /*===========================================================================*
10433d6423SLionel Sambuc * pci_first_dev *
11433d6423SLionel Sambuc *===========================================================================*/
pci_first_dev(devindp,vidp,didp)12433d6423SLionel Sambuc int pci_first_dev(devindp, vidp, didp)
13433d6423SLionel Sambuc int *devindp;
14433d6423SLionel Sambuc u16_t *vidp;
15433d6423SLionel Sambuc u16_t *didp;
16433d6423SLionel Sambuc {
17433d6423SLionel Sambuc int r;
18433d6423SLionel Sambuc message m;
19433d6423SLionel Sambuc
20433d6423SLionel Sambuc m.m_type= BUSC_PCI_FIRST_DEV;
21433d6423SLionel Sambuc r= ipc_sendrec(pci_procnr, &m);
22433d6423SLionel Sambuc if (r != 0)
23433d6423SLionel Sambuc panic("pci_first_dev: can't talk to PCI: %d", r);
24433d6423SLionel Sambuc if (m.m_type == 1)
25433d6423SLionel Sambuc {
26433d6423SLionel Sambuc *devindp= m.m1_i1;
27433d6423SLionel Sambuc *vidp= m.m1_i2;
28433d6423SLionel Sambuc *didp= m.m1_i3;
29*6afe2674SJean-Baptiste Boric #ifdef DEBUG
30433d6423SLionel Sambuc printf("pci_first_dev: got device %d, %04x/%04x\n",
31433d6423SLionel Sambuc *devindp, *vidp, *didp);
32433d6423SLionel Sambuc #endif
33433d6423SLionel Sambuc return 1;
34433d6423SLionel Sambuc }
35433d6423SLionel Sambuc if (m.m_type != 0)
36433d6423SLionel Sambuc panic("pci_first_dev: got bad reply from PCI: %d", m.m_type);
37433d6423SLionel Sambuc
38*6afe2674SJean-Baptiste Boric #ifdef DEBUG
39433d6423SLionel Sambuc printf("pci_first_dev: got nothing\n");
40433d6423SLionel Sambuc #endif
41433d6423SLionel Sambuc return 0;
42433d6423SLionel Sambuc }
43