Commit 3939dba0 authored by Dave Jiang's avatar Dave Jiang
Browse files

Merge branch 'for-7.1/cxl-misc' into cxl-for-next

cxl/hdm: Add support for 32 switch decoders
parents bfbb6cb1 3624a227
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ static struct cxl_hdm *devm_cxl_setup_hdm(struct cxl_port *port,
	}

	parse_hdm_decoder_caps(cxlhdm);
	if (cxlhdm->decoder_count == 0) {
	if (cxlhdm->decoder_count < 0) {
		dev_err(dev, "Spec violation. Caps invalid\n");
		return ERR_PTR(-ENXIO);
	}
+10 −1
Original line number Diff line number Diff line
@@ -78,7 +78,16 @@ static inline int cxl_hdm_decoder_count(u32 cap_hdr)
{
	int val = FIELD_GET(CXL_HDM_DECODER_COUNT_MASK, cap_hdr);

	return val ? val * 2 : 1;
	switch (val) {
	case 0:
		return 1;
	case 1 ... 8:
		return val * 2;
	case 9 ... 12:
		return (val - 4) * 4;
	default:
		return -ENXIO;
	}
}

/* Encode defined in CXL 2.0 8.2.5.12.7 HDM Decoder Control Register */
+1 −1
Original line number Diff line number Diff line
@@ -841,7 +841,7 @@ int cxl_mem_sanitize(struct cxl_memdev *cxlmd, u16 cmd);
 */
struct cxl_hdm {
	struct cxl_component_regs regs;
	unsigned int decoder_count;
	int decoder_count;
	unsigned int target_count;
	unsigned int interleave_mask;
	unsigned long iw_cap_mask;