コード例 #1
0
static bool check_cldap_reply_required_flags(uint32_t ret_flags,
					     uint32_t req_flags)
{
	if (ret_flags == 0) {
		return true;
	}

	if (req_flags & DS_PDC_REQUIRED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_PDC);

	if (req_flags & DS_GC_SERVER_REQUIRED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_GC);

	if (req_flags & DS_ONLY_LDAP_NEEDED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_LDAP);

	if ((req_flags & DS_DIRECTORY_SERVICE_REQUIRED) ||
	    (req_flags & DS_DIRECTORY_SERVICE_PREFERRED))
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_DS);

	if (req_flags & DS_KDC_REQUIRED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_KDC);

	if (req_flags & DS_TIMESERV_REQUIRED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_TIMESERV);

	if (req_flags & DS_WRITABLE_REQUIRED)
		RETURN_ON_FALSE(ret_flags & NBT_SERVER_WRITABLE);

	return true;
}
コード例 #2
0
void CRTProgramPLL(PVRPSB_DEVINFO *psDevInfo, PLL_FREQ *psPllFreqInfo, PVRPSB_PIPE ePipe)
#endif
{
	const IMG_UINT32 ui32DpioRefReg		= (ePipe == PSB_PIPE_A) ? PVRPSB_DPIO_ADDR_REF_A : PVRPSB_DPIO_ADDR_REF_B;
	const IMG_UINT32 ui32DpioMReg		= (ePipe == PSB_PIPE_A) ? PVRPSB_DPIO_ADDR_M_A : PVRPSB_DPIO_ADDR_M_B;
	const IMG_UINT32 ui32DpioNVcoReg	= (ePipe == PSB_PIPE_A) ? PVRPSB_DPIO_ADDR_N_VCO_A : PVRPSB_DPIO_ADDR_N_VCO_B;
	const IMG_UINT32 ui32DpioPReg		= (ePipe == PSB_PIPE_A) ? PVRPSB_DPIO_ADDR_P_A : PVRPSB_DPIO_ADDR_P_B;
	IMG_UINT32 ui32RegVal;
	IMG_UINT32 ui32NVco;
	IMG_UINT32 ui32M;
	IMG_UINT32 ui32P;
	IMG_UINT32 ui32Lane;

	/* Reset the DPIO */
	PVROSWriteMMIOReg(psDevInfo, PVRPSB_DPIO_CFG, 0);
	PVROSReadMMIOReg(psDevInfo, PVRPSB_DPIO_CFG);

	ui32RegVal = 0;
	ui32RegVal = PVRPSB_DPIO_CFG_MODE_SET(ui32RegVal, PVRPSB_DPIO_CFG_MODE_SELECT0);
	ui32RegVal = PVRPSB_DPIO_CFG_RESET_SET(ui32RegVal, 1);
	PVROSWriteMMIOReg(psDevInfo, PVRPSB_DPIO_CFG, ui32RegVal);

	/* Program the PLL registers */
	RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, ui32DpioRefReg, 0x0068A701)); /* Some magic */

	RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, ui32DpioMReg, &ui32M));
	ui32M = PVRPSB_DPIO_DATA_M_M2_SET(ui32M, psPllFreqInfo->ui32M2);
	RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, ui32DpioMReg, ui32M));

	RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, ui32DpioNVcoReg, &ui32NVco));
	ui32NVco = PVRPSB_DPIO_DATA_N_VCO_N_SET(ui32NVco, psPllFreqInfo->ui32N);
	ui32NVco = PVRPSB_DPIO_DATA_N_VCO_MAGIC_SET(ui32NVco, 0x0107); /* Some more magic for good measure */

	if (psPllFreqInfo->ui32Vco < 2250000)
	{
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_SEL_SET(ui32NVco, 0);
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_CB_TUNE_SET(ui32NVco, 2);
	}
	else if (psPllFreqInfo->ui32Vco < 2750000)
	{
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_SEL_SET(ui32NVco, 1);
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_CB_TUNE_SET(ui32NVco, 1);
	}
	else if (psPllFreqInfo->ui32Vco < 3300000)
	{
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_SEL_SET(ui32NVco, 2);
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_CB_TUNE_SET(ui32NVco, 0);
	}
	else
	{
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_SEL_SET(ui32NVco, 3);
		ui32NVco = PVRPSB_DPIO_DATA_N_VCO_CB_TUNE_SET(ui32NVco, 0);
	}
	RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, ui32DpioNVcoReg, ui32NVco));

	RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, ui32DpioPReg, &ui32P));
	ui32P = PVRPSB_DPIO_DATA_P_P1_SET(ui32P, psPllFreqInfo->ui32P1);

	if (psPllFreqInfo->ui32P2 == 10)
	{
		ui32P = PVRPSB_DPIO_DATA_P_P2_DIVIDE_SET(ui32P, PVRPSB_DPIO_DATA_P_P2_DIVIDE_10);
	}
	else if (psPllFreqInfo->ui32P2 == 5)
	{
		ui32P = PVRPSB_DPIO_DATA_P_P2_DIVIDE_SET(ui32P, PVRPSB_DPIO_DATA_P_P2_DIVIDE_5);
	}
	else
	{
		printk(KERN_WARNING DRVNAME " - %s: Unrecognised P2 value\n", __FUNCTION__);
	}
	RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, ui32DpioPReg, ui32P));

	if (ePipe == PSB_PIPE_A)
	{
		RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE0, &ui32Lane));
		ui32Lane = PVRPSB_DPIO_DATA_LANE_ENABLE_SET(ui32Lane, 3);
		RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE0, ui32Lane));

		RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE1, &ui32Lane));
		ui32Lane = PVRPSB_DPIO_DATA_LANE_ENABLE_SET(ui32Lane, 3);
		RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE1, ui32Lane));

		RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE2, &ui32Lane));
		ui32Lane = PVRPSB_DPIO_DATA_LANE_ENABLE_SET(ui32Lane, 3);
		RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE2, ui32Lane));

		RETURN_ON_FALSE(ReadDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE3, &ui32Lane));
		ui32Lane = PVRPSB_DPIO_DATA_LANE_ENABLE_SET(ui32Lane, 3);
		RETURN_ON_FALSE(WriteDPIOReg(psDevInfo, PVRPSB_DPIO_ADDR_LANE3, ui32Lane));
	}
}