Lines Matching defs:p_slot

39 static int shpchp_enable_slot(struct slot *p_slot);
40 static int shpchp_disable_slot(struct slot *p_slot);
42 static int queue_interrupt_event(struct slot *p_slot, u32 event_type)
51 info->p_slot = p_slot;
61 struct slot *p_slot;
67 p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
68 p_slot->hpc_ops->get_adapter_status(p_slot, &(p_slot->presence_save));
73 ctrl_info(ctrl, "Button pressed on Slot(%s)\n", slot_name(p_slot));
76 queue_interrupt_event(p_slot, event_type);
84 struct slot *p_slot;
91 p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
92 p_slot->hpc_ops->get_adapter_status(p_slot, &(p_slot->presence_save));
93 p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
95 p_slot->presence_save, p_slot->pwr_save);
101 ctrl_info(ctrl, "Latch open on Slot(%s)\n", slot_name(p_slot));
103 if (p_slot->pwr_save && p_slot->presence_save) {
111 ctrl_info(ctrl, "Latch close on Slot(%s)\n", slot_name(p_slot));
115 queue_interrupt_event(p_slot, event_type);
122 struct slot *p_slot;
128 p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
133 p_slot->hpc_ops->get_adapter_status(p_slot, &(p_slot->presence_save));
134 if (p_slot->presence_save) {
139 slot_name(p_slot));
146 slot_name(p_slot));
150 queue_interrupt_event(p_slot, event_type);
157 struct slot *p_slot;
163 p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
165 if ( !(p_slot->hpc_ops->query_power_fault(p_slot))) {
170 slot_name(p_slot));
171 p_slot->status = 0x00;
177 ctrl_info(ctrl, "Power fault on Slot(%s)\n", slot_name(p_slot));
180 p_slot->status = 0xFF;
184 queue_interrupt_event(p_slot, event_type);
192 static int change_bus_speed(struct controller *ctrl, struct slot *p_slot,
198 if ((rc = p_slot->hpc_ops->set_bus_speed_mode(p_slot, speed))) {
237 * @p_slot: target &slot
242 static int board_added(struct slot *p_slot)
248 struct controller *ctrl = p_slot->ctrl;
251 hp_slot = p_slot->device - ctrl->slot_device_offset;
254 "%s: p_slot->device, slot_offset, hp_slot = %d, %d ,%d\n",
255 __func__, p_slot->device, ctrl->slot_device_offset, hp_slot);
258 rc = p_slot->hpc_ops->power_on_slot(p_slot);
268 if ((rc = p_slot->hpc_ops->set_bus_speed_mode(p_slot, PCI_SPEED_33MHz))) {
275 if ((rc = p_slot->hpc_ops->slot_enable(p_slot))) {
281 rc = p_slot->hpc_ops->get_adapter_speed(p_slot, &asp);
299 rc = fix_bus_speed(ctrl, p_slot, slots_not_empty, asp, bsp, msp);
304 if ((rc = p_slot->hpc_ops->slot_enable(p_slot))) {
312 ctrl_dbg(ctrl, "%s: slot status = %x\n", __func__, p_slot->status);
314 if (p_slot->status == 0xFF) {
318 p_slot->status = 0;
322 if (shpchp_configure_device(p_slot)) {
324 pci_domain_nr(parent), p_slot->bus, p_slot->device);
328 p_slot->status = 0;
329 p_slot->is_a_board = 0x01;
330 p_slot->pwr_save = 1;
332 p_slot->hpc_ops->green_led_on(p_slot);
338 rc = p_slot->hpc_ops->slot_disable(p_slot);
351 * @p_slot: target &slot
353 static int remove_board(struct slot *p_slot)
355 struct controller *ctrl = p_slot->ctrl;
359 if (shpchp_unconfigure_device(p_slot))
362 hp_slot = p_slot->device - ctrl->slot_device_offset;
363 p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);
368 if (p_slot->is_a_board)
369 p_slot->status = 0x01;
372 rc = p_slot->hpc_ops->slot_disable(p_slot);
379 rc = p_slot->hpc_ops->set_attention_status(p_slot, 0);
385 p_slot->pwr_save = 0;
386 p_slot->is_a_board = 0;
393 struct slot *p_slot;
408 struct slot *p_slot = info->p_slot;
410 mutex_lock(&p_slot->lock);
411 switch (p_slot->state) {
413 mutex_unlock(&p_slot->lock);
414 shpchp_disable_slot(p_slot);
415 mutex_lock(&p_slot->lock);
416 p_slot->state = STATIC_STATE;
419 mutex_unlock(&p_slot->lock);
420 if (shpchp_enable_slot(p_slot))
421 p_slot->hpc_ops->green_led_off(p_slot);
422 mutex_lock(&p_slot->lock);
423 p_slot->state = STATIC_STATE;
428 mutex_unlock(&p_slot->lock);
435 struct slot *p_slot = container_of(work, struct slot, work.work);
440 ctrl_err(p_slot->ctrl, "%s: Cannot allocate memory\n",
444 info->p_slot = p_slot;
447 mutex_lock(&p_slot->lock);
448 switch (p_slot->state) {
450 p_slot->state = POWEROFF_STATE;
453 p_slot->state = POWERON_STATE;
461 mutex_unlock(&p_slot->lock);
486 static void handle_button_press_event(struct slot *p_slot)
489 struct controller *ctrl = p_slot->ctrl;
491 switch (p_slot->state) {
493 p_slot->hpc_ops->get_power_status(p_slot, &getstatus);
495 p_slot->state = BLINKINGOFF_STATE;
497 "button press.\n", slot_name(p_slot));
499 p_slot->state = BLINKINGON_STATE;
501 "button press.\n", slot_name(p_slot));
504 p_slot->hpc_ops->green_led_blink(p_slot);
505 p_slot->hpc_ops->set_attention_status(p_slot, 0);
507 queue_delayed_work(shpchp_wq, &p_slot->work, 5*HZ);
517 slot_name(p_slot));
518 cancel_delayed_work(&p_slot->work);
519 if (p_slot->state == BLINKINGOFF_STATE)
520 p_slot->hpc_ops->green_led_on(p_slot);
522 p_slot->hpc_ops->green_led_off(p_slot);
523 p_slot->hpc_ops->set_attention_status(p_slot, 0);
525 "button press\n", slot_name(p_slot));
526 p_slot->state = STATIC_STATE;
536 slot_name(p_slot));
537 update_slot_info(p_slot);
548 struct slot *p_slot = info->p_slot;
550 mutex_lock(&p_slot->lock);
553 handle_button_press_event(p_slot);
556 ctrl_dbg(p_slot->ctrl, "%s: Power fault\n", __func__);
557 p_slot->hpc_ops->set_attention_status(p_slot, 1);
558 p_slot->hpc_ops->green_led_off(p_slot);
561 update_slot_info(p_slot);
564 mutex_unlock(&p_slot->lock);
570 static int shpchp_enable_slot (struct slot *p_slot)
574 struct controller *ctrl = p_slot->ctrl;
577 mutex_lock(&p_slot->ctrl->crit_sect);
578 rc = p_slot->hpc_ops->get_adapter_status(p_slot, &getstatus);
580 ctrl_info(ctrl, "No adapter on slot(%s)\n", slot_name(p_slot));
583 rc = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
585 ctrl_info(ctrl, "Latch open on slot(%s)\n", slot_name(p_slot));
588 rc = p_slot->hpc_ops->get_power_status(p_slot, &getstatus);
591 slot_name(p_slot));
595 p_slot->is_a_board = 1;
598 p_slot->hpc_ops->get_adapter_status(p_slot, &(p_slot->presence_save));
599 p_slot->hpc_ops->get_power_status(p_slot, &(p_slot->pwr_save));
600 ctrl_dbg(ctrl, "%s: p_slot->pwr_save %x\n", __func__, p_slot->pwr_save);
601 p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
603 if(((p_slot->ctrl->pci_dev->vendor == PCI_VENDOR_ID_AMD) ||
604 (p_slot->ctrl->pci_dev->device == PCI_DEVICE_ID_AMD_POGO_7458))
605 && p_slot->ctrl->num_slots == 1) {
607 amd_pogo_errata_save_misc_reg(p_slot);
608 retval = board_added(p_slot);
610 amd_pogo_errata_restore_misc_reg(p_slot);
612 retval = board_added(p_slot);
615 p_slot->hpc_ops->get_adapter_status(p_slot,
616 &(p_slot->presence_save));
617 p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
620 update_slot_info(p_slot);
622 mutex_unlock(&p_slot->ctrl->crit_sect);
627 static int shpchp_disable_slot (struct slot *p_slot)
631 struct controller *ctrl = p_slot->ctrl;
633 if (!p_slot->ctrl)
637 mutex_lock(&p_slot->ctrl->crit_sect);
639 rc = p_slot->hpc_ops->get_adapter_status(p_slot, &getstatus);
641 ctrl_info(ctrl, "No adapter on slot(%s)\n", slot_name(p_slot));
644 rc = p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
646 ctrl_info(ctrl, "Latch open on slot(%s)\n", slot_name(p_slot));
649 rc = p_slot->hpc_ops->get_power_status(p_slot, &getstatus);
652 slot_name(p_slot));
656 retval = remove_board(p_slot);
657 update_slot_info(p_slot);
659 mutex_unlock(&p_slot->ctrl->crit_sect);
663 int shpchp_sysfs_enable_slot(struct slot *p_slot)
666 struct controller *ctrl = p_slot->ctrl;
668 mutex_lock(&p_slot->lock);
669 switch (p_slot->state) {
671 cancel_delayed_work(&p_slot->work);
673 p_slot->state = POWERON_STATE;
674 mutex_unlock(&p_slot->lock);
675 retval = shpchp_enable_slot(p_slot);
676 mutex_lock(&p_slot->lock);
677 p_slot->state = STATIC_STATE;
681 slot_name(p_slot));
686 slot_name(p_slot));
690 slot_name(p_slot));
693 mutex_unlock(&p_slot->lock);
698 int shpchp_sysfs_disable_slot(struct slot *p_slot)
701 struct controller *ctrl = p_slot->ctrl;
703 mutex_lock(&p_slot->lock);
704 switch (p_slot->state) {
706 cancel_delayed_work(&p_slot->work);
708 p_slot->state = POWEROFF_STATE;
709 mutex_unlock(&p_slot->lock);
710 retval = shpchp_disable_slot(p_slot);
711 mutex_lock(&p_slot->lock);
712 p_slot->state = STATIC_STATE;
716 slot_name(p_slot));
721 slot_name(p_slot));
725 slot_name(p_slot));
728 mutex_unlock(&p_slot->lock);