mirror of
				https://github.com/DigitalDevices/dddvb.git
				synced 2025-03-01 10:35:23 +00:00 
			
		
		
		
	add defines to simply IRQ handler
This commit is contained in:
		| @@ -2709,7 +2709,17 @@ void ddb_ports_release(struct ddb *dev) | ||||
| 		dev->link[0].irq[_n].handler(dev->link[0].irq[_n].data); }			\ | ||||
| 	while (0) | ||||
|  | ||||
| #define IRQ_HANDLE_BYTE(_shift) { \ | ||||
| #define IRQ_HANDLE_NIBBLE(_shift) { \ | ||||
| 	if (s & (0x0000000f << ((_shift) & 0x1f))) { \ | ||||
| 		IRQ_HANDLE(0 + (_shift)); \ | ||||
| 		IRQ_HANDLE(1 + (_shift)); \ | ||||
| 		IRQ_HANDLE(2 + (_shift)); \ | ||||
| 		IRQ_HANDLE(3 + (_shift)); \ | ||||
| 	} \ | ||||
| } | ||||
|  | ||||
|  | ||||
| #define IRQ_HANDLE_BYTE(_shift) {		     \ | ||||
| 	if (s & (0x000000ff << ((_shift) & 0x1f))) { \ | ||||
| 		IRQ_HANDLE(0 + (_shift)); \ | ||||
| 		IRQ_HANDLE(1 + (_shift)); \ | ||||
| @@ -2725,51 +2735,16 @@ void ddb_ports_release(struct ddb *dev) | ||||
| static void irq_handle_msg(struct ddb *dev, u32 s) | ||||
| { | ||||
| 	dev->i2c_irq++; | ||||
| 	IRQ_HANDLE(0); | ||||
| 	IRQ_HANDLE(1); | ||||
| 	IRQ_HANDLE(2); | ||||
| 	IRQ_HANDLE(3); | ||||
| 	IRQ_HANDLE_NIBBLE(0); | ||||
| } | ||||
|  | ||||
| static void irq_handle_io(struct ddb *dev, u32 s) | ||||
| { | ||||
| 	dev->ts_irq++; | ||||
| 	if ((s & 0x000000f0)) { | ||||
| 		IRQ_HANDLE(4); | ||||
| 		IRQ_HANDLE(5); | ||||
| 		IRQ_HANDLE(6); | ||||
| 		IRQ_HANDLE(7); | ||||
| 	} | ||||
| 	if ((s & 0x0000ff00)) { | ||||
| 		IRQ_HANDLE(8); | ||||
| 		IRQ_HANDLE(9); | ||||
| 		IRQ_HANDLE(10); | ||||
| 		IRQ_HANDLE(11); | ||||
| 		IRQ_HANDLE(12); | ||||
| 		IRQ_HANDLE(13); | ||||
| 		IRQ_HANDLE(14); | ||||
| 		IRQ_HANDLE(15); | ||||
| 	} | ||||
| 	if ((s & 0x00ff0000)) { | ||||
| 		IRQ_HANDLE(16); | ||||
| 		IRQ_HANDLE(17); | ||||
| 		IRQ_HANDLE(18); | ||||
| 		IRQ_HANDLE(19); | ||||
| 		IRQ_HANDLE(20); | ||||
| 		IRQ_HANDLE(21); | ||||
| 		IRQ_HANDLE(22); | ||||
| 		IRQ_HANDLE(23); | ||||
| 	} | ||||
| 	if ((s & 0xff000000)) { | ||||
| 		IRQ_HANDLE(24); | ||||
| 		IRQ_HANDLE(25); | ||||
| 		IRQ_HANDLE(26); | ||||
| 		IRQ_HANDLE(27); | ||||
| 		IRQ_HANDLE(28); | ||||
| 		IRQ_HANDLE(29); | ||||
| 		IRQ_HANDLE(30); | ||||
| 		IRQ_HANDLE(31); | ||||
| 	} | ||||
| 	IRQ_HANDLE_NIBBLE(4); | ||||
| 	IRQ_HANDLE_BYTE(8); | ||||
| 	IRQ_HANDLE_BYTE(16); | ||||
| 	IRQ_HANDLE_BYTE(24); | ||||
| } | ||||
|  | ||||
| irqreturn_t ddb_irq_handler0(int irq, void *dev_id) | ||||
| @@ -2842,46 +2817,10 @@ static irqreturn_t irq_handle_v2_n(struct ddb *dev, u32 n) | ||||
| 		return IRQ_NONE; | ||||
| 	ddbwritel(dev, s, reg); | ||||
|  | ||||
| 	if ((s & 0x000000ff)) { | ||||
| 		IRQ_HANDLE(0 + off); | ||||
| 		IRQ_HANDLE(1 + off); | ||||
| 		IRQ_HANDLE(2 + off); | ||||
| 		IRQ_HANDLE(3 + off); | ||||
| 		IRQ_HANDLE(4 + off); | ||||
| 		IRQ_HANDLE(5 + off); | ||||
| 		IRQ_HANDLE(6 + off); | ||||
| 		IRQ_HANDLE(7 + off); | ||||
| 	} | ||||
| 	if ((s & 0x0000ff00)) { | ||||
| 		IRQ_HANDLE(8 + off); | ||||
| 		IRQ_HANDLE(9 + off); | ||||
| 		IRQ_HANDLE(10 + off); | ||||
| 		IRQ_HANDLE(11 + off); | ||||
| 		IRQ_HANDLE(12 + off); | ||||
| 		IRQ_HANDLE(13 + off); | ||||
| 		IRQ_HANDLE(14 + off); | ||||
| 		IRQ_HANDLE(15 + off); | ||||
| 	} | ||||
| 	if ((s & 0x00ff0000)) { | ||||
| 		IRQ_HANDLE(16 + off); | ||||
| 		IRQ_HANDLE(17 + off); | ||||
| 		IRQ_HANDLE(18 + off); | ||||
| 		IRQ_HANDLE(19 + off); | ||||
| 		IRQ_HANDLE(20 + off); | ||||
| 		IRQ_HANDLE(21 + off); | ||||
| 		IRQ_HANDLE(22 + off); | ||||
| 		IRQ_HANDLE(23 + off); | ||||
| 	} | ||||
| 	if ((s & 0xff000000)) { | ||||
| 		IRQ_HANDLE(24 + off); | ||||
| 		IRQ_HANDLE(25 + off); | ||||
| 		IRQ_HANDLE(26 + off); | ||||
| 		IRQ_HANDLE(27 + off); | ||||
| 		IRQ_HANDLE(28 + off); | ||||
| 		IRQ_HANDLE(29 + off); | ||||
| 		IRQ_HANDLE(30 + off); | ||||
| 		IRQ_HANDLE(31 + off); | ||||
| 	} | ||||
| 	IRQ_HANDLE_BYTE(0 + off); | ||||
| 	IRQ_HANDLE_BYTE(8 + off); | ||||
| 	IRQ_HANDLE_BYTE(16 + off); | ||||
| 	IRQ_HANDLE_BYTE(24 + off); | ||||
| 	return IRQ_HANDLED; | ||||
| } | ||||
|  | ||||
| @@ -2903,10 +2842,7 @@ irqreturn_t ddb_irq_handler_v2(int irq, void *dev_id) | ||||
| 			irq_handle_v2_n(dev, 2); | ||||
| 		if (s & 0x00000004) | ||||
| 			irq_handle_v2_n(dev, 3); | ||||
| 		IRQ_HANDLE(8); | ||||
| 		IRQ_HANDLE(9); | ||||
| 		IRQ_HANDLE(10); | ||||
| 		IRQ_HANDLE(11); | ||||
| 		IRQ_HANDLE_NIBBLE(8); | ||||
| 	} while ((s = 0xffff & ddbreadl(dev, INTERRUPT_V2_STATUS))); | ||||
|  | ||||
| 	return ret; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user