mirror of
				https://github.com/DigitalDevices/dddvb.git
				synced 2025-03-01 10:35:23 +00:00 
			
		
		
		
	Merge branch 'internal'
This commit is contained in:
		| @@ -2336,15 +2336,9 @@ static void input_write_dvb(struct ddb_input *input, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| #ifdef DDB_USE_WORK | ||||
| static void input_work(struct work_struct *work) | ||||
| { | ||||
| 	struct ddb_dma *dma = container_of(work, struct ddb_dma, work); | ||||
| #else | ||||
| static void input_tasklet(unsigned long data) | ||||
| { | ||||
| 	struct ddb_dma *dma = (struct ddb_dma *)data; | ||||
| #endif | ||||
| 	struct ddb_input *input = (struct ddb_input *)dma->io; | ||||
| 	struct ddb *dev = input->port->dev; | ||||
| 	unsigned long flags; | ||||
| @@ -2377,17 +2371,10 @@ static void input_handler(unsigned long data) | ||||
| 	 * just copy pointers and ACK. So, there is no need to go | ||||
| 	 * through the tasklet scheduler. | ||||
| 	 */ | ||||
| 	#ifdef DDB_USE_WORK | ||||
| 	if (input->redi) | ||||
| 		queue_work(ddb_wq, &dma->work); | ||||
| 	else | ||||
| 		input_work(&dma->work); | ||||
| 	#else | ||||
| 	if (input->redi) | ||||
| 		tasklet_schedule(&dma->tasklet); | ||||
| 	else | ||||
| 		input_tasklet(data); | ||||
| 	#endif | ||||
| } | ||||
|  | ||||
| #else | ||||
| @@ -2396,23 +2383,13 @@ static void input_handler(void *data) | ||||
| 	struct ddb_input *input = (struct ddb_input *)data; | ||||
| 	struct ddb_dma *dma = input->dma; | ||||
|  | ||||
| #ifdef DDB_USE_WORK | ||||
| 	queue_work(ddb_wq, &dma->work); | ||||
| #else | ||||
| 	input_tasklet((unsigned long)dma); | ||||
| #endif | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #ifdef DDB_USE_WORK | ||||
| static void output_work(struct work_struct *work) | ||||
| { | ||||
| 	struct ddb_dma *dma = container_of(work, struct ddb_dma, work); | ||||
| #else | ||||
| static void output_tasklet(unsigned long data) | ||||
| { | ||||
| 	struct ddb_dma *dma = (struct ddb_dma *)data; | ||||
| #endif | ||||
| 	struct ddb_output *output = (struct ddb_output *)dma->io; | ||||
| 	struct ddb *dev = output->port->dev; | ||||
| 	unsigned long flags; | ||||
| @@ -2454,11 +2431,7 @@ static void output_handler(void *data) | ||||
| 	struct ddb_output *output = (struct ddb_output *)data; | ||||
| 	struct ddb_dma *dma = output->dma; | ||||
|  | ||||
| #ifdef DDB_USE_WORK | ||||
| 	queue_work(ddb_wq, &dma->work); | ||||
| #else | ||||
| 	tasklet_schedule(&dma->tasklet); | ||||
| #endif | ||||
| } | ||||
| #endif | ||||
|  | ||||
| @@ -2489,11 +2462,7 @@ static void ddb_dma_init(struct ddb_io *io, int nr, int out, int irq_nr) | ||||
| 	spin_lock_init(&dma->lock); | ||||
| 	init_waitqueue_head(&dma->wq); | ||||
| 	if (out) { | ||||
| #ifdef DDB_USE_WORK | ||||
| 		INIT_WORK(&dma->work, output_work); | ||||
| #else | ||||
| 		tasklet_init(&dma->tasklet, output_tasklet, (unsigned long)dma); | ||||
| #endif | ||||
| 		dma->regs = rm->odma->base + rm->odma->size * nr; | ||||
| 		dma->bufregs = rm->odma_buf->base + rm->odma_buf->size * nr; | ||||
| 		if (io->port->dev->link[0].info->type == DDB_MOD && | ||||
| @@ -2507,11 +2476,7 @@ static void ddb_dma_init(struct ddb_io *io, int nr, int out, int irq_nr) | ||||
| 			dma->div = 1; | ||||
| 		} | ||||
| 	} else { | ||||
| #ifdef DDB_USE_WORK | ||||
| 		INIT_WORK(&dma->work, input_work); | ||||
| #else | ||||
| 		tasklet_init(&dma->tasklet, input_tasklet, (unsigned long)dma); | ||||
| #endif | ||||
| 		dma->regs = rm->idma->base + rm->idma->size * nr; | ||||
| 		dma->bufregs = rm->idma_buf->base + rm->idma_buf->size * nr; | ||||
| 		dma->num = dma_buf_num; | ||||
| @@ -2705,21 +2670,12 @@ void ddb_ports_release(struct ddb *dev) | ||||
|  | ||||
| 	for (i = 0; i < dev->port_num; i++) { | ||||
| 		port = &dev->port[i]; | ||||
| #ifdef DDB_USE_WORK | ||||
| 		if (port->input[0] && port->input[0]->dma) | ||||
| 			cancel_work_sync(&port->input[0]->dma->work); | ||||
| 		if (port->input[1] && port->input[1]->dma) | ||||
| 			cancel_work_sync(&port->input[1]->dma->work); | ||||
| 		if (port->output && port->output->dma) | ||||
| 			cancel_work_sync(&port->output->dma->work); | ||||
| #else | ||||
| 		if (port->input[0] && port->input[0]->dma) | ||||
| 			tasklet_kill(&port->input[0]->dma->tasklet); | ||||
| 		if (port->input[1] && port->input[1]->dma) | ||||
| 			tasklet_kill(&port->input[1]->dma->tasklet); | ||||
| 		if (port->output && port->output->dma) | ||||
| 			tasklet_kill(&port->output->dma->tasklet); | ||||
| #endif | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -2823,9 +2779,6 @@ irqreturn_t ddb_irq_handler(int irq, void *dev_id) | ||||
| 			irq_handle_msg(dev, s); | ||||
| 		if (s & 0x0fffff00) { | ||||
| 			irq_handle_io(dev, s); | ||||
| #ifdef DDB_TEST_THREADED | ||||
| 		ret = IRQ_WAKE_THREAD; | ||||
| #endif | ||||
| 		} | ||||
| 	} while ((s = ddbreadl(dev, INTERRUPT_STATUS))); | ||||
|  | ||||
| @@ -2873,15 +2826,6 @@ irqreturn_t ddb_irq_handler_v2(int irq, void *dev_id) | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| #ifdef DDB_TEST_THREADED | ||||
| static irqreturn_t irq_thread(int irq, void *dev_id) | ||||
| { | ||||
| 	/* struct ddb *dev = (struct ddb *) dev_id; */ | ||||
|  | ||||
| 	return IRQ_HANDLED; | ||||
| } | ||||
| #endif | ||||
|  | ||||
| /****************************************************************************/ | ||||
| /****************************************************************************/ | ||||
| /****************************************************************************/ | ||||
|   | ||||
| @@ -255,17 +255,9 @@ static int __devinit ddb_irq_init(struct ddb *dev) | ||||
| 			return stat; | ||||
| 		} | ||||
| 	} else { | ||||
| #ifdef DDB_TEST_THREADED | ||||
| 		stat = request_threaded_irq(pci_irq_vector(dev->pdev, 0), | ||||
| 					    dev->pdev->irq, ddb_irq_handler, | ||||
| 					    irq_thread, | ||||
| 					    irq_flag, | ||||
| 					    "ddbridge", (void *)dev); | ||||
| #else | ||||
| 		stat = request_irq(pci_irq_vector(dev->pdev, 0), | ||||
| 				   ddb_irq_handler, | ||||
| 				   irq_flag, "ddbridge", (void *)dev); | ||||
| #endif | ||||
| 		if (stat < 0) | ||||
| 			return stat; | ||||
| 	} | ||||
|   | ||||
| @@ -23,9 +23,6 @@ | ||||
| #ifndef _DDBRIDGE_H_ | ||||
| #define _DDBRIDGE_H_ | ||||
|  | ||||
| /* #define DDB_USE_WORK */ | ||||
| /*#define DDB_TEST_THREADED*/ | ||||
|  | ||||
| #include <linux/version.h> | ||||
|  | ||||
| #if (KERNEL_VERSION(3, 8, 0) <= LINUX_VERSION_CODE) | ||||
| @@ -205,11 +202,7 @@ struct ddb_dma { | ||||
| 	u32                    div; | ||||
| 	u32                    bufval; | ||||
|  | ||||
| #ifdef DDB_USE_WORK | ||||
| 	struct work_struct     work; | ||||
| #else | ||||
| 	struct tasklet_struct  tasklet; | ||||
| #endif | ||||
| 	spinlock_t             lock; /* DMA lock */ | ||||
| 	wait_queue_head_t      wq; | ||||
| 	int                    running; | ||||
|   | ||||
							
								
								
									
										13
									
								
								lib/ddzap.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								lib/ddzap.c
									
									
									
									
									
								
							| @@ -12,6 +12,7 @@ | ||||
| #include <stdint.h> | ||||
| #include <math.h> | ||||
| #include <time.h> | ||||
| #include <inttypes.h> | ||||
|  | ||||
| char line_start[16] = ""; | ||||
| char line_end[16]   = "\r"; | ||||
| @@ -427,7 +428,10 @@ int main(int argc, char **argv) | ||||
| 			get_ts = 0; | ||||
| 			break; | ||||
| 		case 'h': | ||||
| 		    fprintf(fout,"ddzap [-d delivery_system] [-p polarity] [-c config_dir] [-f frequency(Hz)]\n" | ||||
| 		    fprintf(fout,"ddzap [-d delivery_system] [-p polarity] [-c config_dir]\n" | ||||
| 			       "      [-f frequency(Hz for terr./kHz for SAT)]\n" | ||||
| 			       "      [-m 16APSK/32APSK/64APSK/128APSK/256APSK]\n" | ||||
| 			       "          (only needed for higher modulations than 8PSK) on some cards\n" | ||||
| 			       "      [-b bandwidth(Hz)] [-s symbol_rate(Hz)]\n" | ||||
| 			       "      [-g gold_code] [-r root_code] [-i id] [-n device_num]\n" | ||||
| 			       "      [-o (write dvr to stdout)]\n" | ||||
| @@ -503,9 +507,10 @@ int main(int argc, char **argv) | ||||
| 			str = dddvb_get_strength(fe); | ||||
| 			cnr = dddvb_get_cnr(fe); | ||||
| 			 | ||||
| 			printf("stat=%02x, str=%lld.%03llddB, snr=%lld.%03llddB \n", | ||||
| 			       stat, (long long int)str/1000, (long long int) abs(str%1000), | ||||
| 			       (long long int) cnr/1000, (long long int)abs(cnr%1000)); | ||||
| 			printf("stat=%02x, str=%" PRId64 ".%03udBm, " | ||||
| 			       "snr=%" PRId64 ".%03uddB \n", | ||||
| 			       stat, str/1000, abs(str%1000), | ||||
| 			       cnr/1000, abs(cnr%1000)); | ||||
| 		sleep(1); | ||||
| 		} | ||||
| 	} else { | ||||
|   | ||||
| @@ -41,7 +41,7 @@ int parse_config(struct dddvb *dd, char *name, char *sec, | ||||
| 		memcpy(fname + config_len, "dddvb.conf", 11); | ||||
| 	 | ||||
| 	if ((f = fopen (fname, "r")) == NULL) { | ||||
| 		printf("config file %s not found\n", fname); | ||||
| 		dprintf(2, "config file %s not found\n", fname); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -8,7 +8,7 @@ LIBDDDVB_EXPORTED struct dddvb *global_dd = NULL; | ||||
| LIBDDDVB_EXPORTED pthread_mutex_t dddvb_mutex = PTHREAD_MUTEX_INITIALIZER;  | ||||
|  | ||||
| void __attribute__ ((constructor)) setup(void) { | ||||
| 	printf("SETUP\n"); | ||||
| 	//printf("SETUP\n"); | ||||
| } | ||||
|  | ||||
| LIBDDDVB_EXPORTED struct dddvb_fe *dddvb_fe_alloc_num(struct dddvb *dd, uint32_t type, uint32_t num) | ||||
|   | ||||
| @@ -231,7 +231,7 @@ static int set_en50607(struct dddvb_fe *fe, uint32_t freq, uint32_t sr, | ||||
| 	uint32_t input = 3 & (sat >> 6); | ||||
| 	int fd = fe->fd; | ||||
| 	 | ||||
| 	//printf("input = %u, sat = %u\n", input, sat&0x3f); | ||||
| 	dbgprintf(DEBUG_DVB, "input = %u, sat = %u\n", input, sat&0x3f); | ||||
| 	hor &= 1; | ||||
| 	cmd.msg[1] = slot << 3; | ||||
| 	cmd.msg[1] |= ((t >> 8) & 0x07); | ||||
| @@ -323,7 +323,7 @@ static int tune_sat(struct dddvb_fe *fe) | ||||
|  | ||||
| 		if (input != DDDVB_UNDEF) { | ||||
| 			input = 3 & (input >> 6); | ||||
| 			printf("input = %u\n", input); | ||||
| 			dbgprintf(DEBUG_DVB, "input = %u\n", input); | ||||
| 		} | ||||
| 		diseqc(fe->fd, lnb, fe->param.param[PARAM_POL], hi); | ||||
| 		set_fe_input(fe, freq, fe->param.param[PARAM_SR], ds, input); | ||||
| @@ -349,7 +349,7 @@ static int tune_c(struct dddvb_fe *fe) | ||||
| 	struct dtv_properties c; | ||||
| 	int ret; | ||||
|  | ||||
| 	printf("tune_c()\n"); | ||||
| 	dbgprintf(DEBUG_DVB, "tune_c()\n"); | ||||
| 	set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBC_ANNEX_A); | ||||
|  | ||||
| 	c.num = ARRAY_SIZE(p); | ||||
| @@ -376,7 +376,7 @@ static int tune_j83b(struct dddvb_fe *fe) | ||||
| 	struct dtv_properties c; | ||||
| 	int ret; | ||||
|  | ||||
| 	printf("tune_j83b()\n"); | ||||
| 	dbgprintf(DEBUG_DVB, "tune_j83b()\n"); | ||||
| 	set_property(fe->fd, DTV_DELIVERY_SYSTEM, SYS_DVBC_ANNEX_B); | ||||
|  | ||||
| 	c.num = ARRAY_SIZE(p); | ||||
| @@ -542,7 +542,7 @@ static int tune(struct dddvb_fe *fe) | ||||
| { | ||||
| 	int ret; | ||||
|  | ||||
| 	printf("tune()\n"); | ||||
| 	dbgprintf(DEBUG_DVB, "tune()\n"); | ||||
| 	switch (fe->param.param[PARAM_MSYS]) { | ||||
| 	case SYS_DVBS: | ||||
| 	case SYS_DVBS2: | ||||
|   | ||||
| @@ -13,7 +13,7 @@ int sendlen(int sock, char *buf, int len) | ||||
|  | ||||
| 	for (todo = len; todo; todo -= done, buf += done) | ||||
| 		if ((done = send(sock, buf, todo, 0)) < 0) { | ||||
| 			printf("sendlen error\n"); | ||||
| 			dprintf(2, "sendlen error\n"); | ||||
| 			return done; | ||||
| 		} | ||||
| 	return len; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user