Lines Matching refs:slot_cur

64 	struct slot *slot_cur = *sl;  in get_cur_bus_info()  local
66 debug("options = %x\n", slot_cur->ctrl->options); in get_cur_bus_info()
67 debug("revision = %x\n", slot_cur->ctrl->revision); in get_cur_bus_info()
69 if (READ_BUS_STATUS(slot_cur->ctrl)) in get_cur_bus_info()
70 rc = ibmphp_hpc_readslot(slot_cur, READ_BUSSTATUS, NULL); in get_cur_bus_info()
75 slot_cur->bus_on->current_speed = CURRENT_BUS_SPEED(slot_cur->busstatus); in get_cur_bus_info()
76 if (READ_BUS_MODE(slot_cur->ctrl)) in get_cur_bus_info()
77 slot_cur->bus_on->current_bus_mode = in get_cur_bus_info()
78 CURRENT_BUS_MODE(slot_cur->busstatus); in get_cur_bus_info()
80 slot_cur->bus_on->current_bus_mode = 0xFF; in get_cur_bus_info()
83 slot_cur->busstatus, in get_cur_bus_info()
84 slot_cur->bus_on->current_speed, in get_cur_bus_info()
85 slot_cur->bus_on->current_bus_mode); in get_cur_bus_info()
87 *sl = slot_cur; in get_cur_bus_info()
104 struct slot *slot_cur; in get_max_slots() local
107 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in get_max_slots()
109 slot_count = max(slot_count, slot_cur->number); in get_max_slots()
186 static inline int power_on(struct slot *slot_cur) in power_on() argument
191 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in power_on()
196 if (CTLR_RESULT(slot_cur->ctrl->status)) { in power_on()
204 static inline int power_off(struct slot *slot_cur) in power_off() argument
209 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in power_off()
214 if (CTLR_RESULT(slot_cur->ctrl->status)) { in power_off()
487 struct slot *slot_cur; in init_ops() local
491 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in init_ops()
493 slot_cur->number); in init_ops()
494 if (slot_cur->ctrl->revision == 0xFF) in init_ops()
495 if (get_ctrl_revision(slot_cur, in init_ops()
496 &slot_cur->ctrl->revision)) in init_ops()
499 if (slot_cur->bus_on->current_speed == 0xFF) in init_ops()
500 if (get_cur_bus_info(&slot_cur)) in init_ops()
502 get_max_bus_speed(slot_cur); in init_ops()
504 if (slot_cur->ctrl->options == 0xFF) in init_ops()
505 if (get_hpc_options(slot_cur, &slot_cur->ctrl->options)) in init_ops()
508 retval = slot_update(&slot_cur); in init_ops()
512 debug("status = %x\n", slot_cur->status); in init_ops()
513 debug("ext_status = %x\n", slot_cur->ext_status); in init_ops()
514 debug("SLOT_POWER = %x\n", SLOT_POWER(slot_cur->status)); in init_ops()
515 debug("SLOT_PRESENT = %x\n", SLOT_PRESENT(slot_cur->status)); in init_ops()
516 debug("SLOT_LATCH = %x\n", SLOT_LATCH(slot_cur->status)); in init_ops()
518 if ((SLOT_PWRGD(slot_cur->status)) && in init_ops()
519 !(SLOT_PRESENT(slot_cur->status)) && in init_ops()
520 !(SLOT_LATCH(slot_cur->status))) { in init_ops()
522 rc = power_off(slot_cur); in init_ops()
542 static int validate(struct slot *slot_cur, int opn) in validate() argument
547 if (!slot_cur) in validate()
549 number = slot_cur->number; in validate()
552 debug("slot_number in validate is %d\n", slot_cur->number); in validate()
554 retval = slot_update(&slot_cur); in validate()
560 if (!(SLOT_PWRGD(slot_cur->status)) && in validate()
561 (SLOT_PRESENT(slot_cur->status)) && in validate()
562 !(SLOT_LATCH(slot_cur->status))) in validate()
566 if ((SLOT_PWRGD(slot_cur->status)) && in validate()
567 (SLOT_PRESENT(slot_cur->status)) && in validate()
568 !(SLOT_LATCH(slot_cur->status))) in validate()
583 int ibmphp_update_slot_info(struct slot *slot_cur) in ibmphp_update_slot_info() argument
586 struct pci_bus *bus = slot_cur->hotplug_slot->pci_slot->bus; in ibmphp_update_slot_info()
595 info->power_status = SLOT_PWRGD(slot_cur->status); in ibmphp_update_slot_info()
596 info->attention_status = SLOT_ATTN(slot_cur->status, in ibmphp_update_slot_info()
597 slot_cur->ext_status); in ibmphp_update_slot_info()
598 info->latch_status = SLOT_LATCH(slot_cur->status); in ibmphp_update_slot_info()
599 if (!SLOT_PRESENT(slot_cur->status)) { in ibmphp_update_slot_info()
608 bus_speed = slot_cur->bus_on->current_speed; in ibmphp_update_slot_info()
609 mode = slot_cur->bus_on->current_bus_mode; in ibmphp_update_slot_info()
633 rc = pci_hp_change_slot_info(slot_cur->hotplug_slot, info); in ibmphp_update_slot_info()
647 struct slot *slot_cur; in ibm_slot_find() local
648 list_for_each_entry(slot_cur, &ibmphp_slot_head, ibm_slot_list) { in ibm_slot_find()
649 if (slot_cur->func) { in ibm_slot_find()
650 func_cur = slot_cur->func; in ibm_slot_find()
670 struct slot *slot_cur, *next; in free_slots() local
674 list_for_each_entry_safe(slot_cur, next, &ibmphp_slot_head, in free_slots()
676 pci_hp_del(slot_cur->hotplug_slot); in free_slots()
677 slot_cur->ctrl = NULL; in free_slots()
678 slot_cur->bus_on = NULL; in free_slots()
684 ibmphp_unconfigure_card(&slot_cur, -1); in free_slots()
686 pci_hp_destroy(slot_cur->hotplug_slot); in free_slots()
687 kfree(slot_cur->hotplug_slot->info); in free_slots()
688 kfree(slot_cur->hotplug_slot); in free_slots()
689 kfree(slot_cur); in free_slots()
814 static int is_bus_empty(struct slot *slot_cur) in is_bus_empty() argument
818 u8 i = slot_cur->bus_on->slot_min; in is_bus_empty()
820 while (i <= slot_cur->bus_on->slot_max) { in is_bus_empty()
821 if (i == slot_cur->number) { in is_bus_empty()
845 static int set_bus(struct slot *slot_cur) in set_bus() argument
856 debug("%s - entry slot # %d\n", __func__, slot_cur->number); in set_bus()
857 if (SET_BUS_STATUS(slot_cur->ctrl) && is_bus_empty(slot_cur)) { in set_bus()
858 rc = slot_update(&slot_cur); in set_bus()
861 speed = SLOT_SPEED(slot_cur->ext_status); in set_bus()
862 debug("ext_status = %x, speed = %x\n", slot_cur->ext_status, speed); in set_bus()
868 if (SLOT_PCIX(slot_cur->ext_status)) { in set_bus()
869 if ((slot_cur->supported_speed >= BUS_SPEED_66) && in set_bus()
870 (slot_cur->supported_bus_mode == BUS_MODE_PCIX)) in set_bus()
872 else if (!SLOT_BUS_MODE(slot_cur->ext_status)) in set_bus()
880 if (slot_cur->supported_speed >= BUS_SPEED_66) in set_bus()
887 switch (slot_cur->supported_speed) { in set_bus()
892 if (slot_cur->supported_bus_mode == BUS_MODE_PCIX) in set_bus()
903 ibmphp_hpc_writeslot(slot_cur, in set_bus()
917 slot_cur->number, cmd); in set_bus()
918 retval = ibmphp_hpc_writeslot(slot_cur, cmd); in set_bus()
923 if (CTLR_RESULT(slot_cur->ctrl->status)) { in set_bus()
942 static int check_limitations(struct slot *slot_cur) in check_limitations() argument
949 for (i = slot_cur->bus_on->slot_min; i <= slot_cur->bus_on->slot_max; i++) { in check_limitations()
957 get_cur_bus_info(&slot_cur); in check_limitations()
958 switch (slot_cur->bus_on->current_speed) { in check_limitations()
960 limitation = slot_cur->bus_on->slots_at_33_conv; in check_limitations()
963 if (slot_cur->bus_on->current_bus_mode == BUS_MODE_PCIX) in check_limitations()
964 limitation = slot_cur->bus_on->slots_at_66_pcix; in check_limitations()
966 limitation = slot_cur->bus_on->slots_at_66_conv; in check_limitations()
969 limitation = slot_cur->bus_on->slots_at_100_pcix; in check_limitations()
972 limitation = slot_cur->bus_on->slots_at_133_pcix; in check_limitations()
981 static inline void print_card_capability(struct slot *slot_cur) in print_card_capability() argument
984 if ((slot_cur->ext_status & CARD_INFO) == PCIX133) in print_card_capability()
986 else if ((slot_cur->ext_status & CARD_INFO) == PCIX66) in print_card_capability()
988 else if ((slot_cur->ext_status & CARD_INFO) == PCI66) in print_card_capability()
1003 struct slot *slot_cur; in enable_slot() local
1010 slot_cur = hs->private; in enable_slot()
1012 rc = validate(slot_cur, ENABLE); in enable_slot()
1018 attn_LED_blink(slot_cur); in enable_slot()
1020 rc = set_bus(slot_cur); in enable_slot()
1027 get_cur_bus_info(&slot_cur); in enable_slot()
1029 slot_cur->bus_on->current_speed); in enable_slot()
1032 rc = check_limitations(slot_cur); in enable_slot()
1041 rc = power_on(slot_cur); in enable_slot()
1046 attn_off(slot_cur); in enable_slot()
1047 attn_on(slot_cur); in enable_slot()
1048 if (slot_update(&slot_cur)) { in enable_slot()
1049 attn_off(slot_cur); in enable_slot()
1050 attn_on(slot_cur); in enable_slot()
1055 if ((SLOT_POWER(slot_cur->status)) && in enable_slot()
1056 !(SLOT_PWRGD(slot_cur->status))) in enable_slot()
1058 else if (SLOT_BUS_SPEED(slot_cur->status)) { in enable_slot()
1060 print_card_capability(slot_cur); in enable_slot()
1061 } else if (SLOT_BUS_MODE(slot_cur->ext_status)) { in enable_slot()
1063 print_card_capability(slot_cur); in enable_slot()
1065 ibmphp_update_slot_info(slot_cur); in enable_slot()
1070 get_cur_bus_info(&slot_cur); in enable_slot()
1072 slot_cur->bus_on->current_speed); in enable_slot()
1075 rc = slot_update(&slot_cur); in enable_slot()
1080 if (SLOT_POWER(slot_cur->status) && !(SLOT_PWRGD(slot_cur->status))) { in enable_slot()
1084 if (SLOT_POWER(slot_cur->status) && (SLOT_BUS_SPEED(slot_cur->status))) { in enable_slot()
1086 print_card_capability(slot_cur); in enable_slot()
1091 if (!(SLOT_POWER(slot_cur->status))) { in enable_slot()
1096 slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL); in enable_slot()
1097 if (!slot_cur->func) { in enable_slot()
1103 slot_cur->func->busno = slot_cur->bus; in enable_slot()
1104 slot_cur->func->device = slot_cur->device; in enable_slot()
1106 slot_cur->func->irq[i] = slot_cur->irq[i]; in enable_slot()
1109 slot_cur->bus, slot_cur->device); in enable_slot()
1111 if (ibmphp_configure_card(slot_cur->func, slot_cur->number)) { in enable_slot()
1115 ibmphp_unconfigure_card(&slot_cur, 1); in enable_slot()
1117 slot_cur->func = NULL; in enable_slot()
1124 tmp_func = ibm_slot_find(slot_cur->bus, slot_cur->func->device, in enable_slot()
1130 attn_off(slot_cur); in enable_slot()
1131 if (slot_update(&slot_cur)) { in enable_slot()
1136 rc = ibmphp_update_slot_info(slot_cur); in enable_slot()
1142 attn_off(slot_cur); /* need to turn off if was blinking b4 */ in enable_slot()
1143 attn_on(slot_cur); in enable_slot()
1145 rcpr = slot_update(&slot_cur); in enable_slot()
1150 ibmphp_update_slot_info(slot_cur); in enable_slot()
1154 attn_off(slot_cur); /* need to turn off if was blinking b4 */ in enable_slot()
1155 attn_on(slot_cur); in enable_slot()
1156 rcpr = power_off(slot_cur); in enable_slot()
1181 int ibmphp_do_disable_slot(struct slot *slot_cur) in ibmphp_do_disable_slot() argument
1188 if ((slot_cur == NULL) || (slot_cur->ctrl == NULL)) in ibmphp_do_disable_slot()
1191 flag = slot_cur->flag; in ibmphp_do_disable_slot()
1192 slot_cur->flag = 1; in ibmphp_do_disable_slot()
1195 rc = validate(slot_cur, DISABLE); in ibmphp_do_disable_slot()
1200 attn_LED_blink(slot_cur); in ibmphp_do_disable_slot()
1202 if (slot_cur->func == NULL) { in ibmphp_do_disable_slot()
1204 slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL); in ibmphp_do_disable_slot()
1205 if (!slot_cur->func) { in ibmphp_do_disable_slot()
1209 slot_cur->func->busno = slot_cur->bus; in ibmphp_do_disable_slot()
1210 slot_cur->func->device = slot_cur->device; in ibmphp_do_disable_slot()
1213 ibm_unconfigure_device(slot_cur->func); in ibmphp_do_disable_slot()
1223 attn_off(slot_cur); in ibmphp_do_disable_slot()
1227 rc = ibmphp_unconfigure_card(&slot_cur, 0); in ibmphp_do_disable_slot()
1228 slot_cur->func = NULL; in ibmphp_do_disable_slot()
1235 rc = ibmphp_hpc_writeslot(slot_cur, HPC_SLOT_OFF); in ibmphp_do_disable_slot()
1239 attn_off(slot_cur); in ibmphp_do_disable_slot()
1240 rc = slot_update(&slot_cur); in ibmphp_do_disable_slot()
1244 rc = ibmphp_update_slot_info(slot_cur); in ibmphp_do_disable_slot()
1251 attn_off(slot_cur); in ibmphp_do_disable_slot()
1252 attn_on(slot_cur); in ibmphp_do_disable_slot()
1253 if (slot_update(&slot_cur)) { in ibmphp_do_disable_slot()
1258 ibmphp_update_slot_info(slot_cur); in ibmphp_do_disable_slot()