int mag_driver_add(struct mag_init_info* obj) { int err=0; int i =0; MAG_FUN(); for(i =0; i < MAX_CHOOSE_G_NUM; i++ ) { if(i == 0){ MAG_LOG("register mensor driver for the first time\n"); if(platform_driver_register(&msensor_driver)) { MAG_ERR("failed to register msensor driver already exist\n"); } } if(NULL == msensor_init_list[i]) { obj->platform_diver_addr = &msensor_driver; msensor_init_list[i] = obj; break; } } if(NULL==msensor_init_list[i]) { MAG_ERR("MAG driver add err \n"); err =-1; } return err; }
static int __init mag_init(void) { MAG_FUN(); if(platform_driver_register(&mag_driver)) { MAG_ERR("failed to register mag driver\n"); return -ENODEV; } return 0; }
static int mag_remove(struct platform_device *pdev) { MAG_FUN(f); int err=0; input_unregister_device(mag_context_obj->idev); sysfs_remove_group(&mag_context_obj->idev->dev.kobj, &mag_attribute_group); if((err = misc_deregister(&mag_context_obj->mdev))) { MAG_ERR("misc_deregister fail: %d\n", err); } kfree(mag_context_obj); return 0; }
static int __init mag_init(void) { MAG_FUN(); devinfo_msensor = get_deviceinfo_dev(); if (device_create_file(devinfo_msensor, &dev_attr_msensor) < 0) pr_err("Failed to create device file(%s)!\n", dev_attr_msensor.attr.name); if(platform_driver_register(&mag_driver)) { MAG_ERR("failed to register mag driver\n"); return -ENODEV; } return 0; }
int mag_attach(int sensor,struct mag_drv_obj *obj) { int err = 0; MAG_FUN(); //mag_context_obj->drv_obj[sensor] = obj; mag_context_obj->drv_obj[sensor] = kzalloc(sizeof(struct mag_drv_obj), GFP_KERNEL); if(mag_context_obj->drv_obj[sensor] == NULL) { err = -EPERM; MAG_ERR(" mag attatch alloc fail \n"); return err; } memcpy(mag_context_obj->drv_obj[sensor], obj, sizeof(*obj)); if(NULL == mag_context_obj->drv_obj[sensor]) { err =-1; MAG_ERR(" mag attatch fail \n"); } return err; }