Lines Matching +full:flags +full:- +full:mask
1 // SPDX-License-Identifier: GPL-2.0-only
24 #define SOCRATES_FPGA_IRQ_MASK ((1 << SOCRATES_FPGA_NUM_IRQS) - 1)
68 unsigned long flags; in socrates_fpga_pic_get_irq() local
79 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_get_irq()
81 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_get_irq()
82 for (i = SOCRATES_FPGA_NUM_IRQS - 1; i >= 0; i--) { in socrates_fpga_pic_get_irq()
104 chip->irq_eoi(&desc->irq_data); in socrates_fpga_pic_cascade()
109 unsigned long flags; in socrates_fpga_pic_ack() local
111 uint32_t mask; in socrates_fpga_pic_ack() local
114 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_ack()
115 mask = socrates_fpga_pic_read(FPGA_PIC_IRQMASK(irq_line)) in socrates_fpga_pic_ack()
117 mask |= (1 << (hwirq + 16)); in socrates_fpga_pic_ack()
118 socrates_fpga_pic_write(FPGA_PIC_IRQMASK(irq_line), mask); in socrates_fpga_pic_ack()
119 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_ack()
124 unsigned long flags; in socrates_fpga_pic_mask() local
127 u32 mask; in socrates_fpga_pic_mask() local
130 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_mask()
131 mask = socrates_fpga_pic_read(FPGA_PIC_IRQMASK(irq_line)) in socrates_fpga_pic_mask()
133 mask &= ~(1 << hwirq); in socrates_fpga_pic_mask()
134 socrates_fpga_pic_write(FPGA_PIC_IRQMASK(irq_line), mask); in socrates_fpga_pic_mask()
135 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_mask()
140 unsigned long flags; in socrates_fpga_pic_mask_ack() local
143 u32 mask; in socrates_fpga_pic_mask_ack() local
146 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_mask_ack()
147 mask = socrates_fpga_pic_read(FPGA_PIC_IRQMASK(irq_line)) in socrates_fpga_pic_mask_ack()
149 mask &= ~(1 << hwirq); in socrates_fpga_pic_mask_ack()
150 mask |= (1 << (hwirq + 16)); in socrates_fpga_pic_mask_ack()
151 socrates_fpga_pic_write(FPGA_PIC_IRQMASK(irq_line), mask); in socrates_fpga_pic_mask_ack()
152 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_mask_ack()
157 unsigned long flags; in socrates_fpga_pic_unmask() local
160 u32 mask; in socrates_fpga_pic_unmask() local
163 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_unmask()
164 mask = socrates_fpga_pic_read(FPGA_PIC_IRQMASK(irq_line)) in socrates_fpga_pic_unmask()
166 mask |= (1 << hwirq); in socrates_fpga_pic_unmask()
167 socrates_fpga_pic_write(FPGA_PIC_IRQMASK(irq_line), mask); in socrates_fpga_pic_unmask()
168 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_unmask()
173 unsigned long flags; in socrates_fpga_pic_eoi() local
176 u32 mask; in socrates_fpga_pic_eoi() local
179 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_eoi()
180 mask = socrates_fpga_pic_read(FPGA_PIC_IRQMASK(irq_line)) in socrates_fpga_pic_eoi()
182 mask |= (1 << (hwirq + 16)); in socrates_fpga_pic_eoi()
183 socrates_fpga_pic_write(FPGA_PIC_IRQMASK(irq_line), mask); in socrates_fpga_pic_eoi()
184 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_eoi()
190 unsigned long flags; in socrates_fpga_pic_set_type() local
193 u32 mask; in socrates_fpga_pic_set_type() local
196 return -EINVAL; in socrates_fpga_pic_set_type()
206 return -EINVAL; in socrates_fpga_pic_set_type()
208 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_set_type()
209 mask = socrates_fpga_pic_read(FPGA_PIC_IRQCFG); in socrates_fpga_pic_set_type()
211 mask |= (1 << hwirq); in socrates_fpga_pic_set_type()
213 mask &= ~(1 << hwirq); in socrates_fpga_pic_set_type()
214 socrates_fpga_pic_write(FPGA_PIC_IRQCFG, mask); in socrates_fpga_pic_set_type()
215 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_set_type()
220 .name = "FPGA-PIC",
247 if (fpga_irq->type == IRQ_TYPE_NONE) { in socrates_fpga_pic_host_xlate()
258 *out_flags = fpga_irq->type; in socrates_fpga_pic_host_xlate()
263 fpga_irq->irq_line = intspec[2]; in socrates_fpga_pic_host_xlate()
277 unsigned long flags; in socrates_fpga_pic_init() local
300 raw_spin_lock_irqsave(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_init()
307 raw_spin_unlock_irqrestore(&socrates_fpga_pic_lock, flags); in socrates_fpga_pic_init()