Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 217334d1 authored by Alex Dubov's avatar Alex Dubov Committed by Pierre Ossman
Browse files

Add dummy_signal_irq function to save check in ISR



Signed-off-by: default avatarAlex Dubov <oakad@yahoo.com>
Signed-off-by: default avatarPierre Ossman <drzeus@drzeus.cx>
parent 50743f4c
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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)
{
	struct tifm_adapter *fm = dev_id;
	struct tifm_dev *sock;
	unsigned int irq_status;
	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);

		for (cnt = 0; cnt <  fm->max_sockets; cnt++) {
			sock = fm->sockets[cnt];
			sock_irq_status = (irq_status >> cnt) &
					(TIFM_IRQ_FIFOMASK | TIFM_IRQ_CARDMASK);

			if (fm->sockets[cnt]) {
				if (sock_irq_status &&
						fm->sockets[cnt]->signal_irq)
					fm->sockets[cnt]->
						signal_irq(fm->sockets[cnt],
							sock_irq_status);
			if (sock) {
				if (sock_irq_status)
					sock->signal_irq(sock, sock_irq_status);

				if (irq_status & (1 << cnt))
					fm->remove_mask |= 1 << cnt;
+8 −0
Original line number Diff line number Diff line
@@ -145,6 +145,12 @@ void tifm_free_device(struct device *dev)
}
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 *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.bus = &tifm_bus_type;
		dev->dev.release = tifm_free_device;
		dev->signal_irq = tifm_dummy_signal_irq;
	}
	return dev;
}
@@ -212,6 +219,7 @@ static int tifm_device_remove(struct device *dev)
	struct tifm_driver *drv = fm_dev->drv;

	if (drv) {
		fm_dev->signal_irq = tifm_dummy_signal_irq;
		if (drv->remove)
			drv->remove(fm_dev);
		fm_dev->drv = NULL;