Esempio n. 1
0
int r8169_init( void ) {
	r8169_device_t *dev = &r8169_state;

	struct ip_addr ip = {inet_addr(dev->ip_str)};
	struct ip_addr nm = {inet_addr(dev->nm_str)};
	struct ip_addr gw = {inet_addr(dev->gw_str)};

	pci_dev_t *pci_dev;
	if ((pci_dev = pci_lookup_device(0x10ec, 0x8168)) == NULL) {
		printk("r8169 device not found\n");
		return -1;
	}

	// Remember our PCI info
	dev->pci_dev = pci_dev;

	printk("R8169 IP address:   %s\n", dev->ip_str);
	printk("R8169 Netmask:      %s\n", dev->nm_str);
	printk("R8169 Gateway:      %s\n", dev->gw_str);

	// Remember our PCI info
  	netif_add(&r8169_netif, &ip, &nm, &gw, dev, r8169_hw_init, tcpip_input);

	return 0;
}
Esempio n. 2
0
File: pci.c Progetto: B-Rich/morbo
/* Fillout pci_device structure. */
void
populate_device_info(uint32_t cfg_address, struct pci_device *dev)
{
  uint32_t vendor_id = pci_read_uint32(cfg_address + PCI_CFG_VENDOR_ID);
  uint32_t device_id = vendor_id >> 16;
  vendor_id &= 0xFFFF;
  
  dev->db = pci_lookup_device(vendor_id, device_id);
  dev->cfg_address = cfg_address;
}