use super::super::chip::{ChipRevision, ChipVariant};
macro_rules! fw_path {
($name:literal) => {
concat!(env!("OUT_DIR"), "/firmware/", $name)
};
}
pub static FW_8801: &[u8] = include_bytes!(fw_path!("fmacfw.bin"));
pub static FW_8801_PATCH: &[u8] = include_bytes!(fw_path!("fmacfw_patch.bin"));
pub static FW_8801_PATCH_TBL: &[u8] = &[];
pub static FW_DC: &[u8] = include_bytes!(fw_path!("fmacfw_patch_8800dc_u02.bin"));
pub static FW_DC_PATCH: &[u8] = include_bytes!(fw_path!("fw_patch_8800dc_u02.bin"));
pub static FW_DC_PATCH_TBL: &[u8] = include_bytes!(fw_path!("fw_patch_table_8800dc_u02.bin"));
pub static FW_D80: &[u8] = include_bytes!(fw_path!("fmacfw_8800d80_u02.bin"));
pub static FW_D80_PATCH: &[u8] = include_bytes!(fw_path!("fw_patch_8800d80_u02.bin"));
pub static FW_D80_PATCH_TBL: &[u8] = include_bytes!(fw_path!("fw_patch_table_8800d80_u02.bin"));
pub static FW_D80X2: &[u8] = include_bytes!(fw_path!("fmacfw_8800d80_u02.bin"));
pub static FW_D80X2_PATCH: &[u8] = include_bytes!(fw_path!("fw_patch_8800d80_u02.bin"));
pub static FW_D80X2_PATCH_TBL: &[u8] = include_bytes!(fw_path!("fw_patch_table_8800d80_u02.bin"));
pub struct FirmwareSet {
pub wl_fw: &'static [u8],
pub patch_tbl: &'static [u8],
pub wl_patch: &'static [u8],
pub desc: &'static str,
}
pub fn get_firmware_set(chip: ChipVariant, _rev: &ChipRevision) -> Option<FirmwareSet> {
match chip {
ChipVariant::Aic8801 => Some(FirmwareSet {
wl_fw: FW_8801,
patch_tbl: FW_8801_PATCH_TBL,
wl_patch: FW_8801_PATCH,
desc: "AIC8801 fmacfw + patch",
}),
ChipVariant::Aic8800DC | ChipVariant::Aic8800DW => Some(FirmwareSet {
wl_fw: FW_DC,
patch_tbl: FW_DC_PATCH_TBL,
wl_patch: FW_DC_PATCH,
desc: "AIC8800DC",
}),
ChipVariant::Aic8800D80 => Some(FirmwareSet {
wl_fw: FW_D80,
patch_tbl: FW_D80_PATCH_TBL,
wl_patch: FW_D80_PATCH,
desc: "AIC8800D80",
}),
ChipVariant::Aic8800D80X2 => {
log::debug!("[fw_select] AIC8800D80X2 selected");
Some(FirmwareSet {
wl_fw: FW_D80X2,
patch_tbl: FW_D80X2_PATCH_TBL,
wl_patch: FW_D80X2_PATCH,
desc: "AIC8800D80X2",
})
}
ChipVariant::Unknown => {
log::error!("[fw_select] Unknown chip variant");
None
}
}
}