@quarky I find something interesting....
static struct nss_platform_data nss0_pdata = {
.num_irq = 2,
.irq[0] = NSS_UBI32_CORE0_IRQ_0,
.irq[1] = NSS_UBI32_CORE0_IRQ_1,
.nmap = (uint32_t)MSM_UBI32_0_CSM_BASE,
.vmap = (uint32_t)MSM_NSS_TCM_BASE,
.nphys = IPQ806X_UBI32_0_CSM_PHYS,
.vphys = IPQ806X_NSS_TCM_PHYS,
.rst_addr = 0x40000000,
.load_addr = NSS_CORE0_LOAD_ADDR,
.turbo_frequency = NSS_FEATURE_NOT_ENABLED,
.ipv4_enabled = NSS_FEATURE_ENABLED,
.ipv4_reasm_enabled = NSS_FEATURE_ENABLED,
.ipv6_enabled = NSS_FEATURE_ENABLED,
.ipv6_reasm_enabled = NSS_FEATURE_ENABLED,
.l2switch_enabled = NSS_FEATURE_ENABLED,
.crypto_enabled = NSS_FEATURE_NOT_ENABLED,
.ipsec_enabled = NSS_FEATURE_NOT_ENABLED,
.wlanredirect_enabled = NSS_FEATURE_ENABLED,
.tun6rd_enabled = NSS_FEATURE_ENABLED,
.l2tpv2_enabled = NSS_FEATURE_ENABLED,
.tunipip6_enabled = NSS_FEATURE_ENABLED,
.gre_redir_enabled = NSS_FEATURE_ENABLED,
.shaping_enabled = NSS_FEATURE_ENABLED,
.gmac_enabled[0] = NSS_FEATURE_ENABLED,
.gmac_enabled[1] = NSS_FEATURE_ENABLED,
.gmac_enabled[2] = NSS_FEATURE_ENABLED,
.gmac_enabled[3] = NSS_FEATURE_ENABLED,
.wifioffload_enabled = NSS_FEATURE_ENABLED,
};
struct platform_device ipq806x_device_nss0 = {
.name = "qca-nss",
.id = 0,
.dev = {
.platform_data = &nss0_pdata,
},
};
static int __init parse_qca_nss_load0(char *p)
{
nss0_pdata.load_addr = memparse(p, NULL);
return 0;
}
early_param("qca-nss-drv.load0", parse_qca_nss_load0);
static struct nss_platform_data nss1_pdata = {
.num_irq = 2,
.irq[0] = NSS_UBI32_CORE1_IRQ_0,
.irq[1] = NSS_UBI32_CORE1_IRQ_1,
.nmap = (uint32_t)MSM_UBI32_1_CSM_BASE,
.vmap = (uint32_t)(MSM_NSS_TCM_BASE + SZ_64K),
.vphys = IPQ806X_NSS_TCM_PHYS + SZ_64K,
.nphys = IPQ806X_UBI32_1_CSM_PHYS,
.rst_addr = 0x40800000,
.load_addr = NSS_CORE1_LOAD_ADDR,
.turbo_frequency = NSS_FEATURE_NOT_ENABLED,
.ipv4_enabled = NSS_FEATURE_NOT_ENABLED,
.ipv4_reasm_enabled = NSS_FEATURE_NOT_ENABLED,
.ipv6_enabled = NSS_FEATURE_NOT_ENABLED,
.ipv6_reasm_enabled = NSS_FEATURE_NOT_ENABLED,
.l2switch_enabled = NSS_FEATURE_NOT_ENABLED,
.crypto_enabled = NSS_FEATURE_ENABLED,
.ipsec_enabled = NSS_FEATURE_ENABLED,
.wlanredirect_enabled = NSS_FEATURE_NOT_ENABLED,
.tun6rd_enabled = NSS_FEATURE_NOT_ENABLED,
.l2tpv2_enabled = NSS_FEATURE_NOT_ENABLED,
.tunipip6_enabled = NSS_FEATURE_NOT_ENABLED,
.gre_redir_enabled = NSS_FEATURE_NOT_ENABLED,
.shaping_enabled = NSS_FEATURE_NOT_ENABLED,
.gmac_enabled[0] = NSS_FEATURE_NOT_ENABLED,
.gmac_enabled[1] = NSS_FEATURE_NOT_ENABLED,
.gmac_enabled[2] = NSS_FEATURE_NOT_ENABLED,
.gmac_enabled[3] = NSS_FEATURE_NOT_ENABLED,
.wifioffload_enabled = NSS_FEATURE_NOT_ENABLED,
};
This is from the r7800 gpl source... As we can see turbo frequency is disabled for both core and also only the second core is used for crypto operation...
Wonder if our platform doesn't support turbo at all (or they found that it does cause stability problem)
Also there is a low mid freq that is not used at all... (275000000)
static struct clk_freq_tbl clk_tbl_nss[] = {
F_NSS_CORE(110000000, pll18, 0x0100fa, 0xfb0141, &pll18_rate[0]), /* 110Mhz */
F_NSS_CORE(275000000, pll18, 0x0100fd, 0xfe0141, &pll18_rate[0]), /* 275Mhz */
F_NSS_CORE(550000000, pll18, 0xff00ff, 0xff0001, &pll18_rate[0]), /* 550Mhz */
F_NSS_CORE(733000000, pll18, 0xff00ff, 0xff0001, &pll18_rate[1]), /* 733Mhz */
F_END
};
static struct clk_freq_tbl clk_tbl_nss_fast[] = {
F_NSS_CORE(110000000, pll18, 0x0100fa, 0xfb0141, &pll18_rate[0]), /* 110Mhz */
F_NSS_CORE(275000000, pll18, 0x0100fd, 0xfe0141, &pll18_rate[0]), /* 275Mhz */
F_NSS_CORE(600000000, pll18, 0xff00ff, 0xff0001, &pll18_rate[3]), /* 600Mhz */
F_NSS_CORE(800000000, pll18, 0xff00ff, 0xff0001, &pll18_rate[2]), /* 800Mhz */
F_END
};