Lines Matching refs:ci
248 static void brcmf_chip_sb_corerev(struct brcmf_chip_priv *ci, in brcmf_chip_sb_corerev() argument
253 regdata = ci->ops->read32(ci->ctx, CORE_SB(core->base, sbidhigh)); in brcmf_chip_sb_corerev()
259 struct brcmf_chip_priv *ci; in brcmf_chip_sb_iscoreup() local
263 ci = core->chip; in brcmf_chip_sb_iscoreup()
265 regdata = ci->ops->read32(ci->ctx, address); in brcmf_chip_sb_iscoreup()
273 struct brcmf_chip_priv *ci; in brcmf_chip_ai_iscoreup() local
277 ci = core->chip; in brcmf_chip_ai_iscoreup()
278 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_iscoreup()
281 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); in brcmf_chip_ai_iscoreup()
290 struct brcmf_chip_priv *ci; in brcmf_chip_sb_coredisable() local
293 ci = core->chip; in brcmf_chip_sb_coredisable()
295 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
299 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
305 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
306 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_coredisable()
309 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
311 SPINWAIT((ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)) in brcmf_chip_sb_coredisable()
314 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)); in brcmf_chip_sb_coredisable()
318 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbidlow)); in brcmf_chip_sb_coredisable()
320 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
323 ci->ops->write32(ci->ctx, in brcmf_chip_sb_coredisable()
325 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
328 SPINWAIT((ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
336 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), val); in brcmf_chip_sb_coredisable()
337 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_coredisable()
341 val = ci->ops->read32(ci->ctx, CORE_SB(base, sbidlow)); in brcmf_chip_sb_coredisable()
343 val = ci->ops->read32(ci->ctx, in brcmf_chip_sb_coredisable()
346 ci->ops->write32(ci->ctx, in brcmf_chip_sb_coredisable()
352 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_coredisable()
360 struct brcmf_chip_priv *ci; in brcmf_chip_ai_coredisable() local
363 ci = core->chip; in brcmf_chip_ai_coredisable()
366 regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); in brcmf_chip_ai_coredisable()
371 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_coredisable()
373 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_coredisable()
376 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_RESET_CTL, in brcmf_chip_ai_coredisable()
381 SPINWAIT(ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) != in brcmf_chip_ai_coredisable()
386 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_coredisable()
388 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_coredisable()
394 struct brcmf_chip_priv *ci; in brcmf_chip_sb_resetcore() local
398 ci = core->chip; in brcmf_chip_sb_resetcore()
411 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
414 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
418 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatehigh)); in brcmf_chip_sb_resetcore()
420 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatehigh), 0); in brcmf_chip_sb_resetcore()
422 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbimstate)); in brcmf_chip_sb_resetcore()
425 ci->ops->write32(ci->ctx, CORE_SB(base, sbimstate), regdata); in brcmf_chip_sb_resetcore()
429 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
431 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
435 ci->ops->write32(ci->ctx, CORE_SB(base, sbtmstatelow), in brcmf_chip_sb_resetcore()
437 regdata = ci->ops->read32(ci->ctx, CORE_SB(base, sbtmstatelow)); in brcmf_chip_sb_resetcore()
444 struct brcmf_chip_priv *ci; in brcmf_chip_ai_resetcore() local
447 ci = core->chip; in brcmf_chip_ai_resetcore()
453 while (ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) & in brcmf_chip_ai_resetcore()
455 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_RESET_CTL, 0); in brcmf_chip_ai_resetcore()
462 ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, in brcmf_chip_ai_resetcore()
464 ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL); in brcmf_chip_ai_resetcore()
476 static struct brcmf_core *brcmf_chip_add_core(struct brcmf_chip_priv *ci, in brcmf_chip_add_core() argument
488 core->chip = ci; in brcmf_chip_add_core()
491 list_add_tail(&core->list, &ci->cores); in brcmf_chip_add_core()
496 static int brcmf_chip_cores_check(struct brcmf_chip_priv *ci) in brcmf_chip_cores_check() argument
504 list_for_each_entry(core, &ci->cores, list) { in brcmf_chip_cores_check()
670 static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) in brcmf_chip_tcm_rambase() argument
672 switch (ci->pub.chip) { in brcmf_chip_tcm_rambase()
691 brcmf_err("unknown chip: %s\n", ci->pub.name); in brcmf_chip_tcm_rambase()
697 static int brcmf_chip_get_raminfo(struct brcmf_chip_priv *ci) in brcmf_chip_get_raminfo() argument
702 mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_ARM_CR4); in brcmf_chip_get_raminfo()
705 ci->pub.ramsize = brcmf_chip_tcm_ramsize(mem_core); in brcmf_chip_get_raminfo()
706 ci->pub.rambase = brcmf_chip_tcm_rambase(ci); in brcmf_chip_get_raminfo()
707 if (!ci->pub.rambase) { in brcmf_chip_get_raminfo()
712 mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_SYS_MEM); in brcmf_chip_get_raminfo()
716 ci->pub.ramsize = brcmf_chip_sysmem_ramsize(mem_core); in brcmf_chip_get_raminfo()
717 ci->pub.rambase = brcmf_chip_tcm_rambase(ci); in brcmf_chip_get_raminfo()
718 if (!ci->pub.rambase) { in brcmf_chip_get_raminfo()
723 mem = brcmf_chip_get_core(&ci->pub, in brcmf_chip_get_raminfo()
731 brcmf_chip_socram_ramsize(mem_core, &ci->pub.ramsize, in brcmf_chip_get_raminfo()
732 &ci->pub.srsize); in brcmf_chip_get_raminfo()
736 ci->pub.rambase, ci->pub.ramsize, ci->pub.ramsize, in brcmf_chip_get_raminfo()
737 ci->pub.srsize, ci->pub.srsize); in brcmf_chip_get_raminfo()
739 if (!ci->pub.ramsize) { in brcmf_chip_get_raminfo()
744 if (ci->pub.ramsize > BRCMF_CHIP_MAX_MEMSIZE) { in brcmf_chip_get_raminfo()
752 static u32 brcmf_chip_dmp_get_desc(struct brcmf_chip_priv *ci, u32 *eromaddr, in brcmf_chip_dmp_get_desc() argument
758 val = ci->ops->read32(ci->ctx, *eromaddr); in brcmf_chip_dmp_get_desc()
772 static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr, in brcmf_chip_dmp_get_regaddr() argument
783 val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc); in brcmf_chip_dmp_get_regaddr()
799 val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc); in brcmf_chip_dmp_get_regaddr()
809 brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
815 val = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
818 brcmf_chip_dmp_get_desc(ci, eromaddr, NULL); in brcmf_chip_dmp_get_regaddr()
838 int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci) in brcmf_chip_dmp_erom_scan() argument
849 eromaddr = ci->ops->read32(ci->ctx, CORE_CC_REG(SI_ENUM_BASE, eromptr)); in brcmf_chip_dmp_erom_scan()
852 val = brcmf_chip_dmp_get_desc(ci, &eromaddr, &desc_type); in brcmf_chip_dmp_erom_scan()
866 val = brcmf_chip_dmp_get_desc(ci, &eromaddr, &desc_type); in brcmf_chip_dmp_erom_scan()
882 err = brcmf_chip_dmp_get_regaddr(ci, &eromaddr, &base, &wrap); in brcmf_chip_dmp_erom_scan()
887 core = brcmf_chip_add_core(ci, id, base, wrap); in brcmf_chip_dmp_erom_scan()
897 static int brcmf_chip_recognition(struct brcmf_chip_priv *ci) in brcmf_chip_recognition() argument
909 regdata = ci->ops->read32(ci->ctx, CORE_CC_REG(SI_ENUM_BASE, chipid)); in brcmf_chip_recognition()
910 ci->pub.chip = regdata & CID_ID_MASK; in brcmf_chip_recognition()
911 ci->pub.chiprev = (regdata & CID_REV_MASK) >> CID_REV_SHIFT; in brcmf_chip_recognition()
914 brcmf_chip_name(ci->pub.chip, ci->pub.name, sizeof(ci->pub.name)); in brcmf_chip_recognition()
916 socitype == SOCI_SB ? "SB" : "AXI", ci->pub.name, in brcmf_chip_recognition()
917 ci->pub.chiprev); in brcmf_chip_recognition()
920 if (ci->pub.chip != BRCM_CC_4329_CHIP_ID) { in brcmf_chip_recognition()
924 ci->iscoreup = brcmf_chip_sb_iscoreup; in brcmf_chip_recognition()
925 ci->coredisable = brcmf_chip_sb_coredisable; in brcmf_chip_recognition()
926 ci->resetcore = brcmf_chip_sb_resetcore; in brcmf_chip_recognition()
928 core = brcmf_chip_add_core(ci, BCMA_CORE_CHIPCOMMON, in brcmf_chip_recognition()
930 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
931 core = brcmf_chip_add_core(ci, BCMA_CORE_SDIO_DEV, in brcmf_chip_recognition()
933 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
934 core = brcmf_chip_add_core(ci, BCMA_CORE_INTERNAL_MEM, in brcmf_chip_recognition()
936 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
937 core = brcmf_chip_add_core(ci, BCMA_CORE_ARM_CM3, in brcmf_chip_recognition()
939 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
941 core = brcmf_chip_add_core(ci, BCMA_CORE_80211, 0x18001000, 0); in brcmf_chip_recognition()
942 brcmf_chip_sb_corerev(ci, core); in brcmf_chip_recognition()
944 ci->iscoreup = brcmf_chip_ai_iscoreup; in brcmf_chip_recognition()
945 ci->coredisable = brcmf_chip_ai_coredisable; in brcmf_chip_recognition()
946 ci->resetcore = brcmf_chip_ai_resetcore; in brcmf_chip_recognition()
948 brcmf_chip_dmp_erom_scan(ci); in brcmf_chip_recognition()
955 ret = brcmf_chip_cores_check(ci); in brcmf_chip_recognition()
960 brcmf_chip_set_passive(&ci->pub); in brcmf_chip_recognition()
965 if (ci->ops->reset) { in brcmf_chip_recognition()
966 ci->ops->reset(ci->ctx, &ci->pub); in brcmf_chip_recognition()
967 brcmf_chip_set_passive(&ci->pub); in brcmf_chip_recognition()
970 return brcmf_chip_get_raminfo(ci); in brcmf_chip_recognition()