@@ -16,7 +16,8 @@ use std::{
1616} ;
1717
1818use 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 ,
2021} ;
2122
2223pub struct UefiTimeout {
@@ -767,49 +768,64 @@ impl Component for EcComponent {
767768 println ! ( "file version: {:?}" , str :: from_utf8( firmware. version) ) ;
768769 }
769770
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 )
784783 }
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) ;
794797 Err ( Status :: DEVICE_ERROR )
795798 }
796799 }
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+ }
807811 }
808812 }
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+ }
813829 }
814830 } ;
815831
0 commit comments