static bool drm_hdcp_isSupported()
{
    int fd = drm_get_dev_fd();
    if (fd <= 0) {
        ALOGE("Invalid DRM file descriptor.");
        return false;
    }
    unsigned int caps = 0;
    int ret = drmCommandRead(fd, DRM_PSB_QUERY_HDCP, &caps, sizeof(caps));
    if (ret != 0) {
        ALOGE("Failed to query HDCP capability.");
        return false;
    }
    return caps != 0;
}
uint32
vmw_ioctl_context_create(struct vmw_winsys_screen *vws)
{
   struct drm_vmw_context_arg c_arg;
   int ret;

   VMW_FUNC;

   ret = drmCommandRead(vws->ioctl.drm_fd, DRM_VMW_CREATE_CONTEXT,
			&c_arg, sizeof(c_arg));

   if (ret)
      return -1;

   vmw_printf("Context id is %d\n", c_arg.cid);
   return c_arg.cid;
}
static bool drm_hdcp_isAuthenticated()
{
    int fd = drm_get_dev_fd();
    if (fd <= 0) {
        ALOGE("Invalid DRM file descriptor.");
        return false;
    }
    unsigned int match = 0;
    int ret = drmCommandRead(fd, DRM_PSB_GET_HDCP_LINK_STATUS, &match, sizeof(match));
    if (ret != 0) {
        ALOGE("Failed to check hdcp link status.");
        return false;
    }
    if (match) {
        ALOGV("HDCP is authenticated.");
        return true;
    } else {
        ALOGE("HDCP is not authenticated.");
        return false;
    }
}
Exemple #4
0
bool Drm::readIoctl(unsigned long cmd, void *data,
                       unsigned long size)
{
    int err;

    if (mDrmFd <= 0) {
        ELOGTRACE("drm is not initialized");
        return false;
    }

    if (!data || !size) {
        ELOGTRACE("invalid parameters");
        return false;
    }

    err = drmCommandRead(mDrmFd, cmd, data, size);
    if (err) {
        WLOGTRACE("failed to call %ld ioctl with failure %d", cmd, err);
        return false;
    }

    return true;
}