| /linux/drivers/mailbox/ |
| H A D | arm_mhu_db.c | 49 * @pchan: Physical channel within which this doorbell resides in 50 * @doorbell: doorbell number pertaining to this channel 55 unsigned int doorbell; member 60 unsigned int doorbell) in mhu_db_mbox_to_channel() argument 68 chan_info->doorbell == doorbell) in mhu_db_mbox_to_channel() 80 writel_relaxed(BIT(chan_info->doorbell), base + INTR_CLR_OFS); in mhu_db_mbox_clear_irq() 97 unsigned int doorbell; in mhu_db_mbox_irq_to_channel() local 108 for (doorbell = 0; bits; doorbell++) { in mhu_db_mbox_irq_to_channel() 109 if (!test_and_clear_bit(doorbell, &bits)) in mhu_db_mbox_irq_to_channel() 112 chan = mhu_db_mbox_to_channel(mbox, pchan, doorbell); in mhu_db_mbox_irq_to_channel() [all …]
|
| H A D | arm_mhuv2.c | 10 * protocol modes: data-transfer and doorbell, to be used on those channel 150 DOORBELL = 0, enumerator 224 * @doorbell: Doorbell bit number within the ch_wn_idx window, only relevant 225 * in DOORBELL protocol. 226 * @pending: Flag indicating pending doorbell interrupt, only relevant in 227 * DOORBELL protocol. 235 u32 doorbell; member 259 /* =================== Doorbell transport protocol operations =============== */ 265 writel_relaxed(BIT(priv->doorbell), in mhuv2_doorbell_rx_startup() 275 writel_relaxed(BIT(priv->doorbell), in mhuv2_doorbell_rx_shutdown() [all …]
|
| H A D | arm_mhuv3.c | 27 /* Maximum number of Doorbell channel windows */ 282 * @doorbell: Doorbell bit number within the @ch_idx window. 283 * Only relevant to Doorbell transport. 290 u32 doorbell; member 368 /* =================== Doorbell transport protocol operations =============== */ 399 writel_relaxed(BIT(priv->doorbell), &mhu->mbx->dbcw[priv->ch_idx].msk_clr); in mhuv3_doorbell_rx_startup() 410 writel_relaxed(BIT(priv->doorbell), &mhu->mbx->dbcw[priv->ch_idx].msk_set); in mhuv3_doorbell_rx_shutdown() 418 writel_relaxed(BIT(priv->doorbell), &mhu->mbx->dbcw[priv->ch_idx].clr); in mhuv3_doorbell_rx_complete() 428 BIT(priv->doorbell)); in mhuv3_doorbell_last_tx_done() 433 /* Take care to clear the pending doorbell also when polling */ in mhuv3_doorbell_last_tx_done() [all …]
|
| /linux/drivers/gpu/drm/amd/amdkfd/ |
| H A D | kfd_doorbell.c | 32 * kernel queues using the first doorbell page reserved for the kernel. 36 * Each device exposes a doorbell aperture, a PCI MMIO aperture that 41 * We map the doorbell address space into user-mode when a process creates 49 /* # of doorbell bytes allocated for each process. */ 61 /* Doorbell calculations for device init. */ 68 * Todo: KFD kernel level operations need only one doorbell for in kfd_doorbell_init() 70 * kernel, reserve and consume a doorbell from existing KGD kernel in kfd_doorbell_init() 71 * doorbell page. in kfd_doorbell_init() 77 DRM_ERROR("Failed to allocate kernel doorbell bitmap\n"); in kfd_doorbell_init() 81 /* Alloc a doorbell page for KFD kernel usages */ in kfd_doorbell_init() [all …]
|
| /linux/drivers/fpga/ |
| H A D | intel-m10-bmc-sec-update.c | 261 static void log_error_regs(struct m10bmc_sec *sec, u32 doorbell) in log_error_regs() argument 266 dev_err(sec->dev, "Doorbell: 0x%08x\n", doorbell); in log_error_regs() 275 u32 doorbell; in m10bmc_sec_n3000_rsu_status() local 278 ret = m10bmc_sys_read(sec->m10bmc, csr_map->doorbell, &doorbell); in m10bmc_sec_n3000_rsu_status() 282 return FIELD_GET(DRBL_RSU_STATUS, doorbell); in m10bmc_sec_n3000_rsu_status() 326 ret = m10bmc_sys_read(sec->m10bmc, csr_map->doorbell, doorbell_reg); in m10bmc_sec_progress_status() 343 u32 doorbell; in rsu_check_idle() local 346 ret = m10bmc_sys_read(sec->m10bmc, csr_map->doorbell, &doorbell); in rsu_check_idle() 350 if (!rsu_progress_done(rsu_prog(doorbell))) { in rsu_check_idle() 351 log_error_regs(sec, doorbell); in rsu_check_idle() [all …]
|
| /linux/drivers/pci/endpoint/ |
| H A D | pci-ep-msi.c | 43 const struct pci_epc_aux_resource *doorbell = NULL; in pci_epf_alloc_doorbell_embedded() local 74 doorbell = &res[i]; in pci_epf_alloc_doorbell_embedded() 77 if (!doorbell) in pci_epf_alloc_doorbell_embedded() 79 addr = doorbell->phys_addr; in pci_epf_alloc_doorbell_embedded() 85 * doorbell resource here. Any required IOMMU mapping is handled in pci_epf_alloc_doorbell_embedded() 86 * internally, matching the MSI doorbell semantics. in pci_epf_alloc_doorbell_embedded() 88 if (doorbell->bar == NO_BAR) { in pci_epf_alloc_doorbell_embedded() 108 * Embedded doorbell backends (e.g. DesignWare eDMA interrupt emulation) in pci_epf_alloc_doorbell_embedded() 109 * typically provide a single IRQ and do not offer per-doorbell in pci_epf_alloc_doorbell_embedded() 122 .msg.data = doorbell->u.db_mmio.data, in pci_epf_alloc_doorbell_embedded() [all …]
|
| H A D | Kconfig | 32 bool "PCI Endpoint MSI Doorbell Support" 36 doorbell. The RC can trigger doorbell in EP by writing data to a
|
| /linux/include/linux/ |
| H A D | ntb.h | 360 /* Doorbell operations are mostly required */ in ntb_dev_ops_is_valid() 528 * ntb_db_event() - notify driver context of a doorbell event 532 * Notify the driver context of a doorbell event. If hardware supports 537 * doorbell bits need service, and ntb_db_vector_mask() to determine which of 974 * ntb_db_is_unsafe() - check if it is safe to use hardware doorbell 992 * ntb_db_valid_mask() - get a mask of doorbell bits supported by the ntb 995 * Hardware may support different number or arrangement of doorbell bits. 997 * Return: A mask of doorbell bits supported by the ntb. 1005 * ntb_db_vector_count() - get the number of doorbell interrupt vectors 1010 * Return: The number of doorbell interrupt vectors. [all …]
|
| H A D | rio_drv.h | 234 * rio_send_doorbell - Send a doorbell message to a device 236 * @data: Doorbell message data 238 * Send a doorbell message to a RIO device. The doorbell message 265 * rio_init_dbell_res - Initialize a RIO doorbell resource 267 * @start: start of doorbell range 268 * @end: end of doorbell range 271 * for use as a doorbell resource. It initializes a range of 272 * doorbell messages using the start and end arguments. 350 /* Doorbell management */
|
| /linux/Documentation/driver-api/ |
| H A D | ntb.rst | 7 fabric. Existing NTB hardware supports a common feature set: doorbell 14 peer. Doorbell registers provide a way for peers to send interrupt events. 138 The Ping Pong test client serves as a demonstration to exercise the doorbell 141 then proceeds to read and write the doorbell scratchpad registers of the NTB. 142 The peers interrupt each other using a bit mask of doorbell bits, which is 143 shifted by one in each round, to test the behavior of multiple doorbell bits 146 round before writing the peer doorbell register. 150 * unsafe - Some hardware has known issues with scratchpad and doorbell 154 * delay\_ms - Specify the delay between receiving a doorbell 155 interrupt event and setting the peer doorbell register for the next [all …]
|
| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_guc_db_mgr.c | 22 * The GFX doorbell solution provides a mechanism for submission of workload 109 xe_gt_dbg(dbm_to_gt(dbm), "using %u doorbell%s\n", in xe_guc_db_mgr_init() 162 * xe_guc_db_mgr_reserve_id_locked() - Reserve a single GuC Doorbell ID. 167 * Return: ID of the allocated GuC doorbell or a negative error code on failure. 175 * xe_guc_db_mgr_release_id_locked() - Release a single GuC Doorbell ID. 177 * @id: the GuC Doorbell ID to release 187 * xe_guc_db_mgr_reserve_range() - Reserve a range of GuC Doorbell IDs. 189 * @count: number of GuC doorbell IDs to reserve 190 * @spare: number of GuC doorbell IDs to keep available 196 * Return: starting ID of the allocated GuC doorbell ID range or [all …]
|
| /linux/Documentation/PCI/endpoint/ |
| H A D | pci-ntb-function.rst | 54 4) Doorbell (DB) Registers 113 CMD_CONFIGURE_DOORBELL (0x1): Command to configure doorbell. Before 117 the outbound ATU such that transactions to Doorbell BAR will be routed 154 Memory Window 1 and Doorbell registers are packed together in the 155 same BAR. The initial portion of the region will have doorbell 178 in order to raise doorbell. EPF NTB can use either MSI or MSI-X to 179 ring doorbell (MSI-X support will be added later). MSI uses same 192 will ensure there is no difference while raising the doorbell. 198 for raising doorbell interrupt. This will be populated by EPF NTB 213 Doorbell Registers: [all …]
|
| /linux/drivers/misc/vmw_vmci/ |
| H A D | vmci_doorbell.c | 30 * DoorbellEntry describes the a doorbell notification handle allocated by the 80 * with a given doorbell handle. For guest endpoints, the 116 * Find doorbell entry by bitmap index. 225 * Creates a link between the given doorbell handle and the given 244 * Unlinks the given doorbell handle from an index in the bitmap in 273 * Dispatches a doorbell notification to the host context. 281 pr_devel("Notifying an invalid doorbell (handle=0x%x:0x%x)\n", in vmci_dbell_host_context_notify() 289 pr_devel("Notifying an unknown doorbell (handle=0x%x:0x%x)\n", in vmci_dbell_host_context_notify() 376 * vmci_doorbell_create() - Creates a doorbell 380 * @notify_cb: The callback to be ivoked when the doorbell fires. [all …]
|
| /linux/drivers/virt/ |
| H A D | fsl_hypervisor.c | 19 * shutdown doorbell from a manager partition. 313 * Ring a doorbell 323 param.ret = ev_doorbell_send(param.doorbell); in ioctl_doorbell() 459 /* The size of the doorbell event queue. This must be a power of two. */ 482 uint32_t doorbell; /* The doorbell handle */ member 487 * Add a doorbell to all of the doorbell queues 489 static void fsl_hv_queue_doorbell(uint32_t doorbell) in fsl_hv_queue_doorbell() argument 499 dbq->q[dbq->tail] = doorbell; in fsl_hv_queue_doorbell() 516 * We use the same interrupt handler for all doorbells. Whenever a doorbell 518 * doorbell (passed to us as *data) into all of the queues. [all …]
|
| /linux/drivers/scsi/esas2r/ |
| H A D | esas2r_int.c | 48 static void esas2r_doorbell_interrupt(struct esas2r_adapter *a, u32 doorbell); 59 u32 doorbell; in esas2r_polled_interrupt() local 76 doorbell = esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_polled_interrupt() 77 if (doorbell != 0) in esas2r_polled_interrupt() 78 esas2r_doorbell_interrupt(a, doorbell); in esas2r_polled_interrupt() 107 u32 doorbell; in esas2r_adapter_interrupt() local 118 doorbell = esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_adapter_interrupt() 119 if (doorbell != 0) in esas2r_adapter_interrupt() 120 esas2r_doorbell_interrupt(a, doorbell); in esas2r_adapter_interrupt() 135 u32 doorbell; in esas2r_msi_interrupt() local [all …]
|
| H A D | esas2r_init.c | 935 u32 doorbell; in esas2r_check_adapter() local 961 doorbell = esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_check_adapter() 962 if (doorbell == 0xFFFFFFFF) { in esas2r_check_adapter() 970 } else if (doorbell & DRBL_FORCE_INT) { in esas2r_check_adapter() 971 u32 ver = (doorbell & DRBL_FW_VER_MSK); in esas2r_check_adapter() 978 doorbell); in esas2r_check_adapter() 1013 doorbell = esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_check_adapter() 1014 if (doorbell & DRBL_MSG_IFC_DOWN) { in esas2r_check_adapter() 1016 doorbell); in esas2r_check_adapter() 1102 doorbell = esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_check_adapter() [all …]
|
| /linux/arch/powerpc/include/asm/ |
| H A D | dbell.h | 25 PPC_DBELL = 0, /* doorbell */ 26 PPC_DBELL_CRIT = 1, /* critical doorbell */ 27 PPC_G_DBELL = 2, /* guest doorbell */ 28 PPC_G_DBELL_CRIT = 3, /* guest critical doorbell */ 29 PPC_G_DBELL_MC = 4, /* guest mcheck doorbell */ 30 PPC_DBELL_SERVER = 5, /* doorbell on server */ 135 * Attempt to cause a core doorbell if destination is on the same core.
|
| /linux/drivers/pci/endpoint/functions/ |
| H A D | pci-epf-ntb.c | 183 * | BAR0 | | | Doorbell 1 +-----------> MSI|X ADDRESS 1 | 185 * | BAR1 | | | Doorbell 2 +---------+ | | 187 * | BAR2 | | Doorbell 3 +-------+ | +-----------------+ 189 * | BAR3 | | | Doorbell 4 +-----+ | +-----------------+ 230 * Please note Memory window1 (MW1) and Doorbell registers together will be 326 * @db_count: Number of doorbell interrupts to map 329 *| BAR0 | | | Doorbell 1 +---+-------> MSI ADDRESS | 331 *| BAR1 | | | Doorbell 2 +---+ | | 333 *| BAR2 | | Doorbell 3 +---+ | | 335 *| BAR3 | | | Doorbell 4 +---+ | | [all …]
|
| /linux/drivers/net/wwan/iosm/ |
| H A D | iosm_ipc_pm.h | 9 /* Trigger the doorbell interrupt on cp to change the PM sleep/active status */ 13 /* Trigger the doorbell interrupt on CP to do hpda update */ 65 * and DOORBELL-IRQ-HPDA(data) values. 68 * @IPC_MEM_DEV_PM_WAKEUP: DOORBELL-IRQ-DEVICE_WAKE(data). 69 * @IPC_MEM_DEV_PM_HOST_SLEEP: DOORBELL-IRQ-HOST_SLEEP(data). 71 * @IPC_MEM_DEV_PM_FORCE_SLEEP: DOORBELL-IRQ-FORCE_SLEEP. 72 * @IPC_MEM_DEV_PM_FORCE_ACTIVE: DOORBELL-IRQ-FORCE_ACTIVE. 190 * update then only doorbell is triggered otherwise pending
|
| H A D | iosm_ipc_pcie.h | 23 /* Defines for DOORBELL registers information */ 48 * @ipc_regs: Remapped CP doorbell address of the irq register 49 * set, to fire the doorbell irq. 55 * @ipc_regs_bar_nr: BAR number to be used for IPC doorbell 59 * @doorbell_write: doorbell write register 60 * @doorbell_capture: doorbell capture resgister
|
| /linux/include/linux/mlx4/ |
| H A D | cq.h | 40 #include <linux/mlx4/doorbell.h> 151 __be32 doorbell[2]; in mlx4_cq_arm() local 161 * Make sure that the doorbell record in host memory is in mlx4_cq_arm() 162 * written before ringing the doorbell via PCI MMIO. in mlx4_cq_arm() 166 doorbell[0] = cpu_to_be32(sn << 28 | cmd | cq->cqn); in mlx4_cq_arm() 167 doorbell[1] = cpu_to_be32(ci); in mlx4_cq_arm() 169 mlx4_write64(doorbell, uar_page + MLX4_CQ_DOORBELL, doorbell_lock); in mlx4_cq_arm()
|
| /linux/include/uapi/rdma/ |
| H A D | qedr-abi.h | 141 /* address of SQ doorbell recovery user entry */ 144 /* address of RQ doorbell recovery user entry */ 166 /* doorbell recovery entry allocated and populated by userspace doorbelling 167 * entities and mapped to kernel. Kernel uses this to register doorbell 168 * information with doorbell drop recovery mechanism. 171 __aligned_u64 db_data; /* doorbell data */
|
| /linux/Documentation/devicetree/bindings/powerpc/fsl/ |
| H A D | srio-rmu.txt | 23 and doorbell units. 33 (msg-unit, doorbell, port-write). 54 and doorbell units. 68 Doorbell Unit: 84 and doorbell units. 114 and doorbell units. 151 doorbell-unit@400 {
|
| /linux/include/linux/mlx5/ |
| H A D | cq.h | 155 __be32 doorbell[2]; in mlx5_cq_arm() local 164 /* Make sure that the doorbell record in host memory is in mlx5_cq_arm() 165 * written before ringing the doorbell via PCI MMIO. in mlx5_cq_arm() 169 doorbell[0] = cpu_to_be32(sn << 28 | cmd | ci); in mlx5_cq_arm() 170 doorbell[1] = cpu_to_be32(cq->cqn); in mlx5_cq_arm() 172 mlx5_write64(doorbell, uar_page + MLX5_CQ_DOORBELL); in mlx5_cq_arm()
|
| /linux/drivers/net/ethernet/chelsio/cxgb4/ |
| H A D | t4_values.h | 102 /* T5 and later support a new BAR2-based doorbell mechanism for Egress Queues. 103 * The User Doorbells are each 128 bytes in length with a Simple Doorbell at 108 * As noted above, we have many instances of the Simple Doorbell and Going To 110 * non-64-byte aligned offset for the Simple Doorbell in order to attempt to 111 * avoid buffering of the writes to the Simple Doorbell and we want to use a
|