On Thu Oct 1 10:31:34 2026 +0300, Divyamani Tripathi wrote:
> Add the IPU8 PCI ID and probe wiring. IPU8 reuses the IPU7P5 buttress
> register map (unvalidated against IPU8's hardware spec) but needs its
> own default control ratio (0x10), so add dedicated
> ipu8_{isys,psys}_buttress_ctrl structs instead of reusing IPU7's.
>
> Signed-off-by: Divyamani Tripathi <[email protected]>
> [Sakari Ailus: Drop IPU8 from no_force_probe list.]
> Signed-off-by: Sakari Ailus <[email protected]>
Patch committed.
Thanks,
Sakari Ailus
drivers/media/pci/intel/ipu6/ipu6.c | 37 +++++++++++++++++++++++++++++++++++++
include/media/ipu6-pci-table.h | 2 ++
2 files changed, 39 insertions(+)
---
diff --git a/drivers/media/pci/intel/ipu6/ipu6.c
b/drivers/media/pci/intel/ipu6/ipu6.c
index acc492f5cc11..1fc7a6aedd61 100644
--- a/drivers/media/pci/intel/ipu6/ipu6.c
+++ b/drivers/media/pci/intel/ipu6/ipu6.c
@@ -140,6 +140,28 @@ static const struct ipu6_buttress_ctrl
ipu7_psys_buttress_ctrl = {
.pwr_sts_off = IPU6_BUTTRESS_PWR_STATE_DN_DONE,
};
+static const struct ipu6_buttress_ctrl ipu8_isys_buttress_ctrl = {
+ .subsys_id = IPU_ISYS,
+ .ratio = IPU8_IS_FREQ_CTL_DEFAULT_RATIO,
+ .qos_floor = 0,
+ .freq_ctl = IPU7_BUTTRESS_REG_IS_WORKPOINT_REQ,
+ .pwr_sts_shift = IPU7_BUTTRESS_PWR_STATE_IS_PWR_SHIFT,
+ .pwr_sts_mask = IPU7_BUTTRESS_PWR_STATE_IS_PWR_MASK,
+ .pwr_sts_on = IPU6_BUTTRESS_PWR_STATE_UP_DONE,
+ .pwr_sts_off = IPU6_BUTTRESS_PWR_STATE_DN_DONE,
+};
+
+static const struct ipu6_buttress_ctrl ipu8_psys_buttress_ctrl = {
+ .subsys_id = IPU_PSYS,
+ .ratio = IPU8_PS_FREQ_CTL_DEFAULT_RATIO,
+ .qos_floor = 0,
+ .freq_ctl = IPU7_BUTTRESS_REG_PS_WORKPOINT_REQ,
+ .pwr_sts_shift = IPU7_BUTTRESS_PWR_STATE_PS_PWR_SHIFT,
+ .pwr_sts_mask = IPU7_BUTTRESS_PWR_STATE_PS_PWR_MASK,
+ .pwr_sts_on = IPU6_BUTTRESS_PWR_STATE_UP_DONE,
+ .pwr_sts_off = IPU6_BUTTRESS_PWR_STATE_DN_DONE,
+};
+
static const struct ipu6_buttress_registers ipu6_buttress_regs = {
/* Registers */
.irq_status = BUTTRESS_REG_ISR_STATUS,
@@ -677,6 +699,21 @@ static int ipu6_pci_probe(struct pci_dev *pdev, const
struct pci_device_id *id)
isys_ctrl = &ipu7_isys_buttress_ctrl;
psys_ctrl = &ipu7_psys_buttress_ctrl;
break;
+ case PCI_DEVICE_ID_INTEL_IPU8:
+ /*
+ * IPU8 reuses the IPU7P5 buttress register map,
+ * matching staging ipu7 (no dedicated ipu8_buttress_regs
+ * there either). isys/psys control ratios use IPU8's own
+ * 0x10 default, unlike IPU7/IPU7P5.
+ * TODO: confirm buttress register map against IPU8 hw spec.
+ */
+ isp->hw_ver = IPU_VERSION_8;
+ isp->cpd_fw_name = IPU8_FIRMWARE_NAME;
+ isp->model_name = IPU8_MEDIA_DEV_MODEL_NAME;
+ isp->buttress.regs = &ipu7p5_buttress_regs;
+ isys_ctrl = &ipu8_isys_buttress_ctrl;
+ psys_ctrl = &ipu8_psys_buttress_ctrl;
+ break;
default:
return dev_err_probe(dev, -ENODEV,
"Unsupported IPU6 device %x\n",
diff --git a/include/media/ipu6-pci-table.h b/include/media/ipu6-pci-table.h
index cacb8a3170d0..4c7e724ea15e 100644
--- a/include/media/ipu6-pci-table.h
+++ b/include/media/ipu6-pci-table.h
@@ -16,6 +16,7 @@
#define PCI_DEVICE_ID_INTEL_IPU6EP_MTL 0x7d19
#define PCI_DEVICE_ID_INTEL_IPU7 0x645d
#define PCI_DEVICE_ID_INTEL_IPU7P5 0xb05d
+#define PCI_DEVICE_ID_INTEL_IPU8 0xd719
static const struct pci_device_id ipu6_pci_tbl[] = {
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IPU6) },
@@ -26,6 +27,7 @@ static const struct pci_device_id ipu6_pci_tbl[] = {
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IPU6EP_MTL) },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IPU7) },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IPU7P5) },
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IPU8) },
{ }
};
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]