Example #1
0
  int acc_driver_add(struct acc_init_info* obj) 
{
    	int err=0;
	int i =0;
	
	ACC_FUN();

	for(i =0; i < MAX_CHOOSE_G_NUM; i++ )
	{
		if(i == 0){
			ACC_LOG("register gensor driver for the first time\n");
			if(platform_driver_register(&gsensor_driver))
			{
				ACC_ERR("failed to register gensor driver already exist\n");
			}
		}
		
	    if(NULL == gsensor_init_list[i])
	    {
	      obj->platform_diver_addr = &gsensor_driver;
	      gsensor_init_list[i] = obj;
		  break;
	    }
	}
	if(NULL==gsensor_init_list[i])
	{
	   ACC_ERR("ACC driver add err \n");
	   err=-1;
	}
	
	return err;
}
static int __init acc_init(void)
{
    ACC_FUN();
    if(platform_driver_register(&acc_driver))
    {
        ACC_ERR("failed to register acc driver\n");
        return -ENODEV;
    }
    return 0;
}
static int acc_remove(struct platform_device *pdev)
{
    int err=0;
    ACC_FUN(f);
    input_unregister_device(acc_context_obj->idev);
    sysfs_remove_group(&acc_context_obj->idev->dev.kobj,
                &acc_attribute_group);
    if((err = misc_deregister(&acc_context_obj->mdev)))
    {
        ACC_ERR("misc_deregister fail: %d\n", err);
    }
    kfree(acc_context_obj);
    return 0;
}