Lines Matching +full:data +full:- +full:addr
5 * Copyright (C) 2009 - 2012 Paul Mundt
16 void _intc_enable(struct irq_data *data, unsigned long handle) in _intc_enable() argument
18 unsigned int irq = data->irq; in _intc_enable()
20 unsigned long addr; in _intc_enable() local
25 if (!cpumask_test_cpu(cpu, irq_data_get_affinity_mask(data))) in _intc_enable()
28 addr = INTC_REG(d, _INTC_ADDR_E(handle), cpu); in _intc_enable()
29 intc_enable_fns[_INTC_MODE(handle)](addr, handle, intc_reg_fns\ in _intc_enable()
36 static void intc_enable(struct irq_data *data) in intc_enable() argument
38 _intc_enable(data, (unsigned long)irq_data_get_irq_chip_data(data)); in intc_enable()
41 static void intc_disable(struct irq_data *data) in intc_disable() argument
43 unsigned int irq = data->irq; in intc_disable()
45 unsigned long handle = (unsigned long)irq_data_get_irq_chip_data(data); in intc_disable()
46 unsigned long addr; in intc_disable() local
53 if (!cpumask_test_cpu(cpu, irq_data_get_affinity_mask(data))) in intc_disable()
56 addr = INTC_REG(d, _INTC_ADDR_D(handle), cpu); in intc_disable()
57 intc_disable_fns[_INTC_MODE(handle)](addr, handle,intc_reg_fns\ in intc_disable()
68 static int intc_set_affinity(struct irq_data *data, in intc_set_affinity() argument
73 return -1; in intc_set_affinity()
75 irq_data_update_affinity(data, cpumask); in intc_set_affinity()
81 static void intc_mask_ack(struct irq_data *data) in intc_mask_ack() argument
83 unsigned int irq = data->irq; in intc_mask_ack()
86 void __iomem *addr; in intc_mask_ack() local
88 intc_disable(data); in intc_mask_ack()
94 addr = (void __iomem *)INTC_REG(d, _INTC_ADDR_D(handle), 0); in intc_mask_ack()
99 __raw_readb(addr); in intc_mask_ack()
100 __raw_writeb(0xff ^ value, addr); in intc_mask_ack()
103 __raw_readw(addr); in intc_mask_ack()
104 __raw_writew(0xffff ^ value, addr); in intc_mask_ack()
107 __raw_readl(addr); in intc_mask_ack()
108 __raw_writel(0xffffffff ^ value, addr); in intc_mask_ack()
132 struct irq_data *data = irq_get_irq_data(irq); in intc_set_priority() local
136 return -EINVAL; in intc_set_priority()
138 ihp = intc_find_irq(d->prio, d->nr_prio, irq); in intc_set_priority()
140 if (prio >= (1 << _INTC_WIDTH(ihp->handle))) in intc_set_priority()
141 return -EINVAL; in intc_set_priority()
150 if (_INTC_FN(ihp->handle) != REG_FN_ERR) in intc_set_priority()
151 _intc_enable(data, ihp->handle); in intc_set_priority()
169 #if defined(CONFIG_ARM) /* all recent SH-Mobile / R-Mobile ARM support this */
174 static int intc_set_type(struct irq_data *data, unsigned int type) in intc_set_type() argument
176 unsigned int irq = data->irq; in intc_set_type()
180 unsigned long addr; in intc_set_type() local
183 return -EINVAL; in intc_set_type()
187 ihp = intc_find_irq(d->sense, d->nr_sense, irq); in intc_set_type()
189 /* PINT has 2-bit sense registers, should fail on EDGE_BOTH */ in intc_set_type()
190 if (value >= (1 << _INTC_WIDTH(ihp->handle))) in intc_set_type()
191 return -EINVAL; in intc_set_type()
193 addr = INTC_REG(d, _INTC_ADDR_E(ihp->handle), 0); in intc_set_type()
194 intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle, value); in intc_set_type()