Lines Matching refs:cxlhdm
70 static void parse_hdm_decoder_caps(struct cxl_hdm *cxlhdm) in parse_hdm_decoder_caps() argument
74 hdm_cap = readl(cxlhdm->regs.hdm_decoder + CXL_HDM_DECODER_CAP_OFFSET); in parse_hdm_decoder_caps()
75 cxlhdm->decoder_count = cxl_hdm_decoder_count(hdm_cap); in parse_hdm_decoder_caps()
76 cxlhdm->target_count = in parse_hdm_decoder_caps()
79 cxlhdm->interleave_mask |= GENMASK(11, 8); in parse_hdm_decoder_caps()
81 cxlhdm->interleave_mask |= GENMASK(14, 12); in parse_hdm_decoder_caps()
106 struct cxl_hdm *cxlhdm; in should_emulate_decoders() local
114 cxlhdm = dev_get_drvdata(&info->port->dev); in should_emulate_decoders()
115 hdm = cxlhdm->regs.hdm_decoder; in should_emulate_decoders()
131 for (i = 0; i < cxlhdm->decoder_count; i++) { in should_emulate_decoders()
157 struct cxl_hdm *cxlhdm; in devm_cxl_setup_hdm() local
161 cxlhdm = devm_kzalloc(dev, sizeof(*cxlhdm), GFP_KERNEL); in devm_cxl_setup_hdm()
162 if (!cxlhdm) in devm_cxl_setup_hdm()
164 cxlhdm->port = port; in devm_cxl_setup_hdm()
165 dev_set_drvdata(dev, cxlhdm); in devm_cxl_setup_hdm()
169 cxlhdm->decoder_count = info->ranges; in devm_cxl_setup_hdm()
170 return cxlhdm; in devm_cxl_setup_hdm()
176 rc = map_hdm_decoder_regs(port, crb, &cxlhdm->regs); in devm_cxl_setup_hdm()
181 parse_hdm_decoder_caps(cxlhdm); in devm_cxl_setup_hdm()
182 if (cxlhdm->decoder_count == 0) { in devm_cxl_setup_hdm()
194 cxlhdm->decoder_count = info->ranges; in devm_cxl_setup_hdm()
197 return cxlhdm; in devm_cxl_setup_hdm()
637 struct cxl_hdm *cxlhdm = dev_get_drvdata(&port->dev); in cxl_decoder_commit() local
638 void __iomem *hdm = cxlhdm->regs.hdm_decoder; in cxl_decoder_commit()
712 struct cxl_hdm *cxlhdm = dev_get_drvdata(&port->dev); in cxl_decoder_reset() local
713 void __iomem *hdm = cxlhdm->regs.hdm_decoder; in cxl_decoder_reset()
940 static void cxl_settle_decoders(struct cxl_hdm *cxlhdm) in cxl_settle_decoders() argument
942 void __iomem *hdm = cxlhdm->regs.hdm_decoder; in cxl_settle_decoders()
956 for (i = 0, committed = 0; i < cxlhdm->decoder_count; i++) { in cxl_settle_decoders()
963 if (committed != cxlhdm->decoder_count) in cxl_settle_decoders()
972 int devm_cxl_enumerate_decoders(struct cxl_hdm *cxlhdm, in devm_cxl_enumerate_decoders() argument
975 void __iomem *hdm = cxlhdm->regs.hdm_decoder; in devm_cxl_enumerate_decoders()
976 struct cxl_port *port = cxlhdm->port; in devm_cxl_enumerate_decoders()
980 cxl_settle_decoders(cxlhdm); in devm_cxl_enumerate_decoders()
982 for (i = 0; i < cxlhdm->decoder_count; i++) { in devm_cxl_enumerate_decoders()
984 int rc, target_count = cxlhdm->target_count; in devm_cxl_enumerate_decoders()