コード例 #1
0
ファイル: gpio.c プロジェクト: 12019/mtktest
 /*conf_data = 0~3*/
 void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
 {
    kal_uint16 modeno;
    kal_uint16 remainder;
    kal_uint32 savedMask;
    
    modeno = pin/8;
    remainder = pin % 8;
    
    savedMask = SAVEANDSETIRQMASK();
    *(GPIO_MODE(modeno)) &= ~(0x0003 << (remainder*2));
    *(GPIO_MODE(modeno)) |= (conf_dada << (remainder*2));
    RESTOREIRQMASK(savedMask);
 }
コード例 #2
0
ファイル: gpio.c プロジェクト: jprothwell/sc-fix
   /*conf_data = 0~3*/
   void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
    {
      kal_uint16 modeno;
      kal_uint16 remainder;
      kal_uint16 data;
      modeno = pin/8;
      remainder = pin % 8;
      data=DRV_Reg(GPIO_MODE(modeno)); 
      data&=~(0x3 << (2*remainder));
      data|= (conf_dada << (remainder*2));
      DRV_WriteReg(GPIO_MODE(modeno),data);
  

   }
コード例 #3
0
/** @brief Set GPIO Pin Mode

Sets the Pin Direction and Analog/Digital Mode, and Output Pin Pullup,
for a set of GPIO pins on a given GPIO port.

@param[in] gpioport Unsigned int32. Port identifier @ref gpio_port_id
@param[in] mode Unsigned int8. Pin mode @ref gpio_mode
@param[in] pull_up_down Unsigned int8. Pin pullup/pulldown configuration @ref
gpio_pup
@param[in] gpios Unsigned int16. Pin identifiers @ref gpio_pin_id
	     If multiple pins are to be set, use bitwise OR '|' to separate
	     them.
*/
void gpio_mode_setup(uint32_t gpioport, uint8_t mode, uint8_t pull_up_down,
		     uint16_t gpios)
{
	uint16_t i;
	uint32_t moder, pupd;

	/*
	 * We want to set the config only for the pins mentioned in gpios,
	 * but keeping the others, so read out the actual config first.
	 */
	moder = GPIO_MODER(gpioport);
	pupd = GPIO_PUPDR(gpioport);

	for (i = 0; i < 16; i++) {
		if (!((1 << i) & gpios)) {
			continue;
		}

		moder &= ~GPIO_MODE_MASK(i);
		moder |= GPIO_MODE(i, mode);
		pupd &= ~GPIO_PUPD_MASK(i);
		pupd |= GPIO_PUPD(i, pull_up_down);
	}

	/* Set mode and pull up/down control registers. */
	GPIO_MODER(gpioport) = moder;
	GPIO_PUPDR(gpioport) = pupd;
}
コード例 #4
0
ファイル: gpio.c プロジェクト: 12019/mtktest
   /*conf_data = 0~3*/
   void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
   {
      kal_uint16 modeno;
      kal_uint16 remainder;
      kal_uint16 data;
      kal_uint32 savedMask;

      modeno = pin/8;
      remainder = pin % 8;
      savedMask = SAVEANDSETIRQMASK();
      data=DRV_Reg(GPIO_MODE(modeno)); 
      data&=~(0x3 << (2*remainder));
      data|= (conf_dada << (remainder*2));
      DRV_WriteReg(GPIO_MODE(modeno),data);
      RESTOREIRQMASK(savedMask);
   }
コード例 #5
0
ファイル: gpio.c プロジェクト: 12019/mtktest
      kal_uint16 remainder;
      kal_uint16 data;
      kal_uint32 savedMask;
      
      #ifdef __CUST_NEW__
      pin &= (~GPIO_MAGIC_NUM);
      if (gpio_debug_enable == KAL_TRUE)
      {
          ASSERT((gpio_mode_allowed[pin>>5][conf_dada & 3]) & (1<<(pin & 0x1f)));
      }
      #endif /* __CUST_NEW__ */
      modeno = pin/8;
      remainder = pin % 8;
      
      savedMask = SAVEANDSETIRQMASK();
      data=DRV_Reg(GPIO_MODE(modeno)); 
      data&=~(0x3 << (2*remainder));
      data|= (conf_dada << (remainder*2));
      DRV_WriteReg(GPIO_MODE(modeno),data);
      RESTOREIRQMASK(savedMask);

      //DRV_WriteReg(GPIO_MODE_CLR(modeno),(0x0003 << (remainder*2)));
      //DRV_WriteReg(GPIO_MODE_SET(modeno),(conf_dada << (remainder*2)));
   }
   
   /*conf_data = 0~3*/
   void GPO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
   {
      kal_uint16 mode; 
      kal_uint32 savedMask;