Lines Matching defs:slot_cur

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