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