Lines Matching refs:entry

25  * system in the SoC. The entry belonging to the local system is considered
28 * The subscription matrix consists of N bitmaps per entry, denoting interest
29 * in updates of the entry for each of the N hosts. Upon updating a state bit
33 * The subscription matrix is laid out in entry-major order:
94 * struct smsm_entry - per remote processor entry context
96 * @domain: IRQ domain for this entry, if representing a remote system
101 * @remote_state: pointer to this entry's state bits
103 * entry
131 * smsm_update_bits() - change bit in outgoing entry and inform subscribers
133 * @offset: bit in the entry
136 * Used to set and clear the bits in the outgoing/local entry and inform
151 /* Update the entry */
193 * @data: entry related to this IRQ
200 struct smsm_entry *entry = data;
206 val = readl(entry->remote_state);
207 changed = val ^ xchg(&entry->last_value, val);
209 for_each_set_bit(i, entry->irq_enabled, 32) {
214 if (test_bit(i, entry->irq_rising)) {
215 irq_pin = irq_find_mapping(entry->domain, i);
219 if (test_bit(i, entry->irq_falling)) {
220 irq_pin = irq_find_mapping(entry->domain, i);
238 struct smsm_entry *entry = irq_data_get_irq_chip_data(irqd);
240 struct qcom_smsm *smsm = entry->smsm;
243 if (entry->subscription) {
244 val = readl(entry->subscription + smsm->local_host);
246 writel(val, entry->subscription + smsm->local_host);
249 clear_bit(irq, entry->irq_enabled);
263 struct smsm_entry *entry = irq_data_get_irq_chip_data(irqd);
265 struct qcom_smsm *smsm = entry->smsm;
269 if (readl(entry->remote_state) & BIT(irq))
270 set_bit(irq, &entry->last_value);
272 clear_bit(irq, &entry->last_value);
274 set_bit(irq, entry->irq_enabled);
276 if (entry->subscription) {
277 val = readl(entry->subscription + smsm->local_host);
279 writel(val, entry->subscription + smsm->local_host);
290 struct smsm_entry *entry = irq_data_get_irq_chip_data(irqd);
297 set_bit(irq, entry->irq_rising);
299 clear_bit(irq, entry->irq_rising);
302 set_bit(irq, entry->irq_falling);
304 clear_bit(irq, entry->irq_falling);
318 * @d: IRQ domain representing an entry
326 struct smsm_entry *entry = d->host_data;
329 irq_set_chip_data(irq, entry);
382 * smsm_inbound_entry() - parse DT and set up an entry representing a remote system
384 * @entry: entry context to be set up
385 * @node: dt node containing the entry's properties
388 struct smsm_entry *entry,
403 "smsm", (void *)entry);
409 entry->domain = irq_domain_add_linear(node, 32, &smsm_irq_ops, entry);
410 if (!entry->domain) {
465 struct smsm_entry *entry;
502 dev_err(&pdev->dev, "no state entry\n");
521 dev_err(&pdev->dev, "unable to allocate shared state entry\n");
527 dev_err(&pdev->dev, "Unable to acquire shared state entry\n");
566 dev_err(&pdev->dev, "invalid reg of entry\n");
571 entry = &smsm->entries[id];
573 entry->smsm = smsm;
574 entry->remote_state = states + id;
577 entry->subscription = intr_mask + id * smsm->num_hosts;
578 writel(0, entry->subscription + smsm->local_host);
580 ret = smsm_inbound_entry(smsm, entry, node);