Lines Matching defs:isp

232 ipu6_pkg_dir_configure_spc(struct ipu6_device *isp,
245 dma_addr = sg_dma_address(isp->isys->fw_sgt.sgl);
247 dma_addr = sg_dma_address(isp->psys->fw_sgt.sgl);
250 prog = (struct ipu6_cell_program *)((u64)isp->cpd_fw->data + pg_offset);
253 dev_warn(&isp->pdev->dev,
264 void ipu6_configure_spc(struct ipu6_device *isp,
277 if (isp->secure_mode)
280 ipu6_pkg_dir_configure_spc(isp, hw_variant, pkg_dir_idx, base,
290 static void ipu6_internal_pdata_init(struct ipu6_device *isp)
292 u8 hw_ver = isp->hw_ver;
489 static void ipu6_configure_vc_mechanism(struct ipu6_device *isp)
491 u32 val = readl(isp->base + BUTTRESS_REG_BTRS_CTRL);
503 writel(val, isp->base + BUTTRESS_REG_BTRS_CTRL);
512 struct ipu6_device *isp;
517 isp = devm_kzalloc(dev, sizeof(*isp), GFP_KERNEL);
518 if (!isp)
521 isp->pdev = pdev;
522 INIT_LIST_HEAD(&isp->devices);
535 isp->base = pcim_iomap_table(pdev)[IPU6_PCI_BAR];
536 pci_set_drvdata(pdev, isp);
539 isp->cpd_metadata_cmpnt_size = sizeof(struct ipu6_cpd_metadata_cmpnt);
542 isp->hw_ver = IPU6_VER_6;
543 isp->cpd_fw_name = IPU6_FIRMWARE_NAME;
546 isp->hw_ver = IPU6_VER_6SE;
547 isp->cpd_fw_name = IPU6SE_FIRMWARE_NAME;
548 isp->cpd_metadata_cmpnt_size =
553 isp->hw_ver = IPU6_VER_6EP;
554 isp->cpd_fw_name = IPU6EP_FIRMWARE_NAME;
557 isp->hw_ver = IPU6_VER_6EP;
558 isp->cpd_fw_name = IPU6EPADLN_FIRMWARE_NAME;
561 isp->hw_ver = IPU6_VER_6EP_MTL;
562 isp->cpd_fw_name = IPU6EPMTL_FIRMWARE_NAME;
570 ipu6_internal_pdata_init(isp);
572 isys_base = isp->base + isys_ipdata.hw_variant.offset;
573 psys_base = isp->base + psys_ipdata.hw_variant.offset;
583 ret = ipu6_pci_config_setup(pdev, isp->hw_ver);
587 ret = ipu6_buttress_init(isp);
591 ret = request_firmware(&isp->cpd_fw, isp->cpd_fw_name, dev);
593 dev_err_probe(&isp->pdev->dev, ret,
595 isp->cpd_fw_name);
599 ret = ipu6_cpd_validate_cpd_file(isp, isp->cpd_fw->data,
600 isp->cpd_fw->size);
602 dev_err_probe(&isp->pdev->dev, ret,
614 isp->isys = ipu6_isys_init(pdev, dev, isys_ctrl, isys_base,
616 if (IS_ERR(isp->isys)) {
617 ret = PTR_ERR(isp->isys);
628 isp->psys = ipu6_psys_init(pdev, &isp->isys->auxdev.dev, psys_ctrl,
630 if (IS_ERR(isp->psys)) {
631 ret = PTR_ERR(isp->psys);
635 ret = pm_runtime_resume_and_get(&isp->psys->auxdev.dev);
639 ret = ipu6_mmu_hw_init(isp->psys->mmu);
641 dev_err_probe(&isp->pdev->dev, ret,
646 ret = ipu6_buttress_map_fw_image(isp->psys, isp->cpd_fw,
647 &isp->psys->fw_sgt);
649 dev_err_probe(&isp->pdev->dev, ret, "failed to map fw image\n");
653 ret = ipu6_cpd_create_pkg_dir(isp->psys, isp->cpd_fw->data);
655 dev_err_probe(&isp->pdev->dev, ret,
662 IRQF_SHARED, IPU6_NAME, isp);
668 ret = ipu6_buttress_authenticate(isp);
670 dev_err_probe(&isp->pdev->dev, ret,
675 ipu6_mmu_hw_cleanup(isp->psys->mmu);
676 pm_runtime_put(&isp->psys->auxdev.dev);
679 ipu6_configure_vc_mechanism(isp);
681 val = readl(isp->base + BUTTRESS_REG_SKU);
685 pdev->device, isp->hw_ver);
690 isp->bus_ready_to_probe = true;
695 devm_free_irq(dev, pdev->irq, isp);
697 if (isp->psys) {
698 ipu6_cpd_free_pkg_dir(isp->psys);
699 ipu6_buttress_unmap_fw_image(isp->psys, &isp->psys->fw_sgt);
701 if (!IS_ERR_OR_NULL(isp->psys) && !IS_ERR_OR_NULL(isp->psys->mmu))
702 ipu6_mmu_cleanup(isp->psys->mmu);
703 if (!IS_ERR_OR_NULL(isp->isys) && !IS_ERR_OR_NULL(isp->isys->mmu))
704 ipu6_mmu_cleanup(isp->isys->mmu);
706 release_firmware(isp->cpd_fw);
708 ipu6_buttress_exit(isp);
715 struct ipu6_device *isp = pci_get_drvdata(pdev);
716 struct ipu6_mmu *isys_mmu = isp->isys->mmu;
717 struct ipu6_mmu *psys_mmu = isp->psys->mmu;
719 devm_free_irq(&pdev->dev, pdev->irq, isp);
720 ipu6_cpd_free_pkg_dir(isp->psys);
722 ipu6_buttress_unmap_fw_image(isp->psys, &isp->psys->fw_sgt);
723 ipu6_buttress_exit(isp);
730 release_firmware(isp->cpd_fw);
738 struct ipu6_device *isp = pci_get_drvdata(pdev);
740 pm_runtime_forbid(&isp->pdev->dev);
745 struct ipu6_device *isp = pci_get_drvdata(pdev);
747 ipu6_buttress_restore(isp);
748 if (isp->secure_mode)
749 ipu6_buttress_reset_authentication(isp);
751 isp->need_ipc_reset = true;
752 pm_runtime_allow(&isp->pdev->dev);
767 struct ipu6_device *isp = pci_get_drvdata(pdev);
768 struct ipu6_buttress *b = &isp->buttress;
772 ipu6_configure_vc_mechanism(isp);
774 isp->secure_mode = ipu6_buttress_get_secure_mode(isp);
776 isp->secure_mode ? "secure" : "non-secure");
778 ipu6_buttress_restore(isp);
780 ret = ipu6_buttress_ipc_reset(isp, &b->cse);
782 dev_err(&isp->pdev->dev, "IPC reset protocol failed!\n");
784 ret = pm_runtime_resume_and_get(&isp->psys->auxdev.dev);
786 dev_err(&isp->psys->auxdev.dev, "Failed to get runtime PM\n");
790 ret = ipu6_buttress_authenticate(isp);
792 dev_err(&isp->pdev->dev, "FW authentication failed(%d)\n", ret);
794 pm_runtime_put(&isp->psys->auxdev.dev);
802 struct ipu6_device *isp = pci_get_drvdata(pdev);
805 ipu6_configure_vc_mechanism(isp);
806 ipu6_buttress_restore(isp);
808 if (isp->need_ipc_reset) {
809 struct ipu6_buttress *b = &isp->buttress;
811 isp->need_ipc_reset = false;
812 ret = ipu6_buttress_ipc_reset(isp, &b->cse);
814 dev_err(&isp->pdev->dev, "IPC reset protocol failed\n");