--- zzzz-none-000/linux-2.6.28.10/drivers/usb/core/hub.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/drivers/usb/core/hub.c 2011-03-31 12:27:43.000000000 +0000 @@ -30,6 +30,10 @@ #include "hcd.h" #include "hub.h" +#ifdef CONFIG_AVM_POWERMETER +#include +#endif /*--- #ifdef CONFIG_AVM_POWERMETER ---*/ + /* if we are in debug mode, always announce new devices */ #ifdef DEBUG #ifndef CONFIG_USB_ANNOUNCE_NEW_DEVICES @@ -1274,6 +1278,12 @@ unsigned long flags; spin_lock_irqsave(&device_state_lock, flags); +#ifdef CONFIG_FUSIV_USB_LED + if (new_state == USB_STATE_NOTATTACHED) + fusiv_usb_led_clear(udev->portnum -1 ,FUSIV_USB_LED_ATTCHD_BIT); + else + fusiv_usb_led_set(udev->portnum - 1,FUSIV_USB_LED_ATTCHD_BIT); +#endif if (udev->state == USB_STATE_NOTATTACHED) ; /* do nothing */ else if (new_state != USB_STATE_NOTATTACHED) { @@ -1418,6 +1428,22 @@ usb_set_device_state(udev, USB_STATE_NOTATTACHED); dev_info (&udev->dev, "USB disconnect, address %d\n", udev->devnum); +#if defined(CONFIG_AVM_POWERMETER) + if (udev->level == 1) { + unsigned nextmA = 0; + unsigned avm_powerdevice; + +#if defined (CONFIG_FUSIV_VX180) || defined (CONFIG_MACH_AR934x) + avm_powerdevice = (udev->portnum == 1)? powerdevice_usb_host : powerdevice_usb_host2; + printk (KERN_INFO "Port#%u disconnect: AVM Powermeter changed to %u mA\n", udev->portnum, nextmA); +#else + avm_powerdevice = (udev->bus->busnum == 1)? powerdevice_usb_host : powerdevice_usb_host2; + printk (KERN_INFO "Bus#%u disconnect: AVM Powermeter changed to %u mA\n", udev->bus->busnum, nextmA); +#endif + PowerManagmentRessourceInfo(avm_powerdevice, nextmA); + } +#endif // CONFIG_AVM_POWERMETER + usb_lock_device(udev); /* Free up all the children before we remove this device */