コード例 #1
0
ファイル: wd.c プロジェクト: AsherBond/ceph-client
/**
 * host_init_wd - mei initialization wd.
 *
 * @dev: the device structure
 * returns -ENENT if wd client cannot be found
 *         -EIO if write has failed
 */
int mei_wd_host_init(struct mei_device *dev)
{
	mei_cl_init(&dev->wd_cl, dev);

	/* look for WD client and connect to it */
	dev->wd_cl.state = MEI_FILE_DISCONNECTED;
	dev->wd_timeout = AMT_WD_DEFAULT_TIMEOUT;

	/* find ME WD client */
	mei_find_me_client_update_filext(dev, &dev->wd_cl,
				&mei_wd_guid, MEI_WD_HOST_CLIENT_ID);

	dev_dbg(&dev->pdev->dev, "wd: check client\n");
	if (MEI_FILE_CONNECTING != dev->wd_cl.state) {
		dev_info(&dev->pdev->dev, "wd: failed to find the client\n");
		return -ENOENT;
	}

	if (mei_connect(dev, &dev->wd_cl)) {
		dev_err(&dev->pdev->dev, "wd: failed to connect to the client\n");
		dev->wd_cl.state = MEI_FILE_DISCONNECTED;
		dev->wd_cl.host_client_id = 0;
		return -EIO;
	}
	dev->wd_cl.timer_count = CONNECT_TIMEOUT;

	return 0;
}
コード例 #2
0
sep_keymaster_return_t send_req_to_fw(const uint8_t * req,
        const uint32_t req_len, const uint8_t * resp, const uint32_t resp_len) {
    sep_keymaster_return_t result = SEP_KEYMASTER_FAILURE;
    int Status = -1;
    MEI_HANDLE *mei_handle = NULL;

    //Connect to the TXEI driver
    mei_handle = mei_connect(&ANDROID_HECI_AGENT_GUID);
    if (!mei_handle) {
        LOGERR("mei_connect failed\n");
        result = SEP_KEYMASTER_HECI_CONNECT_FAILED;
        goto exit;
    }
    //Send data to the FWout/target/product/byt_t_ffrd8/system/lib
    Status = mei_snd_rcv(mei_handle, (void *) req, (uint32_t) req_len,
            (void *) resp, (uint32_t) resp_len);
    if (Status < 0) {
        LOGERR("mei_snd_rcv failed\n");
        result = SEP_KEYMASTER_HECI_SNDRCV_FAILED;
        goto exit;
    }

    result = SEP_KEYMASTER_SUCCESS;

    exit: if (mei_handle) {
        mei_disconnect(mei_handle); //TODO: What happens if disconnect fails? Memory leak?
        mei_handle = NULL;
    }
    return result;
}
コード例 #3
0
/**
 * host_init_wd - mei initialization wd.
 *
 * @dev: the device structure
 */
bool mei_wd_host_init(struct mei_device *dev)
{
	bool ret = false;

	mei_cl_init(&dev->wd_cl, dev);

	/* look for WD client and connect to it */
	dev->wd_cl.state = MEI_FILE_DISCONNECTED;
	dev->wd_timeout = AMT_WD_DEFAULT_TIMEOUT;

	/* find ME WD client */
	mei_find_me_client_update_filext(dev, &dev->wd_cl,
				&mei_wd_guid, MEI_WD_HOST_CLIENT_ID);

	dev_dbg(&dev->pdev->dev, "check wd_cl\n");
	if (MEI_FILE_CONNECTING == dev->wd_cl.state) {
		if (mei_connect(dev, &dev->wd_cl)) {
			dev_dbg(&dev->pdev->dev, "Failed to connect to WD client\n");
			dev->wd_cl.state = MEI_FILE_DISCONNECTED;
			dev->wd_cl.host_client_id = 0;
			ret = false;
			goto end;
		} else {
			dev->wd_cl.timer_count = CONNECT_TIMEOUT;
		}
	} else {
		dev_dbg(&dev->pdev->dev, "Failed to find WD client\n");
		ret = false;
		goto end;
	}

end:
	return ret;
}
コード例 #4
0
ファイル: wd.c プロジェクト: CSCLOG/beaglebone
/**
 * host_init_wd - mei initialization wd.
 *
 * @dev: the device structure
 */
void mei_wd_host_init(struct mei_device *dev)
{
	mei_cl_init(&dev->wd_cl, dev);

	/* look for WD client and connect to it */
	dev->wd_cl.state = MEI_FILE_DISCONNECTED;
	dev->wd_timeout = watchdog_timeout;

	if (dev->wd_timeout > 0) {
		mei_wd_start_setup(dev);
		/* find ME WD client */
		mei_find_me_client_update_filext(dev, &dev->wd_cl,
					&mei_wd_guid, MEI_WD_HOST_CLIENT_ID);

		dev_dbg(&dev->pdev->dev, "check wd_cl\n");
		if (MEI_FILE_CONNECTING == dev->wd_cl.state) {
			if (!mei_connect(dev, &dev->wd_cl)) {
				dev_dbg(&dev->pdev->dev, "Failed to connect to WD client\n");
				dev->wd_cl.state = MEI_FILE_DISCONNECTED;
				dev->wd_cl.host_client_id = 0;
				mei_host_init_iamthif(dev) ;
			} else {
				dev->wd_cl.timer_count = CONNECT_TIMEOUT;
			}
		} else {
			dev_dbg(&dev->pdev->dev, "Failed to find WD client\n");
			mei_host_init_iamthif(dev) ;
		}
	} else {
		dev->wd_bypass = true;
		dev_dbg(&dev->pdev->dev, "WD requested to be disabled\n");
		mei_host_init_iamthif(dev) ;
	}
}
コード例 #5
0
ファイル: tee_if.c プロジェクト: yutokt/android_vendor_intel
uint32_t tee_init(const GUID *guid, void **ptrHandle)
{
	*ptrHandle = (void *)mei_connect(guid);
	if (*ptrHandle == NULL)
	{
		printf("ptrHandle error");
		return TEE_FAILURE;
	}
	return TEE_SUCCESSFUL;
}