/linux/drivers/net/ipa/ |
H A 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 event 43 struct ipa *ipa; global() member 52 struct ipa *ipa = interrupt->ipa; ipa_interrupt_suspend_clear_all() local 76 struct ipa *ipa = interrupt->ipa; ipa_interrupt_process() local 113 struct ipa *ipa = interrupt->ipa; ipa_isr_thread() local 158 ipa_interrupt_enabled_update(struct ipa * ipa) ipa_interrupt_enabled_update() argument 166 ipa_interrupt_enable(struct ipa * ipa,enum ipa_irq_id ipa_irq) ipa_interrupt_enable() argument 174 ipa_interrupt_disable(struct ipa * ipa,enum ipa_irq_id ipa_irq) ipa_interrupt_disable() argument 181 ipa_interrupt_irq_disable(struct ipa * ipa) ipa_interrupt_irq_disable() argument 186 ipa_interrupt_irq_enable(struct ipa * ipa) ipa_interrupt_irq_enable() argument 195 struct ipa *ipa = interrupt->ipa; ipa_interrupt_suspend_control() local 250 ipa_interrupt_config(struct ipa * ipa) ipa_interrupt_config() argument 310 ipa_interrupt_deconfig(struct ipa * ipa) ipa_interrupt_deconfig() argument [all...] |
H A D | ipa_main.c | 20 #include "ipa.h" 39 * This driver supports the Qualcomm IP Accelerator (IPA), which is a 40 * networking component found in many Qualcomm SoCs. The IPA is connected 44 * The IPA is the conduit between the AP and the modem that carries network 48 * The IPA provides protocol checksum calculation, offloading this work 49 * from the AP. The IPA offers additional functionality, including routing, 55 * There are two distinct layers that implement the IPA hardware, and this 57 * interface (GSI) is an integral component of the IPA, providing a 58 * well-defined communication layer between the AP subsystem and the IPA 60 * between the AP and the IPA 111 ipa_setup(struct ipa * ipa) ipa_setup() argument 177 ipa_teardown(struct ipa * ipa) ipa_teardown() argument 196 ipa_hardware_config_bcr(struct ipa * ipa,const struct ipa_data * data) ipa_hardware_config_bcr() argument 210 ipa_hardware_config_tx(struct ipa * ipa) ipa_hardware_config_tx() argument 231 ipa_hardware_config_clkon(struct ipa * ipa) ipa_hardware_config_clkon() argument 258 ipa_hardware_config_comp(struct ipa * ipa) ipa_hardware_config_comp() argument 291 ipa_hardware_config_qsb(struct ipa * ipa,const struct ipa_data * data) ipa_hardware_config_qsb() argument 360 ipa_qtime_config(struct ipa * ipa) ipa_qtime_config() argument 410 ipa_hardware_config_counter(struct ipa * ipa) ipa_hardware_config_counter() argument 422 ipa_hardware_config_timing(struct ipa * ipa) ipa_hardware_config_timing() argument 430 ipa_hardware_config_hashing(struct ipa * ipa) ipa_hardware_config_hashing() argument 451 ipa_idle_indication_cfg(struct ipa * ipa,u32 enter_idle_debounce_thresh,bool const_non_idle_enable) ipa_idle_indication_cfg() argument 478 ipa_hardware_dcd_config(struct ipa * ipa) ipa_hardware_dcd_config() argument 484 ipa_hardware_dcd_deconfig(struct ipa * ipa) ipa_hardware_dcd_deconfig() argument 495 ipa_hardware_config(struct ipa * ipa,const struct ipa_data * data) ipa_hardware_config() argument 513 ipa_hardware_deconfig(struct ipa * ipa) ipa_hardware_deconfig() argument 526 ipa_config(struct ipa * ipa,const struct ipa_data * data) ipa_config() argument 576 ipa_deconfig(struct ipa * ipa) ipa_deconfig() argument 793 struct ipa *ipa; ipa_probe() local 941 struct ipa *ipa; ipa_remove() local [all...] |
H A D | ipa_reg.h | 13 struct ipa; 16 * DOC: IPA Registers 18 * IPA registers are located within the "ipa-reg" address space defined by 22 * All IPA registers are 32 bits wide. 25 * instances of something. For example, each IPA endpoint has an set of 33 * Each version of IPA implements an array of ipa_reg structures indexed 36 * of IPA define all registers. The offset for a register is returned by 53 /* enum ipa_reg_id - IPA register IDs */ 61 FILT_ROUT_HASH_EN, /* IPA v [all...] |
H A D | ipa_interrupt.h | 13 struct ipa; 20 * @interrupt: IPA interrupt structure 23 * Note: The "TX" in the name is from the perspective of the IPA hardware. 33 * @interrupt: IPA interrupt structure 40 * ipa_interrupt_simulate_suspend() - Simulate TX_SUSPEND IPA interrupt 41 * @interrupt: IPA interrupt structure 51 * ipa_interrupt_enable() - Enable an IPA interrupt type 52 * @ipa: IPA pointer 53 * @ipa_irq: IPA interrup [all...] |
H A 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 bool ipa_table_hash_support(struct ipa *ipa); 30 * @ipa [all...] |
H A D | ipa_table.c | 16 #include "ipa.h" 25 * DOC: IPA Filter and Route Tables 27 * The IPA has tables defined in its local (IPA-resident) memory that define 35 * by all IPA hardware (IPA v4.2 doesn't support hashed tables). 38 * an object (such as a route or filter table) in IPA-resident memory must 52 * address of a filter rule in the memory following the bitmap. Until IPA 58 * removed starting at IPA v5.0. For IPA v 145 ipa_table_mem(struct ipa * ipa,bool filter,bool hashed,bool ipv6) ipa_table_mem() argument 162 ipa_table_hash_support(struct ipa * ipa) ipa_table_hash_support() argument 167 ipa_filtered_valid(struct ipa * ipa,u64 filtered) ipa_filtered_valid() argument 190 ipa_table_addr(struct ipa * ipa,bool filter_mask,u16 count) ipa_table_addr() argument 208 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_table_reset_add() local 234 ipa_filter_reset_table(struct ipa * ipa,bool hashed,bool ipv6,bool modem) ipa_filter_reset_table() argument 270 ipa_filter_reset(struct ipa * ipa,bool modem) ipa_filter_reset() argument 293 ipa_route_reset(struct ipa * ipa,bool modem) ipa_route_reset() argument 329 ipa_table_reset(struct ipa * ipa,bool modem) ipa_table_reset() argument 349 ipa_table_hash_flush(struct ipa * ipa) ipa_table_hash_flush() argument 388 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_table_init_add() local 454 ipa_table_setup(struct ipa * ipa) ipa_table_setup() argument 497 struct ipa *ipa = endpoint->ipa; ipa_filter_tuple_zero() local 523 ipa_filter_config(struct ipa * ipa,bool modem) ipa_filter_config() argument 543 ipa_route_id_modem(struct ipa * ipa,u32 route_id) ipa_route_id_modem() argument 555 ipa_route_tuple_zero(struct ipa * ipa,u32 route_id) ipa_route_tuple_zero() argument 582 ipa_route_config(struct ipa * ipa,bool modem) ipa_route_config() argument 595 ipa_table_config(struct ipa * ipa) ipa_table_config() argument 606 ipa_table_mem_valid(struct ipa * ipa,bool filter) ipa_table_mem_valid() argument 715 ipa_table_init(struct ipa * ipa) ipa_table_init() argument 764 ipa_table_exit(struct ipa * ipa) ipa_table_exit() argument [all...] |
H A D | ipa_cmd.c | 15 #include "ipa.h" 23 * DOC: IPA Immediate Commands 25 * The AP command TX endpoint is used to issue immediate commands to the IPA. 26 * 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 v 172 ipa_cmd_table_init_valid(struct ipa * ipa,const struct ipa_mem * mem,bool route) ipa_cmd_table_init_valid() argument 206 ipa_cmd_header_init_local_valid(struct ipa * ipa) ipa_cmd_header_init_local_valid() argument 256 ipa_cmd_register_write_offset_valid(struct ipa * ipa,const char * name,u32 offset) ipa_cmd_register_write_offset_valid() argument 289 ipa_cmd_register_write_valid(struct ipa * ipa) ipa_cmd_register_write_valid() argument 349 ipa_cmd_payload_alloc(struct ipa * ipa,dma_addr_t * addr) ipa_cmd_payload_alloc() argument 366 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_table_init_add() local 404 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_hdr_init_local_add() local 433 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_register_write_add() local 490 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_ip_packet_init_add() local 515 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_dma_shared_mem_add() local 555 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_ip_tag_status_add() local 573 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_transfer_add() local 588 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); ipa_cmd_pipeline_clear_add() local 617 ipa_cmd_pipeline_clear_wait(struct ipa * ipa) ipa_cmd_pipeline_clear_wait() argument 623 ipa_cmd_trans_alloc(struct ipa * ipa,u32 tre_count) ipa_cmd_trans_alloc() argument 637 ipa_cmd_init(struct ipa * ipa) ipa_cmd_init() argument [all...] |
H A D | ipa_uc.c | 12 #include "ipa.h" 19 * DOC: The IPA embedded microcontroller 21 * The IPA incorporates a microcontroller that is able to do some additional 31 * A 128 byte block of structured memory within the IPA SRAM is used together 33 * AP and the IPA microcontroller. Each side writes data to the shared area 66 * A shared memory area at the base of IPA resident memory is used for 120 static struct ipa_uc_mem_area *ipa_uc_shared(struct ipa *ipa) in ipa_uc_shared() argument 122 const struct ipa_mem *mem = ipa_mem_find(ipa, IPA_MEM_UC_SHARED); in ipa_uc_shared() 123 u32 offset = ipa in ipa_uc_shared() 129 ipa_uc_event_handler(struct ipa * ipa) ipa_uc_event_handler() argument 143 ipa_uc_response_hdlr(struct ipa * ipa) ipa_uc_response_hdlr() argument 175 ipa_uc_interrupt_handler(struct ipa * ipa,enum ipa_irq_id irq_id) ipa_uc_interrupt_handler() argument 185 ipa_uc_config(struct ipa * ipa) ipa_uc_config() argument 194 ipa_uc_deconfig(struct ipa * ipa) ipa_uc_deconfig() argument 211 ipa_uc_power(struct ipa * ipa) ipa_uc_power() argument 232 send_uc_command(struct ipa * ipa,u32 command,u32 command_param) send_uc_command() argument 253 ipa_uc_panic_notifier(struct ipa * ipa) ipa_uc_panic_notifier() argument [all...] |
H A D | ipa_uc.h | 9 struct ipa; 12 * ipa_uc_interrupt_handler() - Handler for microcontroller IPA interrupts 13 * @ipa: IPA pointer 14 * @irq_id: IPA interrupt ID 16 void ipa_uc_interrupt_handler(struct ipa *ipa, enum ipa_irq_id irq_id); 19 * ipa_uc_config() - Configure the IPA microcontroller subsystem 20 * @ipa: IPA pointe [all...] |
H A D | ipa_modem.c | 18 #include "ipa.h" 38 * struct ipa_priv - IPA network device private data 39 * @ipa: IPA pointer 45 struct ipa *ipa; member 55 struct ipa *ipa = priv->ipa; in ipa_open() local 59 dev = ipa in ipa_open() 91 struct ipa *ipa = priv->ipa; ipa_stop() local 128 struct ipa *ipa = priv->ipa; ipa_start_xmit() local 301 ipa_modem_start(struct ipa * ipa) ipa_modem_start() argument 354 ipa_modem_stop(struct ipa * ipa) ipa_modem_stop() argument 395 ipa_modem_crashed(struct ipa * ipa) ipa_modem_crashed() argument 442 struct ipa *ipa = container_of(nb, struct ipa, nb); ipa_modem_notify() local 476 ipa_modem_config(struct ipa * ipa) ipa_modem_config() argument 491 ipa_modem_deconfig(struct ipa * ipa) ipa_modem_deconfig() argument [all...] |
H A D | ipa_smp2p.c | 16 #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 pointe 61 struct ipa *ipa; global() member 153 struct ipa *ipa = smp2p->ipa; ipa_smp2p_modem_setup_ready_isr() local 209 ipa_smp2p_power_release(struct ipa * ipa) ipa_smp2p_power_release() argument 223 ipa_smp2p_init(struct ipa * ipa,struct platform_device * pdev,bool modem_init) ipa_smp2p_init() argument 298 ipa_smp2p_exit(struct ipa * ipa) ipa_smp2p_exit() argument 313 ipa_smp2p_irq_disable_setup(struct ipa * ipa) ipa_smp2p_irq_disable_setup() argument 331 ipa_smp2p_notify_reset(struct ipa * ipa) ipa_smp2p_notify_reset() argument [all...] |
H A D | ipa_smp2p.h | 13 struct ipa; 16 * ipa_smp2p_init() - Initialize the IPA SMP2P subsystem 17 * @ipa: IPA pointer 23 int ipa_smp2p_init(struct ipa *ipa, struct platform_device *pdev, 28 * @ipa: IPA pointer 30 void ipa_smp2p_exit(struct ipa *ipa); [all...] |
H A D | ipa_power.c | 15 #include "ipa.h" 23 * DOC: IPA Power Management 25 * The IPA hardware is enabled when the IPA core clock and all the 38 * struct ipa_power - IPA power management information 39 * @dev: IPA device pointer 40 * @core: IPA core clock 53 /* Initialize interconnects required for IPA operation */ 94 /* Enable IPA power, enabling interconnects and the core clock */ 95 static int ipa_power_enable(struct ipa *ip argument 115 ipa_power_disable(struct ipa * ipa) ipa_power_disable() argument 126 struct ipa *ipa = dev_get_drvdata(dev); ipa_runtime_suspend() local 141 struct ipa *ipa = dev_get_drvdata(dev); ipa_runtime_resume() local 159 struct ipa *ipa = dev_get_drvdata(dev); ipa_suspend() local 177 struct ipa *ipa = dev_get_drvdata(dev); ipa_resume() local 192 ipa_core_clock_rate(struct ipa * ipa) ipa_core_clock_rate() argument 220 ipa_power_retention(struct ipa * ipa,bool enable) ipa_power_retention() argument [all...] |
H A D | ipa_cmd.h | 13 struct ipa; 17 * enum ipa_cmd_opcode: IPA immediate commands 23 * @IPA_CMD_HDR_INIT_LOCAL: Initialize IPA-local header memory 24 * @IPA_CMD_REGISTER_WRITE: Register write performed by IPA 26 * @IPA_CMD_DMA_SHARED_MEM: DMA command performed by IPA 47 * @ipa: - IPA pointer 48 * @mem: - IPA memory region descriptor 53 bool ipa_cmd_table_init_valid(struct ipa *ipa, cons [all...] |
H A D | ipa.h | 25 * struct ipa - IPA information 27 * @version: IPA hardware version 28 * @dev: IPA device pointer 33 * @power: IPA power information 39 * @interrupt: IPA Interrupt information 42 * @reg_virt: Virtual address used for IPA register access 43 * @regs: IPA register definitions 44 * @mem_addr: DMA address of IPA-local memory space 45 * @mem_virt: Virtual address of IPA 73 struct ipa { global() struct 75 versionipa global() argument 80 smp2pipa global() argument 81 poweripa global() argument 89 interruptipa global() argument 101 memipa global() argument 123 endpointipa global() argument 124 channel_mapipa global() argument 125 name_mapipa global() argument 129 modem_stateipa global() argument 131 qmiipa global() argument 136 modem_netdevipa global() argument [all...] |
H A 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 25 * Resources are data structures used internally by the IPA hardware. The 29 * Endpoint configuration data defines properties of both IPA endpoints and 31 * communication path between the IPA and a particular execution environment 36 * An endpoint is an IPA construct representing a single channel anywhere 37 * in the system. An IPA endpoint ID maps directly to an (EE, channel_id) 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); 46 * the IPA endpoin [all...] |
H A D | ipa_reg.c | 10 #include "ipa.h" 13 /* Is this register ID valid for the current IPA version? */ 14 static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id) in ipa_reg_id_valid() argument 16 enum ipa_version version = ipa->version; in ipa_reg_id_valid() 102 const struct reg *ipa_reg(struct ipa *ipa, enum ipa_reg_id reg_id) in ipa_reg() argument 104 if (WARN(!ipa_reg_id_valid(ipa, reg_id), "invalid reg %u\n", reg_id)) in ipa_reg() 107 return reg(ipa->regs, reg_id); in ipa_reg() 136 int ipa_reg_init(struct ipa *ip argument 166 ipa_reg_exit(struct ipa * ipa) ipa_reg_exit() argument [all...] |
H A D | ipa_gsi.c | 10 #include "ipa.h" 18 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_complete() local 20 ipa_endpoint_trans_complete(ipa->channel_map[trans->channel_id], trans); in ipa_gsi_trans_complete() 25 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_release() local 27 ipa_endpoint_trans_release(ipa->channel_map[trans->channel_id], trans); in ipa_gsi_trans_release() 33 struct ipa *ip in ipa_gsi_channel_tx_queued() local 44 struct ipa *ipa = container_of(gsi, struct ipa, gsi); ipa_gsi_channel_tx_completed() local [all...] |
H A D | ipa_version.h | 13 * @IPA_VERSION_3_0: IPA version 3.0/GSI version 1.0 14 * @IPA_VERSION_3_1: IPA version 3.1/GSI version 1.0 15 * @IPA_VERSION_3_5: IPA version 3.5/GSI version 1.2 16 * @IPA_VERSION_3_5_1: IPA version 3.5.1/GSI version 1.3 17 * @IPA_VERSION_4_0: IPA version 4.0/GSI version 2.0 18 * @IPA_VERSION_4_1: IPA version 4.1/GSI version 2.0 19 * @IPA_VERSION_4_2: IPA version 4.2/GSI version 2.2 20 * @IPA_VERSION_4_5: IPA version 4.5/GSI version 2.5 21 * @IPA_VERSION_4_7: IPA version 4.7/GSI version 2.7 22 * @IPA_VERSION_4_9: IPA versio [all...] |
H A D | ipa_sysfs.c | 9 #include "ipa.h" 13 static const char *ipa_version_string(struct ipa *ipa) in ipa_version_string() argument 15 switch (ipa->version) { in ipa_version_string() 52 struct ipa *ipa = dev_get_drvdata(dev); in version_show() local 54 return sysfs_emit(buf, "%s\n", ipa_version_string(ipa)); in version_show() 68 static const char *ipa_offload_string(struct ipa *ipa) in ipa_offload_string() argument 70 return ipa in ipa_offload_string() 76 struct ipa *ipa = dev_get_drvdata(dev); rx_offload_show() local 86 struct ipa *ipa = dev_get_drvdata(dev); tx_offload_show() local 107 struct ipa *ipa = dev_get_drvdata(kobj_to_dev(kobj)); ipa_endpoint_id_is_visible() local 124 struct ipa *ipa = dev_get_drvdata(dev); endpoint_id_attr_show() local [all...] |
H A D | ipa_power.h | 13 struct ipa; 16 /* IPA device power management function block */ 20 * ipa_core_clock_rate() - Return the current IPA core clock rate 21 * @ipa: IPA structure 25 u32 ipa_core_clock_rate(struct ipa *ipa); 29 * @ipa: IPA pointer 32 void ipa_power_retention(struct ipa *ip [all...] |
H A D | gsi_reg.h | 47 INTER_EE_SRC_CH_IRQ_MSK, /* IPA v3.5+ */ 48 INTER_EE_SRC_EV_CH_IRQ_MSK, /* IPA v3.5+ */ 77 HW_PARAM_2, /* IPA v3.5.1+ */ 78 HW_PARAM_4, /* IPA v5.0+ */ 109 CHTYPE_PROTOCOL_MSB, /* IPA v4.5-4.11 */ 110 ERINDEX, /* Not IPA v5.0+ */ 132 CH_ERINDEX, /* IPA v5.0+ */ 140 USE_ESCAPE_BUF_ONLY, /* IPA v4.0-4.2 */ 141 PREFETCH_MODE, /* IPA v4.5+ */ 142 EMPTY_LVL_THRSHOLD, /* IPA v [all...] |
H A D | ipa_modem.h | 12 struct ipa; 14 int ipa_modem_start(struct ipa *ipa); 15 int ipa_modem_stop(struct ipa *ipa); 22 int ipa_modem_config(struct ipa *ipa); 23 void ipa_modem_deconfig(struct ipa *ipa);
|
/linux/Documentation/ABI/testing/ |
H A D | sysfs-devices-platform-soc-ipa | 1 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 [all...] |
/linux/Documentation/devicetree/bindings/net/ |
H A D | qcom,ipa.yaml | 4 $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 | 48 - qcom,msm8998-ipa 49 - qcom,sc7180-ipa [all...] |