diff --git a/drivers/gpu/drm/arise/cbios/Device/CBiosShare.h b/drivers/gpu/drm/arise/cbios/Device/CBiosShare.h index 01f806f5960096eeb3819bdf298150a70d48337e..d0e5290069c8c2ef808d8e51439a6629b9a40efa 100644 --- a/drivers/gpu/drm/arise/cbios/Device/CBiosShare.h +++ b/drivers/gpu/drm/arise/cbios/Device/CBiosShare.h @@ -224,7 +224,7 @@ static inline CBIOS_U32 cb_swab32(CBIOS_U32 x) #define cbmemset(s1, v, n) CBIOS_NULL #define cbmemcpy(s1, s2, n) CBIOS_NULL #define cbmemcmp(s1, s2, n) 0 -#define cbdo_div(a, b) ((a)/(b)) +#define cbdo_div(a, b) 0 #define cbvsprintf(s, f, ...) 0 #else diff --git a/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_engine_setup_e3k.c b/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_engine_setup_e3k.c index 85754a2c36eadcba92732dc51564cf78dd6be5d9..379c03b0162c1073de757e37fc61dc79a229ebb5 100644 --- a/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_engine_setup_e3k.c +++ b/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_engine_setup_e3k.c @@ -306,8 +306,7 @@ unsigned long long engine_update_vcp_fence_id_e3k(vidsch_mgr_t *sch_mgr) unsigned long long update_timestamp; /* THE time update fence id */ unsigned long long time_interval; gf_get_nsecs(&update_timestamp); - time_interval = (update_timestamp - \ - sch_mgr->adapter->vcp_task_info[i].vcp_inc_timestamp)/1000000; + time_interval = gf_do_div(update_timestamp - sch_mgr->adapter->vcp_task_info[i].vcp_inc_timestamp, 1000000); sch_mgr->adapter->vcp_info[j].TotalDecodetime += time_interval; sch_mgr->adapter->vcp_info[j].TotalDecodeFrameNum++; sch_mgr->last_returned_fence_id = sch_mgr->returned_fence_id; diff --git a/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_setup_e3k.c b/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_setup_e3k.c index 9bc585dce03dba275dca26b556cb2735517f5567..3093430ad828a9ca4aa01e31f9ff620455ef5b7a 100755 --- a/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_setup_e3k.c +++ b/drivers/gpu/drm/arise/core/e3k/vidsch/vidsch_setup_e3k.c @@ -463,13 +463,9 @@ static void vidsch_get_set_reg_e3k(adapter_t *adapter, gf_query_info_t *info) reg_offset = (CHIP_ARISE1020 <= adapter->chip_id) ? Reg_Csp_Ref_Total_Gpu_Timestamp_Offset_Arise1020 : Reg_Csp_Ms_Total_Gpu_Timestamp_Offset; -#ifdef __aarch64__ time_stamp_lo = gf_read32(adapter->mmio + MMIO_CSP_START_ADDRESS + reg_offset * 4); time_stamp_hi = gf_read32(adapter->mmio + MMIO_CSP_START_ADDRESS + reg_offset * 4 + 4); info->value64 = time_stamp_lo | (time_stamp_hi << 32); -#else - info->value64 = gf_read64(adapter->mmio + MMIO_CSP_START_ADDRESS + reg_offset * 4); -#endif } break; diff --git a/drivers/gpu/drm/arise/core/kernel_interface.c b/drivers/gpu/drm/arise/core/kernel_interface.c index cb3da555059b6b46e2bbaec6771fba6dd0a26a91..90f59bfaed8557338df8a136f133660aec39ace7 100644 --- a/drivers/gpu/drm/arise/core/kernel_interface.c +++ b/drivers/gpu/drm/arise/core/kernel_interface.c @@ -1311,7 +1311,7 @@ static void krnl_task_timeout_update(void* data, unsigned long long *value, int if (update) adapter->hw_hang_fast_timeout_ns = *value * 1000000; else - *value = adapter->hw_hang_fast_timeout_ns / 1000000; + *value = gf_do_div(adapter->hw_hang_fast_timeout_ns, 1000000); } static core_interface_t gfe3k_gpu_core = { diff --git a/drivers/gpu/drm/arise/core/perfevent/perfevent.c b/drivers/gpu/drm/arise/core/perfevent/perfevent.c index 8cf232f050eb9675cb24e04ab477105507492bd0..cc87ea7de3ab3e174a6f43f08626f25aa7ba79b8 100755 --- a/drivers/gpu/drm/arise/core/perfevent/perfevent.c +++ b/drivers/gpu/drm/arise/core/perfevent/perfevent.c @@ -922,7 +922,7 @@ int hwq_process_vsync_event(adapter_t *adapter, unsigned long long time) } p_hwq_event->idle_time+=(e_idle_time - s_idle_time); } - p_hwq_event->engine_usage=100-((p_hwq_event->idle_time)*100/((time-hwq_event_mgr->start_time))); + p_hwq_event->engine_usage = 100 - gf_do_div(p_hwq_event->idle_time*100, time - hwq_event_mgr->start_time); //gf_info("\n EngineNum=%d engine_usage ALL=%llu%%\n",engine,p_hwq_event->engine_usage); p_hwq_event->idle_time=0; @@ -1099,11 +1099,13 @@ int hwq_get_video_info(void *adp, gf_video_info *video_info) decode_framenum[i] = adapter->vcp_info[i].TotalDecodeFrameNum; return ret; } - interval_ms = (time - last_time[i]) / 1000000; - if (interval_ms < 1 || adapter->vcp_info[i].TotalDecodetime == last_decodetime[i]) return 0; // - video_info->presentspeed[i] = (adapter->vcp_info[i].TotalRenderFrameNum - frame_num[i]) * 1000 / interval_ms; - video_info->decodespeed[i] = (adapter->vcp_info[i].TotalDecodeFrameNum - decode_framenum[i]) * 1000 /(adapter->vcp_info[i].TotalDecodetime -last_decodetime[i]); - video_info->bitrate[i] = (adapter->vcp_info[i].TotalBitstreamSize - bit_size[i]) * 8 * 1000/ interval_ms / 1024; + interval_ms = gf_do_div(time - last_time[i], 1000000); + if (interval_ms < 1 || adapter->vcp_info[i].TotalDecodetime == last_decodetime[i]) + return 0; + + video_info->presentspeed[i] = gf_do_div((adapter->vcp_info[i].TotalRenderFrameNum - frame_num[i]) * 1000, interval_ms); + video_info->decodespeed[i] = gf_do_div((adapter->vcp_info[i].TotalDecodeFrameNum - decode_framenum[i]) * 1000, adapter->vcp_info[i].TotalDecodetime -last_decodetime[i]); + video_info->bitrate[i] = gf_do_div((adapter->vcp_info[i].TotalBitstreamSize - bit_size[i]) * 8 * 1000, interval_ms * 1024); last_time[i] = time; frame_num[i] = adapter->vcp_info[i].TotalRenderFrameNum; bit_size[i] = adapter->vcp_info[i].TotalBitstreamSize; diff --git a/drivers/gpu/drm/arise/linux/os_interface.c b/drivers/gpu/drm/arise/linux/os_interface.c index 48045b9766aa7cead45eb0bd7a03b513002f6b43..40d49bed3ec7d4ccd16e551294c3dd44195b815d 100644 --- a/drivers/gpu/drm/arise/linux/os_interface.c +++ b/drivers/gpu/drm/arise/linux/os_interface.c @@ -242,7 +242,11 @@ unsigned long gf_strlen(char *s) unsigned long long GF_API_CALL gf_read64(void* addr) { +#ifdef CONFIG_64BIT return readq(addr); +#else + return 0ull; +#endif } unsigned int GF_API_CALL gf_read32(void* addr)