示例#1
0
static void aucodec_digitalio_on_1(void)
{
	/* aucodec_digitalio_on */
#if (CHIP_REV == A3)||(CHIP_REV == A5)||(CHIP_REV == A6)|| \
	(CHIP_REV == A5S)||(CHIP_REV == I1)||(CHIP_REV == S2)
	unsigned long flags;

	ambarella_gpio_raw_lock(1, &flags);
	amba_clrbitsl(GPIO1_AFSEL_REG, 0x80000000);
	ambarella_gpio_raw_unlock(1, &flags);

	/* GPIO77~GPIO78 and GPIO81~GPIO83 program as hardware mode */
	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, 0x000e6000);
	ambarella_gpio_raw_unlock(2, &flags);

#elif (CHIP_REV == S2)
	unsigned long flags;

	ambarella_gpio_raw_lock(3, &flags);
	amba_clrbitsl(GPIO3_AFSEL_REG, 0x0000000c);
	ambarella_gpio_raw_unlock(3, &flags);

	/* GPIO82~GPIO83 program as hardware mode */
	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, 0x000c0000);
	ambarella_gpio_raw_unlock(2, &flags);

#else
	pr_err("aucodec_digitalio_on: Unknown Chip Architecture\n");
#endif
}
示例#2
0
int __init ambarella_init_fio(void)
{
#if defined(CONFIG_AMBARELLA_FIO_FORCE_SDIO_GPIO)
	unsigned long				flags;

	//SMIO_38 ~ SMIO_43
	ambarella_gpio_raw_lock(2, &flags);
	amba_clrbitsl(GPIO2_AFSEL_REG, 0x000007e0);
	amba_clrbitsl(GPIO2_DIR_REG, 0x00000780);
	amba_setbitsl(GPIO2_DIR_REG, 0x00000060);
	amba_writel(GPIO2_MASK_REG, 0x00000060);
	amba_writel(GPIO2_DATA_REG, 0x00000040);
	ambarella_gpio_raw_unlock(2, &flags);
#endif

	return 0;
}
示例#3
0
static void aucodec_digitalio_on_0(void)
{
	/* aucodec_digitalio_on */
#if (CHIP_REV == A2S) || (CHIP_REV == A2M)
	unsigned long flags;

	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, (0xf << 18) | (0xf << 13));
	ambarella_gpio_raw_unlock(2, &flags);

#elif (CHIP_REV == A2)
	unsigned long flags;

	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, (0x3 << 15) | (0x3 << 20));
	ambarella_gpio_raw_unlock(2, &flags);

#elif (CHIP_REV == A3)||(CHIP_REV == A5)||(CHIP_REV == A6)|| \
	(CHIP_REV == A5S)||(CHIP_REV == I1)
	unsigned long flags;

	ambarella_gpio_raw_lock(1, &flags);
	amba_clrbitsl(GPIO1_AFSEL_REG, 0x80000000);
	ambarella_gpio_raw_unlock(1, &flags);

	/* GPIO77~GPIO81 program as hardware mode */
	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, 0x0003e000);
	ambarella_gpio_raw_unlock(2, &flags);

#elif (CHIP_REV == S2)
	unsigned long flags;

	ambarella_gpio_raw_lock(3, &flags);
	amba_clrbitsl(GPIO3_AFSEL_REG, 0x00000030);
	ambarella_gpio_raw_unlock(3, &flags);

	/* GPIO77~GPIO81 program as hardware mode */
	ambarella_gpio_raw_lock(2, &flags);
	amba_setbitsl(GPIO2_AFSEL_REG, 0x0003e000);
	ambarella_gpio_raw_unlock(2, &flags);

#else
	pr_err("aucodec_digitalio_on: Unknown Chip Architecture\n");
#endif
}
示例#4
0
int __init ambarella_init_fio(void)
{

	fio_amb_exit_random_mode();
	enable_fio_dma();
	amba_writel(FLASH_INT_REG, 0x0);
	amba_writel(XD_INT_REG, 0x0);
	amba_writel(CF_STA_REG, CF_STA_CW | CF_STA_DW);
//#if defined(CONFIG_AMBARELLA_FIO_FORCE_SDIO_GPIO)
	unsigned long				flags;

	//SMIO_38 ~ SMIO_43
	ambarella_gpio_raw_lock(2, &flags);
	amba_clrbitsl(GPIO2_AFSEL_REG, 0x000007e0);
	amba_clrbitsl(GPIO2_DIR_REG, 0x00000780);
	amba_setbitsl(GPIO2_DIR_REG, 0x00000060);
	amba_writel(GPIO2_MASK_REG, 0x00000060);
	amba_writel(GPIO2_DATA_REG, 0x00000040);
	ambarella_gpio_raw_unlock(2, &flags);
//#endif

	return 0;
}
示例#5
0
/* ==========================================================================*/
void __fio_select_lock(int module)
{
	u32					fio_ctr;
	u32					fio_dmactr;
#if (SD_HAS_INTERNAL_MUXER == 1)
	unsigned long				flags;
#endif

	fio_ctr = amba_readl(FIO_CTR_REG);
	fio_dmactr = amba_readl(FIO_DMACTR_REG);

	switch (module) {
	case SELECT_FIO_FL:
		fio_ctr &= ~FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_FL;
		break;

	case SELECT_FIO_XD:
		fio_ctr |= FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_XD;
		break;

	case SELECT_FIO_CF:
		fio_ctr &= ~FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_CF;
#if (FIO_SUPPORT_AHB_CLK_ENA == 1)
		fio_amb_sd2_disable();
		fio_amb_cf_enable();
#endif
		break;

	case SELECT_FIO_SD:
		fio_ctr &= ~FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_SD;
		break;

	case SELECT_FIO_SDIO:
		fio_ctr |= FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_SD;
		break;

	case SELECT_FIO_SD2:
#if (FIO_SUPPORT_AHB_CLK_ENA == 1)
		fio_amb_cf_disable();
		fio_amb_sd2_enable();
#endif
#if (SD_HOST1_HOST2_HAS_MUX == 1)
		fio_ctr &= ~FIO_CTR_XD;
		fio_dmactr = (fio_dmactr & 0xcfffffff) | FIO_DMACTR_SD;
#endif
		break;

	default:
		break;
	}

#if (SD_HAS_INTERNAL_MUXER == 1)
	spin_lock_irqsave(&fio_sd0_int_lock, flags);
	amba_clrbitsl(SD_NISEN_REG, SD_NISEN_CARD);
	spin_unlock_irqrestore(&fio_sd0_int_lock, flags);
#if defined(CONFIG_AMBARELLA_FIO_FORCE_SDIO_GPIO)
	if (module != SELECT_FIO_SDIO) {
		ambarella_gpio_raw_lock(2, &flags);
		amba_clrbitsl(GPIO2_AFSEL_REG, 0x000007e0);
		ambarella_gpio_raw_unlock(2, &flags);
	}
#endif
#endif
	amba_writel(FIO_CTR_REG, fio_ctr);
	amba_writel(FIO_DMACTR_REG, fio_dmactr);
#if (SD_HAS_INTERNAL_MUXER == 1)
	if (module == SELECT_FIO_SD) {
		spin_lock_irqsave(&fio_sd0_int_lock, flags);
		amba_writel(SD_NISEN_REG, fio_sd_int);
		amba_writel(SD_NIXEN_REG, fio_sd_int);
		spin_unlock_irqrestore(&fio_sd0_int_lock, flags);
	} else
	if (module == SELECT_FIO_SDIO) {
#if defined(CONFIG_AMBARELLA_FIO_FORCE_SDIO_GPIO)
		ambarella_gpio_raw_lock(2, &flags);
		amba_setbitsl(GPIO2_AFSEL_REG, 0x000007e0);
		ambarella_gpio_raw_unlock(2, &flags);
#endif
		spin_lock_irqsave(&fio_sd0_int_lock, flags);
		amba_writel(SD_NISEN_REG, fio_sdio_int);
		amba_writel(SD_NIXEN_REG, fio_sdio_int);
		spin_unlock_irqrestore(&fio_sd0_int_lock, flags);
	}
#endif
}