Lines Matching defs:ssif_info

110  * Indexes into stats[] in ssif_info below.
196 struct ssif_info;
198 typedef void (*ssif_i2c_done)(struct ssif_info *ssif_info, int result,
201 struct ssif_info {
306 static void return_hosed_msg(struct ssif_info *ssif_info,
308 static void start_next_msg(struct ssif_info *ssif_info, unsigned long *flags);
309 static int start_send(struct ssif_info *ssif_info,
313 static unsigned long *ipmi_ssif_lock_cond(struct ssif_info *ssif_info,
315 __acquires(&ssif_info->lock)
317 spin_lock_irqsave(&ssif_info->lock, *flags);
321 static void ipmi_ssif_unlock_cond(struct ssif_info *ssif_info,
323 __releases(&ssif_info->lock)
325 spin_unlock_irqrestore(&ssif_info->lock, *flags);
328 static void deliver_recv_msg(struct ssif_info *ssif_info,
332 return_hosed_msg(ssif_info, msg);
333 dev_err(&ssif_info->client->dev,
337 ipmi_smi_msg_received(ssif_info->intf, msg);
341 static void return_hosed_msg(struct ssif_info *ssif_info,
344 ssif_inc_stat(ssif_info, hosed);
352 deliver_recv_msg(ssif_info, msg);
361 static void start_clear_flags(struct ssif_info *ssif_info, unsigned long *flags)
365 ssif_info->msg_flags &= ~WDT_PRE_TIMEOUT_INT;
366 ssif_info->ssif_state = SSIF_CLEARING_FLAGS;
367 ipmi_ssif_unlock_cond(ssif_info, flags);
374 if (start_send(ssif_info, msg, 3) != 0) {
376 ssif_info->ssif_state = SSIF_IDLE;
380 static void start_flag_fetch(struct ssif_info *ssif_info, unsigned long *flags)
384 ssif_info->req_flags = false;
385 ssif_info->ssif_state = SSIF_GETTING_FLAGS;
386 ipmi_ssif_unlock_cond(ssif_info, flags);
390 if (start_send(ssif_info, mb, 2) != 0)
391 ssif_info->ssif_state = SSIF_IDLE;
394 static void check_start_send(struct ssif_info *ssif_info, unsigned long *flags,
397 if (start_send(ssif_info, msg->data, msg->data_size) != 0) {
400 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
401 ssif_info->curr_msg = NULL;
402 ssif_info->ssif_state = SSIF_IDLE;
403 ipmi_ssif_unlock_cond(ssif_info, flags);
408 static void start_event_fetch(struct ssif_info *ssif_info, unsigned long *flags)
412 ssif_info->req_events = false;
416 ssif_info->ssif_state = SSIF_IDLE;
417 ipmi_ssif_unlock_cond(ssif_info, flags);
421 ssif_info->curr_msg = msg;
422 ssif_info->ssif_state = SSIF_GETTING_EVENTS;
423 ipmi_ssif_unlock_cond(ssif_info, flags);
429 check_start_send(ssif_info, flags, msg);
432 static void start_recv_msg_fetch(struct ssif_info *ssif_info,
439 ssif_info->ssif_state = SSIF_IDLE;
440 ipmi_ssif_unlock_cond(ssif_info, flags);
444 ssif_info->curr_msg = msg;
445 ssif_info->ssif_state = SSIF_GETTING_MESSAGES;
446 ipmi_ssif_unlock_cond(ssif_info, flags);
452 check_start_send(ssif_info, flags, msg);
461 static void handle_flags(struct ssif_info *ssif_info, unsigned long *flags)
463 if (ssif_info->msg_flags & WDT_PRE_TIMEOUT_INT) {
465 ssif_inc_stat(ssif_info, watchdog_pretimeouts);
466 start_clear_flags(ssif_info, flags);
467 ipmi_smi_watchdog_pretimeout(ssif_info->intf);
468 } else if (ssif_info->msg_flags & RECEIVE_MSG_AVAIL)
470 start_recv_msg_fetch(ssif_info, flags);
471 else if (ssif_info->msg_flags & EVENT_MSG_BUFFER_FULL)
473 start_event_fetch(ssif_info, flags);
475 ssif_info->ssif_state = SSIF_IDLE;
476 ipmi_ssif_unlock_cond(ssif_info, flags);
482 struct ssif_info *ssif_info = data;
489 &ssif_info->wake_thread);
490 if (ssif_info->stopping)
494 init_completion(&ssif_info->wake_thread);
496 if (ssif_info->i2c_read_write == I2C_SMBUS_WRITE) {
498 ssif_info->client, ssif_info->i2c_command,
499 ssif_info->i2c_data[0],
500 ssif_info->i2c_data + 1);
501 ssif_info->done_handler(ssif_info, result, NULL, 0);
504 ssif_info->client, ssif_info->i2c_command,
505 ssif_info->i2c_data);
507 ssif_info->done_handler(ssif_info, result,
510 ssif_info->done_handler(ssif_info, 0,
511 ssif_info->i2c_data,
519 static void ssif_i2c_send(struct ssif_info *ssif_info,
524 ssif_info->done_handler = handler;
526 ssif_info->i2c_read_write = read_write;
527 ssif_info->i2c_command = command;
528 ssif_info->i2c_data = data;
529 ssif_info->i2c_size = size;
530 complete(&ssif_info->wake_thread);
534 static void msg_done_handler(struct ssif_info *ssif_info, int result,
537 static void start_get(struct ssif_info *ssif_info)
539 ssif_info->rtc_us_timer = 0;
540 ssif_info->multi_pos = 0;
542 ssif_i2c_send(ssif_info, msg_done_handler, I2C_SMBUS_READ,
544 ssif_info->recv, I2C_SMBUS_BLOCK_DATA);
547 static void start_resend(struct ssif_info *ssif_info);
551 struct ssif_info *ssif_info = from_timer(ssif_info, t, retry_timer);
555 if (ssif_info->stopping)
558 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
559 resend = ssif_info->do_resend;
560 ssif_info->do_resend = false;
561 waiting = ssif_info->waiting_alert;
562 ssif_info->waiting_alert = false;
563 ipmi_ssif_unlock_cond(ssif_info, flags);
566 start_get(ssif_info);
568 start_resend(ssif_info);
569 ssif_inc_stat(ssif_info, send_retries);
575 struct ssif_info *ssif_info = from_timer(ssif_info, t, watch_timer);
578 if (ssif_info->stopping)
581 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
582 if (ssif_info->watch_timeout) {
583 mod_timer(&ssif_info->watch_timer,
584 jiffies + ssif_info->watch_timeout);
585 if (IS_SSIF_IDLE(ssif_info)) {
586 start_flag_fetch(ssif_info, flags); /* Releases lock */
589 ssif_info->req_flags = true;
591 ipmi_ssif_unlock_cond(ssif_info, flags);
597 struct ssif_info *ssif_info = i2c_get_clientdata(client);
604 ssif_inc_stat(ssif_info, alerts);
606 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
607 if (ssif_info->waiting_alert) {
608 ssif_info->waiting_alert = false;
609 del_timer(&ssif_info->retry_timer);
611 } else if (ssif_info->curr_msg) {
612 ssif_info->got_alert = true;
614 ipmi_ssif_unlock_cond(ssif_info, flags);
616 start_get(ssif_info);
619 static void msg_done_handler(struct ssif_info *ssif_info, int result,
631 ssif_info->retries_left--;
632 if (ssif_info->retries_left > 0) {
633 ssif_inc_stat(ssif_info, receive_retries);
635 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
636 ssif_info->waiting_alert = true;
637 ssif_info->rtc_us_timer = SSIF_MSG_USEC;
638 if (!ssif_info->stopping)
639 mod_timer(&ssif_info->retry_timer,
641 ipmi_ssif_unlock_cond(ssif_info, flags);
645 ssif_inc_stat(ssif_info, receive_errors);
647 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
648 dev_dbg(&ssif_info->client->dev,
654 if ((len > 1) && (ssif_info->multi_pos == 0)
659 ssif_inc_stat(ssif_info, received_message_parts);
665 ssif_info->data[i] = data[i];
666 ssif_info->multi_len = len;
667 ssif_info->multi_pos = 1;
669 ssif_i2c_send(ssif_info, msg_done_handler, I2C_SMBUS_READ,
671 ssif_info->recv, I2C_SMBUS_BLOCK_DATA);
673 } else if (ssif_info->multi_pos) {
680 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
681 dev_dbg(&ssif_info->client->dev,
694 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
695 dev_dbg(&ssif_info->client->dev,
701 if (ssif_info->multi_len + len > IPMI_MAX_MSG_LENGTH) {
704 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
705 dev_dbg(&ssif_info->client->dev,
712 ssif_info->data[i + ssif_info->multi_len] = data[i];
713 ssif_info->multi_len += len;
716 len = ssif_info->multi_len;
717 data = ssif_info->data;
718 } else if (blocknum + 1 != ssif_info->multi_pos) {
724 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
725 dev_dbg(&ssif_info->client->dev,
727 ssif_info->multi_pos - 1, blocknum);
730 ssif_inc_stat(ssif_info, received_message_parts);
732 ssif_info->multi_pos++;
734 ssif_i2c_send(ssif_info, msg_done_handler,
737 ssif_info->recv,
745 ssif_inc_stat(ssif_info, receive_errors);
747 ssif_inc_stat(ssif_info, received_messages);
748 ssif_inc_stat(ssif_info, received_message_parts);
751 if (ssif_info->ssif_debug & SSIF_DEBUG_STATE)
752 dev_dbg(&ssif_info->client->dev,
754 ssif_info->ssif_state, result);
756 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
757 msg = ssif_info->curr_msg;
767 ssif_info->curr_msg = NULL;
770 switch (ssif_info->ssif_state) {
772 ipmi_ssif_unlock_cond(ssif_info, flags);
777 return_hosed_msg(ssif_info, msg);
779 deliver_recv_msg(ssif_info, msg);
789 ssif_info->ssif_state = SSIF_IDLE;
790 ipmi_ssif_unlock_cond(ssif_info, flags);
791 dev_warn(&ssif_info->client->dev,
799 ssif_info->ssif_state = SSIF_IDLE;
800 ipmi_ssif_unlock_cond(ssif_info, flags);
801 dev_warn(&ssif_info->client->dev,
805 ssif_inc_stat(ssif_info, flag_fetches);
806 ssif_info->msg_flags = data[3];
807 handle_flags(ssif_info, flags);
815 dev_warn(&ssif_info->client->dev,
820 dev_warn(&ssif_info->client->dev,
824 ssif_info->ssif_state = SSIF_IDLE;
825 ipmi_ssif_unlock_cond(ssif_info, flags);
831 dev_warn(&ssif_info->client->dev,
833 ipmi_ssif_unlock_cond(ssif_info, flags);
842 ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL;
843 handle_flags(ssif_info, flags);
846 dev_warn(&ssif_info->client->dev,
851 ssif_info->msg_flags &= ~EVENT_MSG_BUFFER_FULL;
852 handle_flags(ssif_info, flags);
854 handle_flags(ssif_info, flags);
855 ssif_inc_stat(ssif_info, events);
856 deliver_recv_msg(ssif_info, msg);
863 dev_warn(&ssif_info->client->dev,
865 ipmi_ssif_unlock_cond(ssif_info, flags);
874 ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL;
875 handle_flags(ssif_info, flags);
878 dev_warn(&ssif_info->client->dev,
884 ssif_info->msg_flags &= ~RECEIVE_MSG_AVAIL;
885 handle_flags(ssif_info, flags);
887 ssif_inc_stat(ssif_info, incoming_messages);
888 handle_flags(ssif_info, flags);
889 deliver_recv_msg(ssif_info, msg);
895 dev_warn(&ssif_info->client->dev,
897 ssif_info->ssif_state);
898 ipmi_ssif_unlock_cond(ssif_info, flags);
901 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
902 if (IS_SSIF_IDLE(ssif_info) && !ssif_info->stopping) {
903 if (ssif_info->req_events)
904 start_event_fetch(ssif_info, flags);
905 else if (ssif_info->req_flags)
906 start_flag_fetch(ssif_info, flags);
908 start_next_msg(ssif_info, flags);
910 ipmi_ssif_unlock_cond(ssif_info, flags);
912 if (ssif_info->ssif_debug & SSIF_DEBUG_STATE)
913 dev_dbg(&ssif_info->client->dev,
914 "DONE 2: state = %d.\n", ssif_info->ssif_state);
917 static void msg_written_handler(struct ssif_info *ssif_info, int result,
922 ssif_info->retries_left--;
923 if (ssif_info->retries_left > 0) {
928 ssif_info->do_resend = true;
929 mod_timer(&ssif_info->retry_timer,
934 ssif_inc_stat(ssif_info, send_errors);
936 if (ssif_info->ssif_debug & SSIF_DEBUG_MSG)
937 dev_dbg(&ssif_info->client->dev,
940 msg_done_handler(ssif_info, -EIO, NULL, 0);
944 if (ssif_info->multi_data) {
954 ssif_inc_stat(ssif_info, sent_messages_parts);
956 left = ssif_info->multi_len - ssif_info->multi_pos;
961 ssif_info->multi_data[ssif_info->multi_pos] = to_write;
962 data_to_send = ssif_info->multi_data + ssif_info->multi_pos;
963 ssif_info->multi_pos += to_write;
965 if (ssif_info->cmd8_works) {
968 ssif_info->multi_data = NULL;
971 ssif_info->multi_data = NULL;
974 ssif_i2c_send(ssif_info, msg_written_handler,
981 ssif_inc_stat(ssif_info, sent_messages);
982 ssif_inc_stat(ssif_info, sent_messages_parts);
984 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
985 if (ssif_info->got_alert) {
987 ssif_info->got_alert = false;
988 ipmi_ssif_unlock_cond(ssif_info, flags);
989 start_get(ssif_info);
992 ssif_info->waiting_alert = true;
993 ssif_info->retries_left = SSIF_RECV_RETRIES;
994 ssif_info->rtc_us_timer = SSIF_MSG_PART_USEC;
995 if (!ssif_info->stopping)
996 mod_timer(&ssif_info->retry_timer,
998 ipmi_ssif_unlock_cond(ssif_info, flags);
1003 static void start_resend(struct ssif_info *ssif_info)
1007 ssif_info->got_alert = false;
1009 if (ssif_info->data_len > 32) {
1011 ssif_info->multi_data = ssif_info->data;
1012 ssif_info->multi_len = ssif_info->data_len;
1018 ssif_info->multi_pos = 32;
1019 ssif_info->data[0] = 32;
1021 ssif_info->multi_data = NULL;
1023 ssif_info->data[0] = ssif_info->data_len;
1026 ssif_i2c_send(ssif_info, msg_written_handler, I2C_SMBUS_WRITE,
1027 command, ssif_info->data, I2C_SMBUS_BLOCK_DATA);
1030 static int start_send(struct ssif_info *ssif_info,
1036 if (len > ssif_info->max_xmit_msg_size)
1039 ssif_info->retries_left = SSIF_SEND_RETRIES;
1040 memcpy(ssif_info->data + 1, data, len);
1041 ssif_info->data_len = len;
1042 start_resend(ssif_info);
1047 static void start_next_msg(struct ssif_info *ssif_info, unsigned long *flags)
1053 if (!IS_SSIF_IDLE(ssif_info)) {
1054 ipmi_ssif_unlock_cond(ssif_info, flags);
1058 if (!ssif_info->waiting_msg) {
1059 ssif_info->curr_msg = NULL;
1060 ipmi_ssif_unlock_cond(ssif_info, flags);
1064 ssif_info->curr_msg = ssif_info->waiting_msg;
1065 ssif_info->waiting_msg = NULL;
1066 ipmi_ssif_unlock_cond(ssif_info, flags);
1067 rv = start_send(ssif_info,
1068 ssif_info->curr_msg->data,
1069 ssif_info->curr_msg->data_size);
1071 msg = ssif_info->curr_msg;
1072 ssif_info->curr_msg = NULL;
1073 return_hosed_msg(ssif_info, msg);
1074 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
1083 struct ssif_info *ssif_info = (struct ssif_info *) send_info;
1086 BUG_ON(ssif_info->waiting_msg);
1087 ssif_info->waiting_msg = msg;
1089 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
1090 start_next_msg(ssif_info, flags);
1092 if (ssif_info->ssif_debug & SSIF_DEBUG_TIMING) {
1096 dev_dbg(&ssif_info->client->dev,
1105 struct ssif_info *ssif_info = send_info;
1107 data->addr_src = ssif_info->addr_source;
1108 data->dev = &ssif_info->client->dev;
1109 data->addr_info = ssif_info->addr_info;
1120 struct ssif_info *ssif_info = (struct ssif_info *) send_info;
1123 if (!ssif_info->has_event_buffer)
1126 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
1127 ssif_info->req_events = true;
1128 ipmi_ssif_unlock_cond(ssif_info, flags);
1137 struct ssif_info *ssif_info = (struct ssif_info *) send_info;
1146 flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
1147 if (timeout != ssif_info->watch_timeout) {
1148 ssif_info->watch_timeout = timeout;
1149 if (ssif_info->watch_timeout)
1150 mod_timer(&ssif_info->watch_timer,
1151 jiffies + ssif_info->watch_timeout);
1153 ipmi_ssif_unlock_cond(ssif_info, flags);
1159 struct ssif_info *ssif_info = send_info;
1161 ssif_info->intf = intf;
1218 struct ssif_info *ssif_info = dev_get_drvdata(dev); \
1220 return snprintf(buf, 10, "%u\n", ssif_get_stat(ssif_info, name));\
1270 struct ssif_info *ssif_info = send_info;
1272 device_remove_group(&ssif_info->client->dev, &ipmi_ssif_dev_attr_group);
1273 dev_set_drvdata(&ssif_info->client->dev, NULL);
1276 while (ssif_info->ssif_state != SSIF_IDLE)
1279 ssif_info->stopping = true;
1280 del_timer_sync(&ssif_info->watch_timer);
1281 del_timer_sync(&ssif_info->retry_timer);
1282 if (ssif_info->thread) {
1283 complete(&ssif_info->wake_thread);
1284 kthread_stop(ssif_info->thread);
1290 struct ssif_info *ssif_info = i2c_get_clientdata(client);
1293 if (!ssif_info)
1300 ipmi_unregister_smi(ssif_info->intf);
1309 kfree(ssif_info);
1447 static bool check_acpi(struct ssif_info *ssif_info, struct device *dev)
1454 ssif_info->addr_source = SI_ACPI;
1455 ssif_info->addr_info.acpi_info.acpi_handle = acpi_handle;
1510 struct ssif_info *ssif_info,
1517 if (ssif_info->max_xmit_msg_size <= 32)
1520 do_middle = ssif_info->max_xmit_msg_size > 63;
1564 ssif_info->cmd8_works = true;
1584 if (ssif_info->max_xmit_msg_size > 63)
1585 ssif_info->max_xmit_msg_size = 63;
1589 ssif_info->max_xmit_msg_size = 32;
1601 struct ssif_info *ssif_info = i2c_get_clientdata(client);
1603 ipmi_unregister_smi(ssif_info->intf);
1604 kfree(ssif_info);
1633 struct ssif_info *ssif_info)
1645 if (ssif_info->addr_source == SI_ACPI &&
1662 struct ssif_info *ssif_info;
1676 ssif_info = kzalloc(sizeof(*ssif_info), GFP_KERNEL);
1677 if (!ssif_info) {
1683 if (!check_acpi(ssif_info, &client->dev)) {
1688 ssif_info->addr_source = SI_HOTMOD;
1690 ssif_info->addr_source = addr_info->addr_src;
1691 ssif_info->ssif_debug = addr_info->debug;
1692 ssif_info->addr_info = addr_info->addr_info;
1698 ssif_info->client = client;
1699 i2c_set_clientdata(client, ssif_info);
1701 rv = ssif_check_and_remove(client, ssif_info);
1703 if (!rv && ssif_info->addr_source == SI_ACPI) {
1718 ipmi_addr_src_to_str(ssif_info->addr_source),
1729 dev_dbg(&ssif_info->client->dev,
1735 ssif_info->max_xmit_msg_size = resp[5];
1736 ssif_info->max_recv_msg_size = resp[6];
1737 ssif_info->multi_support = (resp[4] >> 6) & 0x3;
1738 ssif_info->supports_pec = (resp[4] >> 3) & 0x1;
1741 switch (ssif_info->multi_support) {
1743 if (ssif_info->max_xmit_msg_size > 32)
1744 ssif_info->max_xmit_msg_size = 32;
1745 if (ssif_info->max_recv_msg_size > 32)
1746 ssif_info->max_recv_msg_size = 32;
1750 if (ssif_info->max_xmit_msg_size > 63)
1751 ssif_info->max_xmit_msg_size = 63;
1752 if (ssif_info->max_recv_msg_size > 62)
1753 ssif_info->max_recv_msg_size = 62;
1767 dev_info(&ssif_info->client->dev,
1771 ssif_info->max_xmit_msg_size = 32;
1772 ssif_info->max_recv_msg_size = 32;
1773 ssif_info->multi_support = SSIF_NO_MULTI;
1774 ssif_info->supports_pec = 0;
1777 test_multipart_messages(client, ssif_info, resp);
1785 dev_warn(&ssif_info->client->dev,
1794 dev_warn(&ssif_info->client->dev,
1801 ssif_info->global_enables = resp[3];
1804 ssif_info->has_event_buffer = true;
1811 msg[2] = ssif_info->global_enables | IPMI_BMC_EVT_MSG_BUFF;
1814 dev_warn(&ssif_info->client->dev,
1823 ssif_info->has_event_buffer = true;
1824 ssif_info->global_enables |= IPMI_BMC_EVT_MSG_BUFF;
1833 msg[2] = ssif_info->global_enables | IPMI_BMC_RCV_MSG_INTR;
1836 dev_warn(&ssif_info->client->dev,
1845 ssif_info->supports_alert = true;
1846 ssif_info->global_enables |= IPMI_BMC_RCV_MSG_INTR;
1851 dev_dbg(&ssif_info->client->dev,
1856 spin_lock_init(&ssif_info->lock);
1857 ssif_info->ssif_state = SSIF_IDLE;
1858 timer_setup(&ssif_info->retry_timer, retry_timeout, 0);
1859 timer_setup(&ssif_info->watch_timer, watch_timeout, 0);
1862 atomic_set(&ssif_info->stats[i], 0);
1864 if (ssif_info->supports_pec)
1865 ssif_info->client->flags |= I2C_CLIENT_PEC;
1867 ssif_info->handlers.owner = THIS_MODULE;
1868 ssif_info->handlers.start_processing = ssif_start_processing;
1869 ssif_info->handlers.shutdown = shutdown_ssif;
1870 ssif_info->handlers.get_smi_info = get_smi_info;
1871 ssif_info->handlers.sender = sender;
1872 ssif_info->handlers.request_events = request_events;
1873 ssif_info->handlers.set_need_watch = ssif_set_need_watch;
1878 thread_num = ((i2c_adapter_id(ssif_info->client->adapter)
1880 ssif_info->client->addr);
1881 init_completion(&ssif_info->wake_thread);
1882 ssif_info->thread = kthread_run(ipmi_ssif_thread, ssif_info,
1884 if (IS_ERR(ssif_info->thread)) {
1885 rv = PTR_ERR(ssif_info->thread);
1886 dev_notice(&ssif_info->client->dev,
1893 dev_set_drvdata(&ssif_info->client->dev, ssif_info);
1894 rv = device_add_group(&ssif_info->client->dev,
1897 dev_err(&ssif_info->client->dev,
1903 rv = ipmi_register_smi(&ssif_info->handlers,
1904 ssif_info,
1905 &ssif_info->client->dev,
1908 dev_err(&ssif_info->client->dev,
1918 dev_err(&ssif_info->client->dev,
1921 kfree(ssif_info);
1928 device_remove_group(&ssif_info->client->dev, &ipmi_ssif_dev_attr_group);
1929 dev_set_drvdata(&ssif_info->client->dev, NULL);