| /kernel/linux/linux-6.6/drivers/net/ipa/ |
| D | gsi.c | 18 #include "gsi.h" 30 * The generic software interface (GSI) is an integral component of the IPA, 32 * and the IPA core. The modem uses the GSI layer as well. 42 * | GSI | 53 * Each EE uses a set of unidirectional GSI "channels," which allow transfer 65 * Each channel has a GSI "event ring" associated with it. An event ring 69 * The GSI then writes its doorbell for the event ring, causing the target 85 * Note that all GSI registers are little-endian, which is the assumed 171 return channel - &channel->gsi->channel[0]; in gsi_channel_id() 174 /* An initialized channel has a non-null GSI pointer */ [all …]
|
| D | gsi.h | 29 struct gsi; 104 struct gsi *gsi; member 140 struct gsi { struct 151 u32 type_enabled_bitmap; /* GSI IRQ types enabled */ 154 struct completion completion; /* Signals GSI command completion */ 162 * gsi_setup() - Set up the GSI subsystem 163 * @gsi: Address of GSI structure embedded in an IPA structure argument 167 * Performs initialization that must wait until the GSI hardware is 170 int gsi_setup(struct gsi *gsi); 173 * gsi_teardown() - Tear down GSI subsystem [all …]
|
| D | gsi_reg.c | 8 #include "gsi.h" 12 /* Is this register ID valid for the current GSI version? */ 13 static bool gsi_reg_id_valid(struct gsi *gsi, enum gsi_reg_id reg_id) in gsi_reg_id_valid() argument 18 return gsi->version >= IPA_VERSION_3_5; in gsi_reg_id_valid() 21 return gsi->version >= IPA_VERSION_3_5_1; in gsi_reg_id_valid() 24 return gsi->version >= IPA_VERSION_5_0; in gsi_reg_id_valid() 82 const struct reg *gsi_reg(struct gsi *gsi, enum gsi_reg_id reg_id) in gsi_reg() argument 84 if (WARN(!gsi_reg_id_valid(gsi, reg_id), "invalid reg %u\n", reg_id)) in gsi_reg() 87 return reg(gsi->regs, reg_id); in gsi_reg() 90 static const struct regs *gsi_regs(struct gsi *gsi) in gsi_regs() argument [all …]
|
| D | ipa_gsi.h | 11 struct gsi; 16 * ipa_gsi_trans_complete() - GSI transaction completion callback 19 * This called from the GSI layer to notify the IPA layer that a 25 * ipa_gsi_trans_release() - GSI transaction release callback 28 * This called from the GSI layer to notify the IPA layer that a 35 * ipa_gsi_channel_tx_queued() - GSI queued to hardware notification 36 * @gsi: GSI pointer 41 * This called from the GSI layer to notify the IPA layer that some 44 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, 48 * ipa_gsi_channel_tx_completed() - GSI transaction completion callback [all …]
|
| D | gsi_trans.h | 21 struct gsi; 29 * struct gsi_trans - a GSI transaction 32 * @gsi: GSI pointer 52 struct gsi *gsi; member 77 * @pool: GSI transaction pool pointer 137 * @gsi: GSI pointer 143 bool gsi_channel_trans_idle(struct gsi *gsi, u32 channel_id); 146 * gsi_channel_trans_alloc() - Allocate a GSI transaction on a channel 147 * @gsi: GSI pointer 152 * Return: A GSI transaction structure, or a null pointer if all [all …]
|
| D | ipa_version.h | 11 * @IPA_VERSION_3_0: IPA version 3.0/GSI version 1.0 12 * @IPA_VERSION_3_1: IPA version 3.1/GSI version 1.0 13 * @IPA_VERSION_3_5: IPA version 3.5/GSI version 1.2 14 * @IPA_VERSION_3_5_1: IPA version 3.5.1/GSI version 1.3 15 * @IPA_VERSION_4_0: IPA version 4.0/GSI version 2.0 16 * @IPA_VERSION_4_1: IPA version 4.1/GSI version 2.0 17 * @IPA_VERSION_4_2: IPA version 4.2/GSI version 2.2 18 * @IPA_VERSION_4_5: IPA version 4.5/GSI version 2.5 19 * @IPA_VERSION_4_7: IPA version 4.7/GSI version 2.7 20 * @IPA_VERSION_4_9: IPA version 4.9/GSI version 2.9 [all …]
|
| D | gsi_reg.h | 9 /* === Only "gsi.c" and "gsi_reg.c" should include this file === */ 15 struct gsi; 18 * DOC: GSI Registers 20 * GSI registers are located within the "gsi" address space defined by Device 22 * symbols defined below. The GSI address space is mapped to virtual memory 23 * space in gsi_init(). All GSI registers are 32 bits wide. 26 * For example, each GSI channel has its own set of registers defining its 45 /* enum gsi_reg_id - GSI register IDs */ 262 * enum gsi_irq_type_id: GSI IRQ types 282 /** enum gsi_global_irq_id: Global GSI interrupt events */ [all …]
|
| D | ipa_gsi.c | 17 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_complete() 24 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_release() 29 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_queued() argument 32 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_queued() 40 void ipa_gsi_channel_tx_completed(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_completed() argument 43 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_completed()
|
| D | gsi_trans.c | 14 #include "gsi.h" 22 * DOC: GSI Transactions 24 * A GSI transaction abstracts the behavior of a GSI channel by representing 27 * command.) Most details of interaction with the GSI hardware are managed 28 * by the GSI transaction core, allowing users to simply describe operations 33 * To perform an operation (or set of them), a user of the GSI transaction 52 * transaction to the GSI transaction core. The GSI transaction code 57 * GSI hardware has completed it. Because transfers described by TREs are 63 * GSI code into the IPA layer, allowing it to perform any final cleanup 221 struct gsi_channel *channel = &trans->gsi->channel[trans->channel_id]; in gsi_trans_map() [all …]
|
| D | ipa_data.h | 16 * DOC: IPA/GSI Configuration Data 19 * IPA and GSI resources to use for a given platform. This data is supplied 30 * GSI channels. A channel is a GSI construct, and represents a single 34 * the only GSI channels of concern to this driver belong to the AP. 40 * added. IPA endpoint and GSI channel configuration data are defined 44 * are common to IPA and GSI (EE ID, channel ID, endpoint ID, and direction); 45 * properties associated with the GSI channel; and properties associated with 71 * struct gsi_channel_data - GSI channel configuration data 76 * A GSI channel is a unidirectional means of transferring data to or 77 * from (and through) the IPA. A GSI channel has a ring buffer made [all …]
|
| /kernel/linux/linux-5.10/drivers/infiniband/hw/mlx5/ |
| D | gsi.c | 46 /* Call with gsi->lock locked */ 49 struct mlx5_ib_gsi_qp *gsi = &mqp->gsi; in generate_completions() local 54 for (index = gsi->outstanding_ci; index != gsi->outstanding_pi; in generate_completions() 56 wr = &gsi->outstanding_wrs[index % gsi->cap.max_send_wr]; in generate_completions() 65 gsi->outstanding_ci = index; in generate_completions() 70 struct mlx5_ib_gsi_qp *gsi = cq->cq_context; in handle_single_completion() local 73 struct mlx5_ib_qp *mqp = container_of(gsi, struct mlx5_ib_qp, gsi); in handle_single_completion() 77 spin_lock_irqsave(&gsi->lock, flags); in handle_single_completion() 85 spin_unlock_irqrestore(&gsi->lock, flags); in handle_single_completion() 92 struct mlx5_ib_gsi_qp *gsi; in mlx5_ib_create_gsi() local [all …]
|
| /kernel/linux/linux-6.6/drivers/infiniband/hw/mlx5/ |
| D | gsi.c | 46 /* Call with gsi->lock locked */ 49 struct mlx5_ib_gsi_qp *gsi = &mqp->gsi; in generate_completions() local 54 for (index = gsi->outstanding_ci; index != gsi->outstanding_pi; in generate_completions() 56 wr = &gsi->outstanding_wrs[index % gsi->cap.max_send_wr]; in generate_completions() 65 gsi->outstanding_ci = index; in generate_completions() 70 struct mlx5_ib_gsi_qp *gsi = cq->cq_context; in handle_single_completion() local 73 struct mlx5_ib_qp *mqp = container_of(gsi, struct mlx5_ib_qp, gsi); in handle_single_completion() 77 spin_lock_irqsave(&gsi->lock, flags); in handle_single_completion() 85 spin_unlock_irqrestore(&gsi->lock, flags); in handle_single_completion() 92 struct mlx5_ib_gsi_qp *gsi; in mlx5_ib_create_gsi() local [all …]
|
| /kernel/linux/linux-5.10/drivers/net/ipa/ |
| D | gsi.c | 18 #include "gsi.h" 28 * The generic software interface (GSI) is an integral component of the IPA, 30 * and the IPA core. The modem uses the GSI layer as well. 40 * | GSI | 51 * Each EE uses a set of unidirectional GSI "channels," which allow transfer 63 * Each channel has a GSI "event ring" associated with it. An event ring 67 * The GSI then writes its doorbell for the event ring, causing the target 83 * Note that all GSI registers are little-endian, which is the assumed 229 return channel - &channel->gsi->channel[0]; in gsi_channel_id() 232 static void gsi_irq_ieob_enable(struct gsi *gsi, u32 evt_ring_id) in gsi_irq_ieob_enable() argument [all …]
|
| D | gsi.h | 27 struct gsi; 107 struct gsi *gsi; member 148 struct gsi { struct 165 * gsi_setup() - Set up the GSI subsystem 166 * @gsi: Address of GSI structure embedded in an IPA structure argument 171 * Performs initialization that must wait until the GSI hardware is 174 int gsi_setup(struct gsi *gsi, bool legacy); 177 * gsi_teardown() - Tear down GSI subsystem 178 * @gsi: GSI address previously passed to a successful gsi_setup() call 180 void gsi_teardown(struct gsi *gsi); [all …]
|
| D | ipa_gsi.h | 11 struct gsi; 16 * ipa_gsi_trans_complete() - GSI transaction completion callback 19 * This called from the GSI layer to notify the IPA layer that a 25 * ipa_gsi_trans_release() - GSI transaction release callback 28 * This called from the GSI layer to notify the IPA layer that a 35 * ipa_gsi_channel_tx_queued() - GSI queued to hardware notification 36 * @gsi: GSI pointer 41 * This called from the GSI layer to notify the IPA layer that some 44 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, 48 * ipa_gsi_channel_tx_completed() - GSI transaction completion callback [all …]
|
| D | gsi_trans.h | 20 struct gsi; 25 * struct gsi_trans - a GSI transaction 29 * @gsi: GSI pointer 50 struct gsi *gsi; member 73 * @gsi: GSI pointer 131 * gsi_channel_trans_alloc() - Allocate a GSI transaction on a channel 132 * @gsi: GSI pointer 137 * Return: A GSI transaction structure, or a null pointer if all 140 struct gsi_trans *gsi_channel_trans_alloc(struct gsi *gsi, u32 channel_id, 145 * gsi_trans_free() - Free a previously-allocated GSI transaction [all …]
|
| D | ipa_gsi.c | 17 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_complete() 24 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_release() 29 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_queued() argument 32 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_queued() 40 void ipa_gsi_channel_tx_completed(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_completed() argument 43 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_completed()
|
| D | ipa_data.h | 16 * DOC: IPA/GSI Configuration Data 19 * IPA and GSI resources to use for a given platform. This data is supplied 29 * GSI channels. A channel is a GSI construct, and represents a single 33 * the only GSI channels of concern to this driver belong to the AP 39 * added. IPA endpoint and GSI channel configuration data are defined 43 * are common to IPA and GSI (EE ID, channel ID, endpoint ID, and direction); 44 * properties associated with the GSI channel; and properties associated with 53 * struct gsi_channel_data - GSI channel configuration data 58 * A GSI channel is a unidirectional means of transferring data to or 59 * from (and through) the IPA. A GSI channel has a ring buffer made [all …]
|
| /kernel/linux/linux-6.6/drivers/acpi/ |
| D | irq.c | 3 * ACPI GSI IRQ layer 15 static struct fwnode_handle *(*acpi_get_gsi_domain_id)(u32 gsi); 16 static u32 (*acpi_gsi_to_irq_fallback)(u32 gsi); 19 * acpi_gsi_to_irq() - Retrieve the linux irq number for a given GSI 20 * @gsi: GSI IRQ number to map 28 int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) in acpi_gsi_to_irq() argument 32 d = irq_find_matching_fwnode(acpi_get_gsi_domain_id(gsi), in acpi_gsi_to_irq() 34 *irq = irq_find_mapping(d, gsi); in acpi_gsi_to_irq() 40 *irq = acpi_gsi_to_irq_fallback(gsi); in acpi_gsi_to_irq() 47 * acpi_register_gsi() - Map a GSI to a linux IRQ number [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/net/ |
| D | qcom,ipa.yaml | 19 a Generic Software Interface (GSI) to each execution environment. 20 The GSI is an integral part of the IPA, but it is logically isolated 37 | GSI | 60 - description: GSI registers 66 - const: gsi 81 - description: GSI interrupt (hardware IRQ) 88 - const: gsi 129 qcom,gsi-loader: 135 Indicates how GSI firmware should be loaded. If the AP loads 136 and validates GSI firmware, this property has value "self". [all …]
|
| /kernel/linux/linux-5.10/drivers/acpi/ |
| D | irq.c | 3 * ACPI GSI IRQ layer 18 * acpi_gsi_to_irq() - Retrieve the linux irq number for a given GSI 19 * @gsi: GSI IRQ number to map 27 int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) in acpi_gsi_to_irq() argument 32 *irq = irq_find_mapping(d, gsi); in acpi_gsi_to_irq() 42 * acpi_register_gsi() - Map a GSI to a linux IRQ number 44 * @gsi: GSI IRQ number 45 * @trigger: trigger type of the GSI number to be mapped 46 * @polarity: polarity of the GSI to be mapped 51 int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, in acpi_register_gsi() argument [all …]
|
| /kernel/linux/linux-6.6/arch/x86/pci/ |
| D | xen.c | 4 * initial domain support. We also handle the DSDT _PRT callbacks for GSI's 38 u8 gsi; in xen_pcifront_enable_irq() local 40 rc = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &gsi); in xen_pcifront_enable_irq() 47 pirq = gsi; in xen_pcifront_enable_irq() 49 if (gsi < nr_legacy_irqs()) in xen_pcifront_enable_irq() 52 rc = xen_bind_pirq_gsi_to_irq(gsi, pirq, share, "pcifront"); in xen_pcifront_enable_irq() 54 dev_warn(&dev->dev, "Xen PCI: failed to bind GSI%d (PIRQ%d) to IRQ: %d\n", in xen_pcifront_enable_irq() 55 gsi, pirq, rc); in xen_pcifront_enable_irq() 60 dev_info(&dev->dev, "Xen PCI mapped GSI%d to IRQ%d\n", gsi, dev->irq); in xen_pcifront_enable_irq() 65 static int xen_register_pirq(u32 gsi, int triggering, bool set_pirq) in xen_register_pirq() argument [all …]
|
| /kernel/linux/linux-6.6/arch/ia64/kernel/ |
| D | iosapic.c | 58 * Each interrupt line has a unique Global System Interrupt (GSI) number 59 * which can be calculated as the sum of the controller's base GSI number 74 * PCI pin -> global system interrupt (GSI) -> IA-64 vector <-> IRQ 119 unsigned int gsi_base; /* GSI base */ 161 * Find an IOSAPIC associated with a GSI 164 find_iosapic (unsigned int gsi) in find_iosapic() argument 169 if ((unsigned) (gsi - iosapic_lists[i].gsi_base) < in find_iosapic() 177 static inline int __gsi_to_irq(unsigned int gsi) in __gsi_to_irq() argument 186 if (rte->iosapic->gsi_base + rte->rte_index == gsi) in __gsi_to_irq() 193 gsi_to_irq (unsigned int gsi) in gsi_to_irq() argument [all …]
|
| /kernel/linux/linux-5.10/arch/ia64/kernel/ |
| D | iosapic.c | 58 * Each interrupt line has a unique Global System Interrupt (GSI) number 59 * which can be calculated as the sum of the controller's base GSI number 74 * PCI pin -> global system interrupt (GSI) -> IA-64 vector <-> IRQ 119 unsigned int gsi_base; /* GSI base */ 161 * Find an IOSAPIC associated with a GSI 164 find_iosapic (unsigned int gsi) in find_iosapic() argument 169 if ((unsigned) (gsi - iosapic_lists[i].gsi_base) < in find_iosapic() 177 static inline int __gsi_to_irq(unsigned int gsi) in __gsi_to_irq() argument 186 if (rte->iosapic->gsi_base + rte->rte_index == gsi) in __gsi_to_irq() 193 gsi_to_irq (unsigned int gsi) in gsi_to_irq() argument [all …]
|
| /kernel/linux/linux-5.10/arch/x86/pci/ |
| D | xen.c | 4 * initial domain support. We also handle the DSDT _PRT callbacks for GSI's 37 u8 gsi; in xen_pcifront_enable_irq() local 39 rc = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &gsi); in xen_pcifront_enable_irq() 46 pirq = gsi; in xen_pcifront_enable_irq() 48 if (gsi < nr_legacy_irqs()) in xen_pcifront_enable_irq() 51 rc = xen_bind_pirq_gsi_to_irq(gsi, pirq, share, "pcifront"); in xen_pcifront_enable_irq() 53 dev_warn(&dev->dev, "Xen PCI: failed to bind GSI%d (PIRQ%d) to IRQ: %d\n", in xen_pcifront_enable_irq() 54 gsi, pirq, rc); in xen_pcifront_enable_irq() 59 dev_info(&dev->dev, "Xen PCI mapped GSI%d to IRQ%d\n", gsi, dev->irq); in xen_pcifront_enable_irq() 64 static int xen_register_pirq(u32 gsi, int triggering, bool set_pirq) in xen_register_pirq() argument [all …]
|