Home
last modified time | relevance | path

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

12345678910>>...13

/kernel/linux/linux-5.10/drivers/net/ipa/
Dipa_main.c22 #include "ipa.h"
38 * This driver supports the Qualcomm IP Accelerator (IPA), which is a
39 * networking component found in many Qualcomm SoCs. The IPA is connected
43 * The IPA is the conduit between the AP and the modem that carries network
47 * The IPA provides protocol checksum calculation, offloading this work
48 * from the AP. The IPA offers additional functionality, including routing,
54 * There are two distinct layers that implement the IPA hardware, and this
56 * interface (GSI) is an integral component of the IPA, providing a
57 * well-defined communication layer between the AP subsystem and the IPA
59 * between the AP and the IPA.
[all …]
Dipa_mem.c15 #include "ipa.h"
33 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_mem_zero_region_add() local
34 dma_addr_t addr = ipa->zero_addr; in ipa_mem_zero_region_add()
43 * ipa_mem_setup() - Set up IPA AP and modem shared memory areas
44 * @ipa: IPA pointer
46 * Set up the shared memory regions in IPA local memory. This involves
48 * the IPA where it's located.
58 int ipa_mem_setup(struct ipa *ipa) in ipa_mem_setup() argument
60 dma_addr_t addr = ipa->zero_addr; in ipa_mem_setup()
68 trans = ipa_cmd_trans_alloc(ipa, 4); in ipa_mem_setup()
[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
25 #include "ipa.h"
32 * struct ipa_interrupt - IPA interrupt information
[all …]
Dipa_modem.c14 #include "ipa.h"
34 /** struct ipa_priv - IPA network device private data */
36 struct ipa *ipa; member
43 struct ipa *ipa = priv->ipa; in ipa_open() local
46 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
49 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]); in ipa_open()
58 ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
67 struct ipa *ipa = priv->ipa; in ipa_stop() local
71 ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]); in ipa_stop()
72 ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_stop()
[all …]
Dipa_table.h11 struct ipa;
26 * @ipa: IPA pointer
30 bool ipa_table_valid(struct ipa *ipa);
34 * @ipa: IPA pointer
38 bool ipa_filter_map_valid(struct ipa *ipa, u32 filter_mask);
42 static inline bool ipa_table_valid(struct ipa *ipa) in ipa_table_valid() argument
47 static inline bool ipa_filter_map_valid(struct ipa *ipa, u32 filter_mask) in ipa_filter_map_valid() argument
56 * @ipa: IPA pointer
59 void ipa_table_reset(struct ipa *ipa, bool modem);
63 * @ipa: IPA pointer
[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_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+, this opcode gets modified with pipeline clear options */
80 __le16 flags; /* Unused/reserved for IPA v3.5.1 */
84 __le32 clear_options; /* Unused/reserved for IPA v4.0+ */
88 /* The next field is present for IPA v4.0 and above */
90 /* The next field is present for IPA v3.5.1 only */
93 /* The next field and its values are present for IPA v3.5.1 only */
[all …]
Dipa_endpoint.h19 struct ipa;
56 * struct ipa_endpoint - IPA endpoint information
61 struct ipa *ipa; member
83 void ipa_endpoint_modem_hol_block_clear_all(struct ipa *ipa);
85 void ipa_endpoint_modem_pause_all(struct ipa *ipa, bool enable);
87 int ipa_endpoint_modem_exception_reset_all(struct ipa *ipa);
99 void ipa_endpoint_suspend(struct ipa *ipa);
100 void ipa_endpoint_resume(struct ipa *ipa);
102 void ipa_endpoint_setup(struct ipa *ipa);
103 void ipa_endpoint_teardown(struct ipa *ipa);
[all …]
Dipa_endpoint.c16 #include "ipa.h"
81 * IPA hardware as a number of KB. We don't use "hard byte in ipa_endpoint_validate_build()
102 static bool ipa_endpoint_data_valid_one(struct ipa *ipa, u32 count, in ipa_endpoint_data_valid_one() argument
107 struct device *dev = &ipa->pdev->dev; in ipa_endpoint_data_valid_one()
183 static bool ipa_endpoint_data_valid(struct ipa *ipa, u32 count, in ipa_endpoint_data_valid() argument
187 struct device *dev = &ipa->pdev->dev; in ipa_endpoint_data_valid()
217 if (!ipa_endpoint_data_valid_one(ipa, count, data, dp)) in ipa_endpoint_data_valid()
225 static bool ipa_endpoint_data_valid(struct ipa *ipa, u32 count, in ipa_endpoint_data_valid() argument
237 struct gsi *gsi = &endpoint->ipa->gsi; in ipa_endpoint_trans_alloc()
247 * Note that suspend is not supported starting with IPA v4.0.
[all …]
Dipa_clock.c13 #include "ipa.h"
18 * DOC: IPA Clocking
20 * The "IPA Clock" manages both the IPA core clock and the interconnects
21 * (buses) the IPA depends on as a single logical entity. A reference count
26 * all buses at a fixed average and peak bandwidth. As more advanced IPA
29 * An IPA clock reference must be held for any access to IPA hardware.
45 * struct ipa_clock - IPA clocking information
48 * @core: IPA core clock
75 /* Initialize interconnects required for IPA operation */
114 static int ipa_interconnect_enable(struct ipa *ipa) in ipa_interconnect_enable() argument
[all …]
Dipa_uc.c11 #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 u32 offset = ipa->mem_offset + ipa->mem[IPA_MEM_UC_SHARED].offset; in ipa_uc_shared()
121 return ipa->mem_virt + offset; in ipa_uc_shared()
124 /* Microcontroller event IPA interrupt handler */
[all …]
/kernel/linux/linux-6.6/drivers/net/ipa/
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
27 #include "ipa.h"
35 * struct ipa_interrupt - IPA interrupt information
[all …]
Dipa_main.c22 #include "ipa.h"
41 * This driver supports the Qualcomm IP Accelerator (IPA), which is a
42 * networking component found in many Qualcomm SoCs. The IPA is connected
46 * The IPA is the conduit between the AP and the modem that carries network
50 * The IPA provides protocol checksum calculation, offloading this work
51 * from the AP. The IPA offers additional functionality, including routing,
57 * There are two distinct layers that implement the IPA hardware, and this
59 * interface (GSI) is an integral component of the IPA, providing a
60 * well-defined communication layer between the AP subsystem and the IPA
62 * between the AP and the IPA.
[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_power.h11 struct ipa;
15 /* IPA device power management function block */
19 * ipa_core_clock_rate() - Return the current IPA core clock rate
20 * @ipa: IPA structure
24 u32 ipa_core_clock_rate(struct ipa *ipa);
28 * @ipa: IPA pointer
30 void ipa_power_modem_queue_stop(struct ipa *ipa);
34 * @ipa: IPA pointer
36 void ipa_power_modem_queue_wake(struct ipa *ipa);
40 * @ipa: IPA pointer
[all …]
Dipa_table.h11 struct ipa;
15 * @ipa: IPA pointer
20 bool ipa_filtered_valid(struct ipa *ipa, u64 filtered);
24 * @ipa: IPA pointer
26 static inline bool ipa_table_hash_support(struct ipa *ipa) in ipa_table_hash_support() argument
28 return ipa->version != IPA_VERSION_4_2; in ipa_table_hash_support()
33 * @ipa: IPA pointer
36 void ipa_table_reset(struct ipa *ipa, bool modem);
40 * @ipa: IPA pointer
42 int ipa_table_hash_flush(struct ipa *ipa);
[all …]
Dipa_interrupt.h12 struct ipa;
18 * @interrupt: IPA interrupt structure
21 * Note: The "TX" in the name is from the perspective of the IPA hardware.
31 * @interrupt: IPA interrupt structure
39 * @interrupt: IPA interrupt structure
46 * ipa_interrupt_simulate_suspend() - Simulate TX_SUSPEND IPA interrupt
47 * @interrupt: IPA interrupt structure
57 * ipa_interrupt_enable() - Enable an IPA interrupt type
58 * @ipa: IPA pointer
59 * @ipa_irq: IPA interrupt ID
[all …]
Dipa_modem.c17 #include "ipa.h"
40 * struct ipa_priv - IPA network device private data
41 * @ipa: IPA pointer
45 struct ipa *ipa; member
53 struct ipa *ipa = priv->ipa; in ipa_open() local
57 dev = &ipa->pdev->dev; in ipa_open()
62 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
66 ret = ipa_endpoint_enable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]); in ipa_open()
78 ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]); in ipa_open()
89 struct ipa *ipa = priv->ipa; in ipa_stop() local
[all …]
Dipa_endpoint.c16 #include "ipa.h"
37 /** enum ipa_status_opcode - IPA status opcode field hardware values */
48 /** enum ipa_status_exception - IPA status exception field hardware values */
64 /** enum ipa_status_mask - IPA status mask field bitmask hardware values */
84 /* Special IPA filter/router rule field value indicating "rule miss" */
87 /** The IPA status nat_type field uses enum ipa_nat_type hardware values */
89 /* enum ipa_status_field_id - IPA packet status structure field identifiers */
121 /* Size in bytes of an IPA packet status structure */
124 /* IPA status structure decoder; looks up field values for a structure */
125 static u32 ipa_status_extract(struct ipa *ipa, const void *data, in ipa_status_extract() argument
[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
55 * address of a filter rule in the memory following the bitmap. Until IPA
61 * removed starting at IPA v5.0. For IPA v5.0+, the endpoint bitmap
63 * bitmap, endpoint 1 has a filter rule. Older versions of IPA represent
75 * endpoints they "own" directly. Currently the AP does not use the IPA
79 * bitmap as defined prior to IPA v5.0.
[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
73 /* For IPA v4.0+, the pipeline clear options are encoded in the opcode */
78 __le16 flags; /* Unused/reserved prior to IPA v4.0 */
82 __le32 clear_options; /* Unused/reserved for IPA v4.0+ */
86 /* The next field is present for IPA v4.0+ */
88 /* The next field is not present for IPA v4.0+ */
91 /* The next field and its values are not present for IPA v4.0+ */
[all …]
Dipa_uc.c12 #include "ipa.h"
17 * DOC: The IPA embedded microcontroller
19 * The IPA incorporates a microcontroller that is able to do some additional
29 * A 128 byte block of structured memory within the IPA SRAM is used together
31 * AP and the IPA microcontroller. Each side writes data to the shared area
64 * A shared memory area at the base of IPA resident memory is used for
118 static struct ipa_uc_mem_area *ipa_uc_shared(struct ipa *ipa) in ipa_uc_shared() argument
120 const struct ipa_mem *mem = ipa_mem_find(ipa, IPA_MEM_UC_SHARED); in ipa_uc_shared()
121 u32 offset = ipa->mem_offset + mem->offset; in ipa_uc_shared()
123 return ipa->mem_virt + offset; in ipa_uc_shared()
[all …]
Dipa_reg.h15 struct ipa;
18 * DOC: IPA Registers
20 * IPA registers are located within the "ipa-reg" address space defined by
24 * All IPA registers are 32 bits wide.
27 * instances of something. For example, each IPA endpoint has an set of
35 * Each version of IPA implements an array of ipa_reg structures indexed
38 * of IPA define all registers. The offset for a register is returned by
55 /* enum ipa_reg_id - IPA register IDs */
63 FILT_ROUT_HASH_EN, /* IPA v4.2 */
64 FILT_ROUT_HASH_FLUSH, /* Not IPA v4.2 nor IPA v5.0+ */
[all …]
Dipa_uc.h9 struct ipa;
13 * ipa_uc_interrupt_handler() - Handler for microcontroller IPA interrupts
14 * @ipa: IPA pointer
15 * @irq_id: IPA interrupt ID
17 void ipa_uc_interrupt_handler(struct ipa *ipa, enum ipa_irq_id irq_id);
20 * ipa_uc_config() - Configure the IPA microcontroller subsystem
21 * @ipa: IPA pointer
23 void ipa_uc_config(struct ipa *ipa);
27 * @ipa: IPA pointer
29 void ipa_uc_deconfig(struct ipa *ipa);
[all …]
Dipa_power.c16 #include "ipa.h"
23 * DOC: IPA Power Management
25 * The IPA hardware is enabled when the IPA core clock and all the
38 * enum ipa_power_flag - IPA power flags
54 * struct ipa_power - IPA power management information
55 * @dev: IPA device pointer
56 * @core: IPA core clock
73 /* Initialize interconnects required for IPA operation */
114 /* Enable IPA power, enabling interconnects and the core clock */
115 static int ipa_power_enable(struct ipa *ipa) in ipa_power_enable() argument
[all …]

12345678910>>...13