Skip to content

Commit c8494e4

Browse files
committed
Allow --pd-ports and --pd-addrs to accept 3 ports
If the platforms has only 2 or 1, pass same arguments. Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent 28be5a2 commit c8494e4

6 files changed

Lines changed: 30 additions & 24 deletions

File tree

framework_lib/src/ccgx/device.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ impl PdPort {
3939
));
4040

4141
Ok(match (platform, self) {
42-
(Platform::GenericFramework((left, _), _), PdPort::Left01) => *left,
43-
(Platform::GenericFramework((_, right), _), PdPort::Right23) => *right,
42+
(Platform::GenericFramework((left, _, _), _), PdPort::Left01) => *left,
43+
(Platform::GenericFramework((_, right, _), _), PdPort::Right23) => *right,
44+
(Platform::GenericFramework((_, _, back), _), PdPort::Back) => *back,
4445
// Framework AMD Platforms (CCG8)
4546
(
4647
Platform::Framework13Amd7080
@@ -91,8 +92,9 @@ impl PdPort {
9192
)));
9293

9394
Ok(match (platform, self) {
94-
(Platform::GenericFramework(_, (left, _)), PdPort::Left01) => *left,
95-
(Platform::GenericFramework(_, (_, right)), PdPort::Right23) => *right,
95+
(Platform::GenericFramework(_, (left, _, _)), PdPort::Left01) => *left,
96+
(Platform::GenericFramework(_, (_, right, _)), PdPort::Right23) => *right,
97+
(Platform::GenericFramework(_, (_, _, back)), PdPort::Back) => *back,
9698
(Platform::IntelGen11, _) => 6,
9799
(Platform::IntelGen12 | Platform::IntelGen13, PdPort::Left01) => 6,
98100
(Platform::IntelGen12 | Platform::IntelGen13, PdPort::Right23) => 7,

framework_lib/src/commandline/clap_std.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,12 @@ struct ClapCli {
238238
driver: Option<CrosEcDriverType>,
239239

240240
/// Specify I2C addresses of the PD chips (Advanced)
241-
#[clap(number_of_values = 2, requires("pd_ports"))]
241+
#[clap(number_of_values = 3, requires("pd_ports"))]
242242
#[arg(long)]
243243
pd_addrs: Vec<u16>,
244244

245245
/// Specify I2C ports of the PD chips (Advanced)
246-
#[clap(number_of_values = 2, requires("pd_addrs"))]
246+
#[clap(number_of_values = 3, requires("pd_addrs"))]
247247
#[arg(long)]
248248
pd_ports: Vec<u8>,
249249

@@ -317,13 +317,13 @@ pub fn parse(args: &[String]) -> Cli {
317317
.unwrap();
318318

319319
let pd_addrs = match args.pd_addrs.len() {
320-
2 => Some((args.pd_addrs[0], args.pd_addrs[1])),
320+
3 => Some((args.pd_addrs[0], args.pd_addrs[1], args.pd_addrs[2])),
321321
0 => None,
322322
// Checked by clap
323323
_ => unreachable!(),
324324
};
325325
let pd_ports = match args.pd_ports.len() {
326-
2 => Some((args.pd_ports[0], args.pd_ports[1])),
326+
3 => Some((args.pd_ports[0], args.pd_ports[1], args.pd_ports[2])),
327327
0 => None,
328328
// Checked by clap
329329
_ => unreachable!(),

framework_lib/src/commandline/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ pub struct Cli {
193193
pub reboot_ec: Option<RebootEcArg>,
194194
pub ec_hib_delay: Option<Option<u32>>,
195195
pub hash: Option<String>,
196-
pub pd_addrs: Option<(u16, u16)>,
197-
pub pd_ports: Option<(u8, u8)>,
196+
pub pd_addrs: Option<(u16, u16, u16)>,
197+
pub pd_ports: Option<(u8, u8, u8)>,
198198
pub help: bool,
199199
pub info: bool,
200200
pub flash_gpu_descriptor: Option<(u8, String)>,

framework_lib/src/commandline/uefi.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -602,35 +602,39 @@ pub fn parse(args: &[String]) -> Cli {
602602
};
603603
found_an_option = true;
604604
} else if arg == "--pd-addrs" {
605-
cli.pd_addrs = if args.len() > i + 2 {
605+
cli.pd_addrs = if args.len() > i + 3 {
606606
let left = args[i + 1].parse::<u16>();
607607
let right = args[i + 2].parse::<u16>();
608-
if left.is_ok() && right.is_ok() {
609-
Some((left.unwrap(), right.unwrap()))
608+
let back = args[i + 3].parse::<u16>();
609+
if left.is_ok() && right.is_ok() && back.is_ok() {
610+
Some((left.unwrap(), right.unwrap(), back.unwrap()))
610611
} else {
611612
println!(
612-
"Invalid values for --pd-addrs: '{} {}'. Must be u16 integers.",
613+
"Invalid values for --pd-addrs: '{} {} {}'. Must be u16 integers.",
613614
args[i + 1],
614-
args[i + 2]
615+
args[i + 2],
616+
args[i + 3]
615617
);
616618
None
617619
}
618620
} else {
619-
println!("--pd-addrs requires two arguments, one for each address");
621+
println!("--pd-addrs requires three arguments, one for each address");
620622
None
621623
};
622624
found_an_option = true;
623625
} else if arg == "--pd-ports" {
624-
cli.pd_ports = if args.len() > i + 2 {
626+
cli.pd_ports = if args.len() > i + 3 {
625627
let left = args[i + 1].parse::<u8>();
626628
let right = args[i + 2].parse::<u8>();
627-
if left.is_ok() && right.is_ok() {
628-
Some((left.unwrap(), right.unwrap()))
629+
let back = args[i + 3].parse::<u8>();
630+
if left.is_ok() && right.is_ok() && back.is_ok() {
631+
Some((left.unwrap(), right.unwrap(), back.unwrap()))
629632
} else {
630633
println!(
631-
"Invalid values for --pd-ports: '{} {}'. Must be u16 integers.",
634+
"Invalid values for --pd-ports: '{} {} {}'. Must be u16 integers.",
632635
args[i + 1],
633-
args[i + 2]
636+
args[i + 2],
637+
args[i + 3]
634638
);
635639
None
636640
}

framework_lib/src/smbios.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ pub enum ConfigDigit0 {
4747
pub fn is_framework() -> bool {
4848
if matches!(
4949
get_platform(),
50-
Some(Platform::GenericFramework((_, _), (_, _))) | Some(Platform::UnknownSystem)
50+
Some(Platform::GenericFramework((_, _, _), (_, _, _))) | Some(Platform::UnknownSystem)
5151
) {
5252
return true;
5353
}
@@ -292,7 +292,7 @@ pub fn get_platform() -> Option<Platform> {
292292
let platform = &(*config).as_ref().unwrap().platform;
293293
if matches!(
294294
platform,
295-
Platform::GenericFramework((_, _), (_, _)) | Platform::UnknownSystem
295+
Platform::GenericFramework((_, _, _), (_, _, _)) | Platform::UnknownSystem
296296
) {
297297
return Some(*platform);
298298
}

framework_lib/src/util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub enum Platform {
3737
FrameworkDesktopAmdAiMax300,
3838
/// Generic Framework device
3939
/// pd_addrs, pd_ports
40-
GenericFramework((u16, u16), (u8, u8)),
40+
GenericFramework((u16, u16, u16), (u8, u8, u8)),
4141
UnknownSystem,
4242
}
4343

0 commit comments

Comments
 (0)