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