/** * bootm_disable_interrupts() - Disable interrupts in preparation for load/boot * * @return interrupt flag (0 if interrupts were disabled, non-zero if they were * enabled) */ static ulong bootm_disable_interrupts(void) { ulong iflag; /* * We have reached the point of no return: we are going to * overwrite all exception vector code, so we cannot easily * recover from any failures any more... */ iflag = disable_interrupts(); #ifdef CONFIG_NETCONSOLE /* Stop the ethernet stack if NetConsole could have left it up */ eth_halt(); eth_unregister(eth_get_dev()); #endif #if defined(CONFIG_CMD_USB) /* * turn off USB to prevent the host controller from writing to the * SDRAM while Linux is booting. This could happen (at least for OHCI * controller), because the HCCA (Host Controller Communication Area) * lies within the SDRAM and the host controller writes continously to * this area (as busmaster!). The HccaFrameNumber is for example * updated every 1 ms within the HCCA structure in SDRAM! For more * details see the OpenHCI specification. */ usb_stop(); #endif return iflag; }
void usbnet_disconnect(struct usb_device *usbdev) { struct usbnet *undev = usbdev->drv_data; struct eth_device *edev = &undev->edev; struct driver_info *info; info = undev->driver_info; if (info->unbind) info->unbind(undev); eth_unregister(edev); free(undev); }