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; }