Exemple #1
0
__maybe_unused
void rk_iomux_sdcard_restore(void)
{
	debug("rk restore sdcard iomux config.\n");
	grf_writel((3 << 28) | (3 << 30) | grf_gpio1b_iomux, GRF_GPIO1B_IOMUX);
	grf_writel((0xFFF << 16) | grf_gpio1c_iomux, GRF_GPIO1C_IOMUX);
	debug("grf gpio1b iomux = 0x%08x\n", grf_readl(GRF_GPIO1B_IOMUX) & ((3<<12) | (3<<14)));
	debug("grf gpio1c iomux = 0x%08x\n", grf_readl(GRF_GPIO1C_IOMUX) & 0xFFF);
}
static int rk30_vmac_speed_switch(int speed)
{
//	printk("%s--speed=%d\n", __FUNCTION__, speed);
	if (10 == speed) {
            grf_writel(grf_readl(GRF_SOC_CON1) | (2<<16) & (~BIT_EMAC_SPEED), GRF_SOC_CON1);
        } else {
            grf_writel(grf_readl(GRF_SOC_CON1) | (2<<16) | BIT_EMAC_SPEED, GRF_SOC_CON1);
        }
}
Exemple #3
0
__maybe_unused
void rk_iomux_sdcard_save(void)
{
	debug("rk save sdcard iomux config.\n");
	grf_gpio1b_iomux = grf_readl(GRF_GPIO1B_IOMUX) & ((3<<12) | (3<<14));
	grf_gpio1c_iomux = grf_readl(GRF_GPIO1C_IOMUX) & 0xFFF;
	debug("grf gpio1b iomux = 0x%08x\n", grf_gpio1b_iomux);
	debug("grf gpio1c iomux = 0x%08x\n", grf_gpio1c_iomux);

	if (RK_FORCE_SELECT_JTAG) {
		debug("Force select jtag from sdcard io.\n");
	}
}
Exemple #4
0
__maybe_unused
void rk_iomux_sdcard_restore(void)
{
	debug("rk restore sdcard iomux config.\n");
	grf_writel((0x1FFFF << 16) | grf_gpio6c_iomux, GRF_GPIO6C_IOMUX);
	debug("grf gpio6c iomux = 0x%08x\n", grf_readl(GRF_GPIO6C_IOMUX) & 0x1FFFF);
}
Exemple #5
0
/*0 core, 1 gpu, 2 func*/
static u32 rk312x_pvtm_get_value(u32 ch , u32 time_us)
{
	u32 val = 0, clk_cnt, check_cnt, pvtm_done_bit;

	if (ch > 2)
		return 0;

	/*24m clk ,24cnt=1us*/
	clk_cnt = time_us*24;

	grf_writel(clk_cnt, RK312X_PVTM_CON0+(ch+1)*4);
	if ((ch == 0) || (ch == 1))
		grf_writel(wr_msk_bit(3, ch*8, 0x3), RK312X_PVTM_CON0);
	else if (ch == 2)
		grf_writel(wr_msk_bit(3, 12, 0x3), RK312X_PVTM_CON0);

	if (time_us >= 1000)
		mdelay(time_us / 1000);
	udelay(time_us % 1000);

	if (ch == 0)
		pvtm_done_bit = 1;
	else if (ch == 1)
		pvtm_done_bit = 0;
	else if (ch == 2)
		pvtm_done_bit = 2;

	check_cnt = 100;
	while (!(grf_readl(RK312X_PVTM_STATUS0) & (1 << pvtm_done_bit))) {
		udelay(4);
		check_cnt--;
		if (!check_cnt)
			break;
	}

	if (check_cnt)
		val = grf_readl(RK312X_PVTM_STATUS0+(ch+1)*4);
	if ((ch == 0) || (ch == 1))
		grf_writel(wr_msk_bit(0, ch*8, 0x3), RK312X_PVTM_CON0);
	else if (ch == 2)
		grf_writel(wr_msk_bit(0, 12, 0x3), RK312X_PVTM_CON0);

	return val;
}
Exemple #6
0
static void rk3288_uart2usb(uint32 en)
{
	if (en) {
		grf_writel((0x0000 | (0x00C0 << 16)), GRF_UOC0_CON3); // usbphy0 bypass disable and otg enable.

		/* if define force enable usb to uart, maybe usb function will be affected */
#ifdef CONFIG_RKUART2USB_FORCE
		grf_writel((0x0004 | (0x0004 << 16)), GRF_UOC0_CON2); // software control usb phy enable
		grf_writel((0x002A | (0x003F << 16)), GRF_UOC0_CON3); // usb phy enter suspend
		grf_writel((0x00C0 | (0x00C0 << 16)), GRF_UOC0_CON3); // usb uart enable.
#else
		con = grf_readl(GRF_SOC_STATUS2);
		if (!(con & (1<<14)) && (con & (1<<17))) { // check IO domain voltage select.
			grf_writel((0x0004 | (0x0004 << 16)), GRF_UOC0_CON2); // software control usb phy enable
			grf_writel((0x002A | (0x003F << 16)), GRF_UOC0_CON3); // usb phy enter suspend
			grf_writel((0x00C0 | (0x00C0 << 16)), GRF_UOC0_CON3); // uart enable
		}
#endif /* CONFIG_RKUART2USB_FORCE */
	} else {
		grf_writel((0x0000 | (0x00C0 << 16)), GRF_UOC0_CON3); // usb uart disable
		grf_writel((0x0000 | (0x0004 << 16)), GRF_UOC0_CON2); // software control usb phy disable
	}
}