Deleted Added
full compact
usb_controller.c (242775) usb_controller.c (247090)
1/* $FreeBSD: stable/9/sys/dev/usb/controller/usb_controller.c 242775 2012-11-08 16:13:51Z hselasky $ */
1/* $FreeBSD: stable/9/sys/dev/usb/controller/usb_controller.c 247090 2013-02-21 07:48:07Z hselasky $ */
2/*-
3 * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.

--- 392 unchanged lines hidden (view full) ---

402 * This function is used to suspend the USB contoller.
403 *------------------------------------------------------------------------*/
404static void
405usb_bus_suspend(struct usb_proc_msg *pm)
406{
407 struct usb_bus *bus;
408 struct usb_device *udev;
409 usb_error_t err;
2/*-
3 * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.

--- 392 unchanged lines hidden (view full) ---

402 * This function is used to suspend the USB contoller.
403 *------------------------------------------------------------------------*/
404static void
405usb_bus_suspend(struct usb_proc_msg *pm)
406{
407 struct usb_bus *bus;
408 struct usb_device *udev;
409 usb_error_t err;
410 uint8_t do_unlock;
410
411 bus = ((struct usb_bus_msg *)pm)->bus;
412 udev = bus->devices[USB_ROOT_HUB_ADDR];
413
414 if (udev == NULL || bus->bdev == NULL)
415 return;
416
417 USB_BUS_UNLOCK(bus);

--- 4 unchanged lines hidden (view full) ---

422 * resume. The USB system suspend is implemented like full
423 * shutdown and all connected USB devices will be disconnected
424 * subsequently. At resume all USB devices will be
425 * re-connected again.
426 */
427
428 bus_generic_shutdown(bus->bdev);
429
411
412 bus = ((struct usb_bus_msg *)pm)->bus;
413 udev = bus->devices[USB_ROOT_HUB_ADDR];
414
415 if (udev == NULL || bus->bdev == NULL)
416 return;
417
418 USB_BUS_UNLOCK(bus);

--- 4 unchanged lines hidden (view full) ---

423 * resume. The USB system suspend is implemented like full
424 * shutdown and all connected USB devices will be disconnected
425 * subsequently. At resume all USB devices will be
426 * re-connected again.
427 */
428
429 bus_generic_shutdown(bus->bdev);
430
430 usbd_enum_lock(udev);
431 do_unlock = usbd_enum_lock(udev);
431
432 err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
433 if (err)
434 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
435
436 USB_BUS_LOCK(bus);
437 bus->hw_power_state = 0;
438 bus->no_explore = 1;
439 USB_BUS_UNLOCK(bus);
440
441 if (bus->methods->set_hw_power != NULL)
442 (bus->methods->set_hw_power) (bus);
443
444 if (bus->methods->set_hw_power_sleep != NULL)
445 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SUSPEND);
446
432
433 err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
434 if (err)
435 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
436
437 USB_BUS_LOCK(bus);
438 bus->hw_power_state = 0;
439 bus->no_explore = 1;
440 USB_BUS_UNLOCK(bus);
441
442 if (bus->methods->set_hw_power != NULL)
443 (bus->methods->set_hw_power) (bus);
444
445 if (bus->methods->set_hw_power_sleep != NULL)
446 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SUSPEND);
447
447 usbd_enum_unlock(udev);
448 if (do_unlock)
449 usbd_enum_unlock(udev);
448
449 USB_BUS_LOCK(bus);
450}
451
452/*------------------------------------------------------------------------*
453 * usb_bus_resume
454 *
455 * This function is used to resume the USB contoller.
456 *------------------------------------------------------------------------*/
457static void
458usb_bus_resume(struct usb_proc_msg *pm)
459{
460 struct usb_bus *bus;
461 struct usb_device *udev;
462 usb_error_t err;
450
451 USB_BUS_LOCK(bus);
452}
453
454/*------------------------------------------------------------------------*
455 * usb_bus_resume
456 *
457 * This function is used to resume the USB contoller.
458 *------------------------------------------------------------------------*/
459static void
460usb_bus_resume(struct usb_proc_msg *pm)
461{
462 struct usb_bus *bus;
463 struct usb_device *udev;
464 usb_error_t err;
465 uint8_t do_unlock;
463
464 bus = ((struct usb_bus_msg *)pm)->bus;
465 udev = bus->devices[USB_ROOT_HUB_ADDR];
466
467 if (udev == NULL || bus->bdev == NULL)
468 return;
469
470 USB_BUS_UNLOCK(bus);
471
466
467 bus = ((struct usb_bus_msg *)pm)->bus;
468 udev = bus->devices[USB_ROOT_HUB_ADDR];
469
470 if (udev == NULL || bus->bdev == NULL)
471 return;
472
473 USB_BUS_UNLOCK(bus);
474
472 usbd_enum_lock(udev);
475 do_unlock = usbd_enum_lock(udev);
473#if 0
474 DEVMETHOD(usb_take_controller, NULL); /* dummy */
475#endif
476 USB_TAKE_CONTROLLER(device_get_parent(bus->bdev));
477
478 USB_BUS_LOCK(bus);
479 bus->hw_power_state =
480 USB_HW_POWER_CONTROL |

--- 17 unchanged lines hidden (view full) ---

498
499 /* probe and attach */
500 err = usb_probe_and_attach(udev, USB_IFACE_INDEX_ANY);
501 if (err) {
502 device_printf(bus->bdev, "Could not probe and "
503 "attach root HUB\n");
504 }
505
476#if 0
477 DEVMETHOD(usb_take_controller, NULL); /* dummy */
478#endif
479 USB_TAKE_CONTROLLER(device_get_parent(bus->bdev));
480
481 USB_BUS_LOCK(bus);
482 bus->hw_power_state =
483 USB_HW_POWER_CONTROL |

--- 17 unchanged lines hidden (view full) ---

501
502 /* probe and attach */
503 err = usb_probe_and_attach(udev, USB_IFACE_INDEX_ANY);
504 if (err) {
505 device_printf(bus->bdev, "Could not probe and "
506 "attach root HUB\n");
507 }
508
506 usbd_enum_unlock(udev);
509 if (do_unlock)
510 usbd_enum_unlock(udev);
507
508 USB_BUS_LOCK(bus);
509}
510
511/*------------------------------------------------------------------------*
512 * usb_bus_shutdown
513 *
514 * This function is used to shutdown the USB contoller.
515 *------------------------------------------------------------------------*/
516static void
517usb_bus_shutdown(struct usb_proc_msg *pm)
518{
519 struct usb_bus *bus;
520 struct usb_device *udev;
521 usb_error_t err;
511
512 USB_BUS_LOCK(bus);
513}
514
515/*------------------------------------------------------------------------*
516 * usb_bus_shutdown
517 *
518 * This function is used to shutdown the USB contoller.
519 *------------------------------------------------------------------------*/
520static void
521usb_bus_shutdown(struct usb_proc_msg *pm)
522{
523 struct usb_bus *bus;
524 struct usb_device *udev;
525 usb_error_t err;
526 uint8_t do_unlock;
522
523 bus = ((struct usb_bus_msg *)pm)->bus;
524 udev = bus->devices[USB_ROOT_HUB_ADDR];
525
526 if (udev == NULL || bus->bdev == NULL)
527 return;
528
529 USB_BUS_UNLOCK(bus);
530
531 bus_generic_shutdown(bus->bdev);
532
527
528 bus = ((struct usb_bus_msg *)pm)->bus;
529 udev = bus->devices[USB_ROOT_HUB_ADDR];
530
531 if (udev == NULL || bus->bdev == NULL)
532 return;
533
534 USB_BUS_UNLOCK(bus);
535
536 bus_generic_shutdown(bus->bdev);
537
533 usbd_enum_lock(udev);
538 do_unlock = usbd_enum_lock(udev);
534
535 err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
536 if (err)
537 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
538
539 USB_BUS_LOCK(bus);
540 bus->hw_power_state = 0;
541 bus->no_explore = 1;
542 USB_BUS_UNLOCK(bus);
543
544 if (bus->methods->set_hw_power != NULL)
545 (bus->methods->set_hw_power) (bus);
546
547 if (bus->methods->set_hw_power_sleep != NULL)
548 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SHUTDOWN);
549
539
540 err = usbd_set_config_index(udev, USB_UNCONFIG_INDEX);
541 if (err)
542 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
543
544 USB_BUS_LOCK(bus);
545 bus->hw_power_state = 0;
546 bus->no_explore = 1;
547 USB_BUS_UNLOCK(bus);
548
549 if (bus->methods->set_hw_power != NULL)
550 (bus->methods->set_hw_power) (bus);
551
552 if (bus->methods->set_hw_power_sleep != NULL)
553 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SHUTDOWN);
554
550 usbd_enum_unlock(udev);
555 if (do_unlock)
556 usbd_enum_unlock(udev);
551
552 USB_BUS_LOCK(bus);
553}
554
555static void
556usb_power_wdog(void *arg)
557{
558 struct usb_bus *bus = arg;

--- 315 unchanged lines hidden ---
557
558 USB_BUS_LOCK(bus);
559}
560
561static void
562usb_power_wdog(void *arg)
563{
564 struct usb_bus *bus = arg;

--- 315 unchanged lines hidden ---