Ejemplo n.º 1
0
static int smc_probe(struct platform_device *pdev)
{
	smc_dev_t *smc = NULL;
	int i, ret;
	
	mutex_lock(&smc_lock);
	
	for (i=0; i<SMC_DEV_COUNT; i++) {
		if (!smc_dev[i].init) {
			smc = &smc_dev[i];
			break;
		}
	}
	
	if(smc) {
		smc->init = 1;
		smc->pdev = pdev;
		dev_set_drvdata(&pdev->dev, smc);
	
		if ((ret=smc_dev_init(smc, i))<0) {
			smc = NULL;
		}
	}
	
	mutex_unlock(&smc_lock);
	
	return smc ? 0 : -1;
}
Ejemplo n.º 2
0
static int smc_probe(struct platform_device *pdev)
{
	smc_dev_t *smc = NULL;
	int i, ret;
	
	mutex_lock(&smc_lock);
	
	for (i=0; i<SMC_DEV_COUNT; i++) {
		if (!smc_dev[i].init) {
			smc = &smc_dev[i];
			break;
		}
	}
	
	if(smc) {
		smc->init = 1;
		smc->pdev = pdev;
		dev_set_drvdata(&pdev->dev, smc);
	
		if ((ret=smc_dev_init(smc, i))<0) {
			smc = NULL;
		} else {
			switch_dev_register(&sdev);
			s_smc_task_state = 1;
			s_smc_task = kthread_run(smc_task_handle, (void *)smc, "kthread_smc");
		}
	}

	mutex_unlock(&smc_lock);
	
	return smc ? 0 : -1;
}