Beispiel #1
0
int escore_vs_init(struct escore_priv *escore)
{
	int rc = 0;

	struct escore_voice_sense *voice_sense;
	voice_sense = (struct escore_voice_sense *)
			kmalloc(sizeof(struct escore_voice_sense), GFP_KERNEL);
	if (!voice_sense) {
		rc = -ENOMEM;
		goto voice_sense_alloc_err;
	}

	escore->voice_sense = (void *)voice_sense;

	/* Initialize variables */
	voice_sense->cvs_preset = 0;

	voice_sense->vs = (struct firmware *)
			kmalloc(sizeof(struct firmware), GFP_KERNEL);
	if (!voice_sense->vs) {
		rc = -ENOMEM;
		goto vs_alloc_err;
	}

	mutex_init(&voice_sense->vs_event_mutex);

	rc = escore_vs_init_sysfs(escore);
	if (rc) {
		dev_err(escore_priv.dev,
			"failed to create core sysfs entries: %d\n", rc);
	}
	return rc;

vs_alloc_err:
	kfree(voice_sense);
voice_sense_alloc_err:
	return rc;
}
Beispiel #2
0
int escore_vs_init(struct escore_priv *escore)
{
    int rc = 0;
    int i;

    struct escore_voice_sense *voice_sense;
    voice_sense = (struct escore_voice_sense *)
                  kmalloc(sizeof(struct escore_voice_sense), GFP_KERNEL);
    if (!voice_sense) {
        rc = -ENOMEM;
        goto voice_sense_alloc_err;
    }

    escore->voice_sense = (void *)voice_sense;

    /* Initialize variables */
    voice_sense->cvs_preset = 0;
    voice_sense->vs_active_keywords = 0;

    voice_sense->vs = (struct firmware *)
                      kmalloc(sizeof(struct firmware), GFP_KERNEL);
    if (!voice_sense->vs) {
        rc = -ENOMEM;
        goto vs_alloc_err;
    }

    voice_sense->bkg = (struct firmware *)
                       kmalloc(sizeof(struct firmware), GFP_KERNEL);
    if (!voice_sense->bkg) {
        rc = -ENOMEM;
        goto bkg_alloc_err;
    }

    for (i = 0; i < MAX_NO_OF_VS_KW; i++) {
        voice_sense->kw[i] = (struct firmware *)
                             kmalloc(sizeof(struct firmware), GFP_KERNEL);
        if (!voice_sense->kw[i]) {
            rc = -ENOMEM;
            goto kw_alloc_err;
        }
    }

    mutex_init(&voice_sense->vs_event_mutex);

    rc = escore_vs_init_sysfs(escore);
    if (rc) {
        dev_err(escore_priv.dev,
                "failed to create core sysfs entries: %d\n", rc);
        goto sysfs_init_err;
    }

    escore->vs_ops.escore_is_voicesense_sleep_enable =
        escore_vs_sleep_enable;
    escore->vs_ops.escore_voicesense_sleep = escore_voicesense_sleep;
    escore->vs_ops.escore_voicesense_wakeup = escore_vs_wakeup;

    return rc;

kw_alloc_err:
    kfree(voice_sense->bkg);
    while (i--)
        kfree(voice_sense->kw[i]);
bkg_alloc_err:
sysfs_init_err:
    kfree(voice_sense->vs);
vs_alloc_err:
    kfree(voice_sense);
voice_sense_alloc_err:
    return rc;
}