Lines Matching refs:new_smi
1142 struct smi_info *new_smi = send_info; in smi_start_processing() local
1145 new_smi->intf = intf; in smi_start_processing()
1148 timer_setup(&new_smi->si_timer, smi_timeout, 0); in smi_start_processing()
1149 new_smi->timer_can_start = true; in smi_start_processing()
1150 smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES); in smi_start_processing()
1153 if (new_smi->io.irq_setup) { in smi_start_processing()
1154 new_smi->io.irq_handler_data = new_smi; in smi_start_processing()
1155 new_smi->io.irq_setup(&new_smi->io); in smi_start_processing()
1161 if (new_smi->si_num < num_force_kipmid) in smi_start_processing()
1162 enable = force_kipmid[new_smi->si_num]; in smi_start_processing()
1167 else if ((new_smi->io.si_type != SI_BT) && (!new_smi->io.irq)) in smi_start_processing()
1171 new_smi->thread = kthread_run(ipmi_thread, new_smi, in smi_start_processing()
1172 "kipmi%d", new_smi->si_num); in smi_start_processing()
1173 if (IS_ERR(new_smi->thread)) { in smi_start_processing()
1174 dev_notice(new_smi->io.dev, in smi_start_processing()
1176 PTR_ERR(new_smi->thread)); in smi_start_processing()
1177 new_smi->thread = NULL; in smi_start_processing()
1870 struct smi_info *new_smi, *dup; in ipmi_si_add_smi() local
1894 new_smi = kzalloc(sizeof(*new_smi), GFP_KERNEL); in ipmi_si_add_smi()
1895 if (!new_smi) in ipmi_si_add_smi()
1897 spin_lock_init(&new_smi->si_lock); in ipmi_si_add_smi()
1899 new_smi->io = *io; in ipmi_si_add_smi()
1902 dup = find_dup_si(new_smi); in ipmi_si_add_smi()
1904 if (new_smi->io.addr_source == SI_ACPI && in ipmi_si_add_smi()
1909 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1912 dev_info(new_smi->io.dev, in ipmi_si_add_smi()
1914 ipmi_addr_src_to_str(new_smi->io.addr_source), in ipmi_si_add_smi()
1915 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1917 kfree(new_smi); in ipmi_si_add_smi()
1923 ipmi_addr_src_to_str(new_smi->io.addr_source), in ipmi_si_add_smi()
1924 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1926 list_add_tail(&new_smi->link, &smi_infos); in ipmi_si_add_smi()
1929 rv = try_smi_init(new_smi); in ipmi_si_add_smi()
1940 static int try_smi_init(struct smi_info *new_smi) in try_smi_init() argument
1946 ipmi_addr_src_to_str(new_smi->io.addr_source), in try_smi_init()
1947 si_to_str[new_smi->io.si_type], in try_smi_init()
1948 addr_space_to_str[new_smi->io.addr_space], in try_smi_init()
1949 new_smi->io.addr_data, in try_smi_init()
1950 new_smi->io.slave_addr, new_smi->io.irq); in try_smi_init()
1952 switch (new_smi->io.si_type) { in try_smi_init()
1954 new_smi->handlers = &kcs_smi_handlers; in try_smi_init()
1958 new_smi->handlers = &smic_smi_handlers; in try_smi_init()
1962 new_smi->handlers = &bt_smi_handlers; in try_smi_init()
1971 new_smi->si_num = smi_num; in try_smi_init()
1974 if (!new_smi->io.dev) { in try_smi_init()
1981 new_smi->si_sm = kmalloc(new_smi->handlers->size(), GFP_KERNEL); in try_smi_init()
1982 if (!new_smi->si_sm) { in try_smi_init()
1986 new_smi->io.io_size = new_smi->handlers->init_data(new_smi->si_sm, in try_smi_init()
1987 &new_smi->io); in try_smi_init()
1990 rv = new_smi->io.io_setup(&new_smi->io); in try_smi_init()
1992 dev_err(new_smi->io.dev, "Could not set up I/O space\n"); in try_smi_init()
1997 if (new_smi->handlers->detect(new_smi->si_sm)) { in try_smi_init()
1998 if (new_smi->io.addr_source) in try_smi_init()
1999 dev_err(new_smi->io.dev, in try_smi_init()
2009 rv = try_get_dev_id(new_smi); in try_smi_init()
2011 if (new_smi->io.addr_source) in try_smi_init()
2012 dev_err(new_smi->io.dev, in try_smi_init()
2017 setup_oem_data_handler(new_smi); in try_smi_init()
2018 setup_xaction_handlers(new_smi); in try_smi_init()
2019 check_for_broken_irqs(new_smi); in try_smi_init()
2021 new_smi->waiting_msg = NULL; in try_smi_init()
2022 new_smi->curr_msg = NULL; in try_smi_init()
2023 atomic_set(&new_smi->req_events, 0); in try_smi_init()
2024 new_smi->run_to_completion = false; in try_smi_init()
2026 atomic_set(&new_smi->stats[i], 0); in try_smi_init()
2028 new_smi->interrupt_disabled = true; in try_smi_init()
2029 atomic_set(&new_smi->need_watch, 0); in try_smi_init()
2031 rv = try_enable_event_buffer(new_smi); in try_smi_init()
2033 new_smi->has_event_buffer = true; in try_smi_init()
2039 start_clear_flags(new_smi); in try_smi_init()
2045 if (new_smi->io.irq) { in try_smi_init()
2046 new_smi->interrupt_disabled = false; in try_smi_init()
2047 atomic_set(&new_smi->req_events, 1); in try_smi_init()
2050 dev_set_drvdata(new_smi->io.dev, new_smi); in try_smi_init()
2051 rv = device_add_group(new_smi->io.dev, &ipmi_si_dev_attr_group); in try_smi_init()
2053 dev_err(new_smi->io.dev, in try_smi_init()
2058 new_smi->dev_group_added = true; in try_smi_init()
2061 new_smi, in try_smi_init()
2062 new_smi->io.dev, in try_smi_init()
2063 new_smi->io.slave_addr); in try_smi_init()
2065 dev_err(new_smi->io.dev, in try_smi_init()
2074 dev_info(new_smi->io.dev, "IPMI %s interface initialized\n", in try_smi_init()
2075 si_to_str[new_smi->io.si_type]); in try_smi_init()
2077 WARN_ON(new_smi->io.dev->init_name != NULL); in try_smi_init()
2080 if (rv && new_smi->io.io_cleanup) { in try_smi_init()
2081 new_smi->io.io_cleanup(&new_smi->io); in try_smi_init()
2082 new_smi->io.io_cleanup = NULL; in try_smi_init()