diff --git a/Raspberry.System/Board.cs b/Raspberry.System/Board.cs index 4595242..e391128 100644 --- a/Raspberry.System/Board.cs +++ b/Raspberry.System/Board.cs @@ -90,7 +90,17 @@ public Processor Processor get { Processor processor; - return Enum.TryParse(ProcessorName, true, out processor) ? processor : Processor.Unknown; + if (Enum.TryParse(ProcessorName, true, out processor)) + { + // Check to see if we're dealing with a Pi 4 Model B + // The Pi 4 Model B currently lies to us and tells us that it's a BCM2835 + if (processor == Processor.Bcm2835 && Model == Model.Pi4) + processor = Processor.Bcm2711; + + return processor; + } + + return Processor.Unknown; } } @@ -245,7 +255,8 @@ private Model LoadModel() case 0x2082: return Model.B3; - + case 0x03111: + return Model.Pi4; default: return Model.Unknown; } @@ -268,6 +279,7 @@ private ConnectorPinout LoadConnectorPinout() case Model.B2: case Model.Zero: case Model.B3: + case Model.Pi4: return ConnectorPinout.Plus; default: diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs index c16174b..2cc7b7f 100644 --- a/Raspberry.System/Model.cs +++ b/Raspberry.System/Model.cs @@ -56,7 +56,12 @@ public enum Model /// /// Pi 3 Model B. /// - B3 + B3, + + /// + /// Pi 4 + /// + Pi4 } /// @@ -93,6 +98,8 @@ public static string GetDisplayName(this Model model) return "Raspberry Pi Zero"; case Model.B3: return "Raspberry Pi 3 Model B"; + case Model.Pi4: + return "Raspberry Pi 4 Model B"; default: throw new ArgumentOutOfRangeException("model"); diff --git a/Raspberry.System/Processor.cs b/Raspberry.System/Processor.cs index 01e2b69..b9953d1 100644 --- a/Raspberry.System/Processor.cs +++ b/Raspberry.System/Processor.cs @@ -18,6 +18,16 @@ public enum Processor /// /// Processor is a BCM2709. /// - Bcm2709 + Bcm2709, + + /// + /// Processor is BCM2711 + /// + Bcm2711, + + /// + /// Processor is BCM2835 + /// + Bcm2835 } } \ No newline at end of file