~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/tty/hvc/hvc_irq.c

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright IBM Corp. 2001,2008
 
3
 *
 
4
 * This file contains the IRQ specific code for hvc_console
 
5
 *
 
6
 */
 
7
 
 
8
#include <linux/interrupt.h>
 
9
 
 
10
#include "hvc_console.h"
 
11
 
 
12
static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance)
 
13
{
 
14
        /* if hvc_poll request a repoll, then kick the hvcd thread */
 
15
        if (hvc_poll(dev_instance))
 
16
                hvc_kick();
 
17
        return IRQ_HANDLED;
 
18
}
 
19
 
 
20
/*
 
21
 * For IRQ based systems these callbacks can be used
 
22
 */
 
23
int notifier_add_irq(struct hvc_struct *hp, int irq)
 
24
{
 
25
        int rc;
 
26
 
 
27
        if (!irq) {
 
28
                hp->irq_requested = 0;
 
29
                return 0;
 
30
        }
 
31
        rc = request_irq(irq, hvc_handle_interrupt, 0,
 
32
                           "hvc_console", hp);
 
33
        if (!rc)
 
34
                hp->irq_requested = 1;
 
35
        return rc;
 
36
}
 
37
 
 
38
void notifier_del_irq(struct hvc_struct *hp, int irq)
 
39
{
 
40
        if (!hp->irq_requested)
 
41
                return;
 
42
        free_irq(irq, hp);
 
43
        hp->irq_requested = 0;
 
44
}
 
45
 
 
46
void notifier_hangup_irq(struct hvc_struct *hp, int irq)
 
47
{
 
48
        notifier_del_irq(hp, irq);
 
49
}