Subversion Repositories HelenOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "pci.h"
  2. #include "intel_piix3.h"
  3. #include "isa.h"
  4.  
  5. #define NAME "Intel PIIX3"
  6.  
  7.  
  8. static int piix3_add_device(pci_dev_t *dev);
  9. static void * piix3_absolutize(void *phys_addr);
  10.  
  11. static pci_drv_ops_t piix3_pci_ops = {
  12.     .add_device = piix3_add_device
  13. };
  14.  
  15. static pci_drv_t piix3_drv = {
  16.     .name = NAME,
  17.     .link = { NULL, NULL },
  18.     .vendor_id = 0x8086,
  19.     .device_id = 0x7010,
  20.     .ops = &piix3_pci_ops
  21. };
  22.  
  23. static bridge_to_isa_ops_t piix3_bridge_ops = {
  24.     .absolutize = piix3_absolutize
  25. };
  26.  
  27. int intel_piix3_init()
  28. {
  29.     pci_driver_register(&piix3_drv);
  30.     return 0;
  31. }
  32.  
  33.  
  34. static int piix3_add_device(pci_dev_t *dev)
  35. {
  36.     printf(NAME " driver: new device %3d : %2d : %2d was added.\n", dev->bus->num, dev->dev, dev->fn);
  37.    
  38.     // register this device as a pci-to-isa bridge by the isa bus driver
  39.     bridge_to_isa_t *bridge_dev = isa_alloc_bridge();
  40.     isa_init_bridge(bridge_dev, &piix3_bridge_ops, dev);
  41.     isa_register_bridge(bridge_dev);       
  42.    
  43.     return 1;
  44. }
  45.  
  46. // this might be more usable at different architectures
  47. static void * piix3_absolutize(void *phys_addr)
  48. {
  49.     return phys_addr;
  50. }
  51.  
  52.  
  53.  
  54.  
  55.