• Home
  • Raw
  • Download

Lines Matching +full:reset +full:- +full:assert +full:- +full:ms

36 #define MB_FCR32(bay, r)	((bay)->base + ((r) >> 2))
37 #define MB_FCR8(bay, r) (((volatile u8 __iomem *)((bay)->base)) + (r))
80 * Wait that number of ms between each step in normal polling mode
85 * Consider the media-bay ID value stable if it is the same for
90 /* Wait after powering up the media bay this delay in ms
96 * Hold the media-bay reset signal true for this many ticks
102 * Wait this long after the reset signal is released and before doing
103 * further operations. After this delay, the IDE reset signal is released
109 * Wait this many ticks after an IDE device (e.g. CD-ROM) is inserted
121 mb_resetting, /* reset bit unset, waiting MB_SETUP_DELAY */
122 mb_ide_resetting, /* IDE reset bit unser, waiting MB_IDE_WAIT */
156 bay->cached_gpio = new_gpio; in keylargo_mb_content()
158 } else if (bay->cached_gpio != new_gpio) { in keylargo_mb_content()
165 bay->cached_gpio = new_gpio; in keylargo_mb_content()
172 * into reset state as well
179 /* Power up device, assert it's reset line */ in ohare_mb_power()
186 /* Cut power from bay, release reset line */ in ohare_mb_power()
198 /* Power up device, assert it's reset line */ in heathrow_mb_power()
205 /* Cut power from bay, release reset line */ in heathrow_mb_power()
217 /* Power up device, assert it's reset line */ in keylargo_mb_power()
224 /* Cut power from bay, release reset line */ in keylargo_mb_power()
254 return -ENODEV; in ohare_mb_setup_bus()
274 return -ENODEV; in heathrow_mb_setup_bus()
293 return -ENODEV; in keylargo_mb_setup_bus()
338 /* Power up up and assert the bay reset line */ in set_mb_power()
340 bay->ops->power(bay, 1); in set_mb_power()
341 bay->state = mb_powering_up; in set_mb_power()
342 pr_debug("mediabay%d: powering up\n", bay->index); in set_mb_power()
345 bay->ops->power(bay, 0); in set_mb_power()
346 bay->state = mb_powering_down; in set_mb_power()
347 pr_debug("mediabay%d: powering down\n", bay->index); in set_mb_power()
349 bay->timer = msecs_to_jiffies(MB_POWER_DELAY); in set_mb_power()
354 int id = bay->ops->content(bay); in poll_media_bay()
365 if (id != bay->last_value) { in poll_media_bay()
366 bay->last_value = id; in poll_media_bay()
367 bay->value_count = 0; in poll_media_bay()
370 if (id == bay->content_id) in poll_media_bay()
373 bay->value_count += msecs_to_jiffies(MB_POLL_DELAY); in poll_media_bay()
374 if (bay->value_count >= msecs_to_jiffies(MB_STABLE_DELAY)) { in poll_media_bay()
377 * things are properly reset in poll_media_bay()
379 if ((id != MB_NO) && (bay->content_id != MB_NO)) { in poll_media_bay()
381 pr_debug("mediabay%d: forcing MB_NO\n", bay->index); in poll_media_bay()
383 pr_debug("mediabay%d: switching to %d\n", bay->index, id); in poll_media_bay()
385 bay->content_id = id; in poll_media_bay()
387 printk(KERN_INFO "mediabay%d: Bay is now empty\n", bay->index); in poll_media_bay()
390 bay->index, mb_content_types[id]); in poll_media_bay()
410 id = bay->content_id; in check_media_bay()
411 if (bay->state != mb_up) in check_media_bay()
428 mutex_lock(&bay->lock); in lock_media_bay()
429 bay->user_lock = 1; in lock_media_bay()
442 if (bay->user_lock) { in unlock_media_bay()
443 bay->user_lock = 0; in unlock_media_bay()
444 mutex_unlock(&bay->lock); in unlock_media_bay()
456 if (dev->bus != &macio_bus_type) in mb_broadcast_hotplug()
459 state = bay->state == mb_up ? bay->content_id : MB_NO; in mb_broadcast_hotplug()
463 drv = to_macio_driver(dev->driver); in mb_broadcast_hotplug()
464 if (dev->driver && drv->mediabay_event) in mb_broadcast_hotplug()
465 drv->mediabay_event(mdev, state); in mb_broadcast_hotplug()
474 if (bay->state != mb_powering_down) in media_bay_step()
478 if (bay->timer != 0) { in media_bay_step()
479 bay->timer -= msecs_to_jiffies(MB_POLL_DELAY); in media_bay_step()
480 if (bay->timer > 0) in media_bay_step()
482 bay->timer = 0; in media_bay_step()
485 switch(bay->state) { in media_bay_step()
487 if (bay->ops->setup_bus(bay, bay->last_value) < 0) { in media_bay_step()
489 i, bay->content_id); in media_bay_step()
493 bay->timer = msecs_to_jiffies(MB_RESET_DELAY); in media_bay_step()
494 bay->state = mb_enabling_bay; in media_bay_step()
495 pr_debug("mediabay%d: enabling (kind:%d)\n", i, bay->content_id); in media_bay_step()
498 bay->ops->un_reset(bay); in media_bay_step()
499 bay->timer = msecs_to_jiffies(MB_SETUP_DELAY); in media_bay_step()
500 bay->state = mb_resetting; in media_bay_step()
501 pr_debug("mediabay%d: releasing bay reset (kind:%d)\n", in media_bay_step()
502 i, bay->content_id); in media_bay_step()
505 if (bay->content_id != MB_CD) { in media_bay_step()
507 bay->content_id); in media_bay_step()
508 bay->state = mb_up; in media_bay_step()
509 device_for_each_child(&bay->mdev->ofdev.dev, in media_bay_step()
513 pr_debug("mediabay%d: releasing ATA reset (kind:%d)\n", in media_bay_step()
514 i, bay->content_id); in media_bay_step()
515 bay->ops->un_reset_ide(bay); in media_bay_step()
516 bay->timer = msecs_to_jiffies(MB_IDE_WAIT); in media_bay_step()
517 bay->state = mb_ide_resetting; in media_bay_step()
521 pr_debug("mediabay%d: bay is up (kind:%d)\n", i, bay->content_id); in media_bay_step()
522 bay->state = mb_up; in media_bay_step()
523 device_for_each_child(&bay->mdev->ofdev.dev, in media_bay_step()
528 bay->state = mb_empty; in media_bay_step()
529 device_for_each_child(&bay->mdev->ofdev.dev, in media_bay_step()
568 ofnode = mdev->ofdev.dev.of_node; in media_bay_attach()
571 return -ENODEV; in media_bay_attach()
572 if (macio_request_resources(mdev, "media-bay")) in media_bay_attach()
573 return -EBUSY; in media_bay_attach()
575 * mac-io chip, for now, we trick and align down the first in media_bay_attach()
582 return -ENOMEM; in media_bay_attach()
587 bay->mdev = mdev; in media_bay_attach()
588 bay->base = regbase; in media_bay_attach()
589 bay->index = i; in media_bay_attach()
590 bay->ops = match->data; in media_bay_attach()
591 bay->sleeping = 0; in media_bay_attach()
592 mutex_init(&bay->lock); in media_bay_attach()
595 if (bay->ops->init) in media_bay_attach()
596 bay->ops->init(bay); in media_bay_attach()
598 printk(KERN_INFO "mediabay%d: Registered %s media-bay\n", i, bay->ops->name); in media_bay_attach()
603 bay->content_id = MB_NO; in media_bay_attach()
604 bay->last_value = bay->ops->content(bay); in media_bay_attach()
605 bay->value_count = msecs_to_jiffies(MB_STABLE_DELAY); in media_bay_attach()
606 bay->state = mb_empty; in media_bay_attach()
613 kthread_run(media_bay_task, NULL, "media-bay"); in media_bay_attach()
623 if (state.event != mdev->ofdev.dev.power.power_state.event in media_bay_suspend()
625 mutex_lock(&bay->lock); in media_bay_suspend()
626 bay->sleeping = 1; in media_bay_suspend()
628 mutex_unlock(&bay->lock); in media_bay_suspend()
630 mdev->ofdev.dev.power.power_state = state; in media_bay_suspend()
639 if (mdev->ofdev.dev.power.power_state.event != PM_EVENT_ON) { in media_bay_resume()
640 mdev->ofdev.dev.power.power_state = PMSG_ON; in media_bay_resume()
642 /* We re-enable the bay using it's previous content in media_bay_resume()
647 mutex_lock(&bay->lock); in media_bay_resume()
650 if (bay->ops->content(bay) != bay->content_id) { in media_bay_resume()
651 printk("mediabay%d: Content changed during sleep...\n", bay->index); in media_bay_resume()
652 mutex_unlock(&bay->lock); in media_bay_resume()
656 bay->last_value = bay->content_id; in media_bay_resume()
657 bay->value_count = msecs_to_jiffies(MB_STABLE_DELAY); in media_bay_resume()
658 bay->timer = msecs_to_jiffies(MB_POWER_DELAY); in media_bay_resume()
661 media_bay_step(bay->index); in media_bay_resume()
662 } while((bay->state != mb_empty) && in media_bay_resume()
663 (bay->state != mb_up)); in media_bay_resume()
664 bay->sleeping = 0; in media_bay_resume()
665 mutex_unlock(&bay->lock); in media_bay_resume()
702 * It seems that the bit for the media-bay interrupt in the IRQ_LEVEL
705 * handler to the media-bay interrupt, because it tends to go into
713 .name = "media-bay",
714 .compatible = "keylargo-media-bay",
718 .name = "media-bay",
719 .compatible = "heathrow-media-bay",
723 .name = "media-bay",
724 .compatible = "ohare-media-bay",
733 .name = "media-bay",
747 media_bays[i].content_id = -1; in media_bay_init()