示例#1
0
static int hcismd_set_enable(const char *val, struct kernel_param *kp)
{
#if 1 /* HTC_BT modify */
	/* note: add get parameter value feature */
	int ret = 0;
	unsigned long enable;

	ret = strict_strtoul(val, 10, &enable);
	if (ret)
		return ret;

	if ( hcismd_set == enable )
		return 0;

	mutex_lock(&hci_smd_enable);

	switch (enable) {

	case 1:
		if (0 == hci_smd_register_dev(&hs))
			hcismd_set = 1;
	break;
	case 0:
		hci_smd_deregister_dev(&hs);
		hcismd_set = 0;
	break;
	default:
		ret = -EFAULT;
	}

	mutex_unlock(&hci_smd_enable);
	return ret;
#else /* QCT original */
	int ret = 0;

	mutex_lock(&hci_smd_enable);

	ret = param_set_int(val, kp);

	if (ret)
		goto done;

	switch (hcismd_set) {

	case 1:
		hci_smd_register_dev(&hs);
	break;
	case 0:
		hci_smd_deregister_dev(&hs);
	break;
	default:
		ret = -EFAULT;
	}

done:
	mutex_unlock(&hci_smd_enable);
	return ret;
#endif /* HTC_BT modify */
}
static int hcismd_set_enable(const char *val, struct kernel_param *kp)
{
	int ret = 0;

	mutex_lock(&hci_smd_enable);

	ret = param_set_int(val, kp);

	if (ret)
		goto done;

	switch (hcismd_set) {

	case 1:
		hci_smd_register_dev(&hs);
	break;
	case 0:
		hci_smd_deregister_dev(&hs);
	break;
	default:
		ret = -EFAULT;
	}

done:
	mutex_unlock(&hci_smd_enable);
	return ret;
}
static void hci_dev_restart(struct work_struct *worker)
{
	mutex_lock(&hci_smd_enable);
	hci_smd_deregister_dev(&hs);
	hci_smd_register_dev(&hs);
	mutex_unlock(&hci_smd_enable);
	kfree(worker);
}
示例#4
0
static int __init hci_smd_init(void)
{
	hci_smd_register_dev(&hs);
	return 0;
}