author | Ao Xu <ao.xu@amlogic.com> | 2018-08-13 07:25:28 (GMT) |
---|---|---|
committer | Zhi Zhou <zhi.zhou@amlogic.com> | 2018-08-22 02:19:44 (GMT) |
commit | 1e37ecaba24a7e63afe122946f02094659eafec2 (patch) | |
tree | 2042215bd6521b3e72e12d7c47744dda3e73b685 | |
parent | d978b867263e92efdeb06be83dbc4fe8bbf67258 (diff) | |
download | media_modules-1e37ecaba24a7e63afe122946f02094659eafec2.zip media_modules-1e37ecaba24a7e63afe122946f02094659eafec2.tar.gz media_modules-1e37ecaba24a7e63afe122946f02094659eafec2.tar.bz2 |
media_module: solve 32bit compile error
PD#169652: media_modules: solve 32bit compile error
Change-Id: Id12608913df7372a303606dbf39b1f349eaaf08d
Signed-off-by: Ao Xu <ao.xu@amlogic.com>
-rw-r--r-- | Media.mk | 9 | ||||
-rw-r--r-- | drivers/amvdec_ports/aml_vcodec_dec.c | 4 | ||||
-rw-r--r-- | drivers/amvdec_ports/decoder/vdec_h264_if.c | 4 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/avs2/vavs2.c | 2 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/h264_multi/vmh264.c | 4 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/mpeg12/vmpeg12.c | 4 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/utils/secprot.c | 32 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/utils/secprot.h | 2 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/utils/vdec.c | 6 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/vp9/vvp9.c | 2 | ||||
-rw-r--r-- | drivers/frame_sink/encoder/h265/vmm.h | 2 | ||||
-rw-r--r-- | drivers/frame_sink/encoder/h265/vpu.c | 12 | ||||
-rw-r--r-- | drivers/frame_sink/encoder/h265/vpu.h | 4 |
13 files changed, 75 insertions, 12 deletions
@@ -1,4 +1,9 @@ +ifeq ($(KERNEL_A32_SUPPORT), true) +KERNEL_ARCH := arm +else KERNEL_ARCH := arm64 +endif + CONFIGS := CONFIG_AMLOGIC_MEDIA_VDEC_MPEG12=m \ CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4=m \ CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4_MULTI=m \ @@ -82,7 +87,11 @@ ifeq (,$(wildcard $(MODS_OUT))) $(shell mkdir $(MODS_OUT) -p) endif +ifeq ($(KERNEL_A32_SUPPORT), true) +TOOLS := /opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- +else TOOLS := /opt/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- +endif modules: @$(MAKE) -C $(KDIR) M=$(MEDIA_DRIVERS) ARCH=$(KERNEL_ARCH) \ diff --git a/drivers/amvdec_ports/aml_vcodec_dec.c b/drivers/amvdec_ports/aml_vcodec_dec.c index a2055aa..e33ca62 100644 --- a/drivers/amvdec_ports/aml_vcodec_dec.c +++ b/drivers/amvdec_ports/aml_vcodec_dec.c @@ -253,9 +253,9 @@ void trans_vframe_to_user(struct aml_vcodec_ctx *ctx, struct vdec_fb *fb) if (!dstbuf->used) return; - aml_v4l2_debug(4,"%s() [%d], base_y: %lu, idx: %u\n", + aml_v4l2_debug(4,"%s() [%d], base_y: %zu, idx: %u\n", __FUNCTION__, __LINE__, fb->base_y.size, dstbuf->vb.vb2_buf.index); - aml_v4l2_debug(4,"%s() [%d], base_c: %lu, idx: %u\n", + aml_v4l2_debug(4,"%s() [%d], base_c: %zu, idx: %u\n", __FUNCTION__, __LINE__, fb->base_c.size, dstbuf->vb.vb2_buf.index); dstbuf->vb.vb2_buf.timestamp = vf->timestamp; diff --git a/drivers/amvdec_ports/decoder/vdec_h264_if.c b/drivers/amvdec_ports/decoder/vdec_h264_if.c index 0c441d9..fbda1f2 100644 --- a/drivers/amvdec_ports/decoder/vdec_h264_if.c +++ b/drivers/amvdec_ports/decoder/vdec_h264_if.c @@ -517,10 +517,10 @@ static void vdec_h264_get_vf(struct vdec_h264_inst *inst, struct vdec_fb **out) //dump_write(fb->base_y.va, fb->base_y.bytes_used); //dump_write(fb->base_c.va, fb->base_c.bytes_used); - aml_vcodec_debug(inst, "%s() [%d], va: %p, phy: %x, size: %lu\n", + aml_vcodec_debug(inst, "%s() [%d], va: %p, phy: %x, size: %zu\n", __FUNCTION__, __LINE__, fb->base_y.va, (unsigned int)virt_to_phys(fb->base_y.va), fb->base_y.size); - aml_vcodec_debug(inst, "%s() [%d], va: %p, phy: %x, size: %lu\n", + aml_vcodec_debug(inst, "%s() [%d], va: %p, phy: %x, size: %zu\n", __FUNCTION__, __LINE__, fb->base_c.va, (unsigned int)virt_to_phys(fb->base_c.va), fb->base_c.size); } diff --git a/drivers/frame_provider/decoder/avs2/vavs2.c b/drivers/frame_provider/decoder/avs2/vavs2.c index 15f986c..0039864 100644 --- a/drivers/frame_provider/decoder/avs2/vavs2.c +++ b/drivers/frame_provider/decoder/avs2/vavs2.c @@ -274,7 +274,7 @@ static inline int div_r32(int64_t m, int n) return (int)(m/n) */ #ifndef CONFIG_ARM64 - do_div(m, n); + div_s64(m, n); return (int)m; #else return (int)(m/n); diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c index bbbe129..24fa32e 100644 --- a/drivers/frame_provider/decoder/h264_multi/vmh264.c +++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c @@ -6082,11 +6082,13 @@ static int vmh264_user_data_read(struct vdec_s *vdec, struct mh264_userdata_record_t *p_userdata_rec; u32 data_size; u32 res; + unsigned long addr; int copy_ok = 1; hw = (struct vdec_h264_hw_s *)vdec->private; - pdest_buf = (void *)(puserdata_para->pbuf_addr); + addr = puserdata_para->pbuf_addr; + pdest_buf = (void *)addr; mutex_lock(&hw->userdata_mutex); /* diff --git a/drivers/frame_provider/decoder/mpeg12/vmpeg12.c b/drivers/frame_provider/decoder/mpeg12/vmpeg12.c index 6eda94c..36c9dbd 100644 --- a/drivers/frame_provider/decoder/mpeg12/vmpeg12.c +++ b/drivers/frame_provider/decoder/mpeg12/vmpeg12.c @@ -1478,13 +1478,15 @@ static int vmpeg12_user_data_read(struct vdec_s *vdec, u8 *rec_data_start; u8 *pdest_buf; struct mpeg12_userdata_recored_t *p_userdata_rec; + unsigned long addr; u32 data_size; u32 res; int copy_ok = 1; - pdest_buf = (void *)(puserdata_para->pbuf_addr); + addr = puserdata_para->pbuf_addr; + pdest_buf = (void *)addr; mutex_lock(&userdata_mutex); if (!p_userdata_mgr) { diff --git a/drivers/frame_provider/decoder/utils/secprot.c b/drivers/frame_provider/decoder/utils/secprot.c index 1d14e2c..a1e7fa7 100644 --- a/drivers/frame_provider/decoder/utils/secprot.c +++ b/drivers/frame_provider/decoder/utils/secprot.c @@ -15,7 +15,14 @@ * */ +#include <linux/kernel.h> +#include <asm/compiler.h> #include "secprot.h" +#ifndef CONFIG_ARM64 +#include <asm/opcodes-sec.h> +#endif + +#ifdef CONFIG_ARM64 int tee_config_device_secure(int dev_id, int secure) { @@ -40,4 +47,29 @@ int tee_config_device_secure(int dev_id, int secure) return ret; } +#else +int tee_config_device_secure(int dev_id, int secure) +{ + int ret = 0; + register unsigned int r0 asm("r0"); + register unsigned int r1 asm("r1"); + register unsigned int r2 asm("r2"); + + r0 = OPTEE_SMC_CONFIG_DEVICE_SECURE; + r1 = dev_id; + r2 = secure; + + asm volatile( + __asmeq("%0", "r0") + __asmeq("%1", "r0") + __asmeq("%2", "r1") + __asmeq("%3", "r2") + __SMC(0) + : "=r"(r0) + : "r"(r0), "r"(r1), "r"(r2)); + ret = r0; + + return ret; +} +#endif diff --git a/drivers/frame_provider/decoder/utils/secprot.h b/drivers/frame_provider/decoder/utils/secprot.h index f8fc5da..28ee477 100644 --- a/drivers/frame_provider/decoder/utils/secprot.h +++ b/drivers/frame_provider/decoder/utils/secprot.h @@ -31,7 +31,7 @@ #define OPTEE_SMC_CONFIG_DEVICE_SECURE 0xb200000e -#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" +/*#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"*/ extern int tee_config_device_secure(int dev_id, int secure); diff --git a/drivers/frame_provider/decoder/utils/vdec.c b/drivers/frame_provider/decoder/utils/vdec.c index 0b9ac7f..2ad8c3c 100644 --- a/drivers/frame_provider/decoder/utils/vdec.c +++ b/drivers/frame_provider/decoder/utils/vdec.c @@ -3168,6 +3168,7 @@ static ssize_t show_debug(struct class *class, struct vdec_s *vdec; struct vdec_core_s *core = vdec_core; unsigned long flags = vdec_core_lock(vdec_core); + u64 tmp; pbuf += sprintf(pbuf, "============== help:\n"); @@ -3207,11 +3208,12 @@ static ssize_t show_debug(struct class *class, vdec->input_underrun_count[type]); pbuf += sprintf(pbuf, "\t%d", vdec->not_run_ready_count[type]); + tmp = vdec->run_clk[type] * 100; + do_div(tmp, vdec->total_clk[type]); pbuf += sprintf(pbuf, "\t%d%%\n", vdec->total_clk[type] == 0 ? 0 : - (u32)((vdec->run_clk[type] * 100) - / vdec->total_clk[type])); + (u32)tmp); } } } diff --git a/drivers/frame_provider/decoder/vp9/vvp9.c b/drivers/frame_provider/decoder/vp9/vvp9.c index 6e5da22..a7cabcd 100644 --- a/drivers/frame_provider/decoder/vp9/vvp9.c +++ b/drivers/frame_provider/decoder/vp9/vvp9.c @@ -265,7 +265,7 @@ static inline int div_r32(int64_t m, int n) *return (int)(m/n) */ #ifndef CONFIG_ARM64 - do_div(m, n); + div_s64(m, n); return (int)m; #else return (int)(m/n); diff --git a/drivers/frame_sink/encoder/h265/vmm.h b/drivers/frame_sink/encoder/h265/vmm.h index 3c9c6d8..a32dd06 100644 --- a/drivers/frame_sink/encoder/h265/vmm.h +++ b/drivers/frame_sink/encoder/h265/vmm.h @@ -476,7 +476,7 @@ s32 vmem_init(struct video_mm_t *mm, ulong addr, ulong size) (struct page_t *)VMEM_P_ALLOC( mm->num_pages * sizeof(struct page_t)); if (mm->page_list == NULL) { - pr_err("%s:%d failed to kmalloc(%ld)\n", + pr_err("%s:%d failed to kmalloc(%zu)\n", __func__, __LINE__, mm->num_pages * sizeof(struct page_t)); return -1; diff --git a/drivers/frame_sink/encoder/h265/vpu.c b/drivers/frame_sink/encoder/h265/vpu.c index 3345b0a..ecc4ba7 100644 --- a/drivers/frame_sink/encoder/h265/vpu.c +++ b/drivers/frame_sink/encoder/h265/vpu.c @@ -491,6 +491,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_ALLOCATE_PHYSICAL_MEMORY\n"); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_ALLOCATE_PHYSICAL_MEMORY32: { struct vpudrv_buffer_pool_t *vbp; @@ -560,6 +561,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_ALLOCATE_PHYSICAL_MEMORY32\n"); } break; +#endif case VDI_IOCTL_FREE_PHYSICALMEMORY: { struct vpudrv_buffer_pool_t *vbp, *n; @@ -596,6 +598,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_FREE_PHYSICALMEMORY\n"); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_FREE_PHYSICALMEMORY32: { struct vpudrv_buffer_pool_t *vbp, *n; @@ -642,6 +645,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_FREE_PHYSICALMEMORY32\n"); } break; +#endif case VDI_IOCTL_GET_RESERVED_VIDEO_MEMORY_INFO: { enc_pr(LOG_ALL, @@ -659,6 +663,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_RESERVED_VIDEO_MEMORY_INFO\n"); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_GET_RESERVED_VIDEO_MEMORY_INFO32: { struct compat_vpudrv_buffer_t buf32; @@ -686,6 +691,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_RESERVED_VIDEO_MEMORY_INFO32\n"); } break; +#endif case VDI_IOCTL_WAIT_INTERRUPT: { struct vpudrv_intr_info_t info; @@ -804,6 +810,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_INSTANCE_POOL\n"); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_GET_INSTANCE_POOL32: { struct compat_vpudrv_buffer_t buf32; @@ -875,6 +882,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_INSTANCE_POOL32\n"); } break; +#endif case VDI_IOCTL_GET_COMMON_MEMORY: { enc_pr(LOG_ALL, @@ -907,6 +915,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_COMMON_MEMORY\n"); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_GET_COMMON_MEMORY32: { struct compat_vpudrv_buffer_t buf32; @@ -965,6 +974,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_GET_COMMON_MEMORY32\n"); } break; +#endif case VDI_IOCTL_OPEN_INSTANCE: { struct vpudrv_inst_info_t inst_info; @@ -1133,6 +1143,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) s_vpu_register.size); } break; +#ifdef CONFIG_COMPAT case VDI_IOCTL_GET_REGISTER_INFO32: { struct compat_vpudrv_buffer_t buf32; @@ -1207,6 +1218,7 @@ static long vpu_ioctl(struct file *filp, u32 cmd, ulong arg) "[-]VDI_IOCTL_FLUSH_BUFFER32\n"); } break; +#endif case VDI_IOCTL_FLUSH_BUFFER: { struct vpudrv_buffer_pool_t *pool, *n; diff --git a/drivers/frame_sink/encoder/h265/vpu.h b/drivers/frame_sink/encoder/h265/vpu.h index 9c29a43..eaf764c 100644 --- a/drivers/frame_sink/encoder/h265/vpu.h +++ b/drivers/frame_sink/encoder/h265/vpu.h @@ -101,6 +101,7 @@ READ_HHI_REG(HHI_WAVE420L_CLK_CNTL2) \ & (~(1 << 8))) +#ifdef CONFIG_COMPAT struct compat_vpudrv_buffer_t { u32 size; u32 cached; @@ -108,6 +109,7 @@ struct compat_vpudrv_buffer_t { compat_ulong_t base; /* kernel logical address in use kernel */ compat_ulong_t virt_addr; /* virtual user space address */ }; +#endif struct vpudrv_buffer_t { u32 size; @@ -204,6 +206,7 @@ struct vpudrv_instance_pool_t { #define VDI_IOCTL_FLUSH_BUFFER \ _IOW(VDI_MAGIC, 13, VPUDRV_BUF_LEN) +#ifdef CONFIG_COMPAT #define VDI_IOCTL_ALLOCATE_PHYSICAL_MEMORY32 \ _IOW(VDI_MAGIC, 0, VPUDRV_BUF_LEN32) @@ -224,6 +227,7 @@ struct vpudrv_instance_pool_t { #define VDI_IOCTL_FLUSH_BUFFER32 \ _IOW(VDI_MAGIC, 13, VPUDRV_BUF_LEN32) +#endif enum { W4_INT_INIT_VPU = 0, |