Exemplo n.º 1
0
void sunxi_board_close_source(void)
{
//	axp_set_vbus_limit_dc();

#ifdef CONFIG_BOOT_A15
    extern int do_savecfg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
    extern void clear_boot_cpu_flag(void);
    do_savecfg(0,0,1,NULL);
    clear_boot_cpu_flag();
#endif
	mmc_exit();  
	timer_exit();

	sunxi_key_exit();
#ifdef CONFIG_SUN6I
	p2wi_exit();
#endif
	sunxi_flash_exit(1);	//强制关闭FLASH
	sunxi_sprite_exit(1);
	sunxi_dma_exit();
	disable_interrupts();
	interrupt_exit();

#if defined(CONFIG_ARCH_SUN9IW1P1)
	*( volatile unsigned int *)(0x008000e0) = 0x16aa0000;
#endif

	return ;
}
Exemplo n.º 2
0
void sunxi_board_close_source(void)
{
	mmc_exit();
	timer_exit();
	sunxi_key_exit();
	sunxi_flash_exit(1);
	sunxi_sprite_exit(1);
	sunxi_dma_exit();
	disable_interrupts();
	interrupt_exit();
	return ;
}
Exemplo n.º 3
0
void sunxi_board_close_source(void)
{
//	axp_set_vbus_limit_dc();
	mmc_exit();
	timer_exit();

	sunxi_key_exit();
#ifdef CONFIG_SUN6I
	p2wi_exit();
#endif
	sunxi_flash_exit(1);	//强制关闭FLASH
	sunxi_sprite_exit(1);
	sunxi_dma_exit();
	disable_interrupts();
	interrupt_exit();

	return ;
}
Exemplo n.º 4
0
void shareEqual(void)
{
  void *p, *q;
  void **pp, **qq;
  mmc_uint_t slotsIdx;
#if  defined(MMC_STATE_APTR) || defined(MMC_STATE_LPTR)
  struct mmc_state *mmcState = &mmc_state;
#endif  /*MMC_STATE_APTR || MMC_STATE_LPTR*/
  if (*pp != *qq) /* if pointers are different */
  {
    /* check to see if pointers are in young or older */
    if (mmc_isYoungOrOlder((void**)MMC_UNTAGPTR(pp)) &&
      mmc_isYoungOrOlder((void**)MMC_UNTAGPTR(qq)))
    {
      mmc_uint_t idx = 0;
      /* point *pp to *qq to have sharing. */
      fprintf(stderr, "Sharing %d %p <-> %p\n", slotsIdx, *pp, *qq); fflush(stderr);
      if (*pp > *qq) /* store qq in pp as pp is > than qq */
      {
        MMC_STRUCTDATA(p)[slotsIdx] = *qq;
        if (!MMC_ISIMM(*qq))
        {
          /* also check here if the array is not already in the trail */
          for (idx = mmc_array_trail_size; &mmc_array_trail[idx] >= mmcATP; idx--)
            if (mmc_array_trail[idx] == *qq) /* if found, do not add again */
            {
              break;
            }
            /* add the address of the array into the roots to be
            taken into consideration at the garbage collection time */
            if( mmcATP == &mmc_array_trail[0] )
            {
              (void)fprintf(stderr, "Array Trail Overflow!\n"); fflush(stderr);
              mmc_exit(1);
            }

            if (!idx) /* we didn't already find it */
              *--mmcATP = p;
        }
      }
      else /* store pp in qq as qq is > than pp */
      {
        MMC_STRUCTDATA(q)[slotsIdx] = *pp;
        if (!MMC_ISIMM(*pp))
        {
          /* also check here if the array is not already in the trail */
          for (idx = mmc_array_trail_size; &mmc_array_trail[idx] >= mmcATP; idx--)
            if (mmc_array_trail[idx] == *pp) /* if found, do not add again */
            {
              break;
            }
            /* add the address of the array into the roots to be
            taken into consideration at the garbage collection time */
            if( mmcATP == &mmc_array_trail[0] )
            {
              (void)fprintf(stderr, "Array Trail Overflow!\n"); fflush(stderr);
              mmc_exit(1);
            }

            if (!idx) /* we didn't already find it */
              *--mmcATP = q;
        }
      }
    }
  }
}