Detect Broadcom Brahma cores
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
index 0d10494..ef4d719 100644
--- a/include/cpuinfo.h
+++ b/include/cpuinfo.h
@@ -164,6 +164,8 @@
 	cpuinfo_vendor_via      = 11,
 	/** Cavium, Inc. Vendor of ARM64 processor microarchitectures. */
 	cpuinfo_vendor_cavium   = 12,
+	/** Broadcom, Inc. Vendor of ARM processor microarchitectures. */
+	cpuinfo_vendor_broadcom = 13,
 
 	/* Active vendors of embedded CPUs */
 
@@ -413,6 +415,11 @@
 
 	/** Marvell PJ4. */
 	cpuinfo_uarch_pj4 = 0x00900100,
+
+	/** Broadcom Brahma B15. */
+	cpuinfo_uarch_brahma_b15 = 0x00A00100,
+	/** Broadcom Brahma B53. */
+	cpuinfo_uarch_brahma_b53 = 0x00A00101,
 };
 
 struct cpuinfo_processor {
diff --git a/src/arm/uarch.c b/src/arm/uarch.c
index 89b84a3..158e195 100644
--- a/src/arm/uarch.c
+++ b/src/arm/uarch.c
@@ -90,6 +90,19 @@
 					}
 			}
 			break;
+		case 'B':
+			*vendor = cpuinfo_vendor_broadcom;
+			switch (midr_get_part(midr)) {
+				case 0x00F:
+					*uarch = cpuinfo_uarch_brahma_b15;
+					break;
+				case 0x100:
+					*uarch = cpuinfo_uarch_brahma_b53;
+					break;
+				default:
+					cpuinfo_log_warning("unknown Broadcom CPU part 0x%03"PRIx32" ignored", midr_get_part(midr));
+			}
+			break;
 #if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__)
 		case 'C':
 			*vendor = cpuinfo_vendor_cavium;
diff --git a/tools/cpu-info.c b/tools/cpu-info.c
index d1a5aad..806c617 100644
--- a/tools/cpu-info.c
+++ b/tools/cpu-info.c
@@ -34,6 +34,8 @@
 			return "VIA";
 		case cpuinfo_vendor_cavium:
 			return "Cavium";
+		case cpuinfo_vendor_broadcom:
+			return "Broadcom";
 		default:
 			return NULL;
 	}
@@ -183,6 +185,10 @@
 			return "ThunderX";
 		case cpuinfo_uarch_pj4:
 			return "PJ4";
+		case cpuinfo_uarch_brahma_b15:
+			return "Brahma B15";
+		case cpuinfo_uarch_brahma_b53:
+			return "Brahma B53";
 		default:
 			return NULL;
 	}