From 2d5f3dc464340f2877728ba69be563429913bb04 Mon Sep 17 00:00:00 2001 From: Ao Xu Date: Wed, 1 Aug 2018 19:56:37 +0800 Subject: [PATCH] board: add CONFIG_ARM64_A32 and CONFIG_COMPAT PD#169652: add CONFIG_ARM64_A32 and CONFIG_COMPAT add CONFIG_ARM64_A32 support and add missing CONFIG_COMPAT Change-Id: Id041292cccd39618ba9932d123a219f0583fd4c5 Signed-off-by: Ao Xu --- drivers/amlogic/cec/hdmi_ao_cec.c | 2 -- drivers/amlogic/defendkey/securekey.c | 2 +- drivers/amlogic/defendkey/securekey.h | 2 +- drivers/amlogic/media/dtv_demod/amlfrontend.c | 8 ++++++++ drivers/amlogic/media/dtv_demod/demod_func.c | 5 +---- drivers/amlogic/media/dtv_demod/dtmb_func.c | 2 +- drivers/amlogic/media/dtv_demod/tuner_func.c | 15 ++++++++++++--- drivers/amlogic/media/osd/osd_rdma.c | 11 ++++++++++- drivers/amlogic/media/video_processor/pic_dev/picdec.c | 2 ++ drivers/amlogic/media/video_processor/pic_dev/picdec.h | 9 ++++++--- drivers/amlogic/media/vout/backlight/aml_bl.c | 2 +- drivers/amlogic/memory_ext/page_trace.c | 2 ++ drivers/amlogic/pinctrl/Kconfig | 10 +++++----- drivers/amlogic/pm/Kconfig | 2 +- drivers/amlogic/pm/gx_pm.c | 1 + lib/Kconfig.debug | 1 + 16 files changed, 53 insertions(+), 23 deletions(-) diff --git a/drivers/amlogic/cec/hdmi_ao_cec.c b/drivers/amlogic/cec/hdmi_ao_cec.c index 7640f44..a19966a 100644 --- a/drivers/amlogic/cec/hdmi_ao_cec.c +++ b/drivers/amlogic/cec/hdmi_ao_cec.c @@ -14,8 +14,6 @@ * See the GNU General Public License for more details. */ -#include - #include #include #include diff --git a/drivers/amlogic/defendkey/securekey.c b/drivers/amlogic/defendkey/securekey.c index fa6d3a5..1efb90c 100644 --- a/drivers/amlogic/defendkey/securekey.c +++ b/drivers/amlogic/defendkey/securekey.c @@ -22,7 +22,7 @@ #include "securekey.h" #include -#ifdef CONFIG_ARM64 +#if (defined CONFIG_ARM64) || (defined CONFIG_ARM64_A32) int aml_is_secure_set(void) { diff --git a/drivers/amlogic/defendkey/securekey.h b/drivers/amlogic/defendkey/securekey.h index d55635b..717352c 100644 --- a/drivers/amlogic/defendkey/securekey.h +++ b/drivers/amlogic/defendkey/securekey.h @@ -15,7 +15,7 @@ * */ -#ifdef CONFIG_ARM64 +#if (defined CONFIG_ARM64) || (defined CONFIG_ARM64_A32) #define AML_D_P_UPGRADE_CHECK (0x80) #define AML_D_P_IMG_DECRYPT (0x40) #define AML_DATA_PROCESS (0x820000FF) diff --git a/drivers/amlogic/media/dtv_demod/amlfrontend.c b/drivers/amlogic/media/dtv_demod/amlfrontend.c index f2d395d..172f082 100644 --- a/drivers/amlogic/media/dtv_demod/amlfrontend.c +++ b/drivers/amlogic/media/dtv_demod/amlfrontend.c @@ -3354,7 +3354,9 @@ static int delsys_confirm(struct dvb_frontend *fe) case SYS_DAB: case SYS_TURBO: case SYS_UNDEFINED: +#ifdef CONFIG_AMLOGIC_DVB_COMPAT case SYS_ANALOG: +#endif mode = AM_FE_UNKNOWN_N; PR_INFO("delsys not support!%d=\n", cdelsys); return 0; @@ -3486,7 +3488,9 @@ static int delsys_set(struct dvb_frontend *fe, unsigned int delsys) case SYS_DAB: case SYS_TURBO: case SYS_UNDEFINED: +#ifdef CONFIG_AMLOGIC_DVB_COMPAT case SYS_ANALOG: +#endif mode = AM_FE_UNKNOWN_N; if (get_dtvpll_init_flag()) { PR_INFO("delsys not support!%d=\n", cdelsys); @@ -4104,8 +4108,12 @@ static struct dvb_frontend_ops aml_dtvdm_txl_ops = { }; static struct dvb_frontend_ops aml_dtvdm_txlx_ops = { +#ifdef CONFIG_AMLOGIC_DVB_COMPAT .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B, SYS_DVBC_ANNEX_A, SYS_DVBT, SYS_ANALOG}, +#else + .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B, SYS_DVBC_ANNEX_A, SYS_DVBT}, +#endif .info = { /*in aml_fe, it is 'amlogic dvb frontend' */ .name = "amlogic dtv demod txlx", diff --git a/drivers/amlogic/media/dtv_demod/demod_func.c b/drivers/amlogic/media/dtv_demod/demod_func.c index 6dc776d..308bccd 100644 --- a/drivers/amlogic/media/dtv_demod/demod_func.c +++ b/drivers/amlogic/media/dtv_demod/demod_func.c @@ -1075,10 +1075,7 @@ void apb_write_reg(unsigned int addr, unsigned int data) unsigned long apb_read_reg_high(unsigned long addr) { - unsigned long tmp; - - tmp = 0; - return (tmp >> 32) & 0xffffffff; + return 0; } unsigned long apb_read_reg(unsigned long addr) diff --git a/drivers/amlogic/media/dtv_demod/dtmb_func.c b/drivers/amlogic/media/dtv_demod/dtmb_func.c index 1a1513d..13b98ab 100644 --- a/drivers/amlogic/media/dtv_demod/dtmb_func.c +++ b/drivers/amlogic/media/dtv_demod/dtmb_func.c @@ -67,7 +67,7 @@ void dtmb_clk_set(unsigned int adc_clk) unsigned int fe_modify = 0x4d6a; if (adc_clk) - fe_modify = 3963617280 / (adc_clk << 3); + fe_modify = 3963617280UL / (adc_clk << 3); dtmb_set_fe_config_modify(fe_modify); diff --git a/drivers/amlogic/media/dtv_demod/tuner_func.c b/drivers/amlogic/media/dtv_demod/tuner_func.c index 69a17ba..8fd69f6 100644 --- a/drivers/amlogic/media/dtv_demod/tuner_func.c +++ b/drivers/amlogic/media/dtv_demod/tuner_func.c @@ -40,7 +40,9 @@ void tuner_set_params(struct dvb_frontend *fe) int tuner_get_ch_power(struct dvb_frontend *fe) { int strength = 0; +#ifdef CONFIG_AMLOGIC_DVB_COMPAT s16 strengtha = 0; +#endif if (fe != NULL) { #if 0 @@ -49,12 +51,14 @@ int tuner_get_ch_power(struct dvb_frontend *fe) else PR_INFO("no tuner get_strength\n"); #endif +#ifdef CONFIG_AMLOGIC_DVB_COMPAT if (fe->ops.tuner_ops.get_strength) { fe->ops.tuner_ops.get_strength(fe, &strengtha); strength = (int)strengtha; } else { PR_INFO("no tuner get_strength\n"); } +#endif } @@ -65,12 +69,14 @@ int tuner_get_ch_power2(void) { int strength = 0; +#ifdef CONFIG_AMLOGIC_DVB_COMPAT s16 strengtha = 0; +#endif struct dvb_frontend *fe; fe = aml_get_fe(); +#ifdef CONFIG_AMLOGIC_DVB_COMPAT if (fe != NULL) { - if (fe->ops.tuner_ops.get_strength) { fe->ops.tuner_ops.get_strength(fe, &strengtha); //strength = strengtha - 256; @@ -79,7 +85,7 @@ int tuner_get_ch_power2(void) PR_INFO("no tuner get_strength\n"); } } - +#endif return strength; } @@ -88,10 +94,13 @@ u16 tuner_get_ch_power3(void) { u16 strength = 0; +#ifdef CONFIG_AMLOGIC_DVB_COMPAT s16 strengtha = 0; +#endif struct dvb_frontend *fe; fe = aml_get_fe(); +#ifdef CONFIG_AMLOGIC_DVB_COMPAT if (fe != NULL) { if (fe->ops.tuner_ops.get_strength) { @@ -106,7 +115,7 @@ u16 tuner_get_ch_power3(void) PR_INFO("no tuner get_strength\n"); } } - +#endif return strength; } diff --git a/drivers/amlogic/media/osd/osd_rdma.c b/drivers/amlogic/media/osd/osd_rdma.c index e383a2d..2255f9a9 100644 --- a/drivers/amlogic/media/osd/osd_rdma.c +++ b/drivers/amlogic/media/osd/osd_rdma.c @@ -85,9 +85,11 @@ static unsigned int vsync_irq_count; static bool osd_rdma_done; static int osd_rdma_handle = -1; static struct rdma_table_item *rdma_temp_tbl; +void *memcpy(void *dest, const void *src, size_t len); static int osd_rdma_init(void); +#ifdef CONFIG_ARM64 static inline void osd_rdma_mem_cpy(struct rdma_table_item *dst, struct rdma_table_item *src, u32 len) { @@ -106,6 +108,13 @@ static inline void osd_rdma_mem_cpy(struct rdma_table_item *dst, : "r" (src), "r" (dst), "r" (len) : "x5", "x6"); } +#else +inline void osd_rdma_mem_cpy(struct rdma_table_item *dst, + struct rdma_table_item *src, u32 len) +{ + memcpy(dst, src, len); +} +#endif static inline void reset_rdma_table(void) { @@ -132,7 +141,7 @@ static inline void reset_rdma_table(void) if ((item_count * (sizeof(struct rdma_table_item))) > RDMA_TEMP_TBL_SIZE) { - pr_info("more memory: allocate(%x), expect(%lx)\n", + pr_info("more memory: allocate(%x), expect(%zu)\n", (unsigned int) RDMA_TEMP_TBL_SIZE, sizeof(struct rdma_table_item) * item_count); diff --git a/drivers/amlogic/media/video_processor/pic_dev/picdec.c b/drivers/amlogic/media/video_processor/pic_dev/picdec.c index 6b2bec3..e96758f 100644 --- a/drivers/amlogic/media/video_processor/pic_dev/picdec.c +++ b/drivers/amlogic/media/video_processor/pic_dev/picdec.c @@ -1384,6 +1384,7 @@ static long picdec_ioctl(struct file *filp, unsigned int cmd, context = (struct ge2d_context_s *) filp->private_data; argp = (void __user *)args; switch (cmd) { +#ifdef CONFIG_COMPAT case PICDEC_IOC_FRAME_RENDER32: aml_pr_info(1, "PICDEC_IOC_FRAME_RENDER32\n"); { @@ -1404,6 +1405,7 @@ static long picdec_ioctl(struct file *filp, unsigned int cmd, render_frame_block(); } break; +#endif case PICDEC_IOC_FRAME_RENDER: aml_pr_info(1, "PICDEC_IOC_FRAME_RENDER\n"); if (copy_from_user diff --git a/drivers/amlogic/media/video_processor/pic_dev/picdec.h b/drivers/amlogic/media/video_processor/pic_dev/picdec.h index 70c3c9a..b619d37 100644 --- a/drivers/amlogic/media/video_processor/pic_dev/picdec.h +++ b/drivers/amlogic/media/video_processor/pic_dev/picdec.h @@ -83,6 +83,7 @@ struct source_input_s { int rotate; }; +#ifdef CONFIG_COMPAT struct compat_source_input_s { compat_uptr_t input; int frame_width; @@ -91,15 +92,17 @@ struct compat_source_input_s { int rotate; }; +#define PICDEC_IOC_FRAME_RENDER32 _IOW(PICDEC_IOC_MAGIC, 0x00, \ +struct compat_source_input_s) + +#endif + #define PICDEC_IOC_MAGIC 'P' #define PICDEC_IOC_FRAME_RENDER _IOW(PICDEC_IOC_MAGIC, 0x00, \ struct source_input_s) #define PICDEC_IOC_FRAME_POST _IOW(PICDEC_IOC_MAGIC, 0X01, unsigned int) #define PICDEC_IOC_CONFIG_FRAME _IOW(PICDEC_IOC_MAGIC, 0X02, unsigned int) -#define PICDEC_IOC_FRAME_RENDER32 _IOW(PICDEC_IOC_MAGIC, 0x00, \ -struct compat_source_input_s) - void stop_picdec_task(void); int picdec_buffer_init(void); void get_picdec_buf_info(resource_size_t *start, unsigned int *size, diff --git a/drivers/amlogic/media/vout/backlight/aml_bl.c b/drivers/amlogic/media/vout/backlight/aml_bl.c index 5e0e3a0a..1213556 100644 --- a/drivers/amlogic/media/vout/backlight/aml_bl.c +++ b/drivers/amlogic/media/vout/backlight/aml_bl.c @@ -332,7 +332,7 @@ static void bl_gpio_set(int index, int value) static inline unsigned int bl_do_div(unsigned long num, unsigned int den) { - unsigned long ret = num; + unsigned long long ret = num; do_div(ret, den); return (unsigned int)ret; diff --git a/drivers/amlogic/memory_ext/page_trace.c b/drivers/amlogic/memory_ext/page_trace.c index 1b873e5..deb6e5d 100644 --- a/drivers/amlogic/memory_ext/page_trace.c +++ b/drivers/amlogic/memory_ext/page_trace.c @@ -453,9 +453,11 @@ unsigned long find_back_trace(void) frame.fp = (unsigned long)__builtin_frame_address(0); frame.sp = current_stack_pointer; frame.pc = _RET_IP_; +#ifdef CONFIG_ARM64 #ifdef CONFIG_FUNCTION_GRAPH_TRACER frame.graph = current->curr_ret_stack; #endif +#endif while (1) { #ifdef CONFIG_ARM64 ret = unwind_frame(current, &frame); diff --git a/drivers/amlogic/pinctrl/Kconfig b/drivers/amlogic/pinctrl/Kconfig index 7ba46e2..a5cfd59 100644 --- a/drivers/amlogic/pinctrl/Kconfig +++ b/drivers/amlogic/pinctrl/Kconfig @@ -19,32 +19,32 @@ config AMLOGIC_PINCTRL_MESON8B config AMLOGIC_PINCTRL_MESON_GXL bool "Meson gxl SoC pinctrl driver" - depends on ARM64 + depends on ARM64 || ARM64_A32 select AMLOGIC_PINCTRL_MESON8_PMX default n config AMLOGIC_PINCTRL_MESON_AXG bool "Meson axg SoC pinctrl driver" - depends on ARM64 + depends on ARM64 || ARM64_A32 select AMLOGIC_PINCTRL_MESON_AXG_PMX default n config AMLOGIC_PINCTRL_MESON_TXLX bool "Meson txlx SoC pinctrl driver" - depends on ARM64 + depends on ARM64 || ARM64_A32 select AMLOGIC_PINCTRL_MESON8_PMX default n config AMLOGIC_PINCTRL_MESON_G12A bool "Meson g12a SoC pinctrl driver" - depends on ARM64 + depends on ARM64 || ARM64_A32 select AMLOGIC_PINCTRL_MESON_AXG_PMX select AMLOGIC_PINCONF_MESON_G12A default n config AMLOGIC_PINCTRL_MESON_TXL bool "Meson txl SoC pinctrl driver" - depends on ARM64 + depends on ARM64 || ARM64_A32 select AMLOGIC_PINCTRL_MESON8_PMX default n diff --git a/drivers/amlogic/pm/Kconfig b/drivers/amlogic/pm/Kconfig index a4ce5d9..a885536 100644 --- a/drivers/amlogic/pm/Kconfig +++ b/drivers/amlogic/pm/Kconfig @@ -18,7 +18,7 @@ config AMLOGIC_GX_SUSPEND depends on CPU_IDLE depends on PM_WAKELOCKS depends on PM - depends on ARM64 + depends on ARM64 || ARM64_A32 default n help This is the Amlogic suspend driver for 64bit family chips diff --git a/drivers/amlogic/pm/gx_pm.c b/drivers/amlogic/pm/gx_pm.c index 817b861..a2cd9ac 100644 --- a/drivers/amlogic/pm/gx_pm.c +++ b/drivers/amlogic/pm/gx_pm.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 9ec3a04..89bf888 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -198,6 +198,7 @@ config FRAME_WARN int "Warn for stack frames larger than (needs gcc 4.4)" range 0 8192 default 2048 if GCC_PLUGIN_LATENT_ENTROPY + default 2048 if ARM64_A32 default 1024 if !64BIT default 2048 if 64BIT help -- 2.7.4