Example #1
0
/* GPIO Settings for Back voltage problem workaround */
MV_U8  mvUsbGppInit(int dev)
{
    MV_U32  regVal;
    MV_U8   gppNo = (MV_U8)mvBoardUSBVbusGpioPinGet(dev);
    MV_U8   gppVbusEnNo = (MV_U8)mvBoardUSBVbusEnGpioPinGet(dev);

    /* DDR1 => gpp5, DDR2 => gpp1 */
    if(gppNo != (MV_U8)N_A)
    {
        /*mvOsPrintf("mvUsbGppInit: gppNo=%d\n", gppNo);*/

        /* MPP Control Register - set to GPP*/
        regVal = MV_REG_READ(mvCtrlMppRegGet((unsigned int)(gppNo/8)));
        regVal &= ~(0xf << ((gppNo%8)*4));
        MV_REG_WRITE(mvCtrlMppRegGet((unsigned int)(gppNo/8)), regVal);


        if(gppNo < 32)
        {
            /* GPIO Data Out Enable Control Register - set to input*/
            mvGppTypeSet(0, (1<<gppNo), MV_GPP_IN & (1<<gppNo) );
            /* GPIO Data In Polarity Register */
            mvGppPolaritySet(0, (1<<gppNo), (0<<gppNo) );
        }
        else
        {
            /* GPIO Data Out Enable Control Register - set to input*/
            mvGppTypeSet(1, (1<<(gppNo-32)), MV_GPP_IN & (1<<(gppNo-32)) );
            /* GPIO Data In Polarity Register */
            mvGppPolaritySet(1, (1<<(gppNo-32)), (0<<(gppNo-32)) );
        }

        /* GPIO Data In Polarity Register */
        /* mvGppPolaritySet(mppGrp, (1<<gppNo), (0<<gppNo) ); */

        regVal = MV_REG_READ(MV_USB_PHY_POWER_CTRL_REG(dev));
        regVal &= ~(7 << 24);
        MV_REG_WRITE(MV_USB_PHY_POWER_CTRL_REG(dev), regVal);
    }

    /* for device - reset vbus enable gpp, for host - set by default */
    if(gppVbusEnNo != (MV_U8)N_A)
    {
        /*mvOsPrintf("mvUsbGppInit: gppVbusEnNo = %d \n", gppVbusEnNo);*/

        regVal = MV_REG_READ(GPP_DATA_OUT_REG((gppVbusEnNo/32)));
        if(gppVbusEnNo < 32)
        {
            MV_REG_WRITE(GPP_DATA_OUT_REG(0), (regVal & ~(1 << gppVbusEnNo)));
        }
        else
        {
            MV_REG_WRITE(GPP_DATA_OUT_REG(1), (regVal & ~(1 << (gppVbusEnNo - 32))));
        }

    }

    return gppNo;
}
void
BuffaloGpio_CPUInterruptsClearFunc(void)
{
	unsigned int cause;
	printk("MPP_CONTROL_REG 0x%04x 0x%04x 0x%04x 0x%04x\n",
		MV_REG_READ(mvCtrlMppRegGet(0)),
		MV_REG_READ(mvCtrlMppRegGet(1)),
		MV_REG_READ(mvCtrlMppRegGet(2)),
		MV_REG_READ(mvCtrlMppRegGet(3)));

	cause = MV_REG_READ(GPP_INT_CAUSE_REG(0));
	printk("cause:0x%04x\n", cause);
	MV_REG_WRITE(GPP_INT_CAUSE_REG(0), ~(cause & BIT(BIT_FUNC_SW)));
}
/*******************************************************************************
**
**  onuPonTxPowerControlInit
**  ____________________________________________________________________________
**
**  DESCRIPTION: The function initialyzes TX power control pins
**
**  PARAMETERS:  None
**
**  OUTPUTS:     None
**
**  RETURNS:     MV_OK or error
**
*******************************************************************************/
MV_STATUS onuPonTxPowerControlInit(void)
{
	MV_U32		gpioPinNum, gpioGroup, gpioMask;
	MV_U32		regVal, mppGroup;
	MV_GPP_HAL_DATA	halData;
	MV_U32		devId = mvCtrlModelGet();
	MV_STATUS	status = MV_OK;

	gpioPinNum = mvBoarGpioPinNumGet(BOARD_GPP_PON_XVR_TX_POWER, 0);
	if (gpioPinNum != MV_ERROR) {
		mppGroup = mvCtrlMppRegGet(gpioPinNum / 8);
		/* Set TX power MPP to GPP mode */
		regVal = MV_REG_READ(mppGroup);
		regVal &= ~(0xf << ((gpioPinNum % 8) * 4));
		MV_REG_WRITE(mppGroup, regVal);

		halData.ctrlRev = mvCtrlRevGet();

		status = mvGppInit(&halData);
		if (status == MV_OK) {
			/* Set TX power GPP pin direction to OUT */
			gpioGroup = gpioPinNum / 32;
			gpioMask = 1 << gpioPinNum;
			status = mvGppTypeSet(gpioGroup, gpioMask, (MV_GPP_OUT & gpioMask));
		}

	} else if (devId == MV_6601_DEV_ID)
		status = MV_ERROR;

	return(status);
}
void
BuffaloGpio_CPUInterruptsClear(void)
{
	unsigned int cause;

	if (use_slide_power)
		return;

	printk("MPP_CONTROL_REG 0x%04x 0x%04x 0x%04x 0x%04x\n",
		MV_REG_READ(mvCtrlMppRegGet(0)),
		MV_REG_READ(mvCtrlMppRegGet(1)),
		MV_REG_READ(mvCtrlMppRegGet(2)),
		MV_REG_READ(mvCtrlMppRegGet(3)));

	cause = MV_REG_READ(GPP_INT_CAUSE_REG(0));
	printk("cause:0x%04x\n", (unsigned int)cause);
	MV_REG_WRITE(GPP_INT_CAUSE_REG(0), ~(cause & BIT(BIT_PWR_SW)));
	//BuffaloGpio_EthLedOn();
}