Home
last modified time | relevance | path

Searched full:ipa (Results 1 – 25 of 149) sorted by relevance

123456

/Linux-v5.15/drivers/net/ipa/
Dipa_main.c22 #include "ipa.h"
40 * This driver supports the Qualcomm IP Accelerator (IPA), which is a
41 * networking component found in many Qualcomm SoCs. The IPA is connected
45 * The IPA is the conduit between the AP and the modem that carries network
49 * The IPA provides protocol checksum calculation, offloading this work
50 * from the AP. The IPA offers additional functionality, including routing,
56 * There are two distinct layers that implement the IPA hardware, and this
58 * interface (GSI) is an integral component of the IPA, providing a
59 * well-defined communication layer between the AP subsystem and the IPA
61 * between the AP and the IPA.
[all …]
Dipa_interrupt.c7 /* DOC: IPA Interrupts
9 * The IPA has an interrupt line distinct from the interrupt used by the GSI
11 * transfer completions), IPA interrupts are related to other events related
12 * to the IPA. Some of the IPA interrupts come from a microcontroller
13 * embedded in the IPA. Each IPA interrupt type can be both masked and
16 * Two of the IPA interrupts are initiated by the microcontroller. A third
17 * can be generated to signal the need for a wakeup/resume when an IPA
18 * endpoint has been suspended. There are other IPA events, but at this
26 #include "ipa.h"
32 * struct ipa_interrupt - IPA interrupt information
[all …]
Dipa_mem.c15 #include "ipa.h"
29 const struct ipa_mem *ipa_mem_find(struct ipa *ipa, enum ipa_mem_id mem_id) in ipa_mem_find() argument
33 for (i = 0; i < ipa->mem_count; i++) { in ipa_mem_find()
34 const struct ipa_mem *mem = &ipa->mem[i]; in ipa_mem_find()
47 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_mem_zero_region_add() local
48 const struct ipa_mem *mem = ipa_mem_find(ipa, mem_id); in ipa_mem_zero_region_add()
49 dma_addr_t addr = ipa->zero_addr; in ipa_mem_zero_region_add()
58 * ipa_mem_setup() - Set up IPA AP and modem shared memory areas
59 * @ipa: IPA pointer
61 * Set up the shared memory regions in IPA local memory. This involves
[all …]
Dipa_modem.c15 #include "ipa.h"
38 * struct ipa_priv - IPA network device private data
39 * @ipa: IPA pointer
43 struct ipa *ipa; member
51 struct ipa *ipa = priv->ipa; in ipa_open() local
55 dev = &ipa->pdev->dev; in ipa_open()
60 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
64 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]); in ipa_open()
76 ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
87 struct ipa *ipa = priv->ipa; in ipa_stop() local
[all …]
Dipa_table.h11 struct ipa;
21 * @ipa: IPA pointer
25 bool ipa_table_valid(struct ipa *ipa);
29 * @ipa: IPA pointer
34 bool ipa_filter_map_valid(struct ipa *ipa, u32 filter_mask);
38 * @ipa: IPA pointer
40 static inline bool ipa_table_hash_support(struct ipa *ipa) in ipa_table_hash_support() argument
42 return ipa->version != IPA_VERSION_4_2; in ipa_table_hash_support()
47 * @ipa: IPA pointer
50 void ipa_table_reset(struct ipa *ipa, bool modem);
[all …]
Dipa_power.c14 #include "ipa.h"
21 * DOC: IPA Power Management
23 * The IPA hardware is enabled when the IPA core clock and all the
36 * struct ipa_interconnect - IPA interconnect information
48 * enum ipa_power_flag - IPA power flags
64 * struct ipa_power - IPA power management information
65 * @dev: IPA device pointer
66 * @core: IPA core clock
110 /* Initialize interconnects required for IPA operation */
155 static int ipa_interconnect_enable(struct ipa *ipa) in ipa_interconnect_enable() argument
[all …]
Dipa_power.h11 struct ipa;
14 /* IPA device power management function block */
18 * ipa_core_clock_rate() - Return the current IPA core clock rate
19 * @ipa: IPA structure
23 u32 ipa_core_clock_rate(struct ipa *ipa);
27 * @ipa: IPA pointer
29 void ipa_power_modem_queue_stop(struct ipa *ipa);
33 * @ipa: IPA pointer
35 void ipa_power_modem_queue_wake(struct ipa *ipa);
39 * @ipa: IPA pointer
[all …]
Dipa_endpoint.h19 struct ipa;
44 * struct ipa_endpoint - IPA endpoint information
45 * @ipa: IPA pointer
48 * @endpoint_id: IPA endpoint number
61 struct ipa *ipa; member
82 void ipa_endpoint_modem_hol_block_clear_all(struct ipa *ipa);
84 void ipa_endpoint_modem_pause_all(struct ipa *ipa, bool enable);
86 int ipa_endpoint_modem_exception_reset_all(struct ipa *ipa);
96 void ipa_endpoint_suspend(struct ipa *ipa);
97 void ipa_endpoint_resume(struct ipa *ipa);
[all …]
Dipa_cmd.c15 #include "ipa.h"
22 * DOC: IPA Immediate Commands
24 * The AP command TX endpoint is used to issue immediate commands to the IPA.
25 * An immediate command is generally used to request the IPA do something
74 /* For IPA v4.0+, the pipeline clear options are encoded in the opcode */
79 __le16 flags; /* Unused/reserved prior to IPA v4.0 */
83 __le32 clear_options; /* Unused/reserved for IPA v4.0+ */
87 /* The next field is present for IPA v4.0+ */
89 /* The next field is not present for IPA v4.0+ */
92 /* The next field and its values are not present for IPA v4.0+ */
[all …]
Dipa_table.c17 #include "ipa.h"
28 * DOC: IPA Filter and Route Tables
30 * The IPA has tables defined in its local (IPA-resident) memory that define
38 * by all IPA hardware (IPA v4.2 doesn't support hashed tables).
41 * an object (such as a route or filter table) in IPA-resident memory must
59 * for endpoint 2, and so on. Space is set aside in IPA local memory to
66 * IPA filtering functionality.
68 * IPA Filter Table
87 * though the AP currently does not use the IPA routing functionality.
89 * IPA Route Table
[all …]
Dipa_uc.c12 #include "ipa.h"
16 * DOC: The IPA embedded microcontroller
18 * The IPA incorporates a microcontroller that is able to do some additional
28 * A 128 byte block of structured memory within the IPA SRAM is used together
30 * AP and the IPA microcontroller. Each side writes data to the shared area
63 * A shared memory area at the base of IPA resident memory is used for
117 static struct ipa_uc_mem_area *ipa_uc_shared(struct ipa *ipa) in ipa_uc_shared() argument
119 const struct ipa_mem *mem = ipa_mem_find(ipa, IPA_MEM_UC_SHARED); in ipa_uc_shared()
120 u32 offset = ipa->mem_offset + mem->offset; in ipa_uc_shared()
122 return ipa->mem_virt + offset; in ipa_uc_shared()
[all …]
Dipa_endpoint.c16 #include "ipa.h"
78 static bool ipa_endpoint_data_valid_one(struct ipa *ipa, u32 count, in ipa_endpoint_data_valid_one() argument
83 struct device *dev = &ipa->pdev->dev; in ipa_endpoint_data_valid_one()
167 static bool ipa_endpoint_data_valid(struct ipa *ipa, u32 count, in ipa_endpoint_data_valid() argument
171 struct device *dev = &ipa->pdev->dev; in ipa_endpoint_data_valid()
183 * IPA hardware as a number of KB. We don't use "hard byte in ipa_endpoint_data_valid()
193 limit = aggr_byte_limit_max(ipa->version) * SZ_1K; in ipa_endpoint_data_valid()
220 if (!ipa_endpoint_data_valid_one(ipa, count, data, dp)) in ipa_endpoint_data_valid()
230 struct gsi *gsi = &endpoint->ipa->gsi; in ipa_endpoint_trans_alloc()
240 * Note that suspend is not supported starting with IPA v4.0.
[all …]
Dipa_interrupt.h12 struct ipa;
16 * typedef ipa_irq_handler_t - IPA interrupt handler function type
17 * @ipa: IPA pointer
21 * IPA interrupt type
23 typedef void (*ipa_irq_handler_t)(struct ipa *ipa, enum ipa_irq_id irq_id);
26 * ipa_interrupt_add() - Register a handler for an IPA interrupt type
27 * @interrupt: IPA interrupt structure
28 * @irq_id: IPA interrupt type
31 * Add a handler for an IPA interrupt and enable it. IPA interrupt
39 * ipa_interrupt_remove() - Remove the handler for an IPA interrupt type
[all …]
Dipa_smp2p.c17 #include "ipa.h"
21 * DOC: IPA SMP2P communication with the modem
24 * the modem. The IPA driver uses this for two purposes: to enable the modem
26 * state of IPA power in the event of a crash.
30 * latter case, the modem uses an SMP2P interrupt to tell the AP IPA driver
33 * The modem is also able to inquire about the current state of IPA
38 * at that time records whether the AP has IPA power enabled.
45 * struct ipa_smp2p - IPA SMP2P information
46 * @ipa: IPA pointer
52 * @clock_query_irq: IPA interrupt triggered by modem for power query
[all …]
Dipa_mem.h9 struct ipa;
13 * DOC: IPA Local Memory
15 * The IPA has a block of shared memory, divided into regions used for
19 * the "ipa-shared" memory range) and size found in the IPA_SHARED_MEM_SIZE
25 * of canaries for all IPA hardware versions. Still, the number used is
44 /* IPA-resident memory region ids */
62 IPA_MEM_PDN_CONFIG, /* 0/2 canaries (IPA v4.0+) */
63 IPA_MEM_STATS_QUOTA_MODEM, /* 2/4 canaries (IPA v4.0+) */
64 IPA_MEM_STATS_QUOTA_AP, /* 0 canaries, optional (IPA v4.0+) */
65 IPA_MEM_STATS_TETHERING, /* 0 canaries (IPA v4.0+) */
[all …]
Dipa_qmi.c13 #include "ipa.h"
28 * complete, the AP and modem may begin IPA operation. This occurs
29 * only when the AP IPA driver, modem IPA driver, and IPA microcontroller
36 * contains a success result, the AP knows the modem IPA driver is ready.
38 * The modem is responsible for loading firmware on the IPA microcontroller.
53 * - Whenever the AP learns the modem has booted and its IPA QMI service
56 * - On the initial boot, the modem sets up the IPA microcontroller, and
86 struct ipa *ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_server_init_complete() local
99 dev_err(&ipa->pdev->dev, in ipa_server_init_complete()
118 * We know everything (else) is ready when we know the IPA driver on
[all …]
Dipa_cmd.h15 struct ipa;
21 * enum ipa_cmd_opcode: IPA immediate commands
27 * @IPA_CMD_HDR_INIT_LOCAL: Initialize IPA-local header memory
28 * @IPA_CMD_REGISTER_WRITE: Register write performed by IPA
30 * @IPA_CMD_DMA_SHARED_MEM: DMA command performed by IPA
50 * struct ipa_cmd_info - information needed for an IPA immediate command
62 * @ipa: - IPA pointer
63 * @mem: - IPA memory region descriptor
68 bool ipa_cmd_table_valid(struct ipa *ipa, const struct ipa_mem *mem,
73 * @ipa: - IPA pointer
[all …]
Dipa_smp2p.h11 struct ipa;
14 * ipa_smp2p_init() - Initialize the IPA SMP2P subsystem
15 * @ipa: IPA pointer
21 int ipa_smp2p_init(struct ipa *ipa, bool modem_init);
25 * @ipa: IPA pointer
27 void ipa_smp2p_exit(struct ipa *ipa);
30 * ipa_smp2p_disable() - Prevent "ipa-setup-ready" interrupt handling
31 * @ipa: IPA pointer
36 void ipa_smp2p_disable(struct ipa *ipa);
40 * @ipa: IPA pointer
[all …]
Dipa_uc.h9 struct ipa;
12 * ipa_uc_config() - Configure the IPA microcontroller subsystem
13 * @ipa: IPA pointer
15 void ipa_uc_config(struct ipa *ipa);
19 * @ipa: IPA pointer
21 void ipa_uc_deconfig(struct ipa *ipa);
25 * @ipa: IPA pointer
28 * IPA-resident microcontroller. The microcontroller signals that it
30 * message to the AP. The AP must ensure the IPA is powered until
35 void ipa_uc_power(struct ipa *ipa);
[all …]
Dipa_sysfs.c10 #include "ipa.h"
14 static const char *ipa_version_string(struct ipa *ipa) in ipa_version_string() argument
16 switch (ipa->version) { in ipa_version_string()
47 struct ipa *ipa = dev_get_drvdata(dev); in version_show() local
49 return scnprintf(buf, PAGE_SIZE, "%s\n", ipa_version_string(ipa)); in version_show()
63 static const char *ipa_offload_string(struct ipa *ipa) in ipa_offload_string() argument
65 return ipa->version < IPA_VERSION_4_5 ? "MAPv4" : "MAPv5"; in ipa_offload_string()
71 struct ipa *ipa = dev_get_drvdata(dev); in rx_offload_show() local
73 return scnprintf(buf, PAGE_SIZE, "%s\n", ipa_offload_string(ipa)); in rx_offload_show()
81 struct ipa *ipa = dev_get_drvdata(dev); in tx_offload_show() local
[all …]
Dipa_gsi.c11 #include "ipa.h"
17 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_complete() local
19 ipa_endpoint_trans_complete(ipa->channel_map[trans->channel_id], trans); in ipa_gsi_trans_complete()
24 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_release() local
26 ipa_endpoint_trans_release(ipa->channel_map[trans->channel_id], trans); in ipa_gsi_trans_release()
32 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_queued() local
35 endpoint = ipa->channel_map[channel_id]; in ipa_gsi_channel_tx_queued()
43 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_completed() local
46 endpoint = ipa->channel_map[channel_id]; in ipa_gsi_channel_tx_completed()
Dipa.h31 * struct ipa - IPA information
33 * @version: IPA hardware version
39 * @power: IPA power information
42 * @interrupt: IPA Interrupt information
45 * @reg_addr: DMA address used for IPA register access
46 * @reg_virt: Virtual address used for IPA register access
47 * @mem_addr: DMA address of IPA-local memory space
48 * @mem_virt: Virtual address of IPA-local memory space
49 * @mem_offset: Offset from @mem_virt used for access to IPA memory
52 * @mem: Array of IPA-local memory region descriptors
[all …]
Dipa_resource.c10 #include "ipa.h"
16 * DOC: IPA Resources
18 * The IPA manages a set of resources internally for various purposes.
19 * A given IPA version has a fixed number of resource types, and a fixed
23 * Each version of IPA also has some number of resource groups. Each
29 static bool ipa_resource_limits_valid(struct ipa *ipa, in ipa_resource_limits_valid() argument
72 ipa_resource_config_common(struct ipa *ipa, u32 offset, in ipa_resource_config_common() argument
85 iowrite32(val, ipa->reg_virt + offset); in ipa_resource_config_common()
88 static void ipa_resource_config_src(struct ipa *ipa, u32 resource_type, in ipa_resource_config_src() argument
100 ipa_resource_config_common(ipa, offset, &resource->limits[0], ylimits); in ipa_resource_config_src()
[all …]
/Linux-v5.15/Documentation/devicetree/bindings/net/
Dqcom,ipa.yaml4 $id: http://devicetree.org/schemas/net/qcom,ipa.yaml#
7 title: Qualcomm IP Accelerator (IPA)
13 This binding describes the Qualcomm IPA. The IPA is capable of offloading
17 The IPA sits between multiple independent "execution environments,"
18 including the Application Processor (AP) and the modem. The IPA presents
20 The GSI is an integral part of the IPA, but it is logically isolated
40 | IPA |
47 - qcom,msm8998-ipa
48 - qcom,sc7180-ipa
49 - qcom,sc7280-ipa
[all …]
/Linux-v5.15/Documentation/ABI/testing/
Dsysfs-devices-platform-soc-ipa1 What: /sys/devices/platform/soc@X/XXXXXXX.ipa/
6 The /sys/devices/platform/soc@X/XXXXXXX.ipa/ directory
8 an IPA device. The X values could vary, but are typically
9 "soc@0/1e40000.ipa".
11 What: .../XXXXXXX.ipa/version
16 The .../XXXXXXX.ipa/version file contains the IPA hardware
20 What: .../XXXXXXX.ipa/feature/
25 The .../XXXXXXX.ipa/feature/ directory contains a set of
26 attributes describing features implemented by the IPA
29 What: .../XXXXXXX.ipa/feature/rx_offload
[all …]

123456