@@ -35,6 +35,7 @@ use crate::chromium_ec;
3535use crate :: chromium_ec:: commands:: DeckStateMode ;
3636use crate :: chromium_ec:: commands:: FpLedBrightnessLevel ;
3737use crate :: chromium_ec:: commands:: RebootEcCmd ;
38+ use crate :: chromium_ec:: commands:: TabletModeOverride ;
3839use crate :: chromium_ec:: EcResponseStatus ;
3940use crate :: chromium_ec:: { print_err, EcFlashType } ;
4041use crate :: chromium_ec:: { EcError , EcResult } ;
@@ -61,6 +62,14 @@ use crate::chromium_ec::{CrosEc, CrosEcDriverType, HardwareDeviceType};
6162#[ cfg( feature = "uefi" ) ]
6263use core:: prelude:: rust_2021:: derive;
6364
65+ #[ cfg_attr( not( feature = "uefi" ) , derive( clap:: ValueEnum ) ) ]
66+ #[ derive( Clone , Debug , PartialEq ) ]
67+ pub enum TabletModeArg {
68+ Auto ,
69+ Tablet ,
70+ Laptop ,
71+ }
72+
6473#[ cfg_attr( not( feature = "uefi" ) , derive( clap:: ValueEnum ) ) ]
6574#[ derive( Clone , Debug , PartialEq ) ]
6675pub enum ConsoleArg {
@@ -152,6 +161,7 @@ pub struct Cli {
152161 pub get_gpio : Option < String > ,
153162 pub fp_brightness : Option < Option < FpBrightnessArg > > ,
154163 pub kblight : Option < Option < u8 > > ,
164+ pub tablet_mode : Option < TabletModeArg > ,
155165 pub console : Option < ConsoleArg > ,
156166 pub reboot_ec : Option < RebootEcArg > ,
157167 pub hash : Option < String > ,
@@ -743,6 +753,13 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
743753 } else {
744754 println ! ( "Unable to tell" ) ;
745755 }
756+ } else if let Some ( tablet_arg) = & args. tablet_mode {
757+ let mode = match tablet_arg {
758+ TabletModeArg :: Auto => TabletModeOverride :: Default ,
759+ TabletModeArg :: Tablet => TabletModeOverride :: ForceTablet ,
760+ TabletModeArg :: Laptop => TabletModeOverride :: ForceClamshell ,
761+ } ;
762+ ec. set_tablet_mode ( mode) ;
746763 } else if let Some ( console_arg) = & args. console {
747764 match console_arg {
748765 ConsoleArg :: Follow => {
0 commit comments