1 // SPDX-License-Identifier: GPL-2.0-only OR MIT 2 /* Copyright The Asahi Linux Contributors */ 3 4 #include "iomfb_v12_3.h" 5 #include "iomfb_v13_3.h" 6 #include "version_utils.h" 7 8 static const struct dcp_method_entry dcp_methods[dcpep_num_methods] = { 9 IOMFB_METHOD("A000", dcpep_late_init_signal), 10 IOMFB_METHOD("A029", dcpep_setup_video_limits), 11 IOMFB_METHOD("A131", iomfbep_a131_pmu_service_matched), 12 IOMFB_METHOD("A132", iomfbep_a132_backlight_service_matched), 13 IOMFB_METHOD("A357", dcpep_set_create_dfb), 14 IOMFB_METHOD("A358", iomfbep_a358_vi_set_temperature_hint), 15 IOMFB_METHOD("A401", dcpep_start_signal), 16 IOMFB_METHOD("A407", dcpep_swap_start), 17 IOMFB_METHOD("A408", dcpep_swap_submit), 18 IOMFB_METHOD("A410", dcpep_set_display_device), 19 IOMFB_METHOD("A411", dcpep_is_main_display), 20 IOMFB_METHOD("A412", dcpep_set_digital_out_mode), 21 IOMFB_METHOD("A422", iomfbep_set_matrix), 22 IOMFB_METHOD("A426", iomfbep_get_color_remap_mode), 23 IOMFB_METHOD("A439", dcpep_set_parameter_dcp), 24 IOMFB_METHOD("A443", dcpep_create_default_fb), 25 IOMFB_METHOD("A447", dcpep_enable_disable_video_power_savings), 26 IOMFB_METHOD("A454", dcpep_first_client_open), 27 IOMFB_METHOD("A455", iomfbep_last_client_close), 28 IOMFB_METHOD("A460", dcpep_set_display_refresh_properties), 29 IOMFB_METHOD("A463", dcpep_flush_supports_power), 30 IOMFB_METHOD("A464", iomfbep_abort_swaps_dcp), 31 IOMFB_METHOD("A468", dcpep_set_power_state), 32 }; 33 34 #define DCP_FW v12_3 35 #define DCP_FW_VER DCP_FW_VERSION(12, 3, 0) 36 37 #include "iomfb_template.c" 38 39 static const iomfb_cb_handler cb_handlers[IOMFB_MAX_CB] = { 40 [0] = trampoline_true, /* did_boot_signal */ 41 [1] = trampoline_true, /* did_power_on_signal */ 42 [2] = trampoline_nop, /* will_power_off_signal */ 43 [3] = trampoline_rt_bandwidth, 44 [100] = iomfbep_cb_match_pmu_service, 45 [101] = trampoline_zero, /* get_display_default_stride */ 46 [102] = trampoline_nop, /* set_number_property */ 47 [103] = trampoline_nop, /* set_boolean_property */ 48 [106] = trampoline_nop, /* remove_property */ 49 [107] = trampoline_true, /* create_provider_service */ 50 [108] = trampoline_true, /* create_product_service */ 51 [109] = trampoline_true, /* create_pmu_service */ 52 [110] = trampoline_true, /* create_iomfb_service */ 53 [111] = trampoline_create_backlight_service, 54 [116] = dcpep_cb_boot_1, 55 [117] = trampoline_false, /* is_dark_boot */ 56 [118] = trampoline_false, /* is_dark_boot / is_waking_from_hibernate*/ 57 [120] = trampoline_read_edt_data, 58 [122] = trampoline_prop_start, 59 [123] = trampoline_prop_chunk, 60 [124] = trampoline_prop_end, 61 [201] = trampoline_map_piodma, 62 [202] = trampoline_unmap_piodma, 63 [206] = iomfbep_cb_match_pmu_service_2, 64 [207] = iomfbep_cb_match_backlight_service, 65 [208] = trampoline_get_time, 66 [211] = trampoline_nop, /* update_backlight_factor_prop */ 67 [300] = trampoline_pr_publish, 68 [401] = trampoline_get_uint_prop, 69 [404] = trampoline_nop, /* sr_set_uint_prop */ 70 [406] = trampoline_set_fx_prop, 71 [408] = trampoline_get_frequency, 72 [411] = trampoline_map_reg, 73 [413] = trampoline_true, /* sr_set_property_dict */ 74 [414] = trampoline_sr_set_property_int, 75 [415] = trampoline_true, /* sr_set_property_bool */ 76 [451] = trampoline_allocate_buffer, 77 [452] = trampoline_map_physical, 78 [456] = trampoline_release_mem_desc, 79 [552] = trampoline_true, /* set_property_dict_0 */ 80 [561] = trampoline_true, /* set_property_dict */ 81 [563] = trampoline_true, /* set_property_int */ 82 [565] = trampoline_true, /* set_property_bool */ 83 [567] = trampoline_true, /* set_property_str */ 84 [574] = trampoline_zero, /* power_up_dart */ 85 [576] = trampoline_hotplug, 86 [577] = trampoline_nop, /* powerstate_notify */ 87 [582] = trampoline_true, /* create_default_fb_surface */ 88 [584] = trampoline_nop, /* IOMobileFramebufferAP::clear_default_surface */ 89 [588] = trampoline_nop, /* resize_default_fb_surface_gated */ 90 [589] = trampoline_swap_complete, 91 [591] = trampoline_swap_complete_intent_gated, 92 [592] = trampoline_abort_swap_ap_gated, 93 [593] = trampoline_enable_backlight_message_ap_gated, 94 [594] = trampoline_nop, /* IOMobileFramebufferAP::setSystemConsoleMode */ 95 [596] = trampoline_false, /* IOMobileFramebufferAP::isDFBAllocated */ 96 [597] = trampoline_false, /* IOMobileFramebufferAP::preserveContents */ 97 [598] = trampoline_nop, /* find_swap_function_gated */ 98 }; 99 100 void DCP_FW_NAME(iomfb_start)(struct apple_dcp *dcp) 101 { 102 dcp->cb_handlers = cb_handlers; 103 104 dcp_start_signal(dcp, false, dcp_started, NULL); 105 } 106 107 #undef DCP_FW_VER 108 #undef DCP_FW 109