Lines Matching +full:port +full:- +full:number

8  *   Copyright (C) 2016 T-Platforms. All Rights Reserved.
22 * Copyright (C) 2016 T-Platforms. All Rights Reserved.
69 * enum ntb_topo - NTB connection topology
79 NTB_TOPO_NONE = -1,
113 * enum ntb_speed - NTB link training speed
122 NTB_SPEED_AUTO = -1,
131 * enum ntb_width - NTB link training width
143 NTB_WIDTH_AUTO = -1,
155 * enum ntb_default_port - NTB default port number
156 * @NTB_PORT_PRI_USD: Default port of the NTB_TOPO_PRI/NTB_TOPO_B2B_USD
158 * @NTB_PORT_SEC_DSD: Default port of the NTB_TOPO_SEC/NTB_TOPO_B2B_DSD
169 * struct ntb_client_ops - ntb client operations
182 ops->probe && in ntb_client_ops_is_valid()
183 ops->remove && in ntb_client_ops_is_valid()
188 * struct ntb_ctx_ops - ntb driver context operations
203 /* ops->link_event && */ in ntb_ctx_ops_is_valid()
204 /* ops->db_event && */ in ntb_ctx_ops_is_valid()
205 /* ops->msg_event && */ in ntb_ctx_ops_is_valid()
210 * struct ntb_dev_ops - ntb device operations
264 int (*peer_port_idx)(struct ntb_dev *ntb, int port);
338 /* Port operations are required for multiport devices */ in ntb_dev_ops_is_valid()
339 !ops->peer_port_count == !ops->port_number && in ntb_dev_ops_is_valid()
340 !ops->peer_port_number == !ops->port_number && in ntb_dev_ops_is_valid()
341 !ops->peer_port_idx == !ops->port_number && in ntb_dev_ops_is_valid()
344 ops->link_is_up && in ntb_dev_ops_is_valid()
345 ops->link_enable && in ntb_dev_ops_is_valid()
346 ops->link_disable && in ntb_dev_ops_is_valid()
349 ops->mw_count && in ntb_dev_ops_is_valid()
350 ops->mw_get_align && in ntb_dev_ops_is_valid()
351 (ops->mw_set_trans || in ntb_dev_ops_is_valid()
352 ops->peer_mw_set_trans) && in ntb_dev_ops_is_valid()
353 /* ops->mw_clear_trans && */ in ntb_dev_ops_is_valid()
354 ops->peer_mw_count && in ntb_dev_ops_is_valid()
355 ops->peer_mw_get_addr && in ntb_dev_ops_is_valid()
356 /* ops->peer_mw_clear_trans && */ in ntb_dev_ops_is_valid()
359 /* ops->db_is_unsafe && */ in ntb_dev_ops_is_valid()
360 ops->db_valid_mask && in ntb_dev_ops_is_valid()
362 (!ops->db_vector_count == !ops->db_vector_mask) && in ntb_dev_ops_is_valid()
363 ops->db_read && in ntb_dev_ops_is_valid()
364 /* ops->db_set && */ in ntb_dev_ops_is_valid()
365 ops->db_clear && in ntb_dev_ops_is_valid()
366 /* ops->db_read_mask && */ in ntb_dev_ops_is_valid()
367 ops->db_set_mask && in ntb_dev_ops_is_valid()
368 ops->db_clear_mask && in ntb_dev_ops_is_valid()
369 /* ops->peer_db_addr && */ in ntb_dev_ops_is_valid()
370 /* ops->peer_db_read && */ in ntb_dev_ops_is_valid()
371 ops->peer_db_set && in ntb_dev_ops_is_valid()
372 /* ops->peer_db_clear && */ in ntb_dev_ops_is_valid()
373 /* ops->peer_db_read_mask && */ in ntb_dev_ops_is_valid()
374 /* ops->peer_db_set_mask && */ in ntb_dev_ops_is_valid()
375 /* ops->peer_db_clear_mask && */ in ntb_dev_ops_is_valid()
378 /* !ops->spad_is_unsafe == !ops->spad_count && */ in ntb_dev_ops_is_valid()
379 !ops->spad_read == !ops->spad_count && in ntb_dev_ops_is_valid()
380 !ops->spad_write == !ops->spad_count && in ntb_dev_ops_is_valid()
381 /* !ops->peer_spad_addr == !ops->spad_count && */ in ntb_dev_ops_is_valid()
382 /* !ops->peer_spad_read == !ops->spad_count && */ in ntb_dev_ops_is_valid()
383 !ops->peer_spad_write == !ops->spad_count && in ntb_dev_ops_is_valid()
386 !ops->msg_inbits == !ops->msg_count && in ntb_dev_ops_is_valid()
387 !ops->msg_outbits == !ops->msg_count && in ntb_dev_ops_is_valid()
388 !ops->msg_read_sts == !ops->msg_count && in ntb_dev_ops_is_valid()
389 !ops->msg_clear_sts == !ops->msg_count && in ntb_dev_ops_is_valid()
390 /* !ops->msg_set_mask == !ops->msg_count && */ in ntb_dev_ops_is_valid()
391 /* !ops->msg_clear_mask == !ops->msg_count && */ in ntb_dev_ops_is_valid()
392 !ops->msg_read == !ops->msg_count && in ntb_dev_ops_is_valid()
393 !ops->peer_msg_write == !ops->msg_count && in ntb_dev_ops_is_valid()
398 * struct ntb_client - client interested in ntb devices
409 * struct ntb_dev - ntb device
439 * ntb_register_client() - register a client for interest in ntb devices
446 * Return: Zero if the client is registered, otherwise an error number.
455 * ntb_unregister_client() - unregister a client for interest in ntb devices
469 * ntb_register_device() - register a ntb device
476 * Return: Zero if the device is registered, otherwise an error number.
481 * ntb_unregister_device() - unregister a ntb device
491 * ntb_set_ctx() - associate a driver context with an ntb device
500 * Return: Zero if the context is associated, otherwise an error number.
506 * ntb_clear_ctx() - disassociate any driver context from an ntb device
515 * ntb_link_event() - notify driver context of a change in link status
524 * ntb_db_event() - notify driver context of a doorbell event
526 * @vector: Interrupt vector number.
529 * multiple interrupt vectors for doorbells, the vector number indicates which
530 * vector received the interrupt. The vector number is relative to the first
534 * those bits are associated with the vector number.
539 * ntb_msg_event() - notify driver context of a message event
551 * ntb_default_port_number() - get the default local port number
556 * port number in compliance with topology.
561 * Return: the default local port number
566 * ntb_default_port_count() - get the default number of peer device ports
574 * Return: the default number of peer ports
579 * ntb_default_peer_port_number() - get the default peer port by given index
581 * @idx: Peer port index (should not differ from zero).
589 * Return: the peer device port or negative value indicating an error
594 * ntb_default_peer_port_idx() - get the default peer device port index by
595 * given port number
597 * @port: Peer port number (should be one of enum ntb_default_port).
600 * specified port-argument indicates peer port from enum ntb_default_port,
606 * Return: the peer port index or negative value indicating an error
608 int ntb_default_peer_port_idx(struct ntb_dev *ntb, int port);
611 * ntb_port_number() - get the local port number
614 * Hardware must support at least simple two-ports ntb connection
616 * Return: the local port number
620 if (!ntb->ops->port_number) in ntb_port_number()
623 return ntb->ops->port_number(ntb); in ntb_port_number()
626 * ntb_peer_port_count() - get the number of peer device ports
630 * over multi-port NTB devices. This method returns the number of peers,
633 * Return: the number of peer ports
637 if (!ntb->ops->peer_port_count) in ntb_peer_port_count()
640 return ntb->ops->peer_port_count(ntb); in ntb_peer_port_count()
644 * ntb_peer_port_number() - get the peer port by given index
646 * @pidx: Peer port index.
649 * lets to retrieve port real number by its index.
651 * Return: the peer device port or negative value indicating an error
655 if (!ntb->ops->peer_port_number) in ntb_peer_port_number()
658 return ntb->ops->peer_port_number(ntb, pidx); in ntb_peer_port_number()
662 * ntb_logical_port_number() - get the logical port number of the local port
665 * The Logical Port Number is defined to be a unique number for each
666 * port starting from zero through to the number of ports minus one.
667 * This is in contrast to the Port Number where each port can be assigned
668 * any unique physical number by the hardware.
670 * The logical port number is useful for calculating the resource indexes
673 * Return: the logical port number or negative value indicating an error
691 * ntb_peer_logical_port_number() - get the logical peer port by given index
693 * @pidx: Peer port index.
695 * The Logical Port Number is defined to be a unique number for each
696 * port starting from zero through to the number of ports minus one.
697 * This is in contrast to the Port Number where each port can be assigned
698 * any unique physical number by the hardware.
700 * The logical port number is useful for calculating the resource indexes
703 * Return: the peer's logical port number or negative value indicating an error
714 * ntb_peer_port_idx() - get the peer device port index by given port number
716 * @port: Peer port number.
718 * Inverse operation of ntb_peer_port_number(), so one can get port index
719 * by specified port number.
721 * Return: the peer port index or negative value indicating an error
723 static inline int ntb_peer_port_idx(struct ntb_dev *ntb, int port) in ntb_peer_port_idx() argument
725 if (!ntb->ops->peer_port_idx) in ntb_peer_port_idx()
726 return ntb_default_peer_port_idx(ntb, port); in ntb_peer_port_idx()
728 return ntb->ops->peer_port_idx(ntb, port); in ntb_peer_port_idx()
732 * ntb_link_is_up() - get the current ntb link state
734 * @speed: OUT - The link speed expressed as PCIe generation number.
735 * @width: OUT - The link width expressed as the number of PCIe lanes.
747 return ntb->ops->link_is_up(ntb, speed, width); in ntb_link_is_up()
751 * ntb_link_enable() - enable the local port ntb connection
753 * @max_speed: The maximum link speed expressed as PCIe generation number.
754 * @max_width: The maximum link width expressed as the number of PCIe lanes.
756 * Enable the NTB/PCIe link on the local or remote (for bridge-to-bridge
762 * Return: Zero on success, otherwise an error number.
768 return ntb->ops->link_enable(ntb, max_speed, max_width); in ntb_link_enable()
772 * ntb_link_disable() - disable the local port ntb connection
779 * number.
781 * Return: Zero on success, otherwise an error number.
785 return ntb->ops->link_disable(ntb); in ntb_link_disable()
789 * ntb_mw_count() - get the number of inbound memory windows, which could
792 * @pidx: Port index of peer device.
794 * Hardware and topology may support a different number of memory windows.
795 * Moreover different peer devices can support different number of memory
796 * windows. Simply speaking this method returns the number of possible inbound
800 * Return: the number of memory windows.
804 return ntb->ops->mw_count(ntb, pidx); in ntb_mw_count()
808 * ntb_mw_get_align() - get the restriction parameters of inbound memory window
810 * @pidx: Port index of peer device.
812 * @addr_align: OUT - the base alignment for translating the memory window
813 * @size_align: OUT - the size alignment for translating the memory window
814 * @size_max: OUT - the maximum size of the memory window
821 * Return: Zero on success, otherwise a negative error number.
829 return -ENOTCONN; in ntb_mw_get_align()
831 return ntb->ops->mw_get_align(ntb, pidx, widx, addr_align, size_align, in ntb_mw_get_align()
836 * ntb_mw_set_trans() - set the translation of an inbound memory window
838 * @pidx: Port index of peer device.
852 * Return: Zero on success, otherwise an error number.
857 if (!ntb->ops->mw_set_trans) in ntb_mw_set_trans()
860 return ntb->ops->mw_set_trans(ntb, pidx, widx, addr, size); in ntb_mw_set_trans()
864 * ntb_mw_clear_trans() - clear the translation address of an inbound memory
867 * @pidx: Port index of peer device.
873 * Return: Zero on success, otherwise an error number.
877 if (!ntb->ops->mw_clear_trans) in ntb_mw_clear_trans()
880 return ntb->ops->mw_clear_trans(ntb, pidx, widx); in ntb_mw_clear_trans()
884 * ntb_peer_mw_count() - get the number of outbound memory windows, which could
888 * Hardware and topology may support a different number of memory windows.
889 * This method returns the number of outbound memory windows supported by
892 * Return: the number of memory windows.
896 return ntb->ops->peer_mw_count(ntb); in ntb_peer_mw_count()
900 * ntb_peer_mw_get_addr() - get map address of an outbound memory window
903 * @base: OUT - the base address of mapping region.
904 * @size: OUT - the size of mapping region.
910 * Return: Zero on success, otherwise a negative error number.
915 return ntb->ops->peer_mw_get_addr(ntb, widx, base, size); in ntb_peer_mw_get_addr()
919 * ntb_peer_mw_set_trans() - set a translation address of a memory window
922 * @pidx: Port index of peer device the translation address received from.
934 * Return: Zero on success, otherwise an error number.
939 if (!ntb->ops->peer_mw_set_trans) in ntb_peer_mw_set_trans()
942 return ntb->ops->peer_mw_set_trans(ntb, pidx, widx, addr, size); in ntb_peer_mw_set_trans()
946 * ntb_peer_mw_clear_trans() - clear the translation address of an outbound
949 * @pidx: Port index of peer device.
958 * Return: Zero on success, otherwise an error number.
963 if (!ntb->ops->peer_mw_clear_trans) in ntb_peer_mw_clear_trans()
966 return ntb->ops->peer_mw_clear_trans(ntb, pidx, widx); in ntb_peer_mw_clear_trans()
970 * ntb_db_is_unsafe() - check if it is safe to use hardware doorbell
981 if (!ntb->ops->db_is_unsafe) in ntb_db_is_unsafe()
984 return ntb->ops->db_is_unsafe(ntb); in ntb_db_is_unsafe()
988 * ntb_db_valid_mask() - get a mask of doorbell bits supported by the ntb
991 * Hardware may support different number or arrangement of doorbell bits.
997 return ntb->ops->db_valid_mask(ntb); in ntb_db_valid_mask()
1001 * ntb_db_vector_count() - get the number of doorbell interrupt vectors
1004 * Hardware may support different number of interrupt vectors.
1006 * Return: The number of doorbell interrupt vectors.
1010 if (!ntb->ops->db_vector_count) in ntb_db_vector_count()
1013 return ntb->ops->db_vector_count(ntb); in ntb_db_vector_count()
1017 * ntb_db_vector_mask() - get a mask of doorbell bits serviced by a vector
1019 * @vector: Doorbell vector number.
1021 * Each interrupt vector may have a different number or arrangement of bits.
1027 if (!ntb->ops->db_vector_mask) in ntb_db_vector_mask()
1030 return ntb->ops->db_vector_mask(ntb, vector); in ntb_db_vector_mask()
1034 * ntb_db_read() - read the local doorbell register
1043 return ntb->ops->db_read(ntb); in ntb_db_read()
1047 * ntb_db_set() - set bits in the local doorbell register
1056 * Return: Zero on success, otherwise an error number.
1060 if (!ntb->ops->db_set) in ntb_db_set()
1061 return -EINVAL; in ntb_db_set()
1063 return ntb->ops->db_set(ntb, db_bits); in ntb_db_set()
1067 * ntb_db_clear() - clear bits in the local doorbell register
1074 * Return: Zero on success, otherwise an error number.
1078 return ntb->ops->db_clear(ntb, db_bits); in ntb_db_clear()
1082 * ntb_db_read_mask() - read the local doorbell mask
1093 if (!ntb->ops->db_read_mask) in ntb_db_read_mask()
1096 return ntb->ops->db_read_mask(ntb); in ntb_db_read_mask()
1100 * ntb_db_set_mask() - set bits in the local doorbell mask
1108 * Return: Zero on success, otherwise an error number.
1112 return ntb->ops->db_set_mask(ntb, db_bits); in ntb_db_set_mask()
1116 * ntb_db_clear_mask() - clear bits in the local doorbell mask
1127 * Return: Zero on success, otherwise an error number.
1131 return ntb->ops->db_clear_mask(ntb, db_bits); in ntb_db_clear_mask()
1135 * ntb_peer_db_addr() - address and size of the peer doorbell register
1137 * @db_addr: OUT - The address of the peer doorbell register.
1138 * @db_size: OUT - The number of bytes to write the peer doorbell register.
1139 * @db_data: OUT - The data of peer doorbell register
1140 * @db_bit: door bell bit number
1150 * Return: Zero on success, otherwise an error number.
1157 if (!ntb->ops->peer_db_addr) in ntb_peer_db_addr()
1158 return -EINVAL; in ntb_peer_db_addr()
1160 return ntb->ops->peer_db_addr(ntb, db_addr, db_size, db_data, db_bit); in ntb_peer_db_addr()
1164 * ntb_peer_db_read() - read the peer doorbell register
1175 if (!ntb->ops->peer_db_read) in ntb_peer_db_read()
1178 return ntb->ops->peer_db_read(ntb); in ntb_peer_db_read()
1182 * ntb_peer_db_set() - set bits in the peer doorbell register
1189 * Return: Zero on success, otherwise an error number.
1193 return ntb->ops->peer_db_set(ntb, db_bits); in ntb_peer_db_set()
1197 * ntb_peer_db_clear() - clear bits in the peer doorbell register
1206 * Return: Zero on success, otherwise an error number.
1210 if (!ntb->ops->db_clear) in ntb_peer_db_clear()
1211 return -EINVAL; in ntb_peer_db_clear()
1213 return ntb->ops->peer_db_clear(ntb, db_bits); in ntb_peer_db_clear()
1217 * ntb_peer_db_read_mask() - read the peer doorbell mask
1228 if (!ntb->ops->db_read_mask) in ntb_peer_db_read_mask()
1231 return ntb->ops->peer_db_read_mask(ntb); in ntb_peer_db_read_mask()
1235 * ntb_peer_db_set_mask() - set bits in the peer doorbell mask
1245 * Return: Zero on success, otherwise an error number.
1249 if (!ntb->ops->db_set_mask) in ntb_peer_db_set_mask()
1250 return -EINVAL; in ntb_peer_db_set_mask()
1252 return ntb->ops->peer_db_set_mask(ntb, db_bits); in ntb_peer_db_set_mask()
1256 * ntb_peer_db_clear_mask() - clear bits in the peer doorbell mask
1267 * Return: Zero on success, otherwise an error number.
1271 if (!ntb->ops->db_clear_mask) in ntb_peer_db_clear_mask()
1272 return -EINVAL; in ntb_peer_db_clear_mask()
1274 return ntb->ops->peer_db_clear_mask(ntb, db_bits); in ntb_peer_db_clear_mask()
1278 * ntb_spad_is_unsafe() - check if it is safe to use the hardware scratchpads
1289 if (!ntb->ops->spad_is_unsafe) in ntb_spad_is_unsafe()
1292 return ntb->ops->spad_is_unsafe(ntb); in ntb_spad_is_unsafe()
1296 * ntb_spad_count() - get the number of scratchpads
1299 * Hardware and topology may support a different number of scratchpads.
1302 * Return: the number of scratchpads.
1306 if (!ntb->ops->spad_count) in ntb_spad_count()
1309 return ntb->ops->spad_count(ntb); in ntb_spad_count()
1313 * ntb_spad_read() - read the local scratchpad register
1323 if (!ntb->ops->spad_read) in ntb_spad_read()
1326 return ntb->ops->spad_read(ntb, sidx); in ntb_spad_read()
1330 * ntb_spad_write() - write the local scratchpad register
1337 * Return: Zero on success, otherwise an error number.
1341 if (!ntb->ops->spad_write) in ntb_spad_write()
1342 return -EINVAL; in ntb_spad_write()
1344 return ntb->ops->spad_write(ntb, sidx, val); in ntb_spad_write()
1348 * ntb_peer_spad_addr() - address of the peer scratchpad register
1350 * @pidx: Port index of peer device.
1352 * @spad_addr: OUT - The address of the peer scratchpad register.
1357 * Return: Zero on success, otherwise an error number.
1362 if (!ntb->ops->peer_spad_addr) in ntb_peer_spad_addr()
1363 return -EINVAL; in ntb_peer_spad_addr()
1365 return ntb->ops->peer_spad_addr(ntb, pidx, sidx, spad_addr); in ntb_peer_spad_addr()
1369 * ntb_peer_spad_read() - read the peer scratchpad register
1371 * @pidx: Port index of peer device.
1380 if (!ntb->ops->peer_spad_read) in ntb_peer_spad_read()
1383 return ntb->ops->peer_spad_read(ntb, pidx, sidx); in ntb_peer_spad_read()
1387 * ntb_peer_spad_write() - write the peer scratchpad register
1389 * @pidx: Port index of peer device.
1395 * Return: Zero on success, otherwise an error number.
1400 if (!ntb->ops->peer_spad_write) in ntb_peer_spad_write()
1401 return -EINVAL; in ntb_peer_spad_write()
1403 return ntb->ops->peer_spad_write(ntb, pidx, sidx, val); in ntb_peer_spad_write()
1407 * ntb_msg_count() - get the number of message registers
1410 * Hardware may support a different number of message registers.
1412 * Return: the number of message registers.
1416 if (!ntb->ops->msg_count) in ntb_msg_count()
1419 return ntb->ops->msg_count(ntb); in ntb_msg_count()
1423 * ntb_msg_inbits() - get a bitfield of inbound message registers status
1433 if (!ntb->ops->msg_inbits) in ntb_msg_inbits()
1436 return ntb->ops->msg_inbits(ntb); in ntb_msg_inbits()
1440 * ntb_msg_outbits() - get a bitfield of outbound message registers status
1450 if (!ntb->ops->msg_outbits) in ntb_msg_outbits()
1453 return ntb->ops->msg_outbits(ntb); in ntb_msg_outbits()
1457 * ntb_msg_read_sts() - read the message registers status
1468 if (!ntb->ops->msg_read_sts) in ntb_msg_read_sts()
1471 return ntb->ops->msg_read_sts(ntb); in ntb_msg_read_sts()
1475 * ntb_msg_clear_sts() - clear status bits of message registers
1481 * Return: Zero on success, otherwise a negative error number.
1485 if (!ntb->ops->msg_clear_sts) in ntb_msg_clear_sts()
1486 return -EINVAL; in ntb_msg_clear_sts()
1488 return ntb->ops->msg_clear_sts(ntb, sts_bits); in ntb_msg_clear_sts()
1492 * ntb_msg_set_mask() - set mask of message register status bits
1498 * Return: Zero on success, otherwise a negative error number.
1502 if (!ntb->ops->msg_set_mask) in ntb_msg_set_mask()
1503 return -EINVAL; in ntb_msg_set_mask()
1505 return ntb->ops->msg_set_mask(ntb, mask_bits); in ntb_msg_set_mask()
1509 * ntb_msg_clear_mask() - clear message registers mask
1515 * Return: Zero on success, otherwise a negative error number.
1519 if (!ntb->ops->msg_clear_mask) in ntb_msg_clear_mask()
1520 return -EINVAL; in ntb_msg_clear_mask()
1522 return ntb->ops->msg_clear_mask(ntb, mask_bits); in ntb_msg_clear_mask()
1526 * ntb_msg_read() - read inbound message register with specified index
1528 * @pidx: OUT - Port index of peer device a message retrieved from
1531 * Read data from the specified message register. Source port index of a
1538 if (!ntb->ops->msg_read) in ntb_msg_read()
1541 return ntb->ops->msg_read(ntb, pidx, midx); in ntb_msg_read()
1545 * ntb_peer_msg_write() - write data to the specified peer message register
1547 * @pidx: Port index of peer device a message being sent to
1555 * Return: Zero on success, otherwise a negative error number.
1560 if (!ntb->ops->peer_msg_write) in ntb_peer_msg_write()
1561 return -EINVAL; in ntb_peer_msg_write()
1563 return ntb->ops->peer_msg_write(ntb, pidx, midx, msg); in ntb_peer_msg_write()
1567 * ntb_peer_resource_idx() - get a resource index for a given peer idx
1569 * @pidx: Peer port index.
1580 * pidx \ port 0 1 2 3 4
1587 * windows, port 0 will program MW 0 on all it's peers to point to itself.
1588 * port 1 will program MW 0 in port 0 to point to itself and MW 1 on all
1602 return -EINVAL; in ntb_peer_resource_idx()
1608 return local_port - 1; in ntb_peer_resource_idx()
1614 * ntb_peer_highest_mw_idx() - get a memory window index for a given peer idx
1618 * @pidx: Peer port index.
1633 return ntb_mw_count(ntb, pidx) - ret - 1; in ntb_peer_highest_mw_idx()
1662 return -EOPNOTSUPP; in ntb_msi_init()
1666 return -EOPNOTSUPP; in ntb_msi_setup_mws()
1675 return -EOPNOTSUPP; in ntbm_msi_request_threaded_irq()
1682 return -EOPNOTSUPP; in ntb_msi_peer_trigger()
1688 return -EOPNOTSUPP; in ntb_msi_peer_addr()