~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to arch/mips/txx9/rbtx4927/irq.c

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno
  • Date: 2011-06-07 12:14:05 UTC
  • mfrom: (43.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110607121405-i3h1rd7nrnd2b73h
Tags: 2.6.39-2
[ Ben Hutchings ]
* [x86] Enable BACKLIGHT_APPLE, replacing BACKLIGHT_MBP_NVIDIA
  (Closes: #627492)
* cgroups: Disable memory resource controller by default. Allow it
  to be enabled using kernel parameter 'cgroup_enable=memory'.
* rt2800usb: Enable support for more USB devices including
  Linksys WUSB600N (Closes: #596626) (this change was accidentally
  omitted from 2.6.39-1)
* [x86] Remove Celeron from list of processors supporting PAE. Most
  'Celeron M' models do not.
* Update debconf template translations:
  - Swedish (Martin Bagge) (Closes: #628932)
  - French (David Prévot) (Closes: #628191)
* aufs: Update for 2.6.39 (Closes: #627837)
* Add stable 2.6.39.1, including:
  - ext4: dont set PageUptodate in ext4_end_bio()
  - pata_cmd64x: fix boot crash on parisc (Closes: #622997, #622745)
  - ext3: Fix fs corruption when make_indexed_dir() fails
  - netfilter: nf_ct_sip: validate Content-Length in TCP SIP messages
  - sctp: fix race between sctp_bind_addr_free() and
    sctp_bind_addr_conflict()
  - sctp: fix memory leak of the ASCONF queue when free asoc
  - md/bitmap: fix saving of events_cleared and other state
  - cdc_acm: Fix oops when Droids MuIn LCD is connected
  - cx88: Fix conversion from BKL to fine-grained locks (Closes: #619827)
  - keys: Set cred->user_ns in key_replace_session_keyring (CVE-2011-2184)
  - tmpfs: fix race between truncate and writepage
  - nfs41: Correct offset for LAYOUTCOMMIT
  - xen/mmu: fix a race window causing leave_mm BUG()
  - ext4: fix possible use-after-free in ext4_remove_li_request()
  For the complete list of changes, see:
   http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.39.1
* Bump ABI to 2
* netfilter: Enable IP_SET, IP_SET_BITMAP_IP, IP_SET_BITMAP_IPMAC,
  IP_SET_BITMAP_PORT, IP_SET_HASH_IP, IP_SET_HASH_IPPORT,
  IP_SET_HASH_IPPORTIP, IP_SET_HASH_IPPORTNET, IP_SET_HASH_NET,
  IP_SET_HASH_NETPORT, IP_SET_LIST_SET, NETFILTER_XT_SET as modules
  (Closes: #629401)

[ Aurelien Jarno ]
* [mipsel/loongson-2f] Disable_SCSI_LPFC to workaround GCC ICE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
117
117
#include <asm/txx9/generic.h>
118
118
#include <asm/txx9/rbtx4927.h>
119
119
 
120
 
static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq);
121
 
static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq);
122
 
 
123
 
#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC"
124
 
static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
125
 
        .name = TOSHIBA_RBTX4927_IOC_NAME,
126
 
        .ack = toshiba_rbtx4927_irq_ioc_disable,
127
 
        .mask = toshiba_rbtx4927_irq_ioc_disable,
128
 
        .mask_ack = toshiba_rbtx4927_irq_ioc_disable,
129
 
        .unmask = toshiba_rbtx4927_irq_ioc_enable,
130
 
};
131
 
 
132
120
static int toshiba_rbtx4927_irq_nested(int sw_irq)
133
121
{
134
122
        u8 level3;
139
127
        return RBTX4927_IRQ_IOC + __fls8(level3);
140
128
}
141
129
 
 
130
static void toshiba_rbtx4927_irq_ioc_enable(struct irq_data *d)
 
131
{
 
132
        unsigned char v;
 
133
 
 
134
        v = readb(rbtx4927_imask_addr);
 
135
        v |= (1 << (d->irq - RBTX4927_IRQ_IOC));
 
136
        writeb(v, rbtx4927_imask_addr);
 
137
}
 
138
 
 
139
static void toshiba_rbtx4927_irq_ioc_disable(struct irq_data *d)
 
140
{
 
141
        unsigned char v;
 
142
 
 
143
        v = readb(rbtx4927_imask_addr);
 
144
        v &= ~(1 << (d->irq - RBTX4927_IRQ_IOC));
 
145
        writeb(v, rbtx4927_imask_addr);
 
146
        mmiowb();
 
147
}
 
148
 
 
149
#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC"
 
150
static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
 
151
        .name = TOSHIBA_RBTX4927_IOC_NAME,
 
152
        .irq_mask = toshiba_rbtx4927_irq_ioc_disable,
 
153
        .irq_unmask = toshiba_rbtx4927_irq_ioc_enable,
 
154
};
 
155
 
142
156
static void __init toshiba_rbtx4927_irq_ioc_init(void)
143
157
{
144
158
        int i;
150
164
 
151
165
        for (i = RBTX4927_IRQ_IOC;
152
166
             i < RBTX4927_IRQ_IOC + RBTX4927_NR_IRQ_IOC; i++)
153
 
                set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type,
 
167
                irq_set_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type,
154
168
                                         handle_level_irq);
155
 
        set_irq_chained_handler(RBTX4927_IRQ_IOCINT, handle_simple_irq);
156
 
}
157
 
 
158
 
static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq)
159
 
{
160
 
        unsigned char v;
161
 
 
162
 
        v = readb(rbtx4927_imask_addr);
163
 
        v |= (1 << (irq - RBTX4927_IRQ_IOC));
164
 
        writeb(v, rbtx4927_imask_addr);
165
 
}
166
 
 
167
 
static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq)
168
 
{
169
 
        unsigned char v;
170
 
 
171
 
        v = readb(rbtx4927_imask_addr);
172
 
        v &= ~(1 << (irq - RBTX4927_IRQ_IOC));
173
 
        writeb(v, rbtx4927_imask_addr);
174
 
        mmiowb();
175
 
}
176
 
 
 
169
        irq_set_chained_handler(RBTX4927_IRQ_IOCINT, handle_simple_irq);
 
170
}
177
171
 
178
172
static int rbtx4927_irq_dispatch(int pending)
179
173
{
200
194
        tx4927_irq_init();
201
195
        toshiba_rbtx4927_irq_ioc_init();
202
196
        /* Onboard 10M Ether: High Active */
203
 
        set_irq_type(RBTX4927_RTL_8019_IRQ, IRQF_TRIGGER_HIGH);
 
197
        irq_set_irq_type(RBTX4927_RTL_8019_IRQ, IRQF_TRIGGER_HIGH);
204
198
}