Add dummy_signal_irq function to save check in ISR
Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
50743f4cb1
commit
217334d14d
|
@ -71,6 +71,7 @@ static void tifm_7xx1_remove_media(struct work_struct *work)
|
||||||
static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id)
|
static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
struct tifm_adapter *fm = dev_id;
|
struct tifm_adapter *fm = dev_id;
|
||||||
|
struct tifm_dev *sock;
|
||||||
unsigned int irq_status;
|
unsigned int irq_status;
|
||||||
unsigned int sock_irq_status, cnt;
|
unsigned int sock_irq_status, cnt;
|
||||||
|
|
||||||
|
@ -85,15 +86,13 @@ static irqreturn_t tifm_7xx1_isr(int irq, void *dev_id)
|
||||||
writel(TIFM_IRQ_ENABLE, fm->addr + FM_CLEAR_INTERRUPT_ENABLE);
|
writel(TIFM_IRQ_ENABLE, fm->addr + FM_CLEAR_INTERRUPT_ENABLE);
|
||||||
|
|
||||||
for (cnt = 0; cnt < fm->max_sockets; cnt++) {
|
for (cnt = 0; cnt < fm->max_sockets; cnt++) {
|
||||||
|
sock = fm->sockets[cnt];
|
||||||
sock_irq_status = (irq_status >> cnt) &
|
sock_irq_status = (irq_status >> cnt) &
|
||||||
(TIFM_IRQ_FIFOMASK | TIFM_IRQ_CARDMASK);
|
(TIFM_IRQ_FIFOMASK | TIFM_IRQ_CARDMASK);
|
||||||
|
|
||||||
if (fm->sockets[cnt]) {
|
if (sock) {
|
||||||
if (sock_irq_status &&
|
if (sock_irq_status)
|
||||||
fm->sockets[cnt]->signal_irq)
|
sock->signal_irq(sock, sock_irq_status);
|
||||||
fm->sockets[cnt]->
|
|
||||||
signal_irq(fm->sockets[cnt],
|
|
||||||
sock_irq_status);
|
|
||||||
|
|
||||||
if (irq_status & (1 << cnt))
|
if (irq_status & (1 << cnt))
|
||||||
fm->remove_mask |= 1 << cnt;
|
fm->remove_mask |= 1 << cnt;
|
||||||
|
|
|
@ -145,6 +145,12 @@ void tifm_free_device(struct device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(tifm_free_device);
|
EXPORT_SYMBOL(tifm_free_device);
|
||||||
|
|
||||||
|
static void tifm_dummy_signal_irq(struct tifm_dev *sock,
|
||||||
|
unsigned int sock_irq_status)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm)
|
struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm)
|
||||||
{
|
{
|
||||||
struct tifm_dev *dev = kzalloc(sizeof(struct tifm_dev), GFP_KERNEL);
|
struct tifm_dev *dev = kzalloc(sizeof(struct tifm_dev), GFP_KERNEL);
|
||||||
|
@ -155,6 +161,7 @@ struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm)
|
||||||
dev->dev.parent = fm->dev;
|
dev->dev.parent = fm->dev;
|
||||||
dev->dev.bus = &tifm_bus_type;
|
dev->dev.bus = &tifm_bus_type;
|
||||||
dev->dev.release = tifm_free_device;
|
dev->dev.release = tifm_free_device;
|
||||||
|
dev->signal_irq = tifm_dummy_signal_irq;
|
||||||
}
|
}
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
@ -212,6 +219,7 @@ static int tifm_device_remove(struct device *dev)
|
||||||
struct tifm_driver *drv = fm_dev->drv;
|
struct tifm_driver *drv = fm_dev->drv;
|
||||||
|
|
||||||
if (drv) {
|
if (drv) {
|
||||||
|
fm_dev->signal_irq = tifm_dummy_signal_irq;
|
||||||
if (drv->remove)
|
if (drv->remove)
|
||||||
drv->remove(fm_dev);
|
drv->remove(fm_dev);
|
||||||
fm_dev->drv = NULL;
|
fm_dev->drv = NULL;
|
||||||
|
|
Loading…
Reference in New Issue