コード例 #1
0
ファイル: irq.c プロジェクト: kzlin129/tt-gpl
static void
s3c_irqext_unmask(unsigned int irqno)
{
	unsigned long bit = s3c_irqext_bit(irqno);
	unsigned long mask;

	mask = __raw_readl(s3c24xx_eintmask);
	mask &= ~bit;
	__raw_writel(mask, s3c24xx_eintmask);

	if (irqno <= IRQ_EINT3) {
		s3c_irq_unmask(irqno);
	} else if (irqno <= IRQ_EINT7) {
		s3c_irq_unmask(IRQ_EINT4t7);
	} else {
		s3c_irq_unmask(IRQ_EINT8t23);
	}
}
コード例 #2
0
ファイル: irq-s3c24xx.c プロジェクト: 020gzh/linux
static void s3c_irq_unmask(struct irq_data *data)
{
	struct s3c_irq_data *irq_data = irq_data_get_irq_chip_data(data);
	struct s3c_irq_intc *intc = irq_data->intc;
	struct s3c_irq_intc *parent_intc = intc->parent;
	unsigned long mask;
	unsigned int irqno;

	mask = __raw_readl(intc->reg_mask);
	mask &= ~(1UL << irq_data->offset);
	__raw_writel(mask, intc->reg_mask);

	if (parent_intc) {
		irqno = irq_find_mapping(parent_intc->domain,
					 irq_data->parent_irq);
		s3c_irq_unmask(irq_get_irq_data(irqno));
	}
}