@@ -16,7 +16,8 @@ use std::{
16
16
} ;
17
17
18
18
use super :: {
19
- Component , EC2ROM , ECROM , ECTAG , FIRMWAREDIR , FIRMWARENSH , pci_read, shell, sideband:: Sideband ,
19
+ Component , EC2ROM , ECROM , ECTAG , FIRMWAREDIR , FIRMWARENSH , MODEL_EC_NSH , pci_read, shell,
20
+ sideband:: Sideband ,
20
21
} ;
21
22
22
23
pub struct UefiTimeout {
@@ -767,49 +768,64 @@ impl Component for EcComponent {
767
768
println ! ( "file version: {:?}" , str :: from_utf8( firmware. version) ) ;
768
769
}
769
770
770
- let result = match & self . ec {
771
- EcKind :: Pang ( _pmc, _system_version) => {
772
- find ( FIRMWARENSH ) ?;
773
- let command = if self . master { "ec" } else { "ec2" } ;
774
- let status = shell ( & format ! (
775
- "{} {} {} flash" ,
776
- FIRMWARENSH , FIRMWAREDIR , command
777
- ) ) ?;
778
- if status == 0 {
779
- Ok ( ( ) )
780
- } else {
781
- println ! ( "{} Flash Error: {}" , self . name( ) , status) ;
782
- Err ( Status :: DEVICE_ERROR )
783
- }
771
+ let result = if find ( MODEL_EC_NSH ) . is_ok ( ) {
772
+ find ( FIRMWARENSH ) ?;
773
+ let command = if self . master { "ec" } else { "ec2" } ;
774
+ let status = shell ( & format ! (
775
+ "{} {} {} flash" ,
776
+ FIRMWARENSH , FIRMWAREDIR , command
777
+ ) ) ?;
778
+ if status == 0 {
779
+ Ok ( ( ) )
780
+ } else {
781
+ println ! ( "{} Flash Error: {}" , self . name( ) , status) ;
782
+ Err ( Status :: DEVICE_ERROR )
784
783
}
785
- EcKind :: System76 ( _ec, _pmc) => {
786
- // System76 EC requires reset to load new firmware
787
- requires_reset = true ;
788
-
789
- // Flash main ROM
790
- match unsafe { flash ( & firmware_data, SpiTarget :: Main ) } {
791
- Ok ( ( ) ) => Ok ( ( ) ) ,
792
- Err ( err) => {
793
- println ! ( "{} Flash Error: {:X?}" , self . name( ) , err) ;
784
+ } else {
785
+ match & self . ec {
786
+ EcKind :: Pang ( _pmc, _system_version) => {
787
+ find ( FIRMWARENSH ) ?;
788
+ let command = if self . master { "ec" } else { "ec2" } ;
789
+ let status = shell ( & format ! (
790
+ "{} {} {} flash" ,
791
+ FIRMWARENSH , FIRMWAREDIR , command
792
+ ) ) ?;
793
+ if status == 0 {
794
+ Ok ( ( ) )
795
+ } else {
796
+ println ! ( "{} Flash Error: {}" , self . name( ) , status) ;
794
797
Err ( Status :: DEVICE_ERROR )
795
798
}
796
799
}
797
- }
798
- EcKind :: Legacy ( _ec) => {
799
- requires_reset = true ;
800
-
801
- // Use open source flashing code
802
- match unsafe { flash_legacy ( & firmware_data) } {
803
- Ok ( ( ) ) => Ok ( ( ) ) ,
804
- Err ( err) => {
805
- println ! ( "{} Flash Error: {:X?}" , self . name( ) , err) ;
806
- Err ( Status :: DEVICE_ERROR )
800
+ EcKind :: System76 ( _ec, _pmc) => {
801
+ // System76 EC requires reset to load new firmware
802
+ requires_reset = true ;
803
+
804
+ // Flash main ROM
805
+ match unsafe { flash ( & firmware_data, SpiTarget :: Main ) } {
806
+ Ok ( ( ) ) => Ok ( ( ) ) ,
807
+ Err ( err) => {
808
+ println ! ( "{} Flash Error: {:X?}" , self . name( ) , err) ;
809
+ Err ( Status :: DEVICE_ERROR )
810
+ }
807
811
}
808
812
}
809
- }
810
- EcKind :: Unknown => {
811
- println ! ( "{} Failed to flash EcKind::Unknown" , self . name( ) ) ;
812
- Err ( Status :: DEVICE_ERROR )
813
+ EcKind :: Legacy ( _ec) => {
814
+ requires_reset = true ;
815
+
816
+ // Use open source flashing code
817
+ match unsafe { flash_legacy ( & firmware_data) } {
818
+ Ok ( ( ) ) => Ok ( ( ) ) ,
819
+ Err ( err) => {
820
+ println ! ( "{} Flash Error: {:X?}" , self . name( ) , err) ;
821
+ Err ( Status :: DEVICE_ERROR )
822
+ }
823
+ }
824
+ }
825
+ EcKind :: Unknown => {
826
+ println ! ( "{} Failed to flash EcKind::Unknown" , self . name( ) ) ;
827
+ Err ( Status :: DEVICE_ERROR )
828
+ }
813
829
}
814
830
} ;
815
831
0 commit comments