Lines Matching refs:dmc

75 	return i915->display.dmc.dmc;  in i915_to_dmc()
380 struct intel_dmc *dmc = i915_to_dmc(i915); in has_dmc_id_fw() local
382 return dmc && dmc->dmc_info[dmc_id].payload; in has_dmc_id_fw()
552 struct intel_dmc *dmc, in dmc_mmiodata() argument
556 dmc->dmc_info[dmc_id].mmioaddr[i], in dmc_mmiodata()
557 dmc->dmc_info[dmc_id].mmiodata[i])) in dmc_mmiodata()
563 return dmc->dmc_info[dmc_id].mmiodata[i]; in dmc_mmiodata()
577 struct intel_dmc *dmc = i915_to_dmc(i915); in intel_dmc_load_program() local
593 for (i = 0; i < dmc->dmc_info[dmc_id].dmc_fw_size; i++) { in intel_dmc_load_program()
595 DMC_PROGRAM(dmc->dmc_info[dmc_id].start_mmioaddr, i), in intel_dmc_load_program()
596 dmc->dmc_info[dmc_id].payload[i]); in intel_dmc_load_program()
603 for (i = 0; i < dmc->dmc_info[dmc_id].mmio_count; i++) { in intel_dmc_load_program()
604 intel_de_write(i915, dmc->dmc_info[dmc_id].mmioaddr[i], in intel_dmc_load_program()
605 dmc_mmiodata(i915, dmc, dmc_id, i)); in intel_dmc_load_program()
637 struct intel_dmc *dmc = i915_to_dmc(i915); in assert_dmc_loaded() local
639 drm_WARN_ONCE(&i915->drm, !dmc, "DMC not initialized\n"); in assert_dmc_loaded()
640 drm_WARN_ONCE(&i915->drm, dmc && in assert_dmc_loaded()
641 !intel_de_read(i915, DMC_PROGRAM(dmc->dmc_info[DMC_FW_MAIN].start_mmioaddr, 0)), in assert_dmc_loaded()
670 static void dmc_set_fw_offset(struct intel_dmc *dmc, in dmc_set_fw_offset() argument
676 struct drm_i915_private *i915 = dmc->i915; in dmc_set_fw_offset()
692 if (dmc->dmc_info[dmc_id].present) in dmc_set_fw_offset()
696 dmc->dmc_info[dmc_id].present = true; in dmc_set_fw_offset()
697 dmc->dmc_info[dmc_id].dmc_offset = fw_info[i].offset; in dmc_set_fw_offset()
702 static bool dmc_mmio_addr_sanity_check(struct intel_dmc *dmc, in dmc_mmio_addr_sanity_check() argument
706 struct drm_i915_private *i915 = dmc->i915; in dmc_mmio_addr_sanity_check()
735 static u32 parse_dmc_fw_header(struct intel_dmc *dmc, in parse_dmc_fw_header() argument
739 struct drm_i915_private *i915 = dmc->i915; in parse_dmc_fw_header()
740 struct dmc_fw_info *dmc_info = &dmc->dmc_info[dmc_id]; in parse_dmc_fw_header()
804 if (!dmc_mmio_addr_sanity_check(dmc, mmioaddr, mmio_count, in parse_dmc_fw_header()
832 if (payload_size > dmc->max_fw_size) { in parse_dmc_fw_header()
853 parse_dmc_fw_package(struct intel_dmc *dmc, in parse_dmc_fw_package() argument
858 struct drm_i915_private *i915 = dmc->i915; in parse_dmc_fw_package()
896 dmc_set_fw_offset(dmc, fw_info, num_entries, si, in parse_dmc_fw_package()
908 static u32 parse_dmc_fw_css(struct intel_dmc *dmc, in parse_dmc_fw_css() argument
912 struct drm_i915_private *i915 = dmc->i915; in parse_dmc_fw_css()
927 dmc->version = css_header->version; in parse_dmc_fw_css()
932 static int parse_dmc_fw(struct intel_dmc *dmc, const struct firmware *fw) in parse_dmc_fw() argument
934 struct drm_i915_private *i915 = dmc->i915; in parse_dmc_fw()
949 r = parse_dmc_fw_css(dmc, css_header, fw->size); in parse_dmc_fw()
957 r = parse_dmc_fw_package(dmc, package_header, si, fw->size - readcount); in parse_dmc_fw()
964 if (!dmc->dmc_info[dmc_id].present) in parse_dmc_fw()
967 offset = readcount + dmc->dmc_info[dmc_id].dmc_offset * 4; in parse_dmc_fw()
974 parse_dmc_fw_header(dmc, dmc_header, fw->size - offset, dmc_id); in parse_dmc_fw()
987 drm_WARN_ON(&i915->drm, i915->display.dmc.wakeref); in intel_dmc_runtime_pm_get()
988 i915->display.dmc.wakeref = intel_display_power_get(i915, POWER_DOMAIN_INIT); in intel_dmc_runtime_pm_get()
994 fetch_and_zero(&i915->display.dmc.wakeref); in intel_dmc_runtime_pm_put()
1009 struct intel_dmc *dmc = container_of(work, typeof(*dmc), work); in dmc_load_work_fn() local
1010 struct drm_i915_private *i915 = dmc->i915; in dmc_load_work_fn()
1015 err = request_firmware(&fw, dmc->fw_path, i915->drm.dev); in dmc_load_work_fn()
1021 dmc->fw_path, fallback_path); in dmc_load_work_fn()
1024 dmc->fw_path = fallback_path; in dmc_load_work_fn()
1031 dmc->fw_path, ERR_PTR(err)); in dmc_load_work_fn()
1037 err = parse_dmc_fw(dmc, fw); in dmc_load_work_fn()
1041 dmc->fw_path, ERR_PTR(err)); in dmc_load_work_fn()
1049 dmc->fw_path, DMC_VERSION_MAJOR(dmc->version), in dmc_load_work_fn()
1050 DMC_VERSION_MINOR(dmc->version)); in dmc_load_work_fn()
1065 struct intel_dmc *dmc; in intel_dmc_init() local
1080 dmc = kzalloc(sizeof(*dmc), GFP_KERNEL); in intel_dmc_init()
1081 if (!dmc) in intel_dmc_init()
1084 dmc->i915 = i915; in intel_dmc_init()
1086 INIT_WORK(&dmc->work, dmc_load_work_fn); in intel_dmc_init()
1088 dmc->fw_path = dmc_firmware_default(i915, &dmc->max_fw_size); in intel_dmc_init()
1096 dmc->fw_path = dmc_firmware_param(i915); in intel_dmc_init()
1098 if (!dmc->fw_path) { in intel_dmc_init()
1104 i915->display.dmc.dmc = dmc; in intel_dmc_init()
1106 drm_dbg_kms(&i915->drm, "Loading %s\n", dmc->fw_path); in intel_dmc_init()
1107 queue_work(i915->unordered_wq, &dmc->work); in intel_dmc_init()
1112 kfree(dmc); in intel_dmc_init()
1125 struct intel_dmc *dmc = i915_to_dmc(i915); in intel_dmc_suspend() local
1130 if (dmc) in intel_dmc_suspend()
1131 flush_work(&dmc->work); in intel_dmc_suspend()
1169 struct intel_dmc *dmc = i915_to_dmc(i915); in intel_dmc_fini() local
1176 drm_WARN_ON(&i915->drm, i915->display.dmc.wakeref); in intel_dmc_fini()
1178 if (dmc) { in intel_dmc_fini()
1180 kfree(dmc->dmc_info[dmc_id].payload); in intel_dmc_fini()
1182 kfree(dmc); in intel_dmc_fini()
1183 i915->display.dmc.dmc = NULL; in intel_dmc_fini()
1190 struct intel_dmc *dmc = i915_to_dmc(i915); in intel_dmc_print_error_state() local
1195 drm_printf(p, "DMC initialized: %s\n", str_yes_no(dmc)); in intel_dmc_print_error_state()
1198 if (dmc) in intel_dmc_print_error_state()
1200 DMC_VERSION_MAJOR(dmc->version), in intel_dmc_print_error_state()
1201 DMC_VERSION_MINOR(dmc->version)); in intel_dmc_print_error_state()
1207 struct intel_dmc *dmc = i915_to_dmc(i915); in intel_dmc_debugfs_status_show() local
1216 seq_printf(m, "DMC initialized: %s\n", str_yes_no(dmc)); in intel_dmc_debugfs_status_show()
1219 seq_printf(m, "path: %s\n", dmc ? dmc->fw_path : "N/A"); in intel_dmc_debugfs_status_show()
1233 seq_printf(m, "version: %d.%d\n", DMC_VERSION_MAJOR(dmc->version), in intel_dmc_debugfs_status_show()
1234 DMC_VERSION_MINOR(dmc->version)); in intel_dmc_debugfs_status_show()
1263 intel_de_read(i915, DMC_PROGRAM(dmc->dmc_info[DMC_FW_MAIN].start_mmioaddr, 0))); in intel_dmc_debugfs_status_show()