Lines Matching refs:io

139 	struct si_sm_io io;  member
420 if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { in disable_si_irq()
430 if ((smi_info->io.irq) && (smi_info->interrupt_disabled)) { in enable_si_irq()
505 if (((smi_info->io.irq && !smi_info->interrupt_disabled) || in current_global_enables()
511 smi_info->io.irq && !smi_info->interrupt_disabled && in current_global_enables()
522 u8 irqstate = smi_info->io.inputb(&smi_info->io, IPMI_BT_INTMASK_REG); in check_bt_irq()
530 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, in check_bt_irq()
533 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, 0); in check_bt_irq()
593 dev_warn(smi_info->io.dev, in handle_transaction_done()
685 dev_warn(smi_info->io.dev, in handle_transaction_done()
687 dev_warn(smi_info->io.dev, in handle_transaction_done()
693 if (smi_info->io.si_type == SI_BT) in handle_transaction_done()
723 dev_warn(smi_info->io.dev, in handle_transaction_done()
846 if (smi_info->supports_event_msg_buff || smi_info->io.irq) { in smi_event_handler()
1088 if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { in smi_timeout()
1120 if (smi_info->io.si_type == SI_BT) in ipmi_si_irq_handler()
1122 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, in ipmi_si_irq_handler()
1151 if (new_smi->io.irq_setup) { in smi_start_processing()
1152 new_smi->io.irq_handler_data = new_smi; in smi_start_processing()
1153 new_smi->io.irq_setup(&new_smi->io); in smi_start_processing()
1165 else if ((new_smi->io.si_type != SI_BT) && (!new_smi->io.irq)) in smi_start_processing()
1172 dev_notice(new_smi->io.dev, "Could not start" in smi_start_processing()
1187 data->addr_src = smi->io.addr_source; in get_smi_info()
1188 data->dev = smi->io.dev; in get_smi_info()
1189 data->addr_info = smi->io.addr_info; in get_smi_info()
1190 get_device(smi->io.dev); in get_smi_info()
1239 void ipmi_irq_finish_setup(struct si_sm_io *io) in ipmi_irq_finish_setup() argument
1241 if (io->si_type == SI_BT) in ipmi_irq_finish_setup()
1243 io->outputb(io, IPMI_BT_INTMASK_REG, in ipmi_irq_finish_setup()
1247 void ipmi_irq_start_cleanup(struct si_sm_io *io) in ipmi_irq_start_cleanup() argument
1249 if (io->si_type == SI_BT) in ipmi_irq_start_cleanup()
1251 io->outputb(io, IPMI_BT_INTMASK_REG, 0); in ipmi_irq_start_cleanup()
1254 static void std_irq_cleanup(struct si_sm_io *io) in std_irq_cleanup() argument
1256 ipmi_irq_start_cleanup(io); in std_irq_cleanup()
1257 free_irq(io->irq, io->irq_handler_data); in std_irq_cleanup()
1260 int ipmi_std_irq_setup(struct si_sm_io *io) in ipmi_std_irq_setup() argument
1264 if (!io->irq) in ipmi_std_irq_setup()
1267 rv = request_irq(io->irq, in ipmi_std_irq_setup()
1271 io->irq_handler_data); in ipmi_std_irq_setup()
1273 dev_warn(io->dev, "%s unable to claim interrupt %d," in ipmi_std_irq_setup()
1275 SI_DEVICE_NAME, io->irq); in ipmi_std_irq_setup()
1276 io->irq = 0; in ipmi_std_irq_setup()
1278 io->irq_cleanup = std_irq_cleanup; in ipmi_std_irq_setup()
1279 ipmi_irq_finish_setup(io); in ipmi_std_irq_setup()
1280 dev_info(io->dev, "Using irq %d\n", io->irq); in ipmi_std_irq_setup()
1353 dev_warn(smi_info->io.dev, in try_get_dev_id()
1382 dev_warn(smi_info->io.dev, in get_global_enables()
1395 dev_warn(smi_info->io.dev, in get_global_enables()
1430 dev_warn(smi_info->io.dev, in set_global_enables()
1442 dev_warn(smi_info->io.dev, in set_global_enables()
1478 dev_err(smi_info->io.dev, in check_clr_rcv_irq()
1488 dev_warn(smi_info->io.dev, in check_clr_rcv_irq()
1504 if (!smi_info->io.irq) in check_set_rcv_irq()
1514 dev_err(smi_info->io.dev, in check_set_rcv_irq()
1524 dev_warn(smi_info->io.dev, in check_set_rcv_irq()
1623 return snprintf(buf, 10, "%s\n", si_to_str[smi_info->io.si_type]); in type_show()
1632 int enabled = smi_info->io.irq && !smi_info->interrupt_disabled; in interrupts_enabled_show()
1659 si_to_str[smi_info->io.si_type], in params_show()
1660 addr_space_to_str[smi_info->io.addr_space], in params_show()
1661 smi_info->io.addr_data, in params_show()
1662 smi_info->io.regspacing, in params_show()
1663 smi_info->io.regsize, in params_show()
1664 smi_info->io.regshift, in params_show()
1665 smi_info->io.irq, in params_show()
1666 smi_info->io.slave_addr); in params_show()
1813 smi_info->io.si_type == SI_BT) in setup_dell_poweredge_bt_xaction_handler()
1857 if (e->io.addr_space != info->io.addr_space) in find_dup_si()
1859 if (e->io.addr_data == info->io.addr_data) { in find_dup_si()
1865 if (info->io.slave_addr && !e->io.slave_addr) in find_dup_si()
1866 e->io.slave_addr = info->io.slave_addr; in find_dup_si()
1874 int ipmi_si_add_smi(struct si_sm_io *io) in ipmi_si_add_smi() argument
1884 if (io->addr_source != SI_HARDCODED && io->addr_source != SI_HOTMOD && in ipmi_si_add_smi()
1885 ipmi_si_hardcode_match(io->addr_space, io->addr_data)) { in ipmi_si_add_smi()
1886 dev_info(io->dev, in ipmi_si_add_smi()
1891 if (!io->io_setup) { in ipmi_si_add_smi()
1892 if (io->addr_space == IPMI_IO_ADDR_SPACE) { in ipmi_si_add_smi()
1893 io->io_setup = ipmi_si_port_setup; in ipmi_si_add_smi()
1894 } else if (io->addr_space == IPMI_MEM_ADDR_SPACE) { in ipmi_si_add_smi()
1895 io->io_setup = ipmi_si_mem_setup; in ipmi_si_add_smi()
1906 new_smi->io = *io; in ipmi_si_add_smi()
1911 if (new_smi->io.addr_source == SI_ACPI && in ipmi_si_add_smi()
1912 dup->io.addr_source == SI_SMBIOS) { in ipmi_si_add_smi()
1914 dev_info(dup->io.dev, in ipmi_si_add_smi()
1916 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1919 dev_info(new_smi->io.dev, in ipmi_si_add_smi()
1921 ipmi_addr_src_to_str(new_smi->io.addr_source), in ipmi_si_add_smi()
1922 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1930 ipmi_addr_src_to_str(new_smi->io.addr_source), in ipmi_si_add_smi()
1931 si_to_str[new_smi->io.si_type]); in ipmi_si_add_smi()
1953 ipmi_addr_src_to_str(new_smi->io.addr_source), in try_smi_init()
1954 si_to_str[new_smi->io.si_type], in try_smi_init()
1955 addr_space_to_str[new_smi->io.addr_space], in try_smi_init()
1956 new_smi->io.addr_data, in try_smi_init()
1957 new_smi->io.slave_addr, new_smi->io.irq); in try_smi_init()
1959 switch (new_smi->io.si_type) { in try_smi_init()
1981 if (!new_smi->io.dev) { in try_smi_init()
1993 new_smi->io.io_size = new_smi->handlers->init_data(new_smi->si_sm, in try_smi_init()
1994 &new_smi->io); in try_smi_init()
1997 rv = new_smi->io.io_setup(&new_smi->io); in try_smi_init()
1999 dev_err(new_smi->io.dev, "Could not set up I/O space\n"); in try_smi_init()
2005 if (new_smi->io.addr_source) in try_smi_init()
2006 dev_err(new_smi->io.dev, in try_smi_init()
2018 if (new_smi->io.addr_source) in try_smi_init()
2019 dev_err(new_smi->io.dev, in try_smi_init()
2052 if (new_smi->io.irq) { in try_smi_init()
2057 dev_set_drvdata(new_smi->io.dev, new_smi); in try_smi_init()
2058 rv = device_add_group(new_smi->io.dev, &ipmi_si_dev_attr_group); in try_smi_init()
2060 dev_err(new_smi->io.dev, in try_smi_init()
2069 new_smi->io.dev, in try_smi_init()
2070 new_smi->io.slave_addr); in try_smi_init()
2072 dev_err(new_smi->io.dev, in try_smi_init()
2081 dev_info(new_smi->io.dev, "IPMI %s interface initialized\n", in try_smi_init()
2082 si_to_str[new_smi->io.si_type]); in try_smi_init()
2084 WARN_ON(new_smi->io.dev->init_name != NULL); in try_smi_init()
2087 if (rv && new_smi->io.io_cleanup) { in try_smi_init()
2088 new_smi->io.io_cleanup(&new_smi->io); in try_smi_init()
2089 new_smi->io.io_cleanup = NULL; in try_smi_init()
2122 if (e->io.irq && (!type || e->io.addr_source == type)) { in init_ipmi_si()
2124 type = e->io.addr_source; in init_ipmi_si()
2136 if (!e->io.irq && (!type || e->io.addr_source == type)) { in init_ipmi_si()
2138 type = e->io.addr_source; in init_ipmi_si()
2168 device_remove_group(smi_info->io.dev, &ipmi_si_dev_attr_group); in shutdown_smi()
2171 if (smi_info->io.dev) in shutdown_smi()
2172 dev_set_drvdata(smi_info->io.dev, NULL); in shutdown_smi()
2179 if (smi_info->io.irq_cleanup) { in shutdown_smi()
2180 smi_info->io.irq_cleanup(&smi_info->io); in shutdown_smi()
2181 smi_info->io.irq_cleanup = NULL; in shutdown_smi()
2210 if (smi_info->io.addr_source_cleanup) { in shutdown_smi()
2211 smi_info->io.addr_source_cleanup(&smi_info->io); in shutdown_smi()
2212 smi_info->io.addr_source_cleanup = NULL; in shutdown_smi()
2214 if (smi_info->io.io_cleanup) { in shutdown_smi()
2215 smi_info->io.io_cleanup(&smi_info->io); in shutdown_smi()
2216 smi_info->io.io_cleanup = NULL; in shutdown_smi()
2249 if (e->io.dev == dev) { in ipmi_si_remove_by_dev()
2269 if (e->io.addr_space != addr_space) in ipmi_si_remove_by_data()
2271 if (e->io.si_type != si_type) in ipmi_si_remove_by_data()
2273 if (e->io.addr_data == addr) { in ipmi_si_remove_by_data()
2274 dev = get_device(e->io.dev); in ipmi_si_remove_by_data()