static INT32 mtk_wcn_consys_jtag_set_for_mcu(VOID) { int iRet = 0; unsigned int tmp = 0; jtag_addr1 = ioremap(JTAG_ADDR1_BASE, 0x5000); if (jtag_addr1 == 0) { printk("remap jtag_addr1 fail!\n"); return -1; } printk("jtag_addr1 = 0x%p\n", jtag_addr1); jtag_addr2 = ioremap(JTAG_ADDR2_BASE, 0x1000); if (jtag_addr2 == 0) { printk("remap jtag_addr2 fail!\n"); return -1; } printk("jtag_addr2 = 0x%p\n", jtag_addr2); /*Enable IES of all pins*/ JTAG1_REG_WRITE(0x10208004, 0xffffffff); JTAG1_REG_WRITE(0x10208014, 0xffffffff); JTAG1_REG_WRITE(0x10209004, 0xffffffff); JTAG1_REG_WRITE(0x1020A004, 0xffffffff); JTAG1_REG_WRITE(0x1020B004, 0xffffffff); /*JTAG1 mode setting*/ /*set GPIO pull mode*/ /*0x1020A040[6:0]=0x7f*/ tmp = JTAG1_REG_READ(0x1020A040); tmp &= 0xffffff80; tmp |= 0x7f; JTAG1_REG_WRITE(0x1020A040, tmp); #if 0 /*0x1020A060[6:0]=0x31*/ tmp = JTAG1_REG_READ(0x1020A060); tmp &= 0xffffff80; tmp |= 0x31; JTAG1_REG_WRITE(0x1020A060, tmp); /*set CONSYS JTAG mode 0x10005300=0x07777777*/ //DRV_WriteReg32(0x10005300, 0x07777777); /*remove JTAG mode1*/ JTAG2_REG_WRITE(0x10005300, 0x00000000); #endif #if 1 // Chaozhong modified /*0x1020A060[6:0]=0x31*/ tmp = JTAG1_REG_READ(0x1020A060); tmp &= 0xffffff80; tmp |= 0x31; JTAG1_REG_WRITE(0x1020A060, tmp); /*set CONSYS JTAG mode 0x10005300=0x07777777*/ //DRV_WriteReg32(0x10005300, 0x07777777); /*remove JTAG mode1*/ JTAG2_REG_WRITE(0x1000530C, 0x08888888);// Chaozhong modified #endif /*JTAG1 mode setting*/ /*set GPIO pull mode*/ /*0x1020A050[6:0]=0x7f*/ tmp = JTAG1_REG_READ(0x1020A050); tmp &= 0xffffff80; tmp |= 0x7f; JTAG1_REG_WRITE(0x1020A050, tmp); /*0x1020A070[6:0]=0x31*/ tmp = JTAG1_REG_READ(0x1020A070); tmp &= 0xffffff80; tmp |= 0x31; JTAG1_REG_WRITE(0x1020A070, tmp); /*set CONSYS JTAG mode 0x10005310=0x77111111 0x10005320=0x00077777*/ JTAG2_REG_WRITE(0x1000531C, 0xff111111); JTAG2_REG_WRITE(0x1000532C, 0x000fffff); /*set CONSYS debug flag mode*/ JTAG2_REG_WRITE(0x10005410, 0x77700000); /* GPIO141 ~ GPIO143 */ JTAG2_REG_WRITE(0x10005420, 0x00000077); /* GPIO144 ~ GPIO145 */ JTAG2_REG_WRITE(0x10005370, 0x70000000); /* GPIO63 */ JTAG2_REG_WRITE(0x10005380, 0x00000777); /* GPIO64 ~ GPIO66 */ JTAG2_REG_WRITE(0x100053a0, 0x70000000); /* GPIO87 */ JTAG2_REG_WRITE(0x100053b0, 0x00000777); /* GPIO88 ~ GPIO90 */ JTAG2_REG_WRITE(0x100053d0, 0x00777000); /* GPIO107 ~ GPIO109 */ return iRet; }
static INT32 mtk_wcn_consys_jtag_set_for_mcu(VOID) { #if 0 int iRet = -1; WMT_PLAT_INFO_FUNC("WCN jtag_set_for_mcu start...\n"); jtag_addr1 = ioremap(JTAG_ADDR1_BASE, 0x5000); if (jtag_addr1 == 0) { WMT_PLAT_ERR_FUNC("remap jtag_addr1 fail!\n"); return iRet; } WMT_PLAT_INFO_FUNC("jtag_addr1 = 0x%p\n", jtag_addr1); JTAG1_REG_WRITE(0x100053c4, 0x11111100); JTAG1_REG_WRITE(0x100053d4, 0x00111111); /*Enable IES of all pins */ JTAG1_REG_WRITE(0x10002014, 0x00000003); JTAG1_REG_WRITE(0x10005334, 0x55000000); JTAG1_REG_WRITE(0x10005344, 0x00555555); JTAG1_REG_WRITE(0x10005008, 0xc0000000); JTAG1_REG_WRITE(0x10005018, 0x0000000d); JTAG1_REG_WRITE(0x10005014, 0x00000032); JTAG1_REG_WRITE(0x100020a4, 0x000000ff); JTAG1_REG_WRITE(0x100020d4, 0x000000b4); JTAG1_REG_WRITE(0x100020d8, 0x0000004b); WMT_PLAT_INFO_FUNC("WCN jtag set for mcu start...\n"); kal_int32 iRet = 0; kal_uint32 tmp = 0; kal_int32 addr = 0; kal_int32 remap_addr1 = 0; kal_int32 remap_addr2 = 0; remap_addr1 = ioremap(JTAG_ADDR1_BASE, 0x1000); if (remap_addr1 == 0) { WMT_PLAT_ERR_FUNC("remap jtag_addr1 fail!\n"); return -1; } remap_addr2 = ioremap(JTAG_ADDR2_BASE, 0x100); if (remap_addr2 == 0) { WMT_PLAT_ERR_FUNC("remap jtag_addr2 fail!\n"); return -1; } /*Pinmux setting for MT6625 I/F */ addr = remap_addr1 + 0x03C0; tmp = DRV_Reg32(addr); tmp = tmp & 0xff; tmp = tmp | 0x11111100; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); addr = remap_addr1 + 0x03D0; tmp = DRV_Reg32(addr); tmp = tmp & 0xff000000; tmp = tmp | 0x00111111; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /*AP GPIO Setting 1 <default use> */ /*Enable IES */ /* addr = 0x10002014; */ addr = remap_addr2 + 0x0014; tmp = 0x00000003; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /*GPIO mode setting */ /* addr = 0x10005334; */ addr = remap_addr1 + 0x0334; tmp = 0x55000000; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /* addr = 0x10005344; */ addr = remap_addr1 + 0x0344; tmp = 0x00555555; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /*GPIO direction control */ /* addr = 0x10005008; */ addr = remap_addr1 + 0x0008; tmp = 0xc0000000; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /* addr = 0x10005018; */ addr = remap_addr1 + 0x0018; tmp = 0x0000000d; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /* addr = 0x10005014; */ addr = remap_addr1 + 0x0014; tmp = 0x00000032; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /*PULL Enable */ /* addr = 0x100020a4; */ addr = remap_addr2 + 0x00a4; tmp = 0x000000ff; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /*PULL select enable */ /* addr = 0x100020d4; */ addr = remap_addr2 + 0x00d4; tmp = 0x000000b4; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); /* addr = 0x100020d8; */ addr = remap_addr2 + 0x00d8; tmp = 0x0000004b; DRV_WriteReg32(addr, tmp); WMT_PLAT_INFO_FUNC("(RegAddr, RegVal):(0x%08x, 0x%08x)", addr, DRV_Reg32(addr)); #endif return 0; }