Lines Matching refs:ci
240 static void brcmf_chip_sb_corerev(struct brcmf_chip_priv *ci, in brcmf_chip_sb_corerev() argument
245 regdata = ci->ops->read32(ci->ctx, CORE_SB(core->base, sbidhigh)); in brcmf_chip_sb_corerev()
251 struct brcmf_chip_priv *ci; in brcmf_chip_sb_iscoreup() local
255 ci = core->chip; in brcmf_chip_sb_iscoreup()
257 regdata = ci->ops->read32(ci->ctx, address); in brcmf_chip_sb_iscoreup()
265 struct brcmf_chip_priv *ci; in brcmf_chip_ai_iscoreup() local
269 ci = core->chip; in brcmf_chip_ai_iscoreup()
270 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_iscoreup()
273 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); in brcmf_chip_ai_iscoreup()
282 struct brcmf_chip_priv *ci; in brcmf_chip_sb_coredisable() local
285 ci = core->chip; in brcmf_chip_sb_coredisable()
287 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
291 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
297 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
298 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_coredisable()
301 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
303 SPINWAIT((ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)) in brcmf_chip_sb_coredisable()
306 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)); in brcmf_chip_sb_coredisable()
310 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbidlow)); in brcmf_chip_sb_coredisable()
312 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
315 ci->ops->write32(ci->ctx, in brcmf_chip_sb_coredisable()
317 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
320 SPINWAIT((ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
328 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), val); in brcmf_chip_sb_coredisable()
329 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
333 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbidlow)); in brcmf_chip_sb_coredisable()
335 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
338 ci->ops->write32(ci->ctx, in brcmf_chip_sb_coredisable()
344 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_coredisable()
352 struct brcmf_chip_priv *ci; in brcmf_chip_ai_coredisable() local
355 ci = core->chip; in brcmf_chip_ai_coredisable()
358 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); in brcmf_chip_ai_coredisable()
363 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_coredisable()
365 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_coredisable()
368 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_RESET_CTL, in brcmf_chip_ai_coredisable()
373 SPINWAIT(ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) != in brcmf_chip_ai_coredisable()
378 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_coredisable()
380 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_coredisable()
386 struct brcmf_chip_priv *ci; in brcmf_chip_sb_resetcore() local
390 ci = core->chip; in brcmf_chip_sb_resetcore()
403 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
406 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
410 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)); in brcmf_chip_sb_resetcore()
412 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatehigh), 0); in brcmf_chip_sb_resetcore()
414 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbimstate)); in brcmf_chip_sb_resetcore()
417 ci->ops->write32(ci->ctx, CORE_SB(base, sbimstate), regdata); in brcmf_chip_sb_resetcore()
421 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
423 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
427 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
429 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
436 struct brcmf_chip_priv *ci; in brcmf_chip_ai_resetcore() local
441 ci = core->chip; in brcmf_chip_ai_resetcore()
445 d11core2 = brcmf_chip_get_d11core(&ci->pub, 1); in brcmf_chip_ai_resetcore()
459 while (ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) & in brcmf_chip_ai_resetcore()
461 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_RESET_CTL, 0); in brcmf_chip_ai_resetcore()
470 while (ci->ops->read32(ci->ctx, in brcmf_chip_ai_resetcore()
473 ci->ops->write32(ci->ctx, in brcmf_chip_ai_resetcore()
483 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_resetcore()
485 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_resetcore()
488 ci->ops->write32(ci->ctx, d11priv2->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_resetcore()
490 ci->ops->read32(ci->ctx, d11priv2->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_resetcore()
503 static struct brcmf_core *brcmf_chip_add_core(struct brcmf_chip_priv *ci, in brcmf_chip_add_core() argument
515 core->chip = ci; in brcmf_chip_add_core()
518 list_add_tail(&core->list, &ci->cores); in brcmf_chip_add_core()
523 static int brcmf_chip_cores_check(struct brcmf_chip_priv *ci) in brcmf_chip_cores_check() argument
531 list_for_each_entry(core, &ci->cores, list) { in brcmf_chip_cores_check()
704 static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) in brcmf_chip_tcm_rambase() argument
706 switch (ci->pub.chip) { in brcmf_chip_tcm_rambase()
731 return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000; in brcmf_chip_tcm_rambase()
741 brcmf_err("unknown chip: %s\n", ci->pub.name); in brcmf_chip_tcm_rambase()
749 struct brcmf_chip_priv *ci = container_of(pub, struct brcmf_chip_priv, in brcmf_chip_get_raminfo() local
754 mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_ARM_CR4); in brcmf_chip_get_raminfo()
757 ci->pub.ramsize = brcmf_chip_tcm_ramsize(mem_core); in brcmf_chip_get_raminfo()
758 ci->pub.rambase = brcmf_chip_tcm_rambase(ci); in brcmf_chip_get_raminfo()
759 if (ci->pub.rambase == INVALID_RAMBASE) { in brcmf_chip_get_raminfo()
764 mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_SYS_MEM); in brcmf_chip_get_raminfo()
768 ci->pub.ramsize = brcmf_chip_sysmem_ramsize(mem_core); in brcmf_chip_get_raminfo()
769 ci->pub.rambase = brcmf_chip_tcm_rambase(ci); in brcmf_chip_get_raminfo()
770 if (ci->pub.rambase == INVALID_RAMBASE) { in brcmf_chip_get_raminfo()
775 mem = brcmf_chip_get_core(&ci->pub, in brcmf_chip_get_raminfo()
783 brcmf_chip_socram_ramsize(mem_core, &ci->pub.ramsize, in brcmf_chip_get_raminfo()
784 &ci->pub.srsize); in brcmf_chip_get_raminfo()
788 ci->pub.rambase, ci->pub.ramsize, ci->pub.ramsize, in brcmf_chip_get_raminfo()
789 ci->pub.srsize, ci->pub.srsize); in brcmf_chip_get_raminfo()
791 if (!ci->pub.ramsize) { in brcmf_chip_get_raminfo()
796 if (ci->pub.ramsize > BRCMF_CHIP_MAX_MEMSIZE) { in brcmf_chip_get_raminfo()
804 static u32 brcmf_chip_dmp_get_desc(struct brcmf_chip_priv *ci, u32 *eromaddr, in brcmf_chip_dmp_get_desc() argument
810 val = ci->ops->read32(ci->ctx, *eromaddr); in brcmf_chip_dmp_get_desc()
824 static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr, in brcmf_chip_dmp_get_regaddr() argument
834 val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc); in brcmf_chip_dmp_get_regaddr()
849 val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc); in brcmf_chip_dmp_get_regaddr()
866 brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
872 szdesc = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
875 brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
896 int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci) in brcmf_chip_dmp_erom_scan() argument
907 eromaddr = ci->ops->read32(ci->ctx, in brcmf_chip_dmp_erom_scan()
908 CORE_CC_REG(ci->pub.enum_base, eromptr)); in brcmf_chip_dmp_erom_scan()
911 val = brcmf_chip_dmp_get_desc(ci, &eromaddr, &desc_type); in brcmf_chip_dmp_erom_scan()
925 val = brcmf_chip_dmp_get_desc(ci, &eromaddr, &desc_type); in brcmf_chip_dmp_erom_scan()
941 err = brcmf_chip_dmp_get_regaddr(ci, &eromaddr, &base, &wrap); in brcmf_chip_dmp_erom_scan()
946 core = brcmf_chip_add_core(ci, id, base, wrap); in brcmf_chip_dmp_erom_scan()
961 static int brcmf_chip_recognition(struct brcmf_chip_priv *ci) in brcmf_chip_recognition() argument
973 regdata = ci->ops->read32(ci->ctx, in brcmf_chip_recognition()
974 CORE_CC_REG(ci->pub.enum_base, chipid)); in brcmf_chip_recognition()
975 ci->pub.chip = regdata & CID_ID_MASK; in brcmf_chip_recognition()
976 ci->pub.chiprev = (regdata & CID_REV_MASK) >> CID_REV_SHIFT; in brcmf_chip_recognition()
979 brcmf_chip_name(ci->pub.chip, ci->pub.chiprev, in brcmf_chip_recognition()
980 ci->pub.name, sizeof(ci->pub.name)); in brcmf_chip_recognition()
982 socitype == SOCI_SB ? "SB" : "AXI", ci->pub.name); in brcmf_chip_recognition()
985 if (ci->pub.chip != BRCM_CC_4329_CHIP_ID) { in brcmf_chip_recognition()
989 ci->iscoreup = brcmf_chip_sb_iscoreup; in brcmf_chip_recognition()
990 ci->coredisable = brcmf_chip_sb_coredisable; in brcmf_chip_recognition()
991 ci->resetcore = brcmf_chip_sb_resetcore; in brcmf_chip_recognition()
993 core = brcmf_chip_add_core(ci, BCMA_CORE_CHIPCOMMON, in brcmf_chip_recognition()
995 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
996 core = brcmf_chip_add_core(ci, BCMA_CORE_SDIO_DEV, in brcmf_chip_recognition()
998 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
999 core = brcmf_chip_add_core(ci, BCMA_CORE_INTERNAL_MEM, in brcmf_chip_recognition()
1001 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
1002 core = brcmf_chip_add_core(ci, BCMA_CORE_ARM_CM3, in brcmf_chip_recognition()
1004 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
1006 core = brcmf_chip_add_core(ci, BCMA_CORE_80211, 0x18001000, 0); in brcmf_chip_recognition()
1007 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
1009 ci->iscoreup = brcmf_chip_ai_iscoreup; in brcmf_chip_recognition()
1010 ci->coredisable = brcmf_chip_ai_coredisable; in brcmf_chip_recognition()
1011 ci->resetcore = brcmf_chip_ai_resetcore; in brcmf_chip_recognition()
1013 brcmf_chip_dmp_erom_scan(ci); in brcmf_chip_recognition()
1020 ret = brcmf_chip_cores_check(ci); in brcmf_chip_recognition()
1025 brcmf_chip_set_passive(&ci->pub); in brcmf_chip_recognition()
1030 if (ci->ops->reset) { in brcmf_chip_recognition()
1031 ci->ops->reset(ci->ctx, &ci->pub); in brcmf_chip_recognition()
1032 brcmf_chip_set_passive(&ci->pub); in brcmf_chip_recognition()
1035 return brcmf_chip_get_raminfo(&ci->pub); in brcmf_chip_recognition()