| /kernel/linux/linux-5.10/drivers/net/ipa/ |
| D | ipa_main.c | 22 #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 …]
|
| D | ipa_mem.c | 15 #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 …]
|
| D | ipa_interrupt.c | 7 /* 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 …]
|
| D | ipa_modem.c | 14 #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 …]
|
| D | ipa_table.h | 11 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 …]
|
| D | ipa_table.c | 17 #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 …]
|
| D | ipa_cmd.c | 15 #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 …]
|
| D | ipa_endpoint.h | 19 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 …]
|
| D | ipa_endpoint.c | 16 #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 …]
|
| D | ipa_clock.c | 13 #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 …]
|
| D | ipa_uc.c | 11 #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/ |
| D | ipa_interrupt.c | 7 /* 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 …]
|
| D | ipa_main.c | 22 #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 …]
|
| D | ipa_mem.c | 15 #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 …]
|
| D | ipa_power.h | 11 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 …]
|
| D | ipa_table.h | 11 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 …]
|
| D | ipa_interrupt.h | 12 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 …]
|
| D | ipa_modem.c | 17 #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 …]
|
| D | ipa_endpoint.c | 16 #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 …]
|
| D | ipa_table.c | 17 #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 …]
|
| D | ipa_cmd.c | 15 #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 …]
|
| D | ipa_uc.c | 12 #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 …]
|
| D | ipa_reg.h | 15 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 …]
|
| D | ipa_uc.h | 9 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 …]
|
| D | ipa_power.c | 16 #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 …]
|