board: add CONFIG_ARM64_A32 and CONFIG_COMPAT
authorAo Xu <ao.xu@amlogic.com>
Wed, 1 Aug 2018 11:56:37 +0000 (19:56 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Mon, 13 Aug 2018 10:51:48 +0000 (03:51 -0700)
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 <ao.xu@amlogic.com>
16 files changed:
drivers/amlogic/cec/hdmi_ao_cec.c
drivers/amlogic/defendkey/securekey.c
drivers/amlogic/defendkey/securekey.h
drivers/amlogic/media/dtv_demod/amlfrontend.c
drivers/amlogic/media/dtv_demod/demod_func.c
drivers/amlogic/media/dtv_demod/dtmb_func.c
drivers/amlogic/media/dtv_demod/tuner_func.c
drivers/amlogic/media/osd/osd_rdma.c
drivers/amlogic/media/video_processor/pic_dev/picdec.c
drivers/amlogic/media/video_processor/pic_dev/picdec.h
drivers/amlogic/media/vout/backlight/aml_bl.c
drivers/amlogic/memory_ext/page_trace.c
drivers/amlogic/pinctrl/Kconfig
drivers/amlogic/pm/Kconfig
drivers/amlogic/pm/gx_pm.c
lib/Kconfig.debug

index 7640f44..a19966a 100644 (file)
@@ -14,8 +14,6 @@
  * See the GNU General Public License for more details.
  */
 
-#include <asm/irq.h>
-
 #include <linux/version.h>
 #include <linux/module.h>
 #include <linux/irq.h>
index fa6d3a5..1efb90c 100644 (file)
@@ -22,7 +22,7 @@
 #include "securekey.h"
 #include <linux/arm-smccc.h>
 
-#ifdef CONFIG_ARM64
+#if (defined CONFIG_ARM64) || (defined CONFIG_ARM64_A32)
 
 int aml_is_secure_set(void)
 {
index d55635b..717352c 100644 (file)
@@ -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)
index f2d395d..172f082 100644 (file)
@@ -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",
index 6dc776d..308bccd 100644 (file)
@@ -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)
index 1a1513d..13b98ab 100644 (file)
@@ -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);
 
index 69a17ba..8fd69f6 100644 (file)
@@ -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;
 }
index e383a2d..2255f9a 100644 (file)
@@ -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);
index 6b2bec3..e96758f 100644 (file)
@@ -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
index 70c3c9a..b619d37 100644 (file)
@@ -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,
index 5e0e3a0..1213556 100644 (file)
@@ -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;
index 1b873e5..deb6e5d 100644 (file)
@@ -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);
index 7ba46e2..a5cfd59 100644 (file)
@@ -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
 
index a4ce5d9..a885536 100644 (file)
@@ -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
index 817b861..a2cd9ac 100644 (file)
@@ -34,6 +34,7 @@
 #include <asm/suspend.h>
 #include <linux/of_address.h>
 #include <linux/input.h>
+#include <linux/cpuidle.h>
 #include <asm/cpuidle.h>
 #include <uapi/linux/psci.h>
 #include <linux/arm-smccc.h>
index 9ec3a04..89bf888 100644 (file)
@@ -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