Lines Matching refs:ntb

140 static int epf_ntb_link_up(struct epf_ntb *ntb, bool link_up)  in epf_ntb_link_up()  argument
152 ntb_epc = ntb->epc[type]; in epf_ntb_link_up()
235 static int epf_ntb_configure_mw(struct epf_ntb *ntb, in epf_ntb_configure_mw() argument
248 ntb_epc = ntb->epc[type]; in epf_ntb_configure_mw()
251 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_configure_mw()
262 if (size > ntb->mws_size[mw]) { in epf_ntb_configure_mw()
266 ntb->mws_size[mw]); in epf_ntb_configure_mw()
294 static void epf_ntb_teardown_mw(struct epf_ntb *ntb, in epf_ntb_teardown_mw() argument
305 ntb_epc = ntb->epc[type]; in epf_ntb_teardown_mw()
308 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_teardown_mw()
383 static int epf_ntb_configure_msi(struct epf_ntb *ntb, in epf_ntb_configure_msi() argument
396 ntb_epc = ntb->epc[type]; in epf_ntb_configure_msi()
399 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_configure_msi()
487 static int epf_ntb_configure_msix(struct epf_ntb *ntb, in epf_ntb_configure_msix() argument
505 ntb_epc = ntb->epc[type]; in epf_ntb_configure_msix()
511 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_configure_msix()
554 static int epf_ntb_configure_db(struct epf_ntb *ntb, in epf_ntb_configure_db() argument
565 ntb_epc = ntb->epc[type]; in epf_ntb_configure_db()
569 ret = epf_ntb_configure_msix(ntb, type, db_count); in epf_ntb_configure_db()
571 ret = epf_ntb_configure_msi(ntb, type, db_count); in epf_ntb_configure_db()
589 epf_ntb_teardown_db(struct epf_ntb *ntb, enum pci_epc_interface_type type) in epf_ntb_teardown_db() argument
598 ntb_epc = ntb->epc[type]; in epf_ntb_teardown_db()
601 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_teardown_db()
626 struct epf_ntb *ntb; in epf_ntb_cmd_handler() local
644 ntb = ntb_epc->epf_ntb; in epf_ntb_cmd_handler()
645 dev = &ntb->epf->dev; in epf_ntb_cmd_handler()
651 ret = epf_ntb_configure_db(ntb, type, db_count, is_msix); in epf_ntb_cmd_handler()
658 epf_ntb_teardown_db(ntb, type); in epf_ntb_cmd_handler()
662 ret = epf_ntb_configure_mw(ntb, type, argument); in epf_ntb_cmd_handler()
669 epf_ntb_teardown_mw(ntb, type, argument); in epf_ntb_cmd_handler()
674 if (ntb->epc[PRIMARY_INTERFACE]->linkup && in epf_ntb_cmd_handler()
675 ntb->epc[SECONDARY_INTERFACE]->linkup) { in epf_ntb_cmd_handler()
676 ret = epf_ntb_link_up(ntb, true); in epf_ntb_cmd_handler()
687 ret = epf_ntb_link_up(ntb, false); in epf_ntb_cmd_handler()
779 static int epf_ntb_peer_spad_bar_set(struct epf_ntb *ntb, in epf_ntb_peer_spad_bar_set() argument
791 dev = &ntb->epf->dev; in epf_ntb_peer_spad_bar_set()
793 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_peer_spad_bar_set()
797 ntb_epc = ntb->epc[type]; in epf_ntb_peer_spad_bar_set()
900 struct epf_ntb *ntb; in epf_ntb_config_sspad_bar_set() local
905 ntb = ntb_epc->epf_ntb; in epf_ntb_config_sspad_bar_set()
906 dev = &ntb->epf->dev; in epf_ntb_config_sspad_bar_set()
948 static void epf_ntb_config_spad_bar_free(struct epf_ntb *ntb) in epf_ntb_config_spad_bar_free() argument
955 epf = ntb->epf; in epf_ntb_config_spad_bar_free()
957 ntb_epc = ntb->epc[type]; in epf_ntb_config_spad_bar_free()
993 static int epf_ntb_config_spad_bar_alloc(struct epf_ntb *ntb, in epf_ntb_config_spad_bar_alloc() argument
1009 epf = ntb->epf; in epf_ntb_config_spad_bar_alloc()
1011 ntb_epc = ntb->epc[type]; in epf_ntb_config_spad_bar_alloc()
1018 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_config_spad_bar_alloc()
1027 spad_count = ntb->spad_count; in epf_ntb_config_spad_bar_alloc()
1034 msix_table_size = PCI_MSIX_ENTRY_SIZE * ntb->db_count; in epf_ntb_config_spad_bar_alloc()
1039 pba_size = ALIGN(DIV_ROUND_UP(ntb->db_count, 8), 8); in epf_ntb_config_spad_bar_alloc()
1082 ctrl->num_mws = ntb->num_mws; in epf_ntb_config_spad_bar_alloc()
1097 static int epf_ntb_config_spad_bar_alloc_interface(struct epf_ntb *ntb) in epf_ntb_config_spad_bar_alloc_interface() argument
1103 dev = &ntb->epf->dev; in epf_ntb_config_spad_bar_alloc_interface()
1106 ret = epf_ntb_config_spad_bar_alloc(ntb, type); in epf_ntb_config_spad_bar_alloc_interface()
1252 static void epf_ntb_db_mw_bar_cleanup(struct epf_ntb *ntb, in epf_ntb_db_mw_bar_cleanup() argument
1257 ntb_epc = ntb->epc[type]; in epf_ntb_db_mw_bar_cleanup()
1258 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_db_mw_bar_cleanup()
1272 static int epf_ntb_configure_interrupt(struct epf_ntb *ntb, in epf_ntb_configure_interrupt() argument
1284 ntb_epc = ntb->epc[type]; in epf_ntb_configure_interrupt()
1285 dev = &ntb->epf->dev; in epf_ntb_configure_interrupt()
1299 db_count = ntb->db_count; in epf_ntb_configure_interrupt()
1305 ntb->db_count = db_count; in epf_ntb_configure_interrupt()
1429 static int epf_ntb_db_mw_bar_init(struct epf_ntb *ntb, in epf_ntb_db_mw_bar_init() argument
1446 ntb_epc = ntb->epc[type]; in epf_ntb_db_mw_bar_init()
1447 peer_ntb_epc = ntb->epc[!type]; in epf_ntb_db_mw_bar_init()
1449 dev = &ntb->epf->dev; in epf_ntb_db_mw_bar_init()
1455 num_mws = ntb->num_mws; in epf_ntb_db_mw_bar_init()
1456 db_count = ntb->db_count; in epf_ntb_db_mw_bar_init()
1462 size = ALIGN(size, ntb->mws_size[i]); in epf_ntb_db_mw_bar_init()
1465 size += ntb->mws_size[i]; in epf_ntb_db_mw_bar_init()
1467 size = ntb->mws_size[i]; in epf_ntb_db_mw_bar_init()
1492 epf_ntb_db_mw_bar_cleanup(ntb, type); in epf_ntb_db_mw_bar_init()
1505 static void epf_ntb_epc_destroy_interface(struct epf_ntb *ntb, in epf_ntb_epc_destroy_interface() argument
1515 epf = ntb->epf; in epf_ntb_epc_destroy_interface()
1516 ntb_epc = ntb->epc[type]; in epf_ntb_epc_destroy_interface()
1530 static void epf_ntb_epc_destroy(struct epf_ntb *ntb) in epf_ntb_epc_destroy() argument
1535 epf_ntb_epc_destroy_interface(ntb, type); in epf_ntb_epc_destroy()
1546 static int epf_ntb_epc_create_interface(struct epf_ntb *ntb, in epf_ntb_epc_create_interface() argument
1557 dev = &ntb->epf->dev; in epf_ntb_epc_create_interface()
1563 epf = ntb->epf; in epf_ntb_epc_create_interface()
1579 ntb_epc->epf_ntb = ntb; in epf_ntb_epc_create_interface()
1586 ntb->epc[type] = ntb_epc; in epf_ntb_epc_create_interface()
1600 static int epf_ntb_epc_create(struct epf_ntb *ntb) in epf_ntb_epc_create() argument
1606 epf = ntb->epf; in epf_ntb_epc_create()
1609 ret = epf_ntb_epc_create_interface(ntb, epf->epc, PRIMARY_INTERFACE); in epf_ntb_epc_create()
1615 ret = epf_ntb_epc_create_interface(ntb, epf->sec_epc, in epf_ntb_epc_create()
1625 epf_ntb_epc_destroy_interface(ntb, PRIMARY_INTERFACE); in epf_ntb_epc_create()
1639 static int epf_ntb_init_epc_bar_interface(struct epf_ntb *ntb, in epf_ntb_init_epc_bar_interface() argument
1651 ntb_epc = ntb->epc[type]; in epf_ntb_init_epc_bar_interface()
1652 num_mws = ntb->num_mws; in epf_ntb_init_epc_bar_interface()
1653 dev = &ntb->epf->dev; in epf_ntb_init_epc_bar_interface()
1671 ntb->num_mws = i; in epf_ntb_init_epc_bar_interface()
1689 static int epf_ntb_init_epc_bar(struct epf_ntb *ntb) in epf_ntb_init_epc_bar() argument
1695 dev = &ntb->epf->dev; in epf_ntb_init_epc_bar()
1697 ret = epf_ntb_init_epc_bar_interface(ntb, type); in epf_ntb_init_epc_bar()
1717 static int epf_ntb_epc_init_interface(struct epf_ntb *ntb, in epf_ntb_epc_init_interface() argument
1727 ntb_epc = ntb->epc[type]; in epf_ntb_epc_init_interface()
1728 epf = ntb->epf; in epf_ntb_epc_init_interface()
1734 ret = epf_ntb_config_sspad_bar_set(ntb->epc[type]); in epf_ntb_epc_init_interface()
1741 ret = epf_ntb_peer_spad_bar_set(ntb, type); in epf_ntb_epc_init_interface()
1748 ret = epf_ntb_configure_interrupt(ntb, type); in epf_ntb_epc_init_interface()
1755 ret = epf_ntb_db_mw_bar_init(ntb, type); in epf_ntb_epc_init_interface()
1771 INIT_DELAYED_WORK(&ntb->epc[type]->cmd_handler, epf_ntb_cmd_handler); in epf_ntb_epc_init_interface()
1772 queue_work(kpcintb_workqueue, &ntb->epc[type]->cmd_handler.work); in epf_ntb_epc_init_interface()
1777 epf_ntb_db_mw_bar_cleanup(ntb, type); in epf_ntb_epc_init_interface()
1780 epf_ntb_peer_spad_bar_clear(ntb->epc[type]); in epf_ntb_epc_init_interface()
1783 epf_ntb_config_sspad_bar_clear(ntb->epc[type]); in epf_ntb_epc_init_interface()
1795 static void epf_ntb_epc_cleanup_interface(struct epf_ntb *ntb, in epf_ntb_epc_cleanup_interface() argument
1803 ntb_epc = ntb->epc[type]; in epf_ntb_epc_cleanup_interface()
1805 epf_ntb_db_mw_bar_cleanup(ntb, type); in epf_ntb_epc_cleanup_interface()
1816 static void epf_ntb_epc_cleanup(struct epf_ntb *ntb) in epf_ntb_epc_cleanup() argument
1821 epf_ntb_epc_cleanup_interface(ntb, type); in epf_ntb_epc_cleanup()
1831 static int epf_ntb_epc_init(struct epf_ntb *ntb) in epf_ntb_epc_init() argument
1837 dev = &ntb->epf->dev; in epf_ntb_epc_init()
1840 ret = epf_ntb_epc_init_interface(ntb, type); in epf_ntb_epc_init()
1851 epf_ntb_epc_cleanup_interface(ntb, type - 1); in epf_ntb_epc_init()
1867 struct epf_ntb *ntb = epf_get_drvdata(epf); in epf_ntb_bind() local
1881 ret = epf_ntb_epc_create(ntb); in epf_ntb_bind()
1887 ret = epf_ntb_init_epc_bar(ntb); in epf_ntb_bind()
1893 ret = epf_ntb_config_spad_bar_alloc_interface(ntb); in epf_ntb_bind()
1899 ret = epf_ntb_epc_init(ntb); in epf_ntb_bind()
1905 epf_set_drvdata(epf, ntb); in epf_ntb_bind()
1910 epf_ntb_config_spad_bar_free(ntb); in epf_ntb_bind()
1913 epf_ntb_epc_destroy(ntb); in epf_ntb_bind()
1926 struct epf_ntb *ntb = epf_get_drvdata(epf); in epf_ntb_unbind() local
1928 epf_ntb_epc_cleanup(ntb); in epf_ntb_unbind()
1929 epf_ntb_config_spad_bar_free(ntb); in epf_ntb_unbind()
1930 epf_ntb_epc_destroy(ntb); in epf_ntb_unbind()
1938 struct epf_ntb *ntb = to_epf_ntb(group); \
1940 return sysfs_emit(page, "%d\n", ntb->_name); \
1948 struct epf_ntb *ntb = to_epf_ntb(group); \
1954 ntb->_name = val; \
1964 struct epf_ntb *ntb = to_epf_ntb(group); \
1969 return sysfs_emit(page, "%lld\n", ntb->mws_size[win_no - 1]); \
1977 struct epf_ntb *ntb = to_epf_ntb(group); \
1978 struct device *dev = &ntb->epf->dev; \
1988 if (ntb->num_mws < win_no) { \
1989 dev_err(dev, "Invalid num_nws: %d value\n", ntb->num_mws); \
1993 ntb->mws_size[win_no - 1] = val; \
2002 struct epf_ntb *ntb = to_epf_ntb(group); in epf_ntb_num_mws_store() local
2011 ntb->num_mws = val; in epf_ntb_num_mws_store()
2066 struct epf_ntb *ntb = epf_get_drvdata(epf); in epf_ntb_add_cfs() local
2067 struct config_group *ntb_group = &ntb->group; in epf_ntb_add_cfs()
2086 struct epf_ntb *ntb; in epf_ntb_probe() local
2091 ntb = devm_kzalloc(dev, sizeof(*ntb), GFP_KERNEL); in epf_ntb_probe()
2092 if (!ntb) in epf_ntb_probe()
2096 ntb->epf = epf; in epf_ntb_probe()
2097 epf_set_drvdata(epf, ntb); in epf_ntb_probe()