Lines Matching defs:msgr
32 static inline void _mpic_msgr_mer_write(struct mpic_msgr *msgr, u32 value)
34 out_be32(msgr->mer, value);
37 static inline u32 _mpic_msgr_mer_read(struct mpic_msgr *msgr)
39 return in_be32(msgr->mer);
42 static inline void _mpic_msgr_disable(struct mpic_msgr *msgr)
44 u32 mer = _mpic_msgr_mer_read(msgr);
46 _mpic_msgr_mer_write(msgr, mer & ~(1 << msgr->num));
52 struct mpic_msgr *msgr;
55 msgr = ERR_PTR(-EBUSY);
61 msgr = mpic_msgrs[reg_num];
62 if (msgr->in_use == MSGR_FREE)
63 msgr->in_use = MSGR_INUSE;
66 return msgr;
70 void mpic_msgr_put(struct mpic_msgr *msgr)
74 raw_spin_lock_irqsave(&msgr->lock, flags);
75 msgr->in_use = MSGR_FREE;
76 _mpic_msgr_disable(msgr);
77 raw_spin_unlock_irqrestore(&msgr->lock, flags);
81 void mpic_msgr_enable(struct mpic_msgr *msgr)
86 raw_spin_lock_irqsave(&msgr->lock, flags);
87 mer = _mpic_msgr_mer_read(msgr);
88 _mpic_msgr_mer_write(msgr, mer | (1 << msgr->num));
89 raw_spin_unlock_irqrestore(&msgr->lock, flags);
93 void mpic_msgr_disable(struct mpic_msgr *msgr)
97 raw_spin_lock_irqsave(&msgr->lock, flags);
98 _mpic_msgr_disable(msgr);
99 raw_spin_unlock_irqrestore(&msgr->lock, flags);
119 snprintf(buf, sizeof(buf), "mpic-msgr-block%d", count);
151 snprintf(buf, sizeof(buf), "mpic-msgr-block%d", index);
222 prop = of_get_property(np, "mpic-msgr-receive-mask", NULL);
227 struct mpic_msgr *msgr;
230 msgr = kzalloc(sizeof(struct mpic_msgr), GFP_KERNEL);
231 if (!msgr) {
237 msgr->base = msgr_block_addr + i * MPIC_MSGR_STRIDE;
238 msgr->mer = msgr->base + MPIC_MSGR_MER_OFFSET;
239 msgr->in_use = MSGR_FREE;
240 msgr->num = i;
241 raw_spin_lock_init(&msgr->lock);
244 msgr->irq = irq_of_parse_and_map(np, irq_index);
245 if (!msgr->irq) {
248 kfree(msgr);
253 msgr->irq = 0;
256 mpic_msgrs[reg_number] = msgr;
257 mpic_msgr_disable(msgr);
259 reg_number, msgr->irq);
268 .compatible = "fsl,mpic-v3.1-msgr",
276 .name = "mpic-msgr",