xref: /minix3/minix/lib/libsys/pci_get_bar.c (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1*433d6423SLionel Sambuc /*
2*433d6423SLionel Sambuc pci_get_bar.c
3*433d6423SLionel Sambuc */
4*433d6423SLionel Sambuc 
5*433d6423SLionel Sambuc #include "pci.h"
6*433d6423SLionel Sambuc #include "syslib.h"
7*433d6423SLionel Sambuc #include <minix/sysutil.h>
8*433d6423SLionel Sambuc 
9*433d6423SLionel Sambuc /*===========================================================================*
10*433d6423SLionel Sambuc  *				pci_get_bar				     *
11*433d6423SLionel Sambuc  *===========================================================================*/
pci_get_bar(devind,port,base,size,ioflag)12*433d6423SLionel Sambuc int pci_get_bar(devind, port, base, size, ioflag)
13*433d6423SLionel Sambuc int devind;
14*433d6423SLionel Sambuc int port;
15*433d6423SLionel Sambuc u32_t *base;
16*433d6423SLionel Sambuc u32_t *size;
17*433d6423SLionel Sambuc int *ioflag;
18*433d6423SLionel Sambuc {
19*433d6423SLionel Sambuc 	int r;
20*433d6423SLionel Sambuc 	message m;
21*433d6423SLionel Sambuc 
22*433d6423SLionel Sambuc 	m.m_type= BUSC_PCI_GET_BAR;
23*433d6423SLionel Sambuc 	m.m_lsys_pci_busc_get_bar.devind = devind;
24*433d6423SLionel Sambuc 	m.m_lsys_pci_busc_get_bar.port = port;
25*433d6423SLionel Sambuc 
26*433d6423SLionel Sambuc 	r= ipc_sendrec(pci_procnr, &m);
27*433d6423SLionel Sambuc 	if (r != 0)
28*433d6423SLionel Sambuc 		panic("pci_get_bar: can't talk to PCI: %d", r);
29*433d6423SLionel Sambuc 
30*433d6423SLionel Sambuc 	if (m.m_type == 0)
31*433d6423SLionel Sambuc 	{
32*433d6423SLionel Sambuc 		*base= m.m_pci_lsys_busc_get_bar.base;
33*433d6423SLionel Sambuc 		*size= m.m_pci_lsys_busc_get_bar.size;
34*433d6423SLionel Sambuc 		*ioflag= m.m_pci_lsys_busc_get_bar.flags;
35*433d6423SLionel Sambuc 	}
36*433d6423SLionel Sambuc 	return m.m_type;
37*433d6423SLionel Sambuc }
38*433d6423SLionel Sambuc 
39