/* 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(); }