static int usf_open(struct inode *inode, struct file *file) { struct usf_type *usf = NULL; uint16_t dev_ind = 0; int minor = MINOR(inode->i_rdev); dev_ind = add_opened_dev(minor); if (dev_ind == USF_UNDEF_DEV_ID) return -EBUSY; usf = kzalloc(sizeof(struct usf_type), GFP_KERNEL); if (usf == NULL) { pr_err("%s:usf allocation failed\n", __func__); return -ENOMEM; } file->private_data = usf; usf->dev_ind = dev_ind; usf->usf_tx.usf_state = USF_OPENED_STATE; usf->usf_rx.usf_state = USF_OPENED_STATE; usf->usf_tx.us_detect_type = USF_US_DETECT_UNDEF; usf->usf_rx.us_detect_type = USF_US_DETECT_UNDEF; pr_debug("%s:usf in open\n", __func__); return 0; }
static int usf_open(struct inode *inode, struct file *file) { struct usf_type *usf = NULL; uint16_t dev_ind = 0; int minor = MINOR(inode->i_rdev); mutex_lock(&session_lock); dev_ind = add_opened_dev(minor); if (dev_ind == USF_UNDEF_DEV_ID) { mutex_unlock(&session_lock); return -EBUSY; } usf = kzalloc(sizeof(struct usf_type), GFP_KERNEL); if (usf == NULL) { pr_err("%s:usf allocation failed\n", __func__); mutex_unlock(&session_lock); return -ENOMEM; } file->private_data = usf; usf->dev_ind = dev_ind; usf->usf_tx.usf_state = USF_OPENED_STATE; usf->usf_rx.usf_state = USF_OPENED_STATE; usf->usf_tx.us_detect_type = USF_US_DETECT_UNDEF; usf->usf_rx.us_detect_type = USF_US_DETECT_UNDEF; #ifdef SKY_ULTRASOUNDPEN_FEATURE touch_clear_finger(0); #endif pr_debug("%s:usf in open\n", __func__); mutex_unlock(&session_lock); return 0; }