예제 #1
0
int board_ehci_hcd_init(int port)
{
	imx_iomux_v3_setup_multiple_pads(usb_pads, ARRAY_SIZE(usb_pads));

	/* Reset USB hub */
	gpio_direction_output(GPIO_NUMBER(7, 12), 0);
	mdelay(2);
	gpio_set_value(GPIO_NUMBER(7, 12), 1);

	return 0;
}
예제 #2
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================

  FUNCTION GPIO_RESTORE_GPIOS_AFTER_SLEEP

  DESCRIPTION
    GPIOs are returned to their original configuration.

  DEPENDENCIES
    None.

  RETURN VALUE
    None
===========================================================================*/
void gpio_restore_gpios_after_sleep( void )
{
  int io;

  uint32 gpio_number;

  /* Restore GPIO_OE_* and GPIO_OUT_* registers to their "awake"
     value which is in the bio_gpio_image shadow values. */
  for(io=0; io<4; io++)
  {
    if(bio_gpio[io].tsen_addr)
    {
      outpdw(bio_gpio[io].out_addr, (bio_gpio_image[io].out_buf));
      outpdw(bio_gpio[io].tsen_addr, (bio_gpio_image[io].ts_buf));
    }
}

  /* Restore GPIOs to their "awake" function using gpio_configs
     as the shadow value. */
  for(io=0; gpio_sleep_changes[io] != GPIO_GENERIC_DEFAULT; io++)
  {
    gpio_number = GPIO_NUMBER(gpio_sleep_changes[io]);
    gpio_tlmm_config( gpio_configs[gpio_number] );
  }
}
예제 #3
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================

  FUNCTION GPIO_TRISTATE

  DESCRIPTION
   This function enables/ disables tri-state on specified GPIO.  Writing a value 0 
   (GPIO_TRISTATE_DISABLE) disables the tristate and writing a value 1 (GPIO_TRISTATE_ENABLE) 
   enables tristate.

  DEPENDENCIES
    None.

  RETURN VALUE
    None
===========================================================================*/
void gpio_tristate( GPIO_SignalType gpio_signal, GPIO_TristateType gpio_tristate_value)
{
  uint32             gpio_oe_register;
  uint32             gpio_mask;
  uint8              gpio_number;

  gpio_number = GPIO_NUMBER(gpio_signal);
  if (gpio_number >= GPIO_NUM_GPIOS)
  {
      #ifndef BUILD_BOOT_CHAIN
      ERR_FATAL("Invalid GPIO number 0x%x",gpio_number, 0, 0);
	  #endif
	  return;
  }

  gpio_oe_register = GPIO_GROUP(gpio_signal);
  gpio_mask        = 1 <<(gpio_number-GPIO_GROUP_START[gpio_oe_register]);

  if (gpio_tristate_value == GPIO_TRISTATE_DISABLE)
  {
     BIO_TRISTATE(gpio_oe_register,gpio_mask,gpio_mask);
  } 
  else
  {
     BIO_TRISTATE(gpio_oe_register,gpio_mask,0);
  }
}
예제 #4
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================
  FUNCTION GPIO_IN

  DESCRIPTION
    Reads the the corresponding GPIO register given a GPIO signal type and
    extracts the value for that particular GPIO. This function calculates the
    GPIO register and the mask value required to return the GPIO value.

  DEPENDENCIES
    None.

  RETURN VALUE
    GPIO value at the given GPIO number
===========================================================================*/
GPIO_ValueType gpio_in( GPIO_SignalType gpio_signal )
{
  uint32             gpio_in_register;
  uint32             gpio_mask;
  uint32             gpio_value;
  uint8              gpio_number;

  gpio_number = GPIO_NUMBER(gpio_signal);

  if (gpio_number >= GPIO_NUM_GPIOS)
  {
	  #ifndef BUILD_BOOT_CHAIN
      ERR_FATAL("Invalid GPIO number 0x%x",gpio_number, 0, 0);
	  #endif
	  return;
  }
  gpio_in_register = GPIO_GROUP(gpio_signal);

  gpio_mask        = 1 <<(gpio_number-GPIO_GROUP_START[gpio_in_register]);
  gpio_value       = inpdw(bio_gpio[gpio_in_register].in_addr) & gpio_mask;

  if (gpio_value == 0)
  {
    return GPIO_LOW_VALUE;
  } 
  else
  {
    return GPIO_HIGH_VALUE;
  }
}
예제 #5
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================
  FUNCTION GPIO_OUT

  DESCRIPTION
    Outputs the given value to the corresponding GPIO register given a GPIO
    signal type. This function calculates the GPIO register and the mask
    value.

  DEPENDENCIES
    None.

  RETURN VALUE
    None
===========================================================================*/
void gpio_out( GPIO_SignalType gpio_signal, GPIO_ValueType  gpio_value )
{
  uint32 gpio_out_register;
  uint32 gpio_mask;
  uint8  gpio_number;

  gpio_number = GPIO_NUMBER(gpio_signal);

  if (gpio_number >= GPIO_NUM_GPIOS)
  {
    #ifndef BUILD_BOOT_CHAIN
      ERR_FATAL("Invalid GPIO number 0x%x",gpio_number, 0, 0);
	  #endif
	  return;
  }

  gpio_out_register = GPIO_GROUP(gpio_signal);

  gpio_mask = 1 << (gpio_number - GPIO_GROUP_START[gpio_out_register]);
  if (gpio_value == GPIO_LOW_VALUE)
  {
    BIO_OUT(gpio_out_register, gpio_mask, 0);
  } 
  else
  {
    BIO_OUT(gpio_out_register, gpio_mask, gpio_mask);
  }
}
예제 #6
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================

  FUNCTION GPIO_TLMM_CONFIG

  DESCRIPTION
    Configures the GPIO TLMM as per the signal value used for the given GPIO.

  DEPENDENCIES
    None.

  RETURN VALUE
    None
===========================================================================*/
void gpio_tlmm_config(GPIO_SignalType gpio_signal)
{
  GPIO_PolarityType gpio_polarity;
  uint32            gpio_oe_register;
  uint32            gpio_mask;
  uint8             gpio_number;

  gpio_number = GPIO_NUMBER(gpio_signal);

  if (gpio_number >= GPIO_NUM_GPIOS)
  {
    #ifndef BUILD_BOOT_CHAIN
      ERR_FATAL("Invalid GPIO number 0x%x",gpio_number, 0, 0);
	  #endif
	  return;
  }

  gpio_polarity    = GPIO_POLARITY(gpio_signal);
  gpio_oe_register = GPIO_GROUP(gpio_signal);
  gpio_mask        = 1 <<(gpio_number-GPIO_GROUP_START[gpio_oe_register]);

  INTLOCK();  
  if (gpio_oe_register < 2)
  {
    HWIO_OUT(GPIO_PAGE,gpio_number);
    HWIO_OUT(GPIO_CFG,(GPIO_SIGNAL(gpio_signal)<<2) | GPIO_PULL(gpio_signal));
  }
  else
  {
    HWIO_OUT(GPIO2_PAGE,gpio_number);
    HWIO_OUT(GPIO2_CFG,(GPIO_SIGNAL(gpio_signal)<<2) | GPIO_PULL(gpio_signal));
  }
  INTFREE();
  
  if ( gpio_polarity == GPIO_OUTPUT )
  {
    BIO_TRISTATE(gpio_oe_register, gpio_mask, gpio_mask);
  }
  else
  {
    BIO_TRISTATE(gpio_oe_register, gpio_mask, 0);
  }
  gpio_configs[gpio_number] = gpio_signal;
}
예제 #7
0
파일: gpio_1100.c 프로젝트: bgtwoigu/1110
/*===========================================================================

  FUNCTION GPIO_CONFIG_GPIOS_FOR_SLEEP

  DESCRIPTION
    GPIOs are reconfigured to their low power settings in preparation for
    turning off TCXO and putting the phone in low power mode.

  DEPENDENCIES
    None.

  RETURN VALUE
    None
===========================================================================*/
void gpio_config_gpios_for_sleep( void )
{
  int io;

  GPIO_SignalType gpio_old_signal;
  uint32 gpio_number;

  /* Reconfigure the GPIO_CFG of select GPIOs */
  for(io=0; gpio_sleep_changes[io] != GPIO_GENERIC_DEFAULT; io++)
  {
    gpio_number = GPIO_NUMBER(gpio_sleep_changes[io]);

    gpio_old_signal = gpio_configs[gpio_number];
    gpio_tlmm_config(gpio_sleep_changes[io]);

    /* set gpio_configs[] to reflect the old purpose for restore after
       sleep. */
    gpio_configs[gpio_number] = gpio_old_signal;
  }

  for(io=0; io<GPIO_OE_REG_NUM; io++)
  {
    if(bio_gpio[io].tsen_addr)
    {
      /* Reconfigure the GPIO_OE_* and GPIO_OUT_* registers.  Shadow
         values of these registers are not changed so that the "awake"
         value may be restored after sleep. */

      /* Change GPIO_OE_* without updating shadow values */
      outpdw(bio_gpio[io].tsen_addr,
             (bio_gpio_image[io].ts_buf & (~gpio_sleep_oe[io].mask))
             | ( gpio_sleep_oe[io].mask & gpio_sleep_oe[io].out));

      /* Change GPIO_OUT_* without updating shadow values */
      outpdw(bio_gpio[io].out_addr,
             (bio_gpio_image[io].out_buf & (~gpio_sleep_out[io].mask)) |
             (gpio_sleep_out[io].mask & gpio_sleep_out[io].out));
    }
  }
}
예제 #8
0
int checkboard(void)
{
       puts("Board: MX6Q-Sabre Lite\n");

       return 0;
}

struct button_key {
	char const	*name;
	unsigned	gpnum;
	char		ident;
};

static struct button_key const buttons[] = {
	{"back",	GPIO_NUMBER(2, 2),	'B'},
	{"home",	GPIO_NUMBER(2, 4),	'H'},
	{"menu",	GPIO_NUMBER(2, 1),	'M'},
	{"search",	GPIO_NUMBER(2, 3),	'S'},
	{"volup",	GPIO_NUMBER(7, 13),	'V'},
	{"voldown",	GPIO_NUMBER(4, 5),	'v'},
};

/*
 * generate a null-terminated string containing the buttons pressed
 * returns number of keys pressed
 */
static int read_keys(char *buf)
{
	int i, numpressed = 0;
	for (i = 0; i < ARRAY_SIZE(buttons); i++) {