Lines Matching refs:io
140 struct si_sm_io io; member
272 dev_dbg(smi_info->io.dev, "**%s: %lld.%9.9ld\n", in debug_timestamp()
422 if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { in disable_si_irq()
432 if ((smi_info->io.irq) && (smi_info->interrupt_disabled)) { in enable_si_irq()
507 if (((smi_info->io.irq && !smi_info->interrupt_disabled) || in current_global_enables()
513 smi_info->io.irq && !smi_info->interrupt_disabled && in current_global_enables()
524 u8 irqstate = smi_info->io.inputb(&smi_info->io, IPMI_BT_INTMASK_REG); in check_bt_irq()
532 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, in check_bt_irq()
535 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, 0); in check_bt_irq()
595 dev_warn_ratelimited(smi_info->io.dev, in handle_transaction_done()
687 dev_warn_ratelimited(smi_info->io.dev, in handle_transaction_done()
695 if (smi_info->io.si_type == SI_BT) in handle_transaction_done()
725 dev_warn_ratelimited(smi_info->io.dev, in handle_transaction_done()
848 if (smi_info->supports_event_msg_buff || smi_info->io.irq) { in smi_event_handler()
1090 if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { in smi_timeout()
1122 if (smi_info->io.si_type == SI_BT) in ipmi_si_irq_handler()
1124 smi_info->io.outputb(&smi_info->io, IPMI_BT_INTMASK_REG, in ipmi_si_irq_handler()
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()
1167 else if ((new_smi->io.si_type != SI_BT) && (!new_smi->io.irq)) in smi_start_processing()
1174 dev_notice(new_smi->io.dev, in smi_start_processing()
1188 data->addr_src = smi->io.addr_source; in get_smi_info()
1189 data->dev = smi->io.dev; in get_smi_info()
1190 data->addr_info = smi->io.addr_info; in get_smi_info()
1191 get_device(smi->io.dev); in get_smi_info()
1236 void ipmi_irq_finish_setup(struct si_sm_io *io) in ipmi_irq_finish_setup() argument
1238 if (io->si_type == SI_BT) in ipmi_irq_finish_setup()
1240 io->outputb(io, IPMI_BT_INTMASK_REG, in ipmi_irq_finish_setup()
1244 void ipmi_irq_start_cleanup(struct si_sm_io *io) in ipmi_irq_start_cleanup() argument
1246 if (io->si_type == SI_BT) in ipmi_irq_start_cleanup()
1248 io->outputb(io, IPMI_BT_INTMASK_REG, 0); in ipmi_irq_start_cleanup()
1251 static void std_irq_cleanup(struct si_sm_io *io) in std_irq_cleanup() argument
1253 ipmi_irq_start_cleanup(io); in std_irq_cleanup()
1254 free_irq(io->irq, io->irq_handler_data); in std_irq_cleanup()
1257 int ipmi_std_irq_setup(struct si_sm_io *io) in ipmi_std_irq_setup() argument
1261 if (!io->irq) in ipmi_std_irq_setup()
1264 rv = request_irq(io->irq, in ipmi_std_irq_setup()
1268 io->irq_handler_data); in ipmi_std_irq_setup()
1270 dev_warn(io->dev, "%s unable to claim interrupt %d, running polled\n", in ipmi_std_irq_setup()
1271 SI_DEVICE_NAME, io->irq); in ipmi_std_irq_setup()
1272 io->irq = 0; in ipmi_std_irq_setup()
1274 io->irq_cleanup = std_irq_cleanup; in ipmi_std_irq_setup()
1275 ipmi_irq_finish_setup(io); in ipmi_std_irq_setup()
1276 dev_info(io->dev, "Using irq %d\n", io->irq); in ipmi_std_irq_setup()
1347 dev_warn_ratelimited(smi_info->io.dev, in try_get_dev_id()
1376 dev_warn(smi_info->io.dev, in get_global_enables()
1389 dev_warn(smi_info->io.dev, in get_global_enables()
1424 dev_warn(smi_info->io.dev, in set_global_enables()
1436 dev_warn(smi_info->io.dev, in set_global_enables()
1472 dev_err(smi_info->io.dev, in check_clr_rcv_irq()
1482 dev_warn(smi_info->io.dev, in check_clr_rcv_irq()
1498 if (!smi_info->io.irq) in check_set_rcv_irq()
1508 dev_err(smi_info->io.dev, in check_set_rcv_irq()
1518 dev_warn(smi_info->io.dev, in check_set_rcv_irq()
1617 return sysfs_emit(buf, "%s\n", si_to_str[smi_info->io.si_type]); in type_show()
1626 int enabled = smi_info->io.irq && !smi_info->interrupt_disabled; in interrupts_enabled_show()
1652 si_to_str[smi_info->io.si_type], in params_show()
1653 addr_space_to_str[smi_info->io.addr_space], in params_show()
1654 smi_info->io.addr_data, in params_show()
1655 smi_info->io.regspacing, in params_show()
1656 smi_info->io.regsize, in params_show()
1657 smi_info->io.regshift, in params_show()
1658 smi_info->io.irq, in params_show()
1659 smi_info->io.slave_addr); in params_show()
1806 smi_info->io.si_type == SI_BT) in setup_dell_poweredge_bt_xaction_handler()
1850 if (e->io.addr_space != info->io.addr_space) in find_dup_si()
1852 if (e->io.addr_data == info->io.addr_data) { in find_dup_si()
1858 if (info->io.slave_addr && !e->io.slave_addr) in find_dup_si()
1859 e->io.slave_addr = info->io.slave_addr; in find_dup_si()
1867 int ipmi_si_add_smi(struct si_sm_io *io) in ipmi_si_add_smi() argument
1877 if (io->addr_source != SI_HARDCODED && io->addr_source != SI_HOTMOD && in ipmi_si_add_smi()
1878 ipmi_si_hardcode_match(io->addr_space, io->addr_data)) { in ipmi_si_add_smi()
1879 dev_info(io->dev, in ipmi_si_add_smi()
1884 if (!io->io_setup) { in ipmi_si_add_smi()
1885 if (io->addr_space == IPMI_IO_ADDR_SPACE) { in ipmi_si_add_smi()
1886 io->io_setup = ipmi_si_port_setup; in ipmi_si_add_smi()
1887 } else if (io->addr_space == IPMI_MEM_ADDR_SPACE) { in ipmi_si_add_smi()
1888 io->io_setup = ipmi_si_mem_setup; in ipmi_si_add_smi()
1899 new_smi->io = *io; in ipmi_si_add_smi()
1904 if (new_smi->io.addr_source == SI_ACPI && in ipmi_si_add_smi()
1905 dup->io.addr_source == SI_SMBIOS) { in ipmi_si_add_smi()
1907 dev_info(dup->io.dev, 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()
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()
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()
1974 if (!new_smi->io.dev) { 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()
1998 if (new_smi->io.addr_source) in try_smi_init()
1999 dev_err(new_smi->io.dev, 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()
2045 if (new_smi->io.irq) { 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()
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()
2115 if (e->io.irq && (!type || e->io.addr_source == type)) { in init_ipmi_si()
2117 type = e->io.addr_source; in init_ipmi_si()
2129 if (!e->io.irq && (!type || e->io.addr_source == type)) { in init_ipmi_si()
2131 type = e->io.addr_source; in init_ipmi_si()
2175 device_remove_group(smi_info->io.dev, &ipmi_si_dev_attr_group); in shutdown_smi()
2178 if (smi_info->io.dev) in shutdown_smi()
2179 dev_set_drvdata(smi_info->io.dev, NULL); in shutdown_smi()
2186 if (smi_info->io.irq_cleanup) { in shutdown_smi()
2187 smi_info->io.irq_cleanup(&smi_info->io); in shutdown_smi()
2188 smi_info->io.irq_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()
2245 if (e->io.dev == dev) { in ipmi_si_remove_by_dev()
2262 if (e->io.addr_space != addr_space) in ipmi_si_remove_by_data()
2264 if (e->io.si_type != si_type) in ipmi_si_remove_by_data()
2266 if (e->io.addr_data == addr) { in ipmi_si_remove_by_data()
2267 dev = get_device(e->io.dev); in ipmi_si_remove_by_data()