From: Denis V. <vd...@il...> - 2006-02-08 12:51:57
|
Hi folks, If someone has cardbus acx, please test this one. Basically, in acxpci_e_remove() we will check the presence of the card by reading a register and if it is not all ones, we will command device to shut down. Previously it was done in acxpci_e_cleanup_module(). +INLINE_IO int +adev_present(acx_device_t *adev) +{ + /* fast version (accesses the first register, IO_ACX_SOFT_RESET, + * which should be safe): */ + return readl(adev->iobase) != 0xffffffff; +} @@ -1785,6 +1725,43 @@ acxpci_e_remove(struct pci_dev *pdev) adev = ndev2adev(ndev); + /* If device wasn't hot unplugged... */ + if (adev_present(adev)) { + + acx_sem_lock(adev); + + /* disable both Tx and Rx to shut radio down properly */ + acx_s_issue_cmd(adev, ACX1xx_CMD_DISABLE_TX, NULL, 0); + acx_s_issue_cmd(adev, ACX1xx_CMD_DISABLE_RX, NULL, 0); ... -- vda |