Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions framework_lib/src/chromium_ec/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ pub enum EcCommands {
GetPdPortState = 0x3E23,
/// Read board ID of specific ADC channel
ReadBoardId = 0x3E26,
/// Control PD debug logging, the output goes to the EC console
PdDebugControl = 0x3E2D,
}

pub trait EcRequest<R> {
Expand Down
28 changes: 28 additions & 0 deletions framework_lib/src/chromium_ec/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1999,3 +1999,31 @@ impl EcRequest<EcResponseGetApThrottleStatus> for EcRequestGetApThrottleStatus {
EcCommands::GetApThrottleStatus
}
}

/// Verbose PD message logging (cypdctl verbose)
pub const PD_DEBUG_VERBOSE_MSG: u8 = 0x01;
/// UCSI command tracing (cypdctl ucsi)
pub const PD_DEBUG_UCSI: u8 = 0x02;
/// Disable the UCSI tunnel (cypdctl ucsitun 0)
pub const PD_DEBUG_UCSI_TUNNEL_DISABLE: u8 = 0x04;

#[repr(C, packed)]
pub struct EcRequestPdDebugControl {
/// Which PD_DEBUG_* flags to modify; 0 = pure read, nothing changed
pub set_mask: u8,
/// New values for the flags selected in set_mask
pub flags: u8,
}

#[repr(C, packed)]
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub struct EcResponsePdDebugControl {
/// Current flag values, after any modification
pub flags: u8,
}

impl EcRequest<EcResponsePdDebugControl> for EcRequestPdDebugControl {
fn command_id() -> EcCommands {
EcCommands::PdDebugControl
}
}
8 changes: 8 additions & 0 deletions framework_lib/src/chromium_ec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,14 @@ impl CrosEc {
}
}

/// Get or set PD debug logging flags (see PD_DEBUG_* constants)
/// set_mask selects which flags to change, 0 reads without changing.
/// Returns the current flags. The log output goes to the EC console.
pub fn pd_debug_control(&self, set_mask: u8, flags: u8) -> EcResult<u8> {
let res = EcRequestPdDebugControl { set_mask, flags }.send_command(self)?;
Ok(res.flags)
}

/// Set tablet mode
pub fn set_tablet_mode(&self, mode: TabletModeOverride) {
let mode = mode as u8;
Expand Down
8 changes: 7 additions & 1 deletion framework_lib/src/commandline/clap_std.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use crate::chromium_ec::commands::SetGpuSerialMagic;
use crate::chromium_ec::CrosEcDriverType;
use crate::commandline::{
Cli, ClickForceArg, ConsoleArg, FpBrightnessArg, HardwareDeviceType, InputDeckModeArg,
LogLevel, RebootEcArg, TabletModeArg,
LogLevel, PdDebugArg, RebootEcArg, TabletModeArg,
};

/// Swiss army knife for Framework laptops
Expand Down Expand Up @@ -129,6 +129,11 @@ struct ClapCli {
#[arg(long)]
pd_enable: Option<u8>,

/// Get or set PD debug logging, read the output via --console
#[clap(value_enum)]
#[arg(long)]
pd_debug: Option<PdDebugArg>,

/// Show details about connected DP or HDMI Expansion Cards
#[arg(long)]
dp_hdmi_info: bool,
Expand Down Expand Up @@ -655,6 +660,7 @@ pub fn parse(args: &[String]) -> Cli {
pd_reset: args.pd_reset,
pd_disable: args.pd_disable,
pd_enable: args.pd_enable,
pd_debug: args.pd_debug,
dp_hdmi_info: args.dp_hdmi_info,
dp_hdmi_update: args
.dp_hdmi_update
Expand Down
45 changes: 45 additions & 0 deletions framework_lib/src/commandline/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ use crate::chromium_ec::commands::RebootEcCmd;
use crate::chromium_ec::commands::RgbS;
use crate::chromium_ec::commands::TabletModeOverride;
use crate::chromium_ec::commands::EC_PROTOCOL_INFO_IN_PROGRESS_SUPPORTED;
use crate::chromium_ec::commands::{
PD_DEBUG_UCSI, PD_DEBUG_UCSI_TUNNEL_DISABLE, PD_DEBUG_VERBOSE_MSG,
};
use crate::chromium_ec::commands::{PORT_80_EVENT_RESET, PORT_80_EVENT_RESUME};
use crate::chromium_ec::EcResponseStatus;
use crate::chromium_ec::Port80History;
Expand Down Expand Up @@ -99,6 +102,16 @@ pub enum ConsoleArg {
Follow,
}

#[cfg_attr(not(feature = "uefi"), derive(clap::ValueEnum))]
#[derive(Clone, Debug, PartialEq)]
pub enum PdDebugArg {
Status,
Off,
Verbose,
Ucsi,
All,
}

#[cfg_attr(not(feature = "uefi"), derive(clap::ValueEnum))]
#[derive(Clone, Debug, PartialEq)]
pub enum RebootEcArg {
Expand Down Expand Up @@ -207,6 +220,7 @@ pub struct Cli {
pub pd_reset: Option<u8>,
pub pd_disable: Option<u8>,
pub pd_enable: Option<u8>,
pub pd_debug: Option<PdDebugArg>,
pub dp_hdmi_info: bool,
pub dp_hdmi_update: Option<String>,
pub audio_card_info: bool,
Expand Down Expand Up @@ -308,6 +322,7 @@ pub fn parse(args: &[String]) -> Cli {
// pd_reset
// pd_disable
// pd_enable
// pd_debug
dp_hdmi_info: cli.dp_hdmi_info,
// dp_hdmi_update
audio_card_info: cli.audio_card_info,
Expand Down Expand Up @@ -1777,6 +1792,35 @@ pub fn run_with_args(args: &Cli, _allupdate: bool) -> i32 {
Ok(())
}
});
} else if let Some(pd_debug) = &args.pd_debug {
let (set_mask, flags) = match pd_debug {
PdDebugArg::Status => (0, 0),
PdDebugArg::Off => (PD_DEBUG_VERBOSE_MSG | PD_DEBUG_UCSI, 0),
PdDebugArg::Verbose => (PD_DEBUG_VERBOSE_MSG, PD_DEBUG_VERBOSE_MSG),
PdDebugArg::Ucsi => (PD_DEBUG_UCSI, PD_DEBUG_UCSI),
PdDebugArg::All => (
PD_DEBUG_VERBOSE_MSG | PD_DEBUG_UCSI,
PD_DEBUG_VERBOSE_MSG | PD_DEBUG_UCSI,
),
};
match ec.pd_debug_control(set_mask, flags) {
Ok(cur) => {
println!("PD debug logging:");
println!(
" Verbose: {}",
cur & PD_DEBUG_VERBOSE_MSG != 0
);
println!(" UCSI: {}", cur & PD_DEBUG_UCSI != 0);
println!(
" UCSI tunnel disabled: {}",
cur & PD_DEBUG_UCSI_TUNNEL_DISABLE != 0
);
if cur & (PD_DEBUG_VERBOSE_MSG | PD_DEBUG_UCSI) != 0 {
println!("Read the log output with --console follow");
}
}
Err(err) => println!("Failed to control PD debug logging: {:?}", err),
}
} else if args.dp_hdmi_info {
#[cfg(feature = "hidapi")]
print_dp_hdmi_details(true);
Expand Down Expand Up @@ -2104,6 +2148,7 @@ Options:
Set the color of a key to RGB. Multiple colors for adjacent keys can be set at once
--tablet-mode <MODE> Set tablet mode override [possible values: auto, tablet, laptop]
--console <CONSOLE> Get EC console, choose whether recent or to follow the output [possible values: recent, follow]
--pd-debug <MODE> Get or set PD debug logging, read it via --console [possible values: status, off, verbose, ucsi, all]
--hash <HASH> Hash a file of arbitrary data
--flash-gpu-descriptor <MAGIC> <18 DIGIT SN> Overwrite the GPU bay descriptor SN and type.
--flash-gpu-descriptor-file <DESCRIPTOR_FILE> Write the GPU bay descriptor with a descriptor file.
Expand Down
30 changes: 29 additions & 1 deletion framework_lib/src/commandline/uefi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ use crate::chromium_ec::commands::SetGpuSerialMagic;
use crate::chromium_ec::{CrosEcDriverType, HardwareDeviceType};
use crate::commandline::{Cli, LogLevel};

use super::{ConsoleArg, FpBrightnessArg, InputDeckModeArg, RebootEcArg, TabletModeArg};
use super::{
ConsoleArg, FpBrightnessArg, InputDeckModeArg, PdDebugArg, RebootEcArg, TabletModeArg,
};

/// Get commandline arguments from UEFI environment
pub fn get_args() -> Vec<String> {
Expand Down Expand Up @@ -55,6 +57,7 @@ pub fn parse(args: &[String]) -> Cli {
pd_reset: None,
pd_disable: None,
pd_enable: None,
pd_debug: None,
dp_hdmi_info: false,
dp_hdmi_update: None,
audio_card_info: false,
Expand Down Expand Up @@ -662,6 +665,31 @@ pub fn parse(args: &[String]) -> Cli {
None
};
found_an_option = true;
} else if arg == "--pd-debug" {
cli.pd_debug = if args.len() > i + 1 {
let pd_debug_arg = &args[i + 1];
if pd_debug_arg == "status" {
Some(PdDebugArg::Status)
} else if pd_debug_arg == "off" {
Some(PdDebugArg::Off)
} else if pd_debug_arg == "verbose" {
Some(PdDebugArg::Verbose)
} else if pd_debug_arg == "ucsi" {
Some(PdDebugArg::Ucsi)
} else if pd_debug_arg == "all" {
Some(PdDebugArg::All)
} else {
println!(
"Invalid value for --pd-debug: '{}'. Must be one of 'status', 'off', 'verbose', 'ucsi', 'all'.",
pd_debug_arg
);
None
}
} else {
println!("--pd-debug requires specifying the mode");
None
};
found_an_option = true;
} else if arg == "--privacy" {
cli.privacy = true;
found_an_option = true;
Expand Down
6 changes: 5 additions & 1 deletion framework_tool/completions/bash/framework_tool
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ _framework_tool() {

case "${cmd}" in
framework_tool)
opts="-v -q -t -f -h --flash-gpu-descriptor --verbose --quiet --versions --version --features --esrt --device --compare-version --power --smartbattery --smartbattery-auth --thermal --thermalget --thermalset --sensors --fansetduty --fansetrpm --autofanctrl --pdports --pdports-chromebook --info --meinfo --pd-info --pd-reset --pd-disable --pd-enable --dp-hdmi-info --dp-hdmi-update --audio-card-info --privacy --pd-bin --ec-bin --capsule --dump --h2o-capsule --dump-ec-flash --flash-full-ec --flash-ec --flash-ro-ec --flash-rw-ec --intrusion --inputdeck --inputdeck-mode --expansion-bay --charge-limit --charge-current-limit --charge-rate-limit --get-gpio --fp-led-level --fp-brightness --kblight --remap-key --rgbkbd --ps2-enable --tablet-mode --touchscreen-enable --haptic-intensity --click-force --stylus-battery --console --reboot-ec --ec-hib-delay --sysinfo --uptimeinfo --s0ix-counter --hello --protoinfo --switches --port80read --panicinfo --hash --driver --pd-addrs --pd-ports --test --test-retimer --boardid --force --dry-run --flash-gpu-descriptor-file --dump-gpu-descriptor-file --validate-gpu-descriptor-file --nvidia --host-command --generate-completions --generate-manpage --help"
opts="-v -q -t -f -h --flash-gpu-descriptor --verbose --quiet --versions --version --features --esrt --device --compare-version --power --smartbattery --smartbattery-auth --thermal --thermalget --thermalset --sensors --fansetduty --fansetrpm --autofanctrl --pdports --pdports-chromebook --info --meinfo --pd-info --pd-reset --pd-disable --pd-enable --pd-debug --dp-hdmi-info --dp-hdmi-update --audio-card-info --privacy --pd-bin --ec-bin --capsule --dump --h2o-capsule --dump-ec-flash --flash-full-ec --flash-ec --flash-ro-ec --flash-rw-ec --intrusion --inputdeck --inputdeck-mode --expansion-bay --charge-limit --charge-current-limit --charge-rate-limit --get-gpio --fp-led-level --fp-brightness --kblight --remap-key --rgbkbd --ps2-enable --tablet-mode --touchscreen-enable --haptic-intensity --click-force --stylus-battery --console --reboot-ec --ec-hib-delay --sysinfo --uptimeinfo --s0ix-counter --hello --protoinfo --switches --port80read --panicinfo --hash --driver --pd-addrs --pd-ports --test --test-retimer --boardid --force --dry-run --flash-gpu-descriptor-file --dump-gpu-descriptor-file --validate-gpu-descriptor-file --nvidia --host-command --generate-completions --generate-manpage --help"
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
Expand Down Expand Up @@ -77,6 +77,10 @@ _framework_tool() {
COMPREPLY=($(compgen -f "${cur}"))
return 0
;;
--pd-debug)
COMPREPLY=($(compgen -W "status off verbose ucsi all" -- "${cur}"))
return 0
;;
--dp-hdmi-update)
COMPREPLY=($(compgen -f "${cur}"))
return 0
Expand Down
5 changes: 5 additions & 0 deletions framework_tool/completions/fish/framework_tool.fish
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ complete -c framework_tool -l meinfo -d 'Show Intel ME information (from SMBIOS
complete -c framework_tool -l pd-reset -d 'Reset a specific PD controller (for debugging only)' -r
complete -c framework_tool -l pd-disable -d 'Disable all ports on a specific PD controller (for debugging only)' -r
complete -c framework_tool -l pd-enable -d 'Enable all ports on a specific PD controller (for debugging only)' -r
complete -c framework_tool -l pd-debug -d 'Get or set PD debug logging, read the output via --console' -r -f -a "status\t''
off\t''
verbose\t''
ucsi\t''
all\t''"
complete -c framework_tool -l dp-hdmi-update -d 'Update the DisplayPort or HDMI Expansion Card' -r -F
complete -c framework_tool -l pd-bin -d 'Parse versions from PD firmware binary file' -r -F
complete -c framework_tool -l ec-bin -d 'Parse versions from EC firmware binary file' -r -F
Expand Down
1 change: 1 addition & 0 deletions framework_tool/completions/zsh/_framework_tool
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ _framework_tool() {
'--pd-reset=[Reset a specific PD controller (for debugging only)]:PD_RESET:_default' \
'--pd-disable=[Disable all ports on a specific PD controller (for debugging only)]:PD_DISABLE:_default' \
'--pd-enable=[Enable all ports on a specific PD controller (for debugging only)]:PD_ENABLE:_default' \
'--pd-debug=[Get or set PD debug logging, read the output via --console]:PD_DEBUG:(status off verbose ucsi all)' \
'--dp-hdmi-update=[Update the DisplayPort or HDMI Expansion Card]:UPDATE_BIN:_files' \
'--pd-bin=[Parse versions from PD firmware binary file]:PD_BIN:_files' \
'--ec-bin=[Parse versions from EC firmware binary file]:EC_BIN:_files' \
Expand Down
21 changes: 20 additions & 1 deletion framework_tool/framework_tool.1
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ framework_tool \- Swiss army knife for Framework laptops
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.SH SYNOPSIS
\fBframework_tool\fR [\fB\-\-flash\-gpu\-descriptor\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR]... [\fB\-\-versions\fR] [\fB\-\-version\fR] [\fB\-\-features\fR] [\fB\-\-esrt\fR] [\fB\-\-device\fR] [\fB\-\-compare\-version\fR] [\fB\-\-power\fR] [\fB\-\-smartbattery\fR] [\fB\-\-smartbattery\-auth\fR] [\fB\-\-thermal\fR] [\fB\-\-thermalget\fR] [\fB\-\-thermalset\fR] [\fB\-\-sensors\fR] [\fB\-\-fansetduty\fR] [\fB\-\-fansetrpm\fR] [\fB\-\-autofanctrl\fR] [\fB\-\-pdports\fR] [\fB\-\-pdports\-chromebook\fR] [\fB\-\-info\fR] [\fB\-\-meinfo\fR] [\fB\-\-pd\-info\fR] [\fB\-\-pd\-reset\fR] [\fB\-\-pd\-disable\fR] [\fB\-\-pd\-enable\fR] [\fB\-\-dp\-hdmi\-info\fR] [\fB\-\-dp\-hdmi\-update\fR] [\fB\-\-audio\-card\-info\fR] [\fB\-\-privacy\fR] [\fB\-\-pd\-bin\fR] [\fB\-\-ec\-bin\fR] [\fB\-\-capsule\fR] [\fB\-\-dump\fR] [\fB\-\-h2o\-capsule\fR] [\fB\-\-dump\-ec\-flash\fR] [\fB\-\-flash\-full\-ec\fR] [\fB\-\-flash\-ec\fR] [\fB\-\-flash\-ro\-ec\fR] [\fB\-\-flash\-rw\-ec\fR] [\fB\-\-intrusion\fR] [\fB\-\-inputdeck\fR] [\fB\-\-inputdeck\-mode\fR] [\fB\-\-expansion\-bay\fR] [\fB\-\-charge\-limit\fR] [\fB\-\-charge\-current\-limit\fR] [\fB\-\-charge\-rate\-limit\fR] [\fB\-\-get\-gpio\fR] [\fB\-\-fp\-led\-level\fR] [\fB\-\-fp\-brightness\fR] [\fB\-\-kblight\fR] [\fB\-\-remap\-key\fR] [\fB\-\-rgbkbd\fR] [\fB\-\-tablet\-mode\fR] [\fB\-\-touchscreen\-enable\fR] [\fB\-\-haptic\-intensity\fR] [\fB\-\-click\-force\fR] [\fB\-\-stylus\-battery\fR] [\fB\-\-console\fR] [\fB\-\-reboot\-ec\fR] [\fB\-\-ec\-hib\-delay\fR] [\fB\-\-sysinfo\fR] [\fB\-\-uptimeinfo\fR] [\fB\-\-s0ix\-counter\fR] [\fB\-\-hello\fR] [\fB\-\-protoinfo\fR] [\fB\-\-switches\fR] [\fB\-\-port80read\fR] [\fB\-\-panicinfo\fR] [\fB\-\-hash\fR] [\fB\-\-driver\fR] [\fB\-\-pd\-addrs\fR] [\fB\-\-pd\-ports\fR] [\fB\-t\fR|\fB\-\-test\fR] [\fB\-\-test\-retimer\fR] [\fB\-\-boardid\fR] [\fB\-f\fR|\fB\-\-force\fR] [\fB\-\-dry\-run\fR] [\fB\-\-flash\-gpu\-descriptor\-file\fR] [\fB\-\-dump\-gpu\-descriptor\-file\fR] [\fB\-\-validate\-gpu\-descriptor\-file\fR] [\fB\-\-nvidia\fR] [\fB\-\-host\-command\fR] [\fB\-h\fR|\fB\-\-help\fR]
\fBframework_tool\fR [\fB\-\-flash\-gpu\-descriptor\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR]... [\fB\-\-versions\fR] [\fB\-\-version\fR] [\fB\-\-features\fR] [\fB\-\-esrt\fR] [\fB\-\-device\fR] [\fB\-\-compare\-version\fR] [\fB\-\-power\fR] [\fB\-\-smartbattery\fR] [\fB\-\-smartbattery\-auth\fR] [\fB\-\-thermal\fR] [\fB\-\-thermalget\fR] [\fB\-\-thermalset\fR] [\fB\-\-sensors\fR] [\fB\-\-fansetduty\fR] [\fB\-\-fansetrpm\fR] [\fB\-\-autofanctrl\fR] [\fB\-\-pdports\fR] [\fB\-\-pdports\-chromebook\fR] [\fB\-\-info\fR] [\fB\-\-meinfo\fR] [\fB\-\-pd\-info\fR] [\fB\-\-pd\-reset\fR] [\fB\-\-pd\-disable\fR] [\fB\-\-pd\-enable\fR] [\fB\-\-pd\-debug\fR] [\fB\-\-dp\-hdmi\-info\fR] [\fB\-\-dp\-hdmi\-update\fR] [\fB\-\-audio\-card\-info\fR] [\fB\-\-privacy\fR] [\fB\-\-pd\-bin\fR] [\fB\-\-ec\-bin\fR] [\fB\-\-capsule\fR] [\fB\-\-dump\fR] [\fB\-\-h2o\-capsule\fR] [\fB\-\-dump\-ec\-flash\fR] [\fB\-\-flash\-full\-ec\fR] [\fB\-\-flash\-ec\fR] [\fB\-\-flash\-ro\-ec\fR] [\fB\-\-flash\-rw\-ec\fR] [\fB\-\-intrusion\fR] [\fB\-\-inputdeck\fR] [\fB\-\-inputdeck\-mode\fR] [\fB\-\-expansion\-bay\fR] [\fB\-\-charge\-limit\fR] [\fB\-\-charge\-current\-limit\fR] [\fB\-\-charge\-rate\-limit\fR] [\fB\-\-get\-gpio\fR] [\fB\-\-fp\-led\-level\fR] [\fB\-\-fp\-brightness\fR] [\fB\-\-kblight\fR] [\fB\-\-remap\-key\fR] [\fB\-\-rgbkbd\fR] [\fB\-\-tablet\-mode\fR] [\fB\-\-touchscreen\-enable\fR] [\fB\-\-haptic\-intensity\fR] [\fB\-\-click\-force\fR] [\fB\-\-stylus\-battery\fR] [\fB\-\-console\fR] [\fB\-\-reboot\-ec\fR] [\fB\-\-ec\-hib\-delay\fR] [\fB\-\-sysinfo\fR] [\fB\-\-uptimeinfo\fR] [\fB\-\-s0ix\-counter\fR] [\fB\-\-hello\fR] [\fB\-\-protoinfo\fR] [\fB\-\-switches\fR] [\fB\-\-port80read\fR] [\fB\-\-panicinfo\fR] [\fB\-\-hash\fR] [\fB\-\-driver\fR] [\fB\-\-pd\-addrs\fR] [\fB\-\-pd\-ports\fR] [\fB\-t\fR|\fB\-\-test\fR] [\fB\-\-test\-retimer\fR] [\fB\-\-boardid\fR] [\fB\-f\fR|\fB\-\-force\fR] [\fB\-\-dry\-run\fR] [\fB\-\-flash\-gpu\-descriptor\-file\fR] [\fB\-\-dump\-gpu\-descriptor\-file\fR] [\fB\-\-validate\-gpu\-descriptor\-file\fR] [\fB\-\-nvidia\fR] [\fB\-\-host\-command\fR] [\fB\-h\fR|\fB\-\-help\fR]
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.SH DESCRIPTION
Expand Down Expand Up @@ -124,6 +124,25 @@ Disable all ports on a specific PD controller (for debugging only)
\fB\-\-pd\-enable\fR \fI<PD_ENABLE>\fR
Enable all ports on a specific PD controller (for debugging only)
.TP
\fB\-\-pd\-debug\fR \fI<PD_DEBUG>\fR
Get or set PD debug logging, read the output via \-\-console
.br

.br
\fIPossible values:\fR
.RS 14
.IP \(bu 2
status
.IP \(bu 2
off
.IP \(bu 2
verbose
.IP \(bu 2
ucsi
.IP \(bu 2
all
.RE
.TP
\fB\-\-dp\-hdmi\-info\fR
Show details about connected DP or HDMI Expansion Cards
.TP
Expand Down
Loading