From aa18a6fe8d5fe3b62d0e496c84d203c0c9de1c3d Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sun, 9 Nov 2025 18:15:59 -0600 Subject: [PATCH] drivers/intel/mipi_camera: Codify SSDB field enums Introduce enums covering the SSDB ROM/VCM types, orientation, control logic, camera position, voltage rails, PHY config, MCLK source, SKU vendor, and SKU card type fields, plus a packed helper for the SKU bitfield. This replaces magic values with named constants ahead of further SSDB work without changing behaviour. Change-Id: Iacc1a844528e2427c9f4ca8fcebe338fb6c1bac4 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/90187 Reviewed-by: Sean Rhodes Tested-by: build bot (Jenkins) --- src/drivers/intel/mipi_camera/ssdb.h | 92 ++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/src/drivers/intel/mipi_camera/ssdb.h b/src/drivers/intel/mipi_camera/ssdb.h index 3cd9e2de6a..e02b705f76 100644 --- a/src/drivers/intel/mipi_camera/ssdb.h +++ b/src/drivers/intel/mipi_camera/ssdb.h @@ -64,6 +64,98 @@ enum intel_camera_mipi_info { #define CLK_FREQ_24MHZ 24000000 #define CLK_FREQ_20MHZ 20000000 +enum rom_type { + ROM_NONE, + ROM_OTP, + ROM_EEPROM_16K_64, + ROM_EEPROM_16K_16, + ROM_OTP_ACPI, + ROM_ACPI, + ROM_EEPROM_BRCA016GWZ, + ROM_EEPROM_24AA32, + ROM_EEPROM_CAT24C08, + ROM_EEPROM_M24C64, + ROM_EFLASH_DW9806B, + ROM_EEPROM_CAT24C16 = 16, + ROM_EEPROM_CAT24C64, + ROM_EEPROM_24AA16, +}; + +enum vcm_type { + VCM_NONE, + VCM_AD5823, + VCM_DW9714, + VCM_AD5816, + VCM_DW9719, + VCM_DW9718, + VCM_DW9806B, + VCM_WV517S, + VCM_LC898122XA, + VCM_LC898212AXB, + VCM_AK7371 = 15, + VCM_BU64297GWZ, + VCM_DW9800, + VCM_DW9808, + VCM_LC898217, +}; + +enum orientation { + DEGREE_0, + DEGREE_180, +}; + +enum control_logic_id { + PMIC_NODE_0, + PMIC_NODE_1, + PMIC_NODE_2, + PMIC_NODE_3, + PMIC_NODE_4, + PMIC_NODE_5, +}; + +enum cam_position { + CAM_POS_CRD_G2_LEFT, /* Left position on CRD-G2 card (one PMIC controls two sensors) */ + CAM_POS_CRD_G2_RIGHT, /* Right position on CRD-G2 card (one PMIC controls two sensors) */ + CAM_POS_CRD_G3_SHARED_RAIL, /* Shared power rail sensor on CRD-G3 card */ +}; + +enum voltage_rail { + VOLTAGE_THREE_RAILS = 0, /* Sensor requires 3 voltage rails (typically Core, Analog, IO) */ + VOLTAGE_TWO_RAILS = 1, /* Sensor requires 2 voltage rails */ +}; + +enum phy_config { + PHY_DPHY, + PHY_CPHY, +}; + +enum ext_mclk_source { + MCLK_INTERNAL, + MCLK_EXTERNAL, +}; + +enum sku_vendor { + VENDOR_SEMCO, + VENDOR_LITEON, +}; + +enum sku_card_type { + SKU_DEFAULT, + SKU_PTC, + SKU_CRD_D, + SKU_CRD_G, + SKU_KILSHON_PPV, + SKU_CRD_G2, + SKU_IMX135_CRD_D, + SKU_CRG_VALUE, + SKU_CRD_G3 = 9, +}; + +struct sensor_sku_info { + enum sku_vendor vendor : 4; + enum sku_card_type card_type : 4; +} __packed; + struct intel_ssdb { uint8_t version; /* Current version */ uint8_t sensor_card_sku; /* CRD Board type */