Skip to content

Commit 17c3112

Browse files
committed
Add support for Framework 16 AMD AI 300 Series
Most features were already wowrking, now it will provide some extra details and more accurately in some cases. Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent a24ace3 commit 17c3112

File tree

5 files changed

+20
-8
lines changed

5 files changed

+20
-8
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ On UEFI and FreeBSD raw port I/O is used - on Linux this can also be used as a f
6565
| AMD Ryzen AI 300 | Yes | [6.12](https://github.com/torvalds/linux/commit/62be134abf4250474a7a694837064bc783d2b291) | Yes |
6666
| Framework 16 | | | |
6767
| AMD Ryzen 7040 | Yes | [6.10](https://github.com/torvalds/linux/commit/c8f460d991df93d87de01a96b783cad5a2da9616) | BIOS 3.06+ |
68+
| AMD Ryzen AI 300 | Yes | [6.10](https://github.com/torvalds/linux/commit/c8f460d991df93d87de01a96b783cad5a2da9616) | Yes |
6869
| Framework Desktop | | | |
6970
| AMD Ryzen AI Max | Yes | [6.15](https://github.com/torvalds/linux/commit/d83c45aeec9b223fe6db4175e9d1c4f5699cc37a) | Yes |
7071

@@ -129,6 +130,7 @@ All of these need EC communication support in order to work.
129130
- [x] Framework Laptop 13 (AMD Ryzen 7080)
130131
- [x] Framework Laptop 13 (AMD Ryzen AI 300)
131132
- [x] Framework Laptop 16 (AMD Ryzen 7080)
133+
- [x] Framework Laptop 16 (AMD Ryzen AI 300)
132134
- [x] Framework Desktop (AMD Ryzen AI Max 300)
133135
- [x] Port I/O communication on Linux
134136
- [x] Port I/O communication in UEFI

framework_lib/src/ccgx/device.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,18 @@ impl PdPort {
6565
(
6666
Platform::Framework13Amd7080
6767
| Platform::Framework13AmdAi300
68-
| Platform::Framework16Amd7080,
68+
| Platform::Framework16Amd7080
69+
| Platform::Framework16AmdAi300,
6970
PdPort::Right01,
7071
) => 0x42,
7172
(
7273
Platform::Framework13Amd7080
7374
| Platform::Framework13AmdAi300
74-
| Platform::Framework16Amd7080,
75+
| Platform::Framework16Amd7080
76+
| Platform::Framework16AmdAi300,
7577
PdPort::Left23,
7678
) => 0x40,
77-
(Platform::Framework16Amd7080, PdPort::Back) => 0x42,
79+
(Platform::Framework16Amd7080 | Platform::Framework16AmdAi300, PdPort::Back) => 0x42,
7880
(Platform::FrameworkDesktopAmdAiMax300, PdPort::Back) => 0x08,
7981
(Platform::FrameworkDesktopAmdAiMax300, _) => unsupported?,
8082
// Framework Intel Platforms (CCG5 and CCG6)
@@ -120,6 +122,7 @@ impl PdPort {
120122
(
121123
Platform::Framework13Amd7080
122124
| Platform::Framework16Amd7080
125+
| Platform::Framework16AmdAi300
123126
| Platform::IntelCoreUltra1
124127
| Platform::Framework13AmdAi300
125128
| Platform::Framework12IntelGen13,
@@ -128,12 +131,13 @@ impl PdPort {
128131
(
129132
Platform::Framework13Amd7080
130133
| Platform::Framework16Amd7080
134+
| Platform::Framework16AmdAi300
131135
| Platform::IntelCoreUltra1
132136
| Platform::Framework13AmdAi300
133137
| Platform::Framework12IntelGen13,
134138
PdPort::Left23,
135139
) => 2,
136-
(Platform::Framework16Amd7080, PdPort::Back) => 5,
140+
(Platform::Framework16Amd7080 | Platform::Framework16AmdAi300, PdPort::Back) => 5,
137141
(Platform::FrameworkDesktopAmdAiMax300, PdPort::Back) => 1,
138142
(Platform::FrameworkDesktopAmdAiMax300, _) => unsupported?,
139143
(Platform::UnknownSystem, _) => {

framework_lib/src/power.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::chromium_ec::command::EcRequestRaw;
1414
use crate::chromium_ec::commands::*;
1515
use crate::chromium_ec::*;
1616
use crate::smbios;
17-
use crate::smbios::get_platform;
1817
use crate::util::{Platform, PlatformFamily};
1918

2019
/// Maximum length of strings in memmap
@@ -358,6 +357,7 @@ pub fn print_thermal(ec: &CrosEc) {
358357
let fans = ec.read_memory(EC_MEMMAP_FAN, 0x08).unwrap();
359358

360359
let platform = smbios::get_platform();
360+
let family = smbios::get_family();
361361
let remaining_sensors = match platform {
362362
Some(Platform::IntelGen11) | Some(Platform::IntelGen12) | Some(Platform::IntelGen13) => {
363363
println!(" F75303_Local: {:>4}", TempSensor::from(temps[0]));
@@ -396,13 +396,14 @@ pub fn print_thermal(ec: &CrosEc) {
396396
Some(
397397
Platform::Framework13Amd7080
398398
| Platform::Framework13AmdAi300
399-
| Platform::Framework16Amd7080,
399+
| Platform::Framework16Amd7080
400+
| Platform::Framework16AmdAi300,
400401
) => {
401402
println!(" F75303_Local: {:>4}", TempSensor::from(temps[0]));
402403
println!(" F75303_CPU: {:>4}", TempSensor::from(temps[1]));
403404
println!(" F75303_DDR: {:>4}", TempSensor::from(temps[2]));
404405
println!(" APU: {:>4}", TempSensor::from(temps[3]));
405-
if matches!(platform, Some(Platform::Framework16Amd7080)) {
406+
if family == Some(PlatformFamily::Framework16) {
406407
println!(" dGPU VR: {:>4}", TempSensor::from(temps[4]));
407408
println!(" dGPU VRAM: {:>4}", TempSensor::from(temps[5]));
408409
println!(" dGPU AMB: {:>4}", TempSensor::from(temps[6]));
@@ -721,7 +722,7 @@ pub fn get_pd_info(ec: &CrosEc, ports: u8) -> Vec<EcResult<UsbPdPowerInfo>> {
721722
}
722723

723724
pub fn get_and_print_pd_info(ec: &CrosEc) {
724-
let fl16 = Some(crate::util::Platform::Framework16Amd7080) == get_platform();
725+
let fl16 = Some(PlatformFamily::Framework16) == smbios::get_family();
725726
let ports = 4; // All our platforms have 4 PD ports so far
726727
let infos = get_pd_info(ec, ports);
727728
for (port, info) in infos.iter().enumerate().take(ports.into()) {

framework_lib/src/smbios.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ pub fn get_platform() -> Option<Platform> {
310310
"Laptop 12 (13th Gen Intel Core)" => Some(Platform::Framework12IntelGen13),
311311
"Laptop 13 (Intel Core Ultra Series 1)" => Some(Platform::IntelCoreUltra1),
312312
"Laptop 16 (AMD Ryzen 7040 Series)" => Some(Platform::Framework16Amd7080),
313+
"Laptop 16 (AMD Ryzen AI 300 Series)" => Some(Platform::Framework16AmdAi300),
313314
"Desktop (AMD Ryzen AI Max 300 Series)" => Some(Platform::FrameworkDesktopAmdAiMax300),
314315
_ => Some(Platform::UnknownSystem),
315316
};

framework_lib/src/util.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ pub enum Platform {
3333
Framework13AmdAi300,
3434
/// Framework 16 - AMD Ryzen 7080 Series
3535
Framework16Amd7080,
36+
/// Framework 16 - AMD Ryzen AI 300 Series
37+
Framework16AmdAi300,
3638
/// Framework Desktop - AMD Ryzen AI Max 300
3739
FrameworkDesktopAmdAiMax300,
3840
/// Generic Framework device
@@ -66,6 +68,7 @@ impl Platform {
6668
Platform::Framework13Amd7080
6769
| Platform::Framework13AmdAi300
6870
| Platform::Framework16Amd7080
71+
| Platform::Framework16AmdAi300
6972
| Platform::FrameworkDesktopAmdAiMax300 => Some(CpuVendor::Amd),
7073
Platform::GenericFramework(..) => None,
7174
Platform::UnknownSystem => None,
@@ -81,6 +84,7 @@ impl Platform {
8184
| Platform::Framework13Amd7080
8285
| Platform::Framework13AmdAi300 => Some(PlatformFamily::Framework13),
8386
Platform::Framework16Amd7080 => Some(PlatformFamily::Framework16),
87+
Platform::Framework16AmdAi300 => Some(PlatformFamily::Framework16),
8488
Platform::FrameworkDesktopAmdAiMax300 => Some(PlatformFamily::FrameworkDesktop),
8589
Platform::GenericFramework(..) => None,
8690
Platform::UnknownSystem => None,

0 commit comments

Comments
 (0)