Lines Matching refs:slot_cur

56 	struct slot *slot_cur = *sl;  in get_cur_bus_info()  local
58 debug("options = %x\n", slot_cur->ctrl->options); in get_cur_bus_info()
59 debug("revision = %x\n", slot_cur->ctrl->revision); in get_cur_bus_info()
61 if (READ_BUS_STATUS(slot_cur->ctrl)) in get_cur_bus_info()
62 rc = ibmphp_hpc_readslot(slot_cur, READ_BUSSTATUS, NULL); in get_cur_bus_info()
67 slot_cur->bus_on->current_speed = CURRENT_BUS_SPEED(slot_cur->busstatus); in get_cur_bus_info()
68 if (READ_BUS_MODE(slot_cur->ctrl)) in get_cur_bus_info()
69 slot_cur->bus_on->current_bus_mode = in get_cur_bus_info()
70 CURRENT_BUS_MODE(slot_cur->busstatus); in get_cur_bus_info()
72 slot_cur->bus_on->current_bus_mode = 0xFF; in get_cur_bus_info()
75 slot_cur->busstatus, in get_cur_bus_info()
76 slot_cur->bus_on->current_speed, in get_cur_bus_info()
77 slot_cur->bus_on->current_bus_mode); in get_cur_bus_info()
79 *sl = slot_cur; in get_cur_bus_info()
96 struct slot *slot_cur; in get_max_slots() local
99 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in get_max_slots()
101 slot_count = max(slot_count, slot_cur->number); in get_max_slots()
178 static inline int power_on(struct slot *slot_cur) in power_on() argument
183 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in power_on()
188 if (CTLR_RESULT(slot_cur->ctrl->status)) { in power_on()
196 static inline int power_off(struct slot *slot_cur) in power_off() argument
201 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in power_off()
206 if (CTLR_RESULT(slot_cur->ctrl->status)) { in power_off()
403 struct slot *slot_cur; in init_ops() local
407 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in init_ops()
409 slot_cur->number); in init_ops()
410 if (slot_cur->ctrl->revision == 0xFF) in init_ops()
411 if (get_ctrl_revision(slot_cur, in init_ops()
412 &slot_cur->ctrl->revision)) in init_ops()
415 if (slot_cur->bus_on->current_speed == 0xFF) in init_ops()
416 if (get_cur_bus_info(&slot_cur)) in init_ops()
418 get_max_bus_speed(slot_cur); in init_ops()
420 if (slot_cur->ctrl->options == 0xFF) in init_ops()
421 if (get_hpc_options(slot_cur, &slot_cur->ctrl->options)) in init_ops()
424 retval = slot_update(&slot_cur); in init_ops()
428 debug("status = %x\n", slot_cur->status); in init_ops()
429 debug("ext_status = %x\n", slot_cur->ext_status); in init_ops()
430 debug("SLOT_POWER = %x\n", SLOT_POWER(slot_cur->status)); in init_ops()
431 debug("SLOT_PRESENT = %x\n", SLOT_PRESENT(slot_cur->status)); in init_ops()
432 debug("SLOT_LATCH = %x\n", SLOT_LATCH(slot_cur->status)); in init_ops()
434 if ((SLOT_PWRGD(slot_cur->status)) && in init_ops()
435 !(SLOT_PRESENT(slot_cur->status)) && in init_ops()
436 !(SLOT_LATCH(slot_cur->status))) { in init_ops()
438 rc = power_off(slot_cur); in init_ops()
458 static int validate(struct slot *slot_cur, int opn) in validate() argument
463 if (!slot_cur) in validate()
465 number = slot_cur->number; in validate()
468 debug("slot_number in validate is %d\n", slot_cur->number); in validate()
470 retval = slot_update(&slot_cur); in validate()
476 if (!(SLOT_PWRGD(slot_cur->status)) && in validate()
477 (SLOT_PRESENT(slot_cur->status)) && in validate()
478 !(SLOT_LATCH(slot_cur->status))) in validate()
482 if ((SLOT_PWRGD(slot_cur->status)) && in validate()
483 (SLOT_PRESENT(slot_cur->status)) && in validate()
484 !(SLOT_LATCH(slot_cur->status))) in validate()
499 int ibmphp_update_slot_info(struct slot *slot_cur) in ibmphp_update_slot_info() argument
501 struct pci_bus *bus = slot_cur->hotplug_slot.pci_slot->bus; in ibmphp_update_slot_info()
505 bus_speed = slot_cur->bus_on->current_speed; in ibmphp_update_slot_info()
506 mode = slot_cur->bus_on->current_bus_mode; in ibmphp_update_slot_info()
542 struct slot *slot_cur; in ibm_slot_find() local
543 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in ibm_slot_find()
544 if (slot_cur->func) { in ibm_slot_find()
545 func_cur = slot_cur->func; in ibm_slot_find()
565 struct slot *slot_cur, *next; in free_slots() local
569 list_for_each_entry_safe(slot_cur, next, &ibmphp_slot_head, in free_slots()
571 pci_hp_del(&slot_cur->hotplug_slot); in free_slots()
572 slot_cur->ctrl = NULL; in free_slots()
573 slot_cur->bus_on = NULL; in free_slots()
579 ibmphp_unconfigure_card(&slot_cur, -1); in free_slots()
581 pci_hp_destroy(&slot_cur->hotplug_slot); in free_slots()
582 kfree(slot_cur); in free_slots()
707 static int is_bus_empty(struct slot *slot_cur) in is_bus_empty() argument
711 u8 i = slot_cur->bus_on->slot_min; in is_bus_empty()
713 while (i <= slot_cur->bus_on->slot_max) { in is_bus_empty()
714 if (i == slot_cur->number) { in is_bus_empty()
738 static int set_bus(struct slot *slot_cur) in set_bus() argument
749 debug("%s - entry slot # %d\n", __func__, slot_cur->number); in set_bus()
750 if (SET_BUS_STATUS(slot_cur->ctrl) && is_bus_empty(slot_cur)) { in set_bus()
751 rc = slot_update(&slot_cur); in set_bus()
754 speed = SLOT_SPEED(slot_cur->ext_status); in set_bus()
755 debug("ext_status = %x, speed = %x\n", slot_cur->ext_status, speed); in set_bus()
761 if (SLOT_PCIX(slot_cur->ext_status)) { in set_bus()
762 if ((slot_cur->supported_speed >= BUS_SPEED_66) && in set_bus()
763 (slot_cur->supported_bus_mode == BUS_MODE_PCIX)) in set_bus()
765 else if (!SLOT_BUS_MODE(slot_cur->ext_status)) in set_bus()
773 if (slot_cur->supported_speed >= BUS_SPEED_66) in set_bus()
780 switch (slot_cur->supported_speed) { in set_bus()
785 if (slot_cur->supported_bus_mode == BUS_MODE_PCIX) in set_bus()
796 ibmphp_hpc_writeslot(slot_cur, in set_bus()
810 slot_cur->number, cmd); in set_bus()
811 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in set_bus()
816 if (CTLR_RESULT(slot_cur->ctrl->status)) { in set_bus()
835 static int check_limitations(struct slot *slot_cur) in check_limitations() argument
842 for (i = slot_cur->bus_on->slot_min; i <= slot_cur->bus_on->slot_max; i++) { in check_limitations()
850 get_cur_bus_info(&slot_cur); in check_limitations()
851 switch (slot_cur->bus_on->current_speed) { in check_limitations()
853 limitation = slot_cur->bus_on->slots_at_33_conv; in check_limitations()
856 if (slot_cur->bus_on->current_bus_mode == BUS_MODE_PCIX) in check_limitations()
857 limitation = slot_cur->bus_on->slots_at_66_pcix; in check_limitations()
859 limitation = slot_cur->bus_on->slots_at_66_conv; in check_limitations()
862 limitation = slot_cur->bus_on->slots_at_100_pcix; in check_limitations()
865 limitation = slot_cur->bus_on->slots_at_133_pcix; in check_limitations()
874 static inline void print_card_capability(struct slot *slot_cur) in print_card_capability() argument
877 if ((slot_cur->ext_status & CARD_INFO) == PCIX133) in print_card_capability()
879 else if ((slot_cur->ext_status & CARD_INFO) == PCIX66) in print_card_capability()
881 else if ((slot_cur->ext_status & CARD_INFO) == PCI66) in print_card_capability()
896 struct slot *slot_cur; in enable_slot() local
903 slot_cur = to_slot(hs); in enable_slot()
905 rc = validate(slot_cur, ENABLE); in enable_slot()
911 attn_LED_blink(slot_cur); in enable_slot()
913 rc = set_bus(slot_cur); in enable_slot()
920 get_cur_bus_info(&slot_cur); in enable_slot()
922 slot_cur->bus_on->current_speed); in enable_slot()
925 rc = check_limitations(slot_cur); in enable_slot()
934 rc = power_on(slot_cur); in enable_slot()
939 attn_off(slot_cur); in enable_slot()
940 attn_on(slot_cur); in enable_slot()
941 if (slot_update(&slot_cur)) { in enable_slot()
942 attn_off(slot_cur); in enable_slot()
943 attn_on(slot_cur); in enable_slot()
948 if ((SLOT_POWER(slot_cur->status)) && in enable_slot()
949 !(SLOT_PWRGD(slot_cur->status))) in enable_slot()
951 else if (SLOT_BUS_SPEED(slot_cur->status)) { in enable_slot()
953 print_card_capability(slot_cur); in enable_slot()
954 } else if (SLOT_BUS_MODE(slot_cur->ext_status)) { in enable_slot()
956 print_card_capability(slot_cur); in enable_slot()
958 ibmphp_update_slot_info(slot_cur); in enable_slot()
963 get_cur_bus_info(&slot_cur); in enable_slot()
965 slot_cur->bus_on->current_speed); in enable_slot()
968 rc = slot_update(&slot_cur); in enable_slot()
973 if (SLOT_POWER(slot_cur->status) && !(SLOT_PWRGD(slot_cur->status))) { in enable_slot()
977 if (SLOT_POWER(slot_cur->status) && (SLOT_BUS_SPEED(slot_cur->status))) { in enable_slot()
979 print_card_capability(slot_cur); in enable_slot()
984 if (!(SLOT_POWER(slot_cur->status))) { in enable_slot()
989 slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL); in enable_slot()
990 if (!slot_cur->func) { in enable_slot()
995 slot_cur->func->busno = slot_cur->bus; in enable_slot()
996 slot_cur->func->device = slot_cur->device; in enable_slot()
998 slot_cur->func->irq[i] = slot_cur->irq[i]; in enable_slot()
1001 slot_cur->bus, slot_cur->device); in enable_slot()
1003 if (ibmphp_configure_card(slot_cur->func, slot_cur->number)) { in enable_slot()
1007 ibmphp_unconfigure_card(&slot_cur, 1); in enable_slot()
1009 slot_cur->func = NULL; in enable_slot()
1016 tmp_func = ibm_slot_find(slot_cur->bus, slot_cur->func->device, in enable_slot()
1022 attn_off(slot_cur); in enable_slot()
1023 if (slot_update(&slot_cur)) { in enable_slot()
1028 rc = ibmphp_update_slot_info(slot_cur); in enable_slot()
1034 attn_off(slot_cur); /* need to turn off if was blinking b4 */ in enable_slot()
1035 attn_on(slot_cur); in enable_slot()
1037 rcpr = slot_update(&slot_cur); in enable_slot()
1042 ibmphp_update_slot_info(slot_cur); in enable_slot()
1046 attn_off(slot_cur); /* need to turn off if was blinking b4 */ in enable_slot()
1047 attn_on(slot_cur); in enable_slot()
1048 rcpr = power_off(slot_cur); in enable_slot()
1073 int ibmphp_do_disable_slot(struct slot *slot_cur) in ibmphp_do_disable_slot() argument
1080 if ((slot_cur == NULL) || (slot_cur->ctrl == NULL)) in ibmphp_do_disable_slot()
1083 flag = slot_cur->flag; in ibmphp_do_disable_slot()
1084 slot_cur->flag = 1; in ibmphp_do_disable_slot()
1087 rc = validate(slot_cur, DISABLE); in ibmphp_do_disable_slot()
1092 attn_LED_blink(slot_cur); in ibmphp_do_disable_slot()
1094 if (slot_cur->func == NULL) { in ibmphp_do_disable_slot()
1096 slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL); in ibmphp_do_disable_slot()
1097 if (!slot_cur->func) { in ibmphp_do_disable_slot()
1101 slot_cur->func->busno = slot_cur->bus; in ibmphp_do_disable_slot()
1102 slot_cur->func->device = slot_cur->device; in ibmphp_do_disable_slot()
1105 ibm_unconfigure_device(slot_cur->func); in ibmphp_do_disable_slot()
1115 attn_off(slot_cur); in ibmphp_do_disable_slot()
1119 rc = ibmphp_unconfigure_card(&slot_cur, 0); in ibmphp_do_disable_slot()
1120 slot_cur->func = NULL; in ibmphp_do_disable_slot()
1127 rc = ibmphp_hpc_writeslot(slot_cur, HPC_SLOT_OFF); in ibmphp_do_disable_slot()
1131 attn_off(slot_cur); in ibmphp_do_disable_slot()
1132 rc = slot_update(&slot_cur); in ibmphp_do_disable_slot()
1136 rc = ibmphp_update_slot_info(slot_cur); in ibmphp_do_disable_slot()
1143 attn_off(slot_cur); in ibmphp_do_disable_slot()
1144 attn_on(slot_cur); in ibmphp_do_disable_slot()
1145 if (slot_update(&slot_cur)) { in ibmphp_do_disable_slot()
1150 ibmphp_update_slot_info(slot_cur); in ibmphp_do_disable_slot()