sh: intc: Add IRQ trigger bit field check
R-Mobile SoCs such as sh73a0 include PINT blocks in INTC that come with 2-bit IRQ trigger support. Add code to make sure the bit width is checked so 4-bit only modes like for instance EDGE_BOTH will fail for PINT. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
a136d3d85f
commit
52e3124f24
1 changed files with 7 additions and 2 deletions
|
@ -202,11 +202,16 @@ static int intc_set_type(struct irq_data *data, unsigned int type)
|
|||
if (!value)
|
||||
return -EINVAL;
|
||||
|
||||
value &= ~SENSE_VALID_FLAG;
|
||||
|
||||
ihp = intc_find_irq(d->sense, d->nr_sense, irq);
|
||||
if (ihp) {
|
||||
/* PINT has 2-bit sense registers, should fail on EDGE_BOTH */
|
||||
if (value >= (1 << _INTC_WIDTH(ihp->handle)))
|
||||
return -EINVAL;
|
||||
|
||||
addr = INTC_REG(d, _INTC_ADDR_E(ihp->handle), 0);
|
||||
intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle,
|
||||
value & ~SENSE_VALID_FLAG);
|
||||
intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle, value);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue