27 |
#include "net_io.h" |
#include "net_io.h" |
28 |
#include "ptask.h" |
#include "ptask.h" |
29 |
#include "dev_c7200.h" |
#include "dev_c7200.h" |
30 |
|
#include "dev_plx.h" |
31 |
|
|
32 |
/* Debugging flags */ |
/* Debugging flags */ |
33 |
#define DEBUG_ACCESS 0 |
#define DEBUG_ACCESS 0 |
654 |
d->rx_dev.name = d->rx_name; |
d->rx_dev.name = d->rx_name; |
655 |
d->rx_dev.priv_data = d; |
d->rx_dev.priv_data = d; |
656 |
d->rx_dev.handler = dev_pos_rx_access; |
d->rx_dev.handler = dev_pos_rx_access; |
|
vm_bind_device(d->vm,&d->rx_dev); |
|
657 |
|
|
658 |
/* Initialize TX device */ |
/* Initialize TX device */ |
659 |
d->tx_name = dyn_sprintf("%s_TX",name); |
d->tx_name = dyn_sprintf("%s_TX",name); |
661 |
d->tx_dev.name = d->tx_name; |
d->tx_dev.name = d->tx_name; |
662 |
d->tx_dev.priv_data = d; |
d->tx_dev.priv_data = d; |
663 |
d->tx_dev.handler = dev_pos_tx_access; |
d->tx_dev.handler = dev_pos_tx_access; |
|
vm_bind_device(d->vm,&d->tx_dev); |
|
664 |
|
|
665 |
/* Initialize CS device */ |
/* Initialize CS device */ |
666 |
d->cs_name = dyn_sprintf("%s_CS",name); |
d->cs_name = dyn_sprintf("%s_CS",name); |
668 |
d->cs_dev.name = d->cs_name; |
d->cs_dev.name = d->cs_name; |
669 |
d->cs_dev.priv_data = d; |
d->cs_dev.priv_data = d; |
670 |
d->cs_dev.handler = dev_pos_cs_access; |
d->cs_dev.handler = dev_pos_cs_access; |
|
vm_bind_device(d->vm,&d->cs_dev); |
|
671 |
|
|
672 |
/* Initialize PLX9060 for RX part */ |
/* Initialize PLX9060 for RX part */ |
673 |
d->rx_obj = dev_plx9060_init(d->vm,d->rx_name,pci_bus,0,&d->rx_dev); |
d->rx_obj = dev_plx9060_init(d->vm,d->rx_name,pci_bus,0,&d->rx_dev); |
684 |
d->dev.priv_data = d; |
d->dev.priv_data = d; |
685 |
d->dev.phys_len = 0x10000; |
d->dev.phys_len = 0x10000; |
686 |
d->dev.handler = dev_pos_access; |
d->dev.handler = dev_pos_access; |
|
vm_bind_device(d->vm,&d->dev); |
|
687 |
|
|
688 |
d->pci_dev = pci_dev_add(pci_bus,name,0,0,3,0,C7200_NETIO_IRQ, |
d->pci_dev = pci_dev_add(pci_bus,name,0,0,3,0,C7200_NETIO_IRQ, |
689 |
d,NULL,pci_pos_read,pci_pos_write); |
d,NULL,pci_pos_read,pci_pos_write); |
714 |
vm_object_remove(d->vm,d->tx_obj); |
vm_object_remove(d->vm,d->tx_obj); |
715 |
vm_object_remove(d->vm,d->cs_obj); |
vm_object_remove(d->vm,d->cs_obj); |
716 |
|
|
717 |
/* Remove the device from the CPU address space */ |
/* Remove the devices from the CPU address space */ |
718 |
|
vm_unbind_device(router->vm,&d->rx_dev); |
719 |
|
vm_unbind_device(router->vm,&d->tx_dev); |
720 |
|
vm_unbind_device(router->vm,&d->cs_dev); |
721 |
|
|
722 |
vm_unbind_device(router->vm,&d->dev); |
vm_unbind_device(router->vm,&d->dev); |
723 |
cpu_group_rebuild_mts(router->vm->cpu_group); |
cpu_group_rebuild_mts(router->vm->cpu_group); |
724 |
|
|