Home
last modified time | relevance | path

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

1234567

/linux/drivers/net/ipa/
H A 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
28 #include "ipa.h"
36 * struct ipa_interrupt - IPA interrupt information
[all …]
H A Dipa_mem.c16 #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 …]
H A Dipa_reg.h13 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 v4.2 */
62 FILT_ROUT_HASH_FLUSH, /* Not IPA v4.2 nor IPA v5.0+ */
[all …]
H A Dipa_interrupt.h13 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 interrupt ID
55 void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq);
[all …]
H A Dipa_endpoint.c16 #include "ipa.h"
40 /** enum ipa_status_opcode - IPA status opcode field hardware values */
51 /** enum ipa_status_exception - IPA status exception field hardware values */
67 /** enum ipa_status_mask - IPA status mask field bitmask hardware values */
87 /* Special IPA filter/router rule field value indicating "rule miss" */
90 /** The IPA status nat_type field uses enum ipa_nat_type hardware values */
92 /* enum ipa_status_field_id - IPA packet status structure field identifiers */
124 /* Size in bytes of an IPA packet status structure */
127 /* IPA status structure decoder; looks up field values for a structure */
128 static u32 ipa_status_extract(struct ipa *ipa, const void *data, in ipa_status_extract() argument
[all …]
H A Dipa_table.h11 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: IPA pointer
33 void ipa_table_reset(struct ipa *ipa, bool modem);
37 * @ipa: IPA pointer
39 int ipa_table_hash_flush(struct ipa *ipa);
43 * @ipa: IPA pointer
[all …]
H A Dipa_table.c16 #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 v5.0+, the endpoint bitmap
60 * bitmap, endpoint 1 has a filter rule. Older versions of IPA represent
72 * endpoints they "own" directly. Currently the AP does not use the IPA
76 * bitmap as defined prior to IPA v5.0.
[all …]
H A Dipa_cmd.c15 #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 v4.0+ */
[all …]
H A Dipa_uc.c12 #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->mem_offset + mem->offset; in ipa_uc_shared()
125 return ipa->mem_virt + offset; in ipa_uc_shared()
[all …]
H A Dipa_modem.c18 #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->dev; in ipa_open()
91 struct ipa *ipa = priv->ipa; in ipa_stop() local
95 dev = ipa->dev; in ipa_stop()
128 struct ipa *ipa = priv->ipa; in ipa_start_xmit() local
136 endpoint = ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]; in ipa_start_xmit()
[all …]
H A Dipa_uc.h9 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 pointer
22 void ipa_uc_config(struct ipa *ipa);
26 * @ipa: IPA pointer
28 void ipa_uc_deconfig(struct ipa *ipa);
[all …]
H A Dipa_smp2p.c16 #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 …]
H A Dipa_qmi.c11 #include "ipa.h"
24 * complete, the AP and modem may begin IPA operation. This occurs
25 * only when the AP IPA driver, modem IPA driver, and IPA microcontroller
32 * contains a success result, the AP knows the modem IPA driver is ready.
34 * The modem is responsible for loading firmware on the IPA microcontroller.
49 * - Whenever the AP learns the modem has booted and its IPA QMI service
52 * - On the initial boot, the modem sets up the IPA microcontroller, and
82 struct ipa *ipa = container_of(ipa_qmi, struct ipa, qmi); in ipa_server_init_complete() local
95 dev_err(ipa->dev, in ipa_server_init_complete()
114 * We know everything (else) is ready when we know the IPA driver on
[all …]
H A Dipa_mem.h13 struct ipa;
17 * DOC: IPA Local Memory
19 * The IPA has a block of shared memory, divided into regions used for
23 * the "ipa-shared" memory range) and size found in the IPA_SHARED_MEM_SIZE
29 * of canaries for all IPA hardware versions. Still, the number used is
48 /* IPA-resident memory region ids */
66 IPA_MEM_PDN_CONFIG, /* 0/2 canaries (IPA v4.0+) */
67 IPA_MEM_STATS_QUOTA_MODEM, /* 2/4 canaries (IPA v4.0+) */
68 IPA_MEM_STATS_QUOTA_AP, /* 0 canaries, optional (IPA v4.0+) */
69 IPA_MEM_STATS_TETHERING, /* 0 canaries, optional (IPA v4.0+) */
[all …]
H A Dipa_power.c15 #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 *ipa) in ipa_power_enable() argument
97 struct ipa_power *power = ipa->power; in ipa_power_enable()
[all …]
H A Dipa_endpoint.h19 struct ipa;
70 * With each packet it transfers, the IPA hardware can perform certain
99 * struct ipa_endpoint_config - IPA endpoint hardware configuration
138 * struct ipa_endpoint - IPA endpoint information
139 * @ipa: IPA pointer
142 * @endpoint_id: IPA endpoint number
153 struct ipa *ipa; member
172 void ipa_endpoint_modem_hol_block_clear_all(struct ipa *ipa);
174 void ipa_endpoint_modem_pause_all(struct ipa *ipa, bool enable);
176 int ipa_endpoint_modem_exception_reset_all(struct ipa *ipa);
[all …]
H A Dipa_resource.c9 #include "ipa.h"
15 * DOC: IPA Resources
17 * The IPA manages a set of resources internally for various purposes.
18 * A given IPA version has a fixed number of resource types, and a fixed
22 * Each version of IPA also has some number of resource groups. Each
28 static bool ipa_resource_limits_valid(struct ipa *ipa, in ipa_resource_limits_valid() argument
71 ipa_resource_config_common(struct ipa *ipa, u32 resource_type, in ipa_resource_config_common() argument
85 iowrite32(val, ipa->reg_virt + reg_n_offset(reg, resource_type)); in ipa_resource_config_common()
88 static void ipa_resource_config_src(struct ipa *ipa, u32 resource_type, in ipa_resource_config_src() argument
98 reg = ipa_reg(ipa, SRC_RSRC_GRP_01_RSRC_TYPE); in ipa_resource_config_src()
[all …]
H A Dipa_cmd.h13 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, const struct ipa_mem *mem,
58 * @channel: AP->IPA command TX GSI channel pointer
67 * @channel: AP->IPA command TX GSI channel pointer
[all …]
H A Dipa_smp2p.h13 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);
34 * @ipa: IPA pointer
36 * Disable the "ipa-setup-ready" interrupt from the modem.
38 void ipa_smp2p_irq_disable_setup(struct ipa *ipa);
42 * @ipa: IPA pointer
[all …]
H A Dipa_data.h16 * 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 endpoint.
[all …]
H A Dipa.h25 * 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-local memory space
46 * @mem_offset: Offset from @mem_virt used for access to IPA memory
[all …]
H A Dipa_reg.c10 #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 *ipa, struct platform_device *pdev) in ipa_reg_init() argument
142 regs = ipa_regs(ipa->version); in ipa_reg_init()
149 /* Setup IPA register memory */ in ipa_reg_init()
[all …]
H A Dipa_gsi.c10 #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 *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_queued() local
36 endpoint = ipa->channel_map[channel_id]; in ipa_gsi_channel_tx_queued()
44 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_completed() local
47 endpoint = ipa->channel_map[channel_id]; in ipa_gsi_channel_tx_completed()
H A Dipa_sysfs.c9 #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()
48 struct ipa *ipa = dev_get_drvdata(dev); in version_show() local
50 return sysfs_emit(buf, "%s\n", ipa_version_string(ipa)); in version_show()
64 static const char *ipa_offload_string(struct ipa *ipa) in ipa_offload_string() argument
66 return ipa->version < IPA_VERSION_4_5 ? "MAPv4" : "MAPv5"; in ipa_offload_string()
72 struct ipa *ipa = dev_get_drvdata(dev); in rx_offload_show() local
74 return sysfs_emit(buf, "%s\n", ipa_offload_string(ipa)); in rx_offload_show()
82 struct ipa *ipa = dev_get_drvdata(dev); in tx_offload_show() local
[all …]
/linux/Documentation/ABI/testing/
H A 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 …]

1234567