Ejemplo n.º 1
0
static ssize_t snd_adie_debug_write(struct file *file, const char __user *buf,
                                    size_t count, loff_t *ppos)
{
    int rc = 0, op = 0;
    int id = 0, adie_block = 0, config = 1;

    sscanf(buf, "%d %d %d %d", &op, &id, &adie_block, &config);
    MM_INFO("\nUser input: op %d id %d block %d config %d\n", op, id,
            adie_block, config);
    switch (op) {
    case ADIE_SVC_REGISTER_CLIENT:
        MM_INFO("ADIE_SVC_REGISTER_CLIENT\n");
        rc = adie_svc_get();
        if (rc >= 0)
            MM_INFO("Client registered: %d\n", rc);
        else
            MM_ERR("Failed registering client\n");
        break;
    case ADIE_SVC_DEREGISTER_CLIENT:
        MM_INFO("ADIE_SVC_DEREGISTER_CLIENT: %d\n", id);
        rc = adie_svc_put(id);
        if (!rc)
            MM_INFO("Client %d deregistered\n", id);
        else
            MM_ERR("Failed unregistering the client: %d\n",	id);
        break;
    case ADIE_SVC_CONFIG_ADIE_BLOCK:
        MM_INFO("ADIE_SVC_CONFIG_ADIE_BLOCK: id %d adie_block %d \
				config %d\n", id, adie_block, config);
        rc =  adie_svc_config_adie_block(id,
                                         (enum adie_block_enum_type)adie_block, (bool)config);
        if (!rc)
            MM_INFO("ADIE block %d %s", adie_block,
                    config ? "enabled\n" : "disabled\n");
        else if (rc == 2)
            MM_INFO("ADIE block %d already in use\n", adie_block);
        else
            MM_ERR("ERROR configuring the ADIE block\n");
        break;
    default:
        MM_INFO("Invalid operation\n");
    }
    return count;
}
Ejemplo n.º 2
0
/** Private functions */
static int seport_platform_register_mic_bias_client(u8 register_client)
{

	int err = 0;

	if (register_client) {
		if (seport_pf_client_id < 0) {
			seport_pf_client_id = adie_svc_get();
			if(seport_pf_client_id < 0) {
				err = -EFAULT;
				goto out;
			}
		} else {
			printk(KERN_WARNING "%s - Client already registered as: %d\n",
			       __func__, seport_pf_client_id);
			err = -EEXIST;
			goto out;
		}

		if (ADIE_SVC_STATUS_FAILURE == seport_pf_client_id ||
		    ADIE_SVC_STATUS_INUSE == seport_pf_client_id) {
			printk(KERN_CRIT "%s - Failed to register client or client " \
			       "already in use\n", __func__);
			err = -ENOMSG;
		}
	} else {
		if (seport_pf_client_id >= 0) {
			(void)adie_svc_put(seport_pf_client_id);
			seport_pf_client_id = -1;
		} else {
			printk(KERN_INFO "%s - Client already deregistered\n",
			       __func__);
			err = -EEXIST;
		}
	}

out:
	return err;
}