Lines Matching refs:uic

3  * arch/powerpc/sysdev/uic.c
38 struct uic *primary_uic;
40 struct uic {
52 struct uic *uic = irq_data_get_irq_chip_data(d);
58 raw_spin_lock_irqsave(&uic->lock, flags);
61 mtdcr(uic->dcrbase + UIC_SR, sr);
62 er = mfdcr(uic->dcrbase + UIC_ER);
64 mtdcr(uic->dcrbase + UIC_ER, er);
65 raw_spin_unlock_irqrestore(&uic->lock, flags);
70 struct uic *uic = irq_data_get_irq_chip_data(d);
75 raw_spin_lock_irqsave(&uic->lock, flags);
76 er = mfdcr(uic->dcrbase + UIC_ER);
78 mtdcr(uic->dcrbase + UIC_ER, er);
79 raw_spin_unlock_irqrestore(&uic->lock, flags);
84 struct uic *uic = irq_data_get_irq_chip_data(d);
88 raw_spin_lock_irqsave(&uic->lock, flags);
89 mtdcr(uic->dcrbase + UIC_SR, 1 << (31-src));
90 raw_spin_unlock_irqrestore(&uic->lock, flags);
95 struct uic *uic = irq_data_get_irq_chip_data(d);
101 raw_spin_lock_irqsave(&uic->lock, flags);
102 er = mfdcr(uic->dcrbase + UIC_ER);
104 mtdcr(uic->dcrbase + UIC_ER, er);
114 mtdcr(uic->dcrbase + UIC_SR, sr);
115 raw_spin_unlock_irqrestore(&uic->lock, flags);
120 struct uic *uic = irq_data_get_irq_chip_data(d);
149 raw_spin_lock_irqsave(&uic->lock, flags);
150 tr = mfdcr(uic->dcrbase + UIC_TR);
151 pr = mfdcr(uic->dcrbase + UIC_PR);
155 mtdcr(uic->dcrbase + UIC_PR, pr);
156 mtdcr(uic->dcrbase + UIC_TR, tr);
157 mtdcr(uic->dcrbase + UIC_SR, ~mask);
159 raw_spin_unlock_irqrestore(&uic->lock, flags);
176 struct uic *uic = h->host_data;
178 irq_set_chip_data(virq, uic);
198 struct uic *uic = irq_desc_get_handler_data(desc);
210 msr = mfdcr(uic->dcrbase + UIC_MSR);
216 subvirq = irq_linear_revmap(uic->irqhost, src);
228 static struct uic * __init uic_init_one(struct device_node *node)
230 struct uic *uic;
234 BUG_ON(! of_device_is_compatible(node, "ibm,uic"));
236 uic = kzalloc(sizeof(*uic), GFP_KERNEL);
237 if (! uic)
240 raw_spin_lock_init(&uic->lock);
243 printk(KERN_ERR "uic: Device node %pOF has missing or invalid "
247 uic->index = *indexp;
251 printk(KERN_ERR "uic: Device node %pOF has missing or invalid "
255 uic->dcrbase = *dcrreg;
257 uic->irqhost = irq_domain_add_linear(node, NR_UIC_INTS, &uic_host_ops,
258 uic);
259 if (! uic->irqhost)
263 mtdcr(uic->dcrbase + UIC_ER, 0);
264 mtdcr(uic->dcrbase + UIC_CR, 0);
265 mtdcr(uic->dcrbase + UIC_TR, 0);
267 mtdcr(uic->dcrbase + UIC_SR, 0xffffffff);
269 printk ("UIC%d (%d IRQ sources) at DCR 0x%x\n", uic->index,
270 NR_UIC_INTS, uic->dcrbase);
272 return uic;
278 struct uic *uic;
282 for_each_compatible_node(np, NULL, "ibm,uic") {
298 for_each_compatible_node(np, NULL, "ibm,uic") {
304 uic = uic_init_one(np);
305 if (! uic)
311 irq_set_handler_data(cascade_virq, uic);