コード例 #1
0
DRI_DRM_STATIC IMG_INT
PVRDRMUnprivCmd(struct drm_device *dev, IMG_VOID *arg, struct drm_file *pFile)
{
	IMG_UINT32 *pui32Args = (IMG_UINT32 *)arg;
	IMG_UINT32 ui32Cmd = pui32Args[0];
	IMG_UINT32 ui32Arg1 = pui32Args[1];
	IMG_UINT32 *pui32OutArg = (IMG_UINT32 *)arg;

	switch (ui32Cmd)
	{
		case PVR_DRM_UNPRIV_INIT_SUCCESFUL:
			*pui32OutArg = PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_SUCCESSFUL) ? 1 : 0;
			break;

		case PVR_DRM_UNPRIV_BUSID_TYPE:
			*pui32OutArg = PVR_DRM_BUS_TYPE_PCI;
			break;

		case PVR_DRM_UNPRIV_BUSID_FIELD:
			return PVRDRMPCIBusIDField(dev, pui32OutArg, ui32Arg1);

		default:
			return -EFAULT;
	}

	return 0;
}
コード例 #2
0
static int
PVRDRMUnprivCmd(struct drm_device *dev, void *arg, struct drm_file *pFile)
{
	u32 *pui32Args = (u32 *) arg;
	u32 ui32Cmd = pui32Args[0];
	u32 ui32Arg1 = pui32Args[1];
	u32 *pui32OutArg = (u32 *) arg;
	s32 ret = 0;

	mutex_lock(&gPVRSRVLock);

	switch (ui32Cmd) {
	case PVR_DRM_UNPRIV_INIT_SUCCESFUL:
		*pui32OutArg =
		    PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_SUCCESSFUL) ? 1
		    : 0;
		break;

	case PVR_DRM_UNPRIV_BUSID_TYPE:
		*pui32OutArg = PVR_DRM_BUS_TYPE_PCI;
		break;

	case PVR_DRM_UNPRIV_BUSID_FIELD:
		ret = PVRDRMPCIBusIDField(dev, pui32OutArg, ui32Arg1);

	default:
		ret = -EFAULT;
	}

	mutex_unlock(&gPVRSRVLock);

	return ret;
}